diff --git a/Host/Source/MicroBoot/interfaces/XcpLoader.pas b/Host/Source/MicroBoot/interfaces/XcpLoader.pas index 43b9a5ca..10b9397e 100644 --- a/Host/Source/MicroBoot/interfaces/XcpLoader.pas +++ b/Host/Source/MicroBoot/interfaces/XcpLoader.pas @@ -113,6 +113,7 @@ type private FIsConnected : Boolean; FTimerInterval : array[1..7] of Word; + FConnectCmdTimer : Word; FIsIntel : Boolean; FCtoPacketLen : Byte; FCtoPGMPacketLen : Byte; @@ -144,7 +145,7 @@ type destructor Destroy; override; function GetLastError(var info : string) : Byte; procedure Configure(iniFile : string); - procedure Connect; + function Connect : Boolean; procedure Disconnect; function StartProgrammingSession : Boolean; function StopProgrammingSession : Boolean; @@ -196,6 +197,10 @@ begin FTimerInterval[5] := 1000; // t5 = 1000ms - write and reset timeout FTimerInterval[6] := 1000; // t6 = 1000ms - user specific connect FTimerInterval[7] := 2000; // t7 = 2000ms - wait timer + // the connect command does not have a protocol specified timeout value. However, this + // timeout is important for the OpenBLT timed backdoor feature. The backdoor time should + // be at least 2.5 times the length of this timeout value. + FConnectCmdTimer := 20; // 20 ms - connect command // create instance of XCP transport layer object comDriver := TXcpTransport.Create; @@ -363,10 +368,11 @@ begin FSeedKeyDll := ExtractFilePath(ParamStr(0))+FSeedKeyDll; FTimerInterval[1] := settingsIni.ReadInteger('xcp', 't1', 1000); - FTimerInterval[3] := settingsIni.ReadInteger('xcp', 't3', 1000); - FTimerInterval[4] := settingsIni.ReadInteger('xcp', 't4', 1000); + FTimerInterval[3] := settingsIni.ReadInteger('xcp', 't3', 2000); + FTimerInterval[4] := settingsIni.ReadInteger('xcp', 't4', 10000); FTimerInterval[5] := settingsIni.ReadInteger('xcp', 't5', 1000); - FTimerInterval[7] := settingsIni.ReadInteger('xcp', 't7', 1000); + FTimerInterval[7] := settingsIni.ReadInteger('xcp', 't7', 2000); + FConnectCmdTimer := settingsIni.ReadInteger('xcp', 'tconnect', 20); // release ini file object settingsIni.Free; @@ -380,15 +386,23 @@ end; //*** end of Configure *** //*************************************************************************************** // NAME: Connect // PARAMETER: none -// RETURN VALUE: none +// RETURN VALUE: True if connected, False otherwise. // DESCRIPTION: Connects the XCP transport layer // //*************************************************************************************** -procedure TXcpLoader.Connect; +function TXcpLoader.Connect : Boolean; begin // connect the XCP transport layer - comDriver.Connect; - FIsConnected := true; + if comDriver.Connect = true then + begin + FIsConnected := true; + result := true; + end + else + begin + FIsConnected := false; + result := false; + end; end; //*** end of Connect *** @@ -539,7 +553,7 @@ begin // send out the command with 20ms timeout. note that this timeout is not required at // all by the XCP protocol. here it is set quite short to accomodate the OpenBTL // bootloader default backdoor entry feature - if comDriver.SendPacket(20) then + if comDriver.SendPacket(FConnectCmdTimer) then begin // check to see if it was an error packet if comDriver.packetData[0] = kCmdPidERR then diff --git a/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.dfm index ae3b3a1b..8bb21c85 100644 Binary files a/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.dfm and b/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.pas b/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.pas index 5707cbfe..2c2fd163 100644 --- a/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.pas +++ b/Host/Source/MicroBoot/interfaces/can/peak/XcpSettings.pas @@ -86,6 +86,8 @@ type edtTransmitId: TEdit; edtReceiveId: TEdit; openDialog: TOpenDialog; + edtTconnect: TEdit; + lblTconnect: TLabel; procedure btnOKClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure btnBrowseClick(Sender: TObject); @@ -224,6 +226,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(settingsIni.ReadInteger('xcp', 't4', 10000)); FSettingsForm.edtT5.Text := IntToStr(settingsIni.ReadInteger('xcp', 't5', 1000)); FSettingsForm.edtT7.Text := IntToStr(settingsIni.ReadInteger('xcp', 't7', 2000)); + FSettingsForm.edtTconnect.Text := IntToStr(settingsIni.ReadInteger('xcp', 'tconnect', 20)); // release ini file object settingsIni.Free; @@ -246,7 +249,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(10000); FSettingsForm.edtT5.Text := IntToStr(1000); FSettingsForm.edtT7.Text := IntToStr(2000); - + FSettingsForm.edtTconnect.Text := IntToStr(20); end; // show the form as modal so we can get the result here @@ -272,6 +275,7 @@ begin settingsIni.WriteInteger('xcp', 't4', StrToInt(FSettingsForm.edtT4.Text)); settingsIni.WriteInteger('xcp', 't5', StrToInt(FSettingsForm.edtT5.Text)); settingsIni.WriteInteger('xcp', 't7', StrToInt(FSettingsForm.edtT7.Text)); + settingsIni.WriteInteger('xcp', 'tconnect', StrToInt(FSettingsForm.edtTconnect.Text)); // release ini file object settingsIni.Free; diff --git a/Host/Source/MicroBoot/interfaces/can/peak/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/can/peak/XcpTransport.pas index b8f79f36..098e6cef 100644 --- a/Host/Source/MicroBoot/interfaces/can/peak/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/can/peak/XcpTransport.pas @@ -73,7 +73,7 @@ type pcanDriver : TPCanDriver; constructor Create; procedure Configure(iniFile : string); - procedure Connect; + function Connect: Boolean; function SendPacket(timeOutms: LongWord): Boolean; procedure Disconnect; destructor Destroy; override; @@ -187,15 +187,15 @@ end; //*** end of Configure *** //*************************************************************************************** // NAME: Connect // PARAMETER: none -// RETURN VALUE: none +// RETURN VALUE: True if successful, False otherwise. // DESCRIPTION: Connects the transport layer device. // //*************************************************************************************** -procedure TXcpTransport.Connect; +function TXcpTransport.Connect: Boolean; begin + result := true; if not pcanDriver.Connect then - Application.MessageBox( 'Could not connect to CAN bus.', - 'Error', MB_OK or MB_ICONERROR ); + result := false; end; //*** end of Connect *** diff --git a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.cfg b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.cfg index b7fa021f..d2841ff5 100644 --- a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.cfg +++ b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.cfg @@ -31,5 +31,5 @@ -M -$M16384,1048576 -K$00400000 --E../../../../ --LNc:\program files (x86)\borland\delphi4\Lib +-E../../../../../ +-LNc:\borland\delphi4\Lib diff --git a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dof b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dof index 0e2c2a16..12f6b2c7 100644 --- a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dof +++ b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dof @@ -39,7 +39,7 @@ MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] -OutputDir=../../../../ +OutputDir=../../../../../ UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= @@ -82,6 +82,7 @@ $(DELPHI)\Lib\dclusr40.bpl=Borland User Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlOutputDirectorry] -Count=2 -Item0=../../../../ -Item1=../../../ +Count=3 +Item0=../../../../../ +Item1=../../../../ +Item2=../../../ diff --git a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dpr b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dpr index 07263dc5..8793df37 100644 --- a/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dpr +++ b/Host/Source/MicroBoot/interfaces/can/peak/openblt_can_peak.dpr @@ -262,27 +262,37 @@ begin timer.Enabled := False; // connect the transport layer - MbiCallbackOnLog('Connecting the transport layer. t='+TimeToStr(Time)); - loader.Connect; + MbiCallbackOnInfo('Connecting to the CAN interface.'); + MbiCallbackOnLog('Connecting to the CAN interface. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnError('Could not connect to CAN interface. Check your configuration.'); + MbiCallbackOnLog('Could not connect to CAN interface. Check your configuration and try again. t='+TimeToStr(Time)); + Exit; + end; //---------------- start the programming session -------------------------------------- MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + + // try initial connect via XCP if not loader.StartProgrammingSession then begin // update the user info MbiCallbackOnInfo('Could not connect. Please reset your target...'); MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); Application.ProcessMessages; - end; - - while not loader.StartProgrammingSession do - begin - Application.ProcessMessages; - Sleep(5); - if stopRequest then + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do begin - MbiCallbackOnError('Programming session cancelled by user.'); - Exit; + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; end; end; diff --git a/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.dfm index 6503fd42..0a47b6ee 100644 Binary files a/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.dfm and b/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.pas b/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.pas index 5707cbfe..2c2fd163 100644 --- a/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.pas +++ b/Host/Source/MicroBoot/interfaces/can/vector/XcpSettings.pas @@ -86,6 +86,8 @@ type edtTransmitId: TEdit; edtReceiveId: TEdit; openDialog: TOpenDialog; + edtTconnect: TEdit; + lblTconnect: TLabel; procedure btnOKClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure btnBrowseClick(Sender: TObject); @@ -224,6 +226,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(settingsIni.ReadInteger('xcp', 't4', 10000)); FSettingsForm.edtT5.Text := IntToStr(settingsIni.ReadInteger('xcp', 't5', 1000)); FSettingsForm.edtT7.Text := IntToStr(settingsIni.ReadInteger('xcp', 't7', 2000)); + FSettingsForm.edtTconnect.Text := IntToStr(settingsIni.ReadInteger('xcp', 'tconnect', 20)); // release ini file object settingsIni.Free; @@ -246,7 +249,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(10000); FSettingsForm.edtT5.Text := IntToStr(1000); FSettingsForm.edtT7.Text := IntToStr(2000); - + FSettingsForm.edtTconnect.Text := IntToStr(20); end; // show the form as modal so we can get the result here @@ -272,6 +275,7 @@ begin settingsIni.WriteInteger('xcp', 't4', StrToInt(FSettingsForm.edtT4.Text)); settingsIni.WriteInteger('xcp', 't5', StrToInt(FSettingsForm.edtT5.Text)); settingsIni.WriteInteger('xcp', 't7', StrToInt(FSettingsForm.edtT7.Text)); + settingsIni.WriteInteger('xcp', 'tconnect', StrToInt(FSettingsForm.edtTconnect.Text)); // release ini file object settingsIni.Free; diff --git a/Host/Source/MicroBoot/interfaces/can/vector/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/can/vector/XcpTransport.pas index 5d61293b..cefbfc4e 100644 --- a/Host/Source/MicroBoot/interfaces/can/vector/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/can/vector/XcpTransport.pas @@ -74,7 +74,7 @@ type canDriver : TCanDriver; constructor Create; procedure Configure(iniFile : string); - procedure Connect; + function Connect: Boolean; function SendPacket(timeOutms: LongWord): Boolean; procedure Disconnect; destructor Destroy; override; @@ -205,15 +205,15 @@ end; //*** end of Configure *** //*************************************************************************************** // NAME: Connect // PARAMETER: none -// RETURN VALUE: none +// RETURN VALUE: True if successful, False otherwise. // DESCRIPTION: Connects the transport layer device. // //*************************************************************************************** -procedure TXcpTransport.Connect; +function TXcpTransport.Connect: Boolean; begin + result := true; if not canDriver.Connect then - Application.MessageBox( 'Could not connect to CAN bus.', - 'Error', MB_OK or MB_ICONERROR ); + result := false; end; //*** end of Connect *** diff --git a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.cfg b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.cfg index b7fa021f..d2841ff5 100644 --- a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.cfg +++ b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.cfg @@ -31,5 +31,5 @@ -M -$M16384,1048576 -K$00400000 --E../../../../ --LNc:\program files (x86)\borland\delphi4\Lib +-E../../../../../ +-LNc:\borland\delphi4\Lib diff --git a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dof b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dof index 223c7e52..564878ae 100644 --- a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dof +++ b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dof @@ -39,7 +39,7 @@ MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] -OutputDir=../../../../ +OutputDir=../../../../../ UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= @@ -82,5 +82,6 @@ $(DELPHI)\Lib\dclusr40.bpl=Borland User Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlOutputDirectorry] -Count=1 -Item0=../../../../ +Count=2 +Item0=../../../../../ +Item1=../../../../ diff --git a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dpr b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dpr index e11e8d5b..6fa76d51 100644 --- a/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dpr +++ b/Host/Source/MicroBoot/interfaces/can/vector/openblt_can_vector.dpr @@ -262,27 +262,37 @@ begin timer.Enabled := False; // connect the transport layer - MbiCallbackOnLog('Connecting the transport layer. t='+TimeToStr(Time)); - loader.Connect; + MbiCallbackOnInfo('Connecting to the CAN interface.'); + MbiCallbackOnLog('Connecting to the CAN interface. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnError('Could not connect to CAN interface. Check your configuration.'); + MbiCallbackOnLog('Could not connect to CAN interface. Check your configuration and try again. t='+TimeToStr(Time)); + Exit; + end; //---------------- start the programming session -------------------------------------- MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + + // try initial connect via XCP if not loader.StartProgrammingSession then begin // update the user info MbiCallbackOnInfo('Could not connect. Please reset your target...'); MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); Application.ProcessMessages; - end; - - while not loader.StartProgrammingSession do - begin - Application.ProcessMessages; - Sleep(5); - if stopRequest then + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do begin - MbiCallbackOnError('Programming session cancelled by user.'); - Exit; + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; end; end; diff --git a/Host/Source/MicroBoot/interfaces/net/OverbyteIcsV5.zip b/Host/Source/MicroBoot/interfaces/net/OverbyteIcsV5.zip new file mode 100644 index 00000000..8fbbe202 Binary files /dev/null and b/Host/Source/MicroBoot/interfaces/net/OverbyteIcsV5.zip differ diff --git a/Host/Source/MicroBoot/interfaces/net/XcpSettings.dcu b/Host/Source/MicroBoot/interfaces/net/XcpSettings.dcu new file mode 100644 index 00000000..e2843c61 Binary files /dev/null and b/Host/Source/MicroBoot/interfaces/net/XcpSettings.dcu differ diff --git a/Host/Source/MicroBoot/interfaces/net/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/net/XcpSettings.dfm new file mode 100644 index 00000000..29555381 Binary files /dev/null and b/Host/Source/MicroBoot/interfaces/net/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/net/XcpSettings.pas b/Host/Source/MicroBoot/interfaces/net/XcpSettings.pas new file mode 100644 index 00000000..9d5898cf --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/XcpSettings.pas @@ -0,0 +1,274 @@ +unit XcpSettings; +//*************************************************************************************** +// Description: XCP settings interface for NET (TCP/IP) +// File Name: XcpSettings.pas +// +//--------------------------------------------------------------------------------------- +// C O P Y R I G H T +//--------------------------------------------------------------------------------------- +// Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +// +// This software has been carefully tested, but is not guaranteed for any particular +// purpose. The author does not offer any warranties and does not guarantee the accuracy, +// adequacy, or completeness of the software and is not responsible for any errors or +// omissions or the results obtained from use of the software. +// +//--------------------------------------------------------------------------------------- +// L I C E N S E +//--------------------------------------------------------------------------------------- +// This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with OpenBLT. +// If not, see . +// +// A special exception to the GPL is included to allow you to distribute a combined work +// that includes OpenBLT without being obliged to provide the source code for any +// proprietary components. The exception text is included at the bottom of the license +// file . +// +//*************************************************************************************** +interface + +//*************************************************************************************** +// Includes +//*************************************************************************************** +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, ComCtrls, ExtCtrls, IniFiles; + + +//*************************************************************************************** +// Type Definitions +//*************************************************************************************** +type + TXcpSettingsForm = class(TForm) + pnlFooter: TPanel; + btnOK: TButton; + btnCancel: TButton; + pageControl: TPageControl; + tabXcp: TTabSheet; + tabNet: TTabSheet; + iconNet: TImage; + lblNet: TLabel; + lblXcp: TLabel; + iconXcp2: TImage; + lblNetport: TLabel; + lblT1: TLabel; + lblT3: TLabel; + lblT4: TLabel; + lblT5: TLabel; + lblT7: TLabel; + edtT1: TEdit; + edtT3: TEdit; + edtT4: TEdit; + edtT5: TEdit; + edtT7: TEdit; + tabProt: TTabSheet; + iconXcp1: TImage; + lblPort: TLabel; + edtSeedKey: TEdit; + btnBrowse: TButton; + openDialog: TOpenDialog; + lblNethost: TLabel; + edtHostname: TEdit; + edtPort: TEdit; + edtTconnect: TEdit; + lblTconnect: TLabel; + procedure btnOKClick(Sender: TObject); + procedure btnCancelClick(Sender: TObject); + procedure btnBrowseClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +type + TXcpSettings = class(TObject) + private + FSettingsForm : TXcpSettingsForm; + FIniFile : string; + public + constructor Create(iniFile : string); + destructor Destroy; override; + function Configure : Boolean; + end; + + +implementation +{$R *.DFM} +//*************************************************************************************** +// NAME: btnOKClick +// PARAMETER: none +// RETURN VALUE: modal result +// DESCRIPTION: Sets the module result to okay. +// +//*************************************************************************************** +procedure TXcpSettingsForm.btnOKClick(Sender: TObject); +begin + ModalResult := mrOK; +end; //*** end of btnOKClick *** + + +//*************************************************************************************** +// NAME: btnCancelClick +// PARAMETER: none +// RETURN VALUE: modal result +// DESCRIPTION: Sets the module result to cancel. +// +//*************************************************************************************** +procedure TXcpSettingsForm.btnCancelClick(Sender: TObject); +begin + ModalResult := mrCancel; +end; //*** end of btnCancelClick *** + + +//*************************************************************************************** +// NAME: btnBrowseClick +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Prompts the user to select the seed/key dll file. +// +//*************************************************************************************** +procedure TXcpSettingsForm.btnBrowseClick(Sender: TObject); +begin + openDialog.InitialDir := ExtractFilePath(ParamStr(0)); + if openDialog.Execute then + begin + edtSeedKey.Text := openDialog.FileName; + end; +end; //*** end of btnBrowseClick *** + + +//*************************************************************************************** +// NAME: Create +// PARAMETER: Name of the INI file where the settings are and will be stored +// RETURN VALUE: none +// DESCRIPTION: Class constructor +// +//*************************************************************************************** +constructor TXcpSettings.Create(iniFile : string); +begin + // call inherited constructor + inherited Create; + + // set the inifile + FIniFile := iniFile; + + // create an instance of the settings form + FSettingsForm := TXcpSettingsForm.Create(nil); +end; //*** end of Create *** + + +//*************************************************************************************** +// NAME: Destroy +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Class destructor +// +//*************************************************************************************** +destructor TXcpSettings.Destroy; +begin + // releaase the settings form object + FSettingsForm.Free; + + // call inherited destructor + inherited; +end; //*** end of Destroy *** + + +//*************************************************************************************** +// NAME: Configure +// PARAMETER: none +// RETURN VALUE: True if configuration was successfully changed, False otherwise +// DESCRIPTION: Allows the user to configure the XCP interface using a GUI. +// +//*************************************************************************************** +function TXcpSettings.Configure : Boolean; +var + settingsIni: TIniFile; +begin + // initialize the return value + result := false; + + // init the form elements using the configuration found in the INI + if FileExists(FIniFile) then + begin + // create ini file object + settingsIni := TIniFile.Create(FIniFile); + + // NET related elements + FSettingsForm.edtHostname.Text := settingsIni.ReadString('net', 'hostname', '169.254.19.63'); + FSettingsForm.edtPort.Text := settingsIni.ReadString('net', 'port', '1000'); + + // XCP related elements + FSettingsForm.edtSeedKey.Text := settingsIni.ReadString('xcp', 'seedkey', ExtractFilePath(ParamStr(0))+''); + FSettingsForm.edtT1.Text := IntToStr(settingsIni.ReadInteger('xcp', 't1', 1000)); + FSettingsForm.edtT3.Text := IntToStr(settingsIni.ReadInteger('xcp', 't3', 2000)); + FSettingsForm.edtT4.Text := IntToStr(settingsIni.ReadInteger('xcp', 't4', 10000)); + FSettingsForm.edtT5.Text := IntToStr(settingsIni.ReadInteger('xcp', 't5', 1000)); + FSettingsForm.edtT7.Text := IntToStr(settingsIni.ReadInteger('xcp', 't7', 2000)); + FSettingsForm.edtTconnect.Text := IntToStr(settingsIni.ReadInteger('xcp', 'tconnect', 300)); + + // release ini file object + settingsIni.Free; + end + else + begin + // set defaults + // NET related elements + FSettingsForm.edtHostname.Text := '169.254.19.63'; + FSettingsForm.edtPort.Text := '1000'; + + // XCP related elements + FSettingsForm.edtSeedKey.Text := ExtractFilePath(ParamStr(0))+''; + FSettingsForm.edtT1.Text := IntToStr(1000); + FSettingsForm.edtT3.Text := IntToStr(2000); + FSettingsForm.edtT4.Text := IntToStr(10000); + FSettingsForm.edtT5.Text := IntToStr(1000); + FSettingsForm.edtT7.Text := IntToStr(2000); + FSettingsForm.edtTconnect.Text := IntToStr(300); + end; + + // show the form as modal so we can get the result here + if FSettingsForm.ShowModal = mrOK then + begin + if FIniFile <> '' then + begin + // create ini file object + settingsIni := TIniFile.Create(FIniFile); + + // NET related elements + settingsIni.WriteString('net', 'hostname', FSettingsForm.edtHostname.Text); + settingsIni.WriteString('net', 'port', FSettingsForm.edtPort.Text); + + // XCP related elements + settingsIni.WriteString('xcp', 'seedkey', FSettingsForm.edtSeedKey.Text); + settingsIni.WriteInteger('xcp', 't1', StrToInt(FSettingsForm.edtT1.Text)); + settingsIni.WriteInteger('xcp', 't3', StrToInt(FSettingsForm.edtT3.Text)); + settingsIni.WriteInteger('xcp', 't4', StrToInt(FSettingsForm.edtT4.Text)); + settingsIni.WriteInteger('xcp', 't5', StrToInt(FSettingsForm.edtT5.Text)); + settingsIni.WriteInteger('xcp', 't7', StrToInt(FSettingsForm.edtT7.Text)); + settingsIni.WriteInteger('xcp', 'tconnect', StrToInt(FSettingsForm.edtTconnect.Text)); + + // release ini file object + settingsIni.Free; + + // indicate that the settings where successfully updated + result := true; + end; + end; +end; //*** end of Configure *** + + +end. +//******************************** end of XcpSettings.pas ******************************* + + diff --git a/Host/Source/MicroBoot/interfaces/net/XcpTransport.dcu b/Host/Source/MicroBoot/interfaces/net/XcpTransport.dcu new file mode 100644 index 00000000..e4c4985c Binary files /dev/null and b/Host/Source/MicroBoot/interfaces/net/XcpTransport.dcu differ diff --git a/Host/Source/MicroBoot/interfaces/net/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/net/XcpTransport.pas new file mode 100644 index 00000000..e008a9bb --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/XcpTransport.pas @@ -0,0 +1,426 @@ +unit XcpTransport; +//*************************************************************************************** +// Description: XCP transport layer for SCI. +// File Name: XcpTransport.pas +// +//--------------------------------------------------------------------------------------- +// C O P Y R I G H T +//--------------------------------------------------------------------------------------- +// Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +// +// This software has been carefully tested, but is not guaranteed for any particular +// purpose. The author does not offer any warranties and does not guarantee the accuracy, +// adequacy, or completeness of the software and is not responsible for any errors or +// omissions or the results obtained from use of the software. +// +//--------------------------------------------------------------------------------------- +// L I C E N S E +//--------------------------------------------------------------------------------------- +// This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with OpenBLT. +// If not, see . +// +// A special exception to the GPL is included to allow you to distribute a combined work +// that includes OpenBLT without being obliged to provide the source code for any +// proprietary components. The exception text is included at the bottom of the license +// file . +// +//*************************************************************************************** +interface + + +//*************************************************************************************** +// Includes +//*************************************************************************************** +uses + Windows, Messages, SysUtils, Classes, Forms, IniFiles, Winsock, WSocket; + + +//*************************************************************************************** +// Global Constants +//*************************************************************************************** +const kMaxPacketSize = 256 + 4; // 4 extra for TCP/IP counter overhead +const kTcpConnectedTimeoutMs = 1000; // timeout for connecting the socket + + +//*************************************************************************************** +// Type Definitions +//*************************************************************************************** +type + TXcpTransportInfo = (kNone, kConnected, kResponse, kError); + + +type + TXcpTransport = class(TObject) + private + comEventInfo : TXcpTransportInfo; + comEvent : THandle; + socket : TWSocket; + hostname : string; + port : string; + croCounter : LongWord; + procedure OnSocketSessionConnected(Sender: TObject; Error: Word); + procedure OnSocketDataAvailable(Sender: TObject; ErrCode: Word); + function MsgWaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; + public + packetData : array[0..kMaxPacketSize-1] of Byte; + packetLen : Word; + constructor Create; + procedure Configure(iniFile : string); + function Connect: Boolean; + function SendPacket(timeOutms: LongWord): Boolean; + procedure Disconnect; + destructor Destroy; override; + end; + + +implementation + +//*************************************************************************************** +// NAME: Create +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Class constructore +// +//*************************************************************************************** +constructor TXcpTransport.Create; +begin + // call inherited constructor + inherited Create; + + // reset can event info + comEventInfo := kNone; + + // create the event that requires manual reset + comEvent := CreateEvent(nil, True, False, nil); + + if comEvent = 0 then + Application.MessageBox( 'Could not obtain event placeholder.', + 'Error', MB_OK or MB_ICONERROR ); + + // create a socket instance + socket := TWSocket.Create(nil); + + // set the socket event handlers + socket.OnSessionConnected := OnSocketSessionConnected; + socket.OnDataAvailable := OnSocketDataAvailable; + + // init CRO counter value + croCounter := 1; + + // reset packet length + packetLen := 0; +end; //*** end of Create *** + + +//*************************************************************************************** +// NAME: Destroy +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Class destructor +// +//*************************************************************************************** +destructor TXcpTransport.Destroy; +begin + // release socket instance + socket.Free; + + // call inherited destructor + inherited; +end; //*** end of Destroy *** + + +//*************************************************************************************** +// NAME: Configure +// PARAMETER: filename of the INI +// RETURN VALUE: none +// DESCRIPTION: Configures both this class from the settings in the INI. +// +//*************************************************************************************** +procedure TXcpTransport.Configure(iniFile : string); +var + settingsIni : TIniFile; +begin + // read XCP configuration from INI + if FileExists(iniFile) then + begin + // create ini file object + settingsIni := TIniFile.Create(iniFile); + + // configure hostname + hostname := settingsIni.ReadString('net', 'hostname', '169.254.19.63'); + + // configure port + port := settingsIni.ReadString('net', 'port', '1000'); + + // release ini file object + settingsIni.Free; + end + else + begin + // configure defeault hostname + hostname := '169.254.19.63'; + + // configure default port + port := '1000'; + end; + +end; //*** end of Configure *** + + +//*************************************************************************************** +// NAME: Connect +// PARAMETER: none +// RETURN VALUE: True if connected, False otherwise. +// DESCRIPTION: Connects the transport layer device. +// +//*************************************************************************************** +function TXcpTransport.Connect: Boolean; +var + waitResult: Integer; +begin + // make sure the event is reset + ResetEvent(comEvent); + comEventInfo := kNone; + + // init CRO counter value + croCounter := 1; + + // make sure the socket is closed + if socket.State <> wsClosed then + begin + socket.Close; + socket.WaitForClose; + end; + + // set the hostname, port and protocol + socket.Addr := hostname; + socket.Port := port; + socket.Proto := 'tcp'; + + // submit the connect request + socket.Connect; + + // connection is being established. Now wait for the connected event + waitResult := MsgWaitForSingleObject(comEvent, kTcpConnectedTimeoutMs); + + if waitResult <> WAIT_OBJECT_0 then + begin + // no com event triggered so either a timeout or internal error occurred + result := false; + Exit; + end; + + // com event was triggered. now check that it is actually not an error + if comEventInfo <> kConnected then + begin + result := false; + Exit; + end; + // successfully connected + result := true; +end; //*** end of Connect *** + + +//*************************************************************************************** +// NAME: SendPacket +// PARAMETER: the time[ms] allowed for the reponse from the slave to come in. +// RETURN VALUE: True if response received from slave, False otherwise +// DESCRIPTION: Sends the XCP packet using the data in 'packetData' and length in +// 'packetLen' and waits for the response to come in. +// +//*************************************************************************************** +function TXcpTransport.SendPacket(timeOutms: LongWord): Boolean; +var + msgData : array of Byte; + cnt : byte; + waitResult: Integer; +begin + // make sure the event is reset + ResetEvent(comEvent); + comEventInfo := kNone; + + // init the return value + result := false; + + // prepare the packet. the first 4 bytes contain the CRO counter followed by the actual + // packet data + SetLength(msgData, packetLen+4); + + // first store the CRO counter + msgData[0] := Byte(croCounter); + msgData[1] := Byte(croCounter shr 8); + msgData[2] := Byte(croCounter shr 16); + msgData[3] := Byte(croCounter shr 24); + + // increment the CRO counter for the next packet + croCounter := croCounter + 1; + + // copy the packet data + for cnt := 0 to packetLen-1 do + begin + msgData[cnt+4] := packetData[cnt]; + end; + + // submit the packet transmission request + if socket.Send(@msgData[0], packetLen+4) = -1 then + begin + // unable to submit tx request + Exit; + end; + + // packet is being transmitted. Now wait for the response to come in + waitResult := MsgWaitForSingleObject(comEvent, timeOutms); + + if waitResult <> WAIT_OBJECT_0 then + begin + // no com event triggered so either a timeout or internal error occurred + result := False; + Exit; + end; + + // com event was triggered. now check if the reponse was correctly received + if comEventInfo <> kResponse then + begin + result := False; + Exit; + end; + + // packet successfully transmitted and response packet received + result := True; +end; //*** end of SendPacket *** + + +//*************************************************************************************** +// NAME: Disconnect +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Disconnects the transport layer device. +// +//*************************************************************************************** +procedure TXcpTransport.Disconnect; +begin + // close the socket + socket.Close; + socket.WaitForClose; +end; //*** end of Disconnect *** + + +//*************************************************************************************** +// NAME: OnSocketSessionConnected +// PARAMETER: Sender is the source that triggered the event. +// Error contains possible connection error information. +// RETURN VALUE: none +// DESCRIPTION: Socket connected event handler +// +//*************************************************************************************** +procedure TXcpTransport.OnSocketSessionConnected(Sender: TObject; Error: Word); +begin + // set event flag + if Error <> 0 then + comEventInfo := kError + else + comEventInfo := kConnected; + + // trigger the event + SetEvent(comEvent); +end; //*** end of OnSocketSessionConnected *** + + +//*************************************************************************************** +// NAME: OnSocketDataAvailable +// PARAMETER: Sender is the source that triggered the event. +// Error contains possible data reception error information. +// RETURN VALUE: none +// DESCRIPTION: Socket data reception event handler +// +//*************************************************************************************** +procedure TXcpTransport.OnSocketDataAvailable(Sender: TObject; ErrCode: Word); +var + tempBuffer : array[0..kMaxPacketSize-1] of Byte; + count : Integer; + idx : Integer; +begin + count := socket.Receive(@tempBuffer[0], kMaxPacketSize); + // the first 4 bytes contains the dto counter in which we are not really interested + packetLen := count - 4; + // store the response data + for idx := 0 to packetLen-1 do + begin + packetData[idx] := tempBuffer[idx+4]; + end; + + if packetLen = 0 then + // set event flag + comEventInfo := kError + else + // set event flag + comEventInfo := kResponse; + + // trigger the event + SetEvent(comEvent); +end; //*** end of OnSocketDataAvailable *** + + +//*************************************************************************************** +// NAME: MsgWaitForSingleObject +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Improved version of WaitForSingleObject. This version actually +// processes messages in the queue instead of blocking them. +// +//*************************************************************************************** +function TXcpTransport.MsgWaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; +var + dwEnd:DWord; +begin + // compute the time when the WaitForSingleObject is supposed to time out + dwEnd := GetTickCount + dwMilliseconds; + + repeat + // wait for an event to happen or a message to be in the queue + result := MsgWaitForMultipleObjects(1, hHandle, False, dwMilliseconds, QS_ALLINPUT); + + // a message was in the queue? + if result = WAIT_OBJECT_0 + 1 then + begin + // process these messages + Application.ProcessMessages; + socket.MessagePump; + + // check for timeout manually because if a message in the queue occurred, the + // MsgWaitForMultipleObjects will be called again and the timer will start from + // scratch. we need to make sure the correct timeout time is used. + dwMilliseconds := GetTickCount; + if dwMilliseconds < dwEnd then + begin + dwMilliseconds := dwEnd - dwMilliseconds; + end + else + begin + // timeout occured + result := WAIT_TIMEOUT; + Break; + end; + end + else + // the event occured? + begin + // we can stop + Break; + end; + until True = False; +end; //*** end of MsgWaitForSingleObject *** + + +end. +//******************************** end of XcpTransport.pas ****************************** + diff --git a/Host/Source/MicroBoot/interfaces/net/XcpTransport.~pa b/Host/Source/MicroBoot/interfaces/net/XcpTransport.~pa new file mode 100644 index 00000000..179c1567 --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/XcpTransport.~pa @@ -0,0 +1,436 @@ +unit XcpTransport; +//*************************************************************************************** +// Description: XCP transport layer for SCI. +// File Name: XcpTransport.pas +// +//--------------------------------------------------------------------------------------- +// C O P Y R I G H T +//--------------------------------------------------------------------------------------- +// Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +// +// This software has been carefully tested, but is not guaranteed for any particular +// purpose. The author does not offer any warranties and does not guarantee the accuracy, +// adequacy, or completeness of the software and is not responsible for any errors or +// omissions or the results obtained from use of the software. +// +//--------------------------------------------------------------------------------------- +// L I C E N S E +//--------------------------------------------------------------------------------------- +// This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with OpenBLT. +// If not, see . +// +// A special exception to the GPL is included to allow you to distribute a combined work +// that includes OpenBLT without being obliged to provide the source code for any +// proprietary components. The exception text is included at the bottom of the license +// file . +// +//*************************************************************************************** +interface + + +//*************************************************************************************** +// Includes +//*************************************************************************************** +uses + Windows, Messages, SysUtils, Classes, Forms, IniFiles, Winsock, WSocket; + + +//*************************************************************************************** +// Global Constants +//*************************************************************************************** +const kMaxPacketSize = 256 + 4; // 4 extra for TCP/IP counter overhead +const kTcpConnectedTimeoutMs = 1000; // timeout for connecting the socket +const kTcpMinReceptionTimeoutMs = 1000; // minimal timeout for data reception + + +//*************************************************************************************** +// Type Definitions +//*************************************************************************************** +type + TXcpTransportInfo = (kNone, kConnected, kResponse, kError); + + +type + TXcpTransport = class(TObject) + private + comEventInfo : TXcpTransportInfo; + comEvent : THandle; + socket : TWSocket; + hostname : string; + port : string; + croCounter : LongWord; + procedure OnSocketSessionConnected(Sender: TObject; Error: Word); + procedure OnSocketDataAvailable(Sender: TObject; ErrCode: Word); + function MsgWaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; + public + packetData : array[0..kMaxPacketSize-1] of Byte; + packetLen : Word; + constructor Create; + procedure Configure(iniFile : string); + function Connect: Boolean; + function SendPacket(timeOutms: LongWord): Boolean; + procedure Disconnect; + destructor Destroy; override; + end; + + +implementation + +//*************************************************************************************** +// NAME: Create +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Class constructore +// +//*************************************************************************************** +constructor TXcpTransport.Create; +begin + // call inherited constructor + inherited Create; + + // reset can event info + comEventInfo := kNone; + + // create the event that requires manual reset + comEvent := CreateEvent(nil, True, False, nil); + + if comEvent = 0 then + Application.MessageBox( 'Could not obtain event placeholder.', + 'Error', MB_OK or MB_ICONERROR ); + + // create a socket instance + socket := TWSocket.Create(nil); + + // set the socket event handlers + socket.OnSessionConnected := OnSocketSessionConnected; + socket.OnDataAvailable := OnSocketDataAvailable; + + // init CRO counter value + croCounter := 1; + + // reset packet length + packetLen := 0; +end; //*** end of Create *** + + +//*************************************************************************************** +// NAME: Destroy +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Class destructor +// +//*************************************************************************************** +destructor TXcpTransport.Destroy; +begin + // release socket instance + socket.Free; + + // call inherited destructor + inherited; +end; //*** end of Destroy *** + + +//*************************************************************************************** +// NAME: Configure +// PARAMETER: filename of the INI +// RETURN VALUE: none +// DESCRIPTION: Configures both this class from the settings in the INI. +// +//*************************************************************************************** +procedure TXcpTransport.Configure(iniFile : string); +var + settingsIni : TIniFile; +begin + // read XCP configuration from INI + if FileExists(iniFile) then + begin + // create ini file object + settingsIni := TIniFile.Create(iniFile); + + // configure hostname + hostname := settingsIni.ReadString('net', 'hostname', '169.254.19.63'); + + // configure port + port := settingsIni.ReadString('net', 'port', '1000'); + + // release ini file object + settingsIni.Free; + end + else + begin + // configure defeault hostname + hostname := '169.254.19.63'; + + // configure default port + port := '1000'; + end; + +end; //*** end of Configure *** + + +//*************************************************************************************** +// NAME: Connect +// PARAMETER: none +// RETURN VALUE: True if connected, False otherwise. +// DESCRIPTION: Connects the transport layer device. +// +//*************************************************************************************** +function TXcpTransport.Connect: Boolean; +var + waitResult: Integer; +begin + // make sure the event is reset + ResetEvent(comEvent); + comEventInfo := kNone; + + // init CRO counter value + croCounter := 1; + + // make sure the socket is closed + if socket.State <> wsClosed then + begin + socket.Close; + socket.WaitForClose; + end; + + // set the hostname, port and protocol + socket.Addr := hostname; + socket.Port := port; + socket.Proto := 'tcp'; + + // submit the connect request + socket.Connect; + + // connection is being established. Now wait for the connected event + waitResult := MsgWaitForSingleObject(comEvent, kTcpConnectedTimeoutMs); + + if waitResult <> WAIT_OBJECT_0 then + begin + // no com event triggered so either a timeout or internal error occurred + result := false; + Exit; + end; + + // com event was triggered. now check that it is actually not an error + if comEventInfo <> kConnected then + begin + result := false; + Exit; + end; + // successfully connected + result := true; +end; //*** end of Connect *** + + +//*************************************************************************************** +// NAME: SendPacket +// PARAMETER: the time[ms] allowed for the reponse from the slave to come in. +// RETURN VALUE: True if response received from slave, False otherwise +// DESCRIPTION: Sends the XCP packet using the data in 'packetData' and length in +// 'packetLen' and waits for the response to come in. +// +//*************************************************************************************** +function TXcpTransport.SendPacket(timeOutms: LongWord): Boolean; +var + msgData : array of Byte; + cnt : byte; + waitResult: Integer; + adjustedTimeoutMs: LongWord; +begin + // make sure the event is reset + ResetEvent(comEvent); + comEventInfo := kNone; + + // init the return value + result := false; + + // prepare the packet. the first 4 bytes contain the CRO counter followed by the actual + // packet data + SetLength(msgData, packetLen+4); + + // first store the CRO counter + msgData[0] := Byte(croCounter); + msgData[1] := Byte(croCounter shr 8); + msgData[2] := Byte(croCounter shr 16); + msgData[3] := Byte(croCounter shr 24); + + // increment the CRO counter for the next packet + croCounter := croCounter + 1; + + // copy the packet data + for cnt := 0 to packetLen-1 do + begin + msgData[cnt+4] := packetData[cnt]; + end; + + // submit the packet transmission request + if socket.Send(@msgData[0], packetLen+4) = -1 then + begin + // unable to submit tx request + Exit; + end; + + // realistically, on TCP/IP due to network latency the reception of a packet can take + // a little while. if a really short timeout time is specified, this should be over- + // ruled. + if timeOutms < kTcpMinReceptionTimeoutMs then + adjustedTimeoutMs := kTcpMinReceptionTimeoutMs + else + adjustedTimeoutMs := timeOutms; + + // packet is being transmitted. Now wait for the response to come in + waitResult := MsgWaitForSingleObject(comEvent, adjustedTimeoutMs); + + if waitResult <> WAIT_OBJECT_0 then + begin + // no com event triggered so either a timeout or internal error occurred + result := False; + Exit; + end; + + // com event was triggered. now check if the reponse was correctly received + if comEventInfo <> kResponse then + begin + result := False; + Exit; + end; + + // packet successfully transmitted and response packet received + result := True; +end; //*** end of SendPacket *** + + +//*************************************************************************************** +// NAME: Disconnect +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Disconnects the transport layer device. +// +//*************************************************************************************** +procedure TXcpTransport.Disconnect; +begin + // close the socket + socket.Close; + socket.WaitForClose; +end; //*** end of Disconnect *** + + +//*************************************************************************************** +// NAME: OnSocketSessionConnected +// PARAMETER: Sender is the source that triggered the event. +// Error contains possible connection error information. +// RETURN VALUE: none +// DESCRIPTION: Socket connected event handler +// +//*************************************************************************************** +procedure TXcpTransport.OnSocketSessionConnected(Sender: TObject; Error: Word); +begin + // set event flag + if Error <> 0 then + comEventInfo := kError + else + comEventInfo := kConnected; + + // trigger the event + SetEvent(comEvent); +end; //*** end of OnSocketSessionConnected *** + + +//*************************************************************************************** +// NAME: OnSocketDataAvailable +// PARAMETER: Sender is the source that triggered the event. +// Error contains possible data reception error information. +// RETURN VALUE: none +// DESCRIPTION: Socket data reception event handler +// +//*************************************************************************************** +procedure TXcpTransport.OnSocketDataAvailable(Sender: TObject; ErrCode: Word); +var + tempBuffer : array[0..kMaxPacketSize-1] of Byte; + count : Integer; + idx : Integer; +begin + count := socket.Receive(@tempBuffer[0], kMaxPacketSize); + // the first 4 bytes contains the dto counter in which we are not really interested + packetLen := count - 4; + // store the response data + for idx := 0 to packetLen-1 do + begin + packetData[idx] := tempBuffer[idx+4]; + end; + + if packetLen = 0 then + // set event flag + comEventInfo := kError + else + // set event flag + comEventInfo := kResponse; + + // trigger the event + SetEvent(comEvent); +end; //*** end of OnSocketDataAvailable *** + + +//*************************************************************************************** +// NAME: MsgWaitForSingleObject +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Improved version of WaitForSingleObject. This version actually +// processes messages in the queue instead of blocking them. +// +//*************************************************************************************** +function TXcpTransport.MsgWaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; +var + dwEnd:DWord; +begin + // compute the time when the WaitForSingleObject is supposed to time out + dwEnd := GetTickCount + dwMilliseconds; + + repeat + // wait for an event to happen or a message to be in the queue + result := MsgWaitForMultipleObjects(1, hHandle, False, dwMilliseconds, QS_ALLINPUT); + + // a message was in the queue? + if result = WAIT_OBJECT_0 + 1 then + begin + // process these messages + Application.ProcessMessages; + socket.MessagePump; + + // check for timeout manually because if a message in the queue occurred, the + // MsgWaitForMultipleObjects will be called again and the timer will start from + // scratch. we need to make sure the correct timeout time is used. + dwMilliseconds := GetTickCount; + if dwMilliseconds < dwEnd then + begin + dwMilliseconds := dwEnd - dwMilliseconds; + end + else + begin + // timeout occured + result := WAIT_TIMEOUT; + Break; + end; + end + else + // the event occured? + begin + // we can stop + Break; + end; + until True = False; +end; //*** end of MsgWaitForSingleObject *** + + +end. +//******************************** end of XcpTransport.pas ****************************** + diff --git a/Host/Source/MicroBoot/interfaces/net/net_icon.bmp b/Host/Source/MicroBoot/interfaces/net/net_icon.bmp new file mode 100644 index 00000000..32e6de3f Binary files /dev/null and b/Host/Source/MicroBoot/interfaces/net/net_icon.bmp differ diff --git a/Host/Source/MicroBoot/interfaces/net/openblt_net.cfg b/Host/Source/MicroBoot/interfaces/net/openblt_net.cfg new file mode 100644 index 00000000..7e67a882 --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/openblt_net.cfg @@ -0,0 +1,35 @@ +-$A+ +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E../../../../ +-LNc:\borland\delphi4\Lib diff --git a/Host/Source/MicroBoot/interfaces/net/openblt_net.dof b/Host/Source/MicroBoot/interfaces/net/openblt_net.dof new file mode 100644 index 00000000..5d0ef50e --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/openblt_net.dof @@ -0,0 +1,85 @@ +[Compiler] +A=1 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=../../../../ +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=Vcl40;Vclx40;Vcldb40;vcldbx40;VclSmp40;Qrpt40;IcsDel40 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1043 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=../../../../ +Item1=../../../ diff --git a/Host/Source/MicroBoot/interfaces/net/openblt_net.dpr b/Host/Source/MicroBoot/interfaces/net/openblt_net.dpr new file mode 100644 index 00000000..638233aa --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/openblt_net.dpr @@ -0,0 +1,625 @@ +library openblt_net; +//*************************************************************************************** +// Project Name: MicroBoot Interface for Borland Delphi +// Description: XCP - NET (TCP/IP) interface for MicroBoot +// File Name: openblt_net.dpr +// +//--------------------------------------------------------------------------------------- +// C O P Y R I G H T +//--------------------------------------------------------------------------------------- +// Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +// +// This software has been carefully tested, but is not guaranteed for any particular +// purpose. The author does not offer any warranties and does not guarantee the accuracy, +// adequacy, or completeness of the software and is not responsible for any errors or +// omissions or the results obtained from use of the software. +// +//--------------------------------------------------------------------------------------- +// L I C E N S E +//--------------------------------------------------------------------------------------- +// This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with OpenBLT. +// If not, see . +// +// A special exception to the GPL is included to allow you to distribute a combined work +// that includes OpenBLT without being obliged to provide the source code for any +// proprietary components. The exception text is included at the bottom of the license +// file . +// +//*************************************************************************************** + + +//*************************************************************************************** +// Includes +//*************************************************************************************** +uses + Windows, + Messages, + Graphics, + Controls, + Forms, + Dialogs, + SysUtils, + Classes, + Extctrls, + XcpProtection in '..\XcpProtection.pas', + SRecReader in '..\SRecReader.pas', + XcpDataFile in '..\XcpDataFile.pas', + XcpLoader in '..\XcpLoader.pas', + XcpTransport in 'XcpTransport.pas', + XcpSettings in 'XcpSettings.pas' {XcpSettingsForm}; + + +//*************************************************************************************** +// Global Constants +//*************************************************************************************** +const kMaxProgLen = 256; // maximum number of bytes to progam at one time + + +//*************************************************************************************** +// Type Definitions +//*************************************************************************************** +// DLL Interface Callbacks - modifications requires potential update of all interfaces! +type + TStartedEvent = procedure(length: Longword) of object; + TProgressEvent = procedure(progress: Longword) of object; + TDoneEvent = procedure of object; + TErrorEvent = procedure(error: ShortString) of object; + TLogEvent = procedure(info: ShortString) of object; + TInfoEvent = procedure(info: ShortString) of object; + +type + TEventHandlers = class // create a dummy class + procedure OnTimeout(Sender: TObject); + end; + +//*************************************************************************************** +// Global Variables +//*************************************************************************************** +var + //--- begin of don't change --- + AppOnStarted : TStartedEvent; + AppOnProgress : TProgressEvent; + AppOnDone : TDoneEvent; + AppOnError : TErrorEvent; + AppOnLog : TLogEvent; + AppOnInfo : TInfoEvent; + //--- end of don't change --- + timer : TTimer; + events : TEventHandlers; + loader : TXcpLoader; + datafile : TXcpDataFile; + progdata : array of Byte; + progfile : string; + stopRequest : boolean; + + +//*************************************************************************************** +// NAME: MbiCallbackOnStarted +// PARAMETER: length of the file that is being downloaded. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnStarted(length: Longword); +begin + if Assigned(AppOnStarted) then + begin + AppOnStarted(length); + end; +end; //** end of MbiCallbackOnStarted *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnProgress +// PARAMETER: progress of the file download. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnProgress(progress: Longword); +begin + if Assigned(AppOnProgress) then + begin + AppOnProgress(progress); + end; +end; //** end of MbiCallbackOnProgress *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnDone +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnDone; +begin + if Assigned(AppOnDone) then + begin + AppOnDone; + end; +end; //** end of MbiCallbackOnDone *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnError +// PARAMETER: info about the error that occured. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnError(error: ShortString); +begin + if Assigned(AppOnError) then + begin + AppOnError(error); + end; +end; //** end of MbiCallbackOnError *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnLog +// PARAMETER: info on the log event. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnLog(info: ShortString); +begin + if Assigned(AppOnLog) then + begin + AppOnLog(info); + end; +end; //** end of MbiCallbackOnLog *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnInfo +// PARAMETER: details on the info event. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnInfo(info: ShortString); +begin + if Assigned(AppOnInfo) then + begin + AppOnInfo(info); + end; +end; //** end of MbiCallbackOnLog *** + + +//*************************************************************************************** +// NAME: LogData +// PARAMETER: pointer to byte array and the data length +// RETURN VALUE: none +// DESCRIPTION: Writes the program data formatted to the logfile +// +//*************************************************************************************** +procedure LogData(data : PByteArray; len : longword); stdcall; +var + currentWriteCnt : byte; + cnt : byte; + logStr : string; + bufferOffset : longword; +begin + bufferOffset := 0; + + while len > 0 do + begin + // set the current write length optimized to log 32 bytes per line + currentWriteCnt := len mod 32; + if currentWriteCnt = 0 then currentWriteCnt := 32; + logStr := ''; + + // prepare the line to add to the log + for cnt := 0 to currentWriteCnt-1 do + begin + logStr := logStr + Format('%2.2x ', [data[bufferOffset+cnt]]); + end; + + // update the log + MbiCallbackOnLog(logStr); + + // update loop variables + len := len - currentWriteCnt; + bufferOffset := bufferOffset + currentWriteCnt; + end; +end; //*** end of LogData *** + + +//*************************************************************************************** +// NAME: OnTimeout +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Timer event handler. A timer is used in this example to simulate the +// progress of a file download. It also demonstrates how to use the +// application callbacks to keep the application informed. +// +//*************************************************************************************** +procedure TEventHandlers.OnTimeout(Sender: TObject); +var + errorInfo : string; + progress : longword; + regionCnt : longword; + currentWriteCnt : word; + bufferOffset : longword; + addr : longword; + len : longword; + dataSizeKB : real; +begin + timer.Enabled := False; + + // connect the transport layer + MbiCallbackOnInfo('Connecting to target via TCP/IP.'); + MbiCallbackOnLog('Connecting to target via TCP/IP. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnInfo('Could not connect via TCP/IP. Retrying. Reset your target if this takes a long time.'); + MbiCallbackOnLog('Transport layer connection failed. Check the configured IP address and port. t='+TimeToStr(Time)); + MbiCallbackOnLog('Retrying transport layer connection. Reset your target if this takes a long time. t='+TimeToStr(Time)); + Application.ProcessMessages; + // continuously try to connect the transport layer + while not loader.Connect do + begin + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Transport layer connection cancelled by user.'); + Exit; + end; + end; + end; + + //---------------- start the programming session -------------------------------------- + MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + + // try initial connect via XCP + if not loader.StartProgrammingSession then + begin + // update the user info + MbiCallbackOnInfo('Could not connect. Please reset your target...'); + MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); + Application.ProcessMessages; + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do + begin + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; + end; + end; + + // still here so programming session was started + MbiCallbackOnLog('Programming session started. t='+TimeToStr(Time)); + + // create the datafile object + datafile := TXcpDataFile.Create(progfile); + + // compute the size in kbytes + dataSizeKB := datafile.GetDataCnt / 1024; + + // Call application callback when we start the actual download + MbiCallbackOnStarted(datafile.GetDataCnt); + + // Init progress to 0 progress + progress := 0; + MbiCallbackOnProgress(progress); + + //---------------- next clear the memory regions -------------------------------------- + // update the user info + MbiCallbackOnInfo('Erasing memory...'); + + for regionCnt := 0 to datafile.GetRegionCnt-1 do + begin + // obtain the region info + datafile.GetRegionInfo(regionCnt, addr, len); + + // erase the memory + MbiCallbackOnLog('Clearing Memory '+Format('addr:0x%x,len:0x%x',[addr,len])+'. t='+TimeToStr(Time)); + if not loader.ClearMemory(addr, len) then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not clear memory ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not clear memory ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Memory cleared. t='+TimeToStr(Time)); + end; + + //---------------- next program the memory regions ------------------------------------ + for regionCnt := 0 to datafile.GetRegionCnt-1 do + begin + // update the user info + MbiCallbackOnInfo('Reading file...'); + + // obtain the region info + datafile.GetRegionInfo(regionCnt, addr, len); + // dynamically allocated buffer memory + SetLength(progdata, len); + // obtain the regiond data + datafile.GetRegionData(regionCnt, progdata); + + bufferOffset := 0; + while len > 0 do + begin + // set the current write length taking into account kMaxProgLen + currentWriteCnt := len mod kMaxProgLen; + if currentWriteCnt = 0 then currentWriteCnt := kMaxProgLen; + + // program the data + MbiCallbackOnLog('Programming Data '+Format('addr:0x%x,len:0x%x',[addr,currentWriteCnt])+'. t='+TimeToStr(Time)); + LogData(@progdata[bufferOffset], currentWriteCnt); + + if not loader.WriteData(addr, currentWriteCnt, @progdata[bufferOffset]) then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not program data ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not program data ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Data Programmed. t='+TimeToStr(Time)); + + // update progress + progress := progress + currentWriteCnt; + MbiCallbackOnProgress(progress); + + // update loop variables + len := len - currentWriteCnt; + addr := addr + currentWriteCnt; + bufferOffset := bufferOffset + currentWriteCnt; + + // update the user info + MbiCallbackOnInfo('Programming data... ' + Format('(%.1n of %.1n Kbytes)',[(progress/1024), dataSizeKB])); + + end; + end; + + //---------------- stop the programming session --------------------------------------- + MbiCallbackOnLog('Stopping the programming session. t='+TimeToStr(Time)); + if not loader.StopProgrammingSession then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not stop the programming session ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not stop the programming session ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Programming session stopped. t='+TimeToStr(Time)); + + // all done so set progress to 100% and finish up + progress := datafile.GetDataCnt; + datafile.Free; + MbiCallbackOnProgress(progress); + MbiCallbackOnLog('File successfully downloaded t='+TimeToStr(Time)); + MbiCallbackOnDone; + +end; //*** end of OnTimeout *** + + +//*************************************************************************************** +// NAME: MbiInit +// PARAMETER: callback function pointers +// RETURN VALUE: none +// DESCRIPTION: Called by the application to initialize the interface library. +// +//*************************************************************************************** +procedure MbiInit(cbStarted: TStartedEvent; cbProgress: TProgressEvent; + cbDone: TDoneEvent; cbError: TErrorEvent; cbLog: TLogEvent; + cbInfo: TInfoEvent); stdcall; +begin + //--- begin of don't change --- + AppOnStarted := cbStarted; + AppOnProgress := cbProgress; + AppOnDone := cbDone; + AppOnLog := cbLog; + AppOnInfo := cbInfo; + AppOnError := cbError; + //--- end of don't change --- + + // create xcp loader object + loader := TXcpLoader.Create; + + // update to the latest configuration + loader.Configure(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); + + // create and init a timer + events := TEventHandlers.Create; + timer := TTimer.Create(nil); + timer.Enabled := False; + timer.Interval := 100; + timer.OnTimer := events.OnTimeout; +end; //*** end of MbiInit *** + + +//*************************************************************************************** +// NAME: MbiStart +// PARAMETER: filename of the file that is to be downloaded. +// RETURN VALUE: none +// DESCRIPTION: Called by the application to request the interface library to download +// the file that is passed as a parameter. +// +//*************************************************************************************** +procedure MbiStart(fileName: ShortString); stdcall; +begin + // update the user info + MbiCallbackOnInfo(''); + + // start the log + MbiCallbackOnLog('--- Downloading "'+fileName+'" ---'); + + // reset stop request + stopRequest := false; + + // start the startup timer which gives microBoot a chance to paint itself + timer.Enabled := True; + + // store the program's filename + progfile := fileName; +end; //*** end of MbiStart *** + + +//*************************************************************************************** +// NAME: MbiStop +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to request the interface library to stop +// a download that could be in progress. +// +//*************************************************************************************** +procedure MbiStop; stdcall; +begin + // set stop request + stopRequest := true; + + // disconnect the transport layer + MbiCallbackOnLog('Disconnecting the transport layer. t='+TimeToStr(Time)); + loader.Disconnect; +end; //*** end of MbiStop *** + + +//*************************************************************************************** +// NAME: MbiDeInit +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to uninitialize the interface library. +// +//*************************************************************************************** +procedure MbiDeInit; stdcall; +begin + // release xcp loader object + loader.Free; + + // release the timer and events object + timer.Free; + events.Free; + + //--- begin of don't change --- + AppOnStarted := nil; + AppOnProgress := nil; + AppOnDone := nil; + AppOnLog := nil; + AppOnInfo := nil; + AppOnError := nil; + //--- end of don't change --- +end; //*** end of MbiDeInit *** + + +//*************************************************************************************** +// NAME: MbiName +// PARAMETER: none +// RETURN VALUE: name of the interface library +// DESCRIPTION: Called by the application to obtain the name of the interface library. +// +//*************************************************************************************** +function MbiName : ShortString; stdcall; +begin + Result := 'OpenBLT TCP/IP'; +end; //*** end of MbiName *** + + +//*************************************************************************************** +// NAME: MbiDescription +// PARAMETER: none +// RETURN VALUE: description of the interface library +// DESCRIPTION: Called by the application to obtain the description of the interface +// library. +// +//*************************************************************************************** +function MbiDescription : ShortString; stdcall; +begin + Result := 'OpenBLT using TCP/IP'; +end; //*** end of MbiDescription *** + + +//*************************************************************************************** +// NAME: MbiVersion +// PARAMETER: none +// RETURN VALUE: version number +// DESCRIPTION: Called by the application to obtain the version number of the +// interface library. +// +//*************************************************************************************** +function MbiVersion : Longword; stdcall; +begin + Result := 10000; // v1.00.00 +end; //*** end of MbiVersion *** + + +//*************************************************************************************** +// NAME: MbiVInterface +// PARAMETER: none +// RETURN VALUE: version number of the supported interface +// DESCRIPTION: Called by the application to obtain the version number of the +// Mbi interface uBootInterface.pas (not the interface library). This can +// be used by the application for backward compatibility. +// +//*************************************************************************************** +function MbiVInterface : Longword; stdcall; +begin + Result := 10001; // v1.00.01 +end; //*** end of MbiVInterface *** + + +//*************************************************************************************** +// NAME: MbiConfigure +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to enable the user to configure the inter- +// face library through the application. +// +//*************************************************************************************** +procedure MbiConfigure; stdcall; +var + settings : TXcpSettings; +begin + // create xcp settings object + settings := TXcpSettings.Create(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); + + // display the modal configuration dialog + settings.Configure; + + // release the xcp settings object + settings.Free; + + // update to the latest configuration + loader.Configure(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); +end; //*** end of MbiConfigure *** + + +//*************************************************************************************** +// External Declarations +//*************************************************************************************** +exports + //--- begin of don't change --- + MbiInit index 1, + MbiStart index 2, + MbiStop index 3, + MbiDeInit index 4, + MbiName index 5, + MbiDescription index 6, + MbiVersion index 7, + MbiConfigure index 8, + MbiVInterface index 9; + //--- end of don't change --- + +end. +//********************************** end of openblt_net.dpr ***************************** diff --git a/Host/Source/MicroBoot/interfaces/net/openblt_net.~dp b/Host/Source/MicroBoot/interfaces/net/openblt_net.~dp new file mode 100644 index 00000000..724af5b4 --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/openblt_net.~dp @@ -0,0 +1,624 @@ +library openblt_net; +//*************************************************************************************** +// Project Name: MicroBoot Interface for Borland Delphi +// Description: XCP - NET (TCP/IP) interface for MicroBoot +// File Name: openblt_net.dpr +// +//--------------------------------------------------------------------------------------- +// C O P Y R I G H T +//--------------------------------------------------------------------------------------- +// Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +// +// This software has been carefully tested, but is not guaranteed for any particular +// purpose. The author does not offer any warranties and does not guarantee the accuracy, +// adequacy, or completeness of the software and is not responsible for any errors or +// omissions or the results obtained from use of the software. +// +//--------------------------------------------------------------------------------------- +// L I C E N S E +//--------------------------------------------------------------------------------------- +// This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +// PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with OpenBLT. +// If not, see . +// +// A special exception to the GPL is included to allow you to distribute a combined work +// that includes OpenBLT without being obliged to provide the source code for any +// proprietary components. The exception text is included at the bottom of the license +// file . +// +//*************************************************************************************** + + +//*************************************************************************************** +// Includes +//*************************************************************************************** +uses + Windows, + Messages, + Graphics, + Controls, + Forms, + Dialogs, + SysUtils, + Classes, + Extctrls, + XcpProtection in '..\XcpProtection.pas', + SRecReader in '..\SRecReader.pas', + XcpDataFile in '..\XcpDataFile.pas', + XcpLoader in '..\XcpLoader.pas', + XcpTransport in 'XcpTransport.pas', + XcpSettings in 'XcpSettings.pas' {XcpSettingsForm}; + + +//*************************************************************************************** +// Global Constants +//*************************************************************************************** +const kMaxProgLen = 256; // maximum number of bytes to progam at one time + + +//*************************************************************************************** +// Type Definitions +//*************************************************************************************** +// DLL Interface Callbacks - modifications requires potential update of all interfaces! +type + TStartedEvent = procedure(length: Longword) of object; + TProgressEvent = procedure(progress: Longword) of object; + TDoneEvent = procedure of object; + TErrorEvent = procedure(error: ShortString) of object; + TLogEvent = procedure(info: ShortString) of object; + TInfoEvent = procedure(info: ShortString) of object; + +type + TEventHandlers = class // create a dummy class + procedure OnTimeout(Sender: TObject); + end; + +//*************************************************************************************** +// Global Variables +//*************************************************************************************** +var + //--- begin of don't change --- + AppOnStarted : TStartedEvent; + AppOnProgress : TProgressEvent; + AppOnDone : TDoneEvent; + AppOnError : TErrorEvent; + AppOnLog : TLogEvent; + AppOnInfo : TInfoEvent; + //--- end of don't change --- + timer : TTimer; + events : TEventHandlers; + loader : TXcpLoader; + datafile : TXcpDataFile; + progdata : array of Byte; + progfile : string; + stopRequest : boolean; + + +//*************************************************************************************** +// NAME: MbiCallbackOnStarted +// PARAMETER: length of the file that is being downloaded. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnStarted(length: Longword); +begin + if Assigned(AppOnStarted) then + begin + AppOnStarted(length); + end; +end; //** end of MbiCallbackOnStarted *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnProgress +// PARAMETER: progress of the file download. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnProgress(progress: Longword); +begin + if Assigned(AppOnProgress) then + begin + AppOnProgress(progress); + end; +end; //** end of MbiCallbackOnProgress *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnDone +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnDone; +begin + if Assigned(AppOnDone) then + begin + AppOnDone; + end; +end; //** end of MbiCallbackOnDone *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnError +// PARAMETER: info about the error that occured. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnError(error: ShortString); +begin + if Assigned(AppOnError) then + begin + AppOnError(error); + end; +end; //** end of MbiCallbackOnError *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnLog +// PARAMETER: info on the log event. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnLog(info: ShortString); +begin + if Assigned(AppOnLog) then + begin + AppOnLog(info); + end; +end; //** end of MbiCallbackOnLog *** + + +//*************************************************************************************** +// NAME: MbiCallbackOnInfo +// PARAMETER: details on the info event. +// RETURN VALUE: none +// DESCRIPTION: Wrapper function for safely calling an application callback +// +//*************************************************************************************** +procedure MbiCallbackOnInfo(info: ShortString); +begin + if Assigned(AppOnInfo) then + begin + AppOnInfo(info); + end; +end; //** end of MbiCallbackOnLog *** + + +//*************************************************************************************** +// NAME: LogData +// PARAMETER: pointer to byte array and the data length +// RETURN VALUE: none +// DESCRIPTION: Writes the program data formatted to the logfile +// +//*************************************************************************************** +procedure LogData(data : PByteArray; len : longword); stdcall; +var + currentWriteCnt : byte; + cnt : byte; + logStr : string; + bufferOffset : longword; +begin + bufferOffset := 0; + + while len > 0 do + begin + // set the current write length optimized to log 32 bytes per line + currentWriteCnt := len mod 32; + if currentWriteCnt = 0 then currentWriteCnt := 32; + logStr := ''; + + // prepare the line to add to the log + for cnt := 0 to currentWriteCnt-1 do + begin + logStr := logStr + Format('%2.2x ', [data[bufferOffset+cnt]]); + end; + + // update the log + MbiCallbackOnLog(logStr); + + // update loop variables + len := len - currentWriteCnt; + bufferOffset := bufferOffset + currentWriteCnt; + end; +end; //*** end of LogData *** + + +//*************************************************************************************** +// NAME: OnTimeout +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Timer event handler. A timer is used in this example to simulate the +// progress of a file download. It also demonstrates how to use the +// application callbacks to keep the application informed. +// +//*************************************************************************************** +procedure TEventHandlers.OnTimeout(Sender: TObject); +var + errorInfo : string; + progress : longword; + regionCnt : longword; + currentWriteCnt : word; + bufferOffset : longword; + addr : longword; + len : longword; + dataSizeKB : real; +begin + timer.Enabled := False; + + // connect the transport layer + MbiCallbackOnInfo('Connecting the transport layer.'); + MbiCallbackOnLog('Connecting the transport layer. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnInfo('Could not connect to transport layer. Automatically retrying...'); + MbiCallbackOnLog('Transport layer connection failed. Automatically retrying. t='+TimeToStr(Time)); + Application.ProcessMessages; + // continuously try to coonect the transport layer + while not loader.Connect do + begin + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Transport layer connection cancelled by user.'); + Exit; + end; + end; + end; + + //---------------- start the programming session -------------------------------------- + MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + + // try initial connect via XCP + if not loader.StartProgrammingSession then + begin + // update the user info + MbiCallbackOnInfo('Could not connect. Please reset your target...'); + MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); + Application.ProcessMessages; + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do + begin + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; + end; + end; + + // still here so programming session was started + MbiCallbackOnLog('Programming session started. t='+TimeToStr(Time)); + + // create the datafile object + datafile := TXcpDataFile.Create(progfile); + + // compute the size in kbytes + dataSizeKB := datafile.GetDataCnt / 1024; + + // Call application callback when we start the actual download + MbiCallbackOnStarted(datafile.GetDataCnt); + + // Init progress to 0 progress + progress := 0; + MbiCallbackOnProgress(progress); + + //---------------- next clear the memory regions -------------------------------------- + // update the user info + MbiCallbackOnInfo('Erasing memory...'); + + for regionCnt := 0 to datafile.GetRegionCnt-1 do + begin + // obtain the region info + datafile.GetRegionInfo(regionCnt, addr, len); + + // erase the memory + MbiCallbackOnLog('Clearing Memory '+Format('addr:0x%x,len:0x%x',[addr,len])+'. t='+TimeToStr(Time)); + if not loader.ClearMemory(addr, len) then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not clear memory ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not clear memory ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Memory cleared. t='+TimeToStr(Time)); + end; + + //---------------- next program the memory regions ------------------------------------ + for regionCnt := 0 to datafile.GetRegionCnt-1 do + begin + // update the user info + MbiCallbackOnInfo('Reading file...'); + + // obtain the region info + datafile.GetRegionInfo(regionCnt, addr, len); + // dynamically allocated buffer memory + SetLength(progdata, len); + // obtain the regiond data + datafile.GetRegionData(regionCnt, progdata); + + bufferOffset := 0; + while len > 0 do + begin + // set the current write length taking into account kMaxProgLen + currentWriteCnt := len mod kMaxProgLen; + if currentWriteCnt = 0 then currentWriteCnt := kMaxProgLen; + + // program the data + MbiCallbackOnLog('Programming Data '+Format('addr:0x%x,len:0x%x',[addr,currentWriteCnt])+'. t='+TimeToStr(Time)); + LogData(@progdata[bufferOffset], currentWriteCnt); + + if not loader.WriteData(addr, currentWriteCnt, @progdata[bufferOffset]) then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not program data ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not program data ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Data Programmed. t='+TimeToStr(Time)); + + // update progress + progress := progress + currentWriteCnt; + MbiCallbackOnProgress(progress); + + // update loop variables + len := len - currentWriteCnt; + addr := addr + currentWriteCnt; + bufferOffset := bufferOffset + currentWriteCnt; + + // update the user info + MbiCallbackOnInfo('Programming data... ' + Format('(%.1n of %.1n Kbytes)',[(progress/1024), dataSizeKB])); + + end; + end; + + //---------------- stop the programming session --------------------------------------- + MbiCallbackOnLog('Stopping the programming session. t='+TimeToStr(Time)); + if not loader.StopProgrammingSession then + begin + loader.GetLastError(errorInfo); + MbiCallbackOnLog('Could not stop the programming session ('+errorInfo+'). t='+TimeToStr(Time)); + MbiCallbackOnError('Could not stop the programming session ('+errorInfo+').'); + datafile.Free; + Exit; + end; + MbiCallbackOnLog('Programming session stopped. t='+TimeToStr(Time)); + + // all done so set progress to 100% and finish up + progress := datafile.GetDataCnt; + datafile.Free; + MbiCallbackOnProgress(progress); + MbiCallbackOnLog('File successfully downloaded t='+TimeToStr(Time)); + MbiCallbackOnDone; + +end; //*** end of OnTimeout *** + + +//*************************************************************************************** +// NAME: MbiInit +// PARAMETER: callback function pointers +// RETURN VALUE: none +// DESCRIPTION: Called by the application to initialize the interface library. +// +//*************************************************************************************** +procedure MbiInit(cbStarted: TStartedEvent; cbProgress: TProgressEvent; + cbDone: TDoneEvent; cbError: TErrorEvent; cbLog: TLogEvent; + cbInfo: TInfoEvent); stdcall; +begin + //--- begin of don't change --- + AppOnStarted := cbStarted; + AppOnProgress := cbProgress; + AppOnDone := cbDone; + AppOnLog := cbLog; + AppOnInfo := cbInfo; + AppOnError := cbError; + //--- end of don't change --- + + // create xcp loader object + loader := TXcpLoader.Create; + + // update to the latest configuration + loader.Configure(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); + + // create and init a timer + events := TEventHandlers.Create; + timer := TTimer.Create(nil); + timer.Enabled := False; + timer.Interval := 100; + timer.OnTimer := events.OnTimeout; +end; //*** end of MbiInit *** + + +//*************************************************************************************** +// NAME: MbiStart +// PARAMETER: filename of the file that is to be downloaded. +// RETURN VALUE: none +// DESCRIPTION: Called by the application to request the interface library to download +// the file that is passed as a parameter. +// +//*************************************************************************************** +procedure MbiStart(fileName: ShortString); stdcall; +begin + // update the user info + MbiCallbackOnInfo(''); + + // start the log + MbiCallbackOnLog('--- Downloading "'+fileName+'" ---'); + + // reset stop request + stopRequest := false; + + // start the startup timer which gives microBoot a chance to paint itself + timer.Enabled := True; + + // store the program's filename + progfile := fileName; +end; //*** end of MbiStart *** + + +//*************************************************************************************** +// NAME: MbiStop +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to request the interface library to stop +// a download that could be in progress. +// +//*************************************************************************************** +procedure MbiStop; stdcall; +begin + // set stop request + stopRequest := true; + + // disconnect the transport layer + MbiCallbackOnLog('Disconnecting the transport layer. t='+TimeToStr(Time)); + loader.Disconnect; +end; //*** end of MbiStop *** + + +//*************************************************************************************** +// NAME: MbiDeInit +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to uninitialize the interface library. +// +//*************************************************************************************** +procedure MbiDeInit; stdcall; +begin + // release xcp loader object + loader.Free; + + // release the timer and events object + timer.Free; + events.Free; + + //--- begin of don't change --- + AppOnStarted := nil; + AppOnProgress := nil; + AppOnDone := nil; + AppOnLog := nil; + AppOnInfo := nil; + AppOnError := nil; + //--- end of don't change --- +end; //*** end of MbiDeInit *** + + +//*************************************************************************************** +// NAME: MbiName +// PARAMETER: none +// RETURN VALUE: name of the interface library +// DESCRIPTION: Called by the application to obtain the name of the interface library. +// +//*************************************************************************************** +function MbiName : ShortString; stdcall; +begin + Result := 'OpenBLT TCP/IP'; +end; //*** end of MbiName *** + + +//*************************************************************************************** +// NAME: MbiDescription +// PARAMETER: none +// RETURN VALUE: description of the interface library +// DESCRIPTION: Called by the application to obtain the description of the interface +// library. +// +//*************************************************************************************** +function MbiDescription : ShortString; stdcall; +begin + Result := 'OpenBLT using TCP/IP'; +end; //*** end of MbiDescription *** + + +//*************************************************************************************** +// NAME: MbiVersion +// PARAMETER: none +// RETURN VALUE: version number +// DESCRIPTION: Called by the application to obtain the version number of the +// interface library. +// +//*************************************************************************************** +function MbiVersion : Longword; stdcall; +begin + Result := 10000; // v1.00.00 +end; //*** end of MbiVersion *** + + +//*************************************************************************************** +// NAME: MbiVInterface +// PARAMETER: none +// RETURN VALUE: version number of the supported interface +// DESCRIPTION: Called by the application to obtain the version number of the +// Mbi interface uBootInterface.pas (not the interface library). This can +// be used by the application for backward compatibility. +// +//*************************************************************************************** +function MbiVInterface : Longword; stdcall; +begin + Result := 10001; // v1.00.01 +end; //*** end of MbiVInterface *** + + +//*************************************************************************************** +// NAME: MbiConfigure +// PARAMETER: none +// RETURN VALUE: none +// DESCRIPTION: Called by the application to enable the user to configure the inter- +// face library through the application. +// +//*************************************************************************************** +procedure MbiConfigure; stdcall; +var + settings : TXcpSettings; +begin + // create xcp settings object + settings := TXcpSettings.Create(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); + + // display the modal configuration dialog + settings.Configure; + + // release the xcp settings object + settings.Free; + + // update to the latest configuration + loader.Configure(ExtractFilePath(ParamStr(0))+'openblt_net.ini'); +end; //*** end of MbiConfigure *** + + +//*************************************************************************************** +// External Declarations +//*************************************************************************************** +exports + //--- begin of don't change --- + MbiInit index 1, + MbiStart index 2, + MbiStop index 3, + MbiDeInit index 4, + MbiName index 5, + MbiDescription index 6, + MbiVersion index 7, + MbiConfigure index 8, + MbiVInterface index 9; + //--- end of don't change --- + +end. +//********************************** end of openblt_net.dpr ***************************** diff --git a/Host/Source/MicroBoot/interfaces/net/readme.txt b/Host/Source/MicroBoot/interfaces/net/readme.txt new file mode 100644 index 00000000..bdf1025c --- /dev/null +++ b/Host/Source/MicroBoot/interfaces/net/readme.txt @@ -0,0 +1,5 @@ +To build this interface in Delphi, the freeware Internet Component Suite (ICT) from F. Piette +should be installed in Delphi. It is located in the "OverbyteIcsV5.zip" archive. + +For more information about ICS, visit: http://www.overbyte.be/frame_index.html + diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm index 6d833d1d..6dbb16c1 100644 Binary files a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm and b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.pas b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.pas index e9ac7299..c1bbcc9a 100644 --- a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.pas +++ b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.pas @@ -79,6 +79,8 @@ type edtSeedKey: TEdit; btnBrowse: TButton; openDialog: TOpenDialog; + edtTconnect: TEdit; + lblTconnect: TLabel; procedure btnOKClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure btnBrowseClick(Sender: TObject); @@ -213,6 +215,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(settingsIni.ReadInteger('xcp', 't4', 10000)); FSettingsForm.edtT5.Text := IntToStr(settingsIni.ReadInteger('xcp', 't5', 1000)); FSettingsForm.edtT7.Text := IntToStr(settingsIni.ReadInteger('xcp', 't7', 2000)); + FSettingsForm.edtTconnect.Text := IntToStr(settingsIni.ReadInteger('xcp', 'tconnect', 20)); // release ini file object settingsIni.Free; @@ -231,7 +234,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(10000); FSettingsForm.edtT5.Text := IntToStr(1000); FSettingsForm.edtT7.Text := IntToStr(2000); - + FSettingsForm.edtTconnect.Text := IntToStr(20); end; // show the form as modal so we can get the result here @@ -253,6 +256,7 @@ begin settingsIni.WriteInteger('xcp', 't4', StrToInt(FSettingsForm.edtT4.Text)); settingsIni.WriteInteger('xcp', 't5', StrToInt(FSettingsForm.edtT5.Text)); settingsIni.WriteInteger('xcp', 't7', StrToInt(FSettingsForm.edtT7.Text)); + settingsIni.WriteInteger('xcp', 'tconnect', StrToInt(FSettingsForm.edtTconnect.Text)); // release ini file object settingsIni.Free; diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas index dd7ebf6d..84771589 100644 --- a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas @@ -62,7 +62,7 @@ type sciDriver : TCommPortDriver; constructor Create; procedure Configure(iniFile : string); - procedure Connect; + function Connect : Boolean; function SendPacket(timeOutms: LongWord): Boolean; procedure Disconnect; destructor Destroy; override; @@ -174,15 +174,15 @@ end; //*** end of Configure *** //*************************************************************************************** // NAME: Connect // PARAMETER: none -// RETURN VALUE: none +// RETURN VALUE: True is successful, False otherwise. // DESCRIPTION: Connects the transport layer device. // //*************************************************************************************** -procedure TXcpTransport.Connect; +function TXcpTransport.Connect : Boolean; begin + result := true; if not sciDriver.Connect then - Application.MessageBox( 'Could not connect to COM port.', - 'Error', MB_OK or MB_ICONERROR ); + result := false; end; //*** end of Connect *** diff --git a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.cfg b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.cfg index c757c9ae..7e67a882 100644 --- a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.cfg +++ b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.cfg @@ -31,5 +31,5 @@ -M -$M16384,1048576 -K$00400000 --E../../../ --LNc:\program files (x86)\borland\delphi4\Lib +-E../../../../ +-LNc:\borland\delphi4\Lib diff --git a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dof b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dof index 09cc9d39..0e2c2a16 100644 --- a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dof +++ b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dof @@ -39,7 +39,7 @@ MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] -OutputDir=../../../ +OutputDir=../../../../ UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= @@ -82,5 +82,6 @@ $(DELPHI)\Lib\dclusr40.bpl=Borland User Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlOutputDirectorry] -Count=1 -Item0=../../../ +Count=2 +Item0=../../../../ +Item1=../../../ diff --git a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr index c1a78482..05386af3 100644 --- a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr +++ b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr @@ -261,28 +261,37 @@ begin timer.Enabled := False; // connect the transport layer - MbiCallbackOnLog('Connecting the transport layer. t='+TimeToStr(Time)); - loader.Connect; + MbiCallbackOnInfo('Connecting to the COM port.'); + MbiCallbackOnLog('Connecting to the COM port. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnError('Could not connect to COM port. Check your configuration.'); + MbiCallbackOnLog('Could not connect to COM port. Check your configuration and try again. t='+TimeToStr(Time)); + Exit; + end; //---------------- start the programming session -------------------------------------- MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + // try initial connect via XCP if not loader.StartProgrammingSession then begin // update the user info MbiCallbackOnInfo('Could not connect. Please reset your target...'); MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); Application.ProcessMessages; - end; - - while not loader.StartProgrammingSession do - begin - Application.ProcessMessages; - Sleep(5); - if stopRequest then + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do begin - MbiCallbackOnError('Programming session cancelled by user.'); - Exit; + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; end; end; diff --git a/Host/Source/MicroBoot/interfaces/usb/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/usb/XcpSettings.dfm index 3290a74e..64f4f177 100644 Binary files a/Host/Source/MicroBoot/interfaces/usb/XcpSettings.dfm and b/Host/Source/MicroBoot/interfaces/usb/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/usb/XcpSettings.pas b/Host/Source/MicroBoot/interfaces/usb/XcpSettings.pas index eb3f06ac..43f9cf53 100644 --- a/Host/Source/MicroBoot/interfaces/usb/XcpSettings.pas +++ b/Host/Source/MicroBoot/interfaces/usb/XcpSettings.pas @@ -72,6 +72,8 @@ type edtSeedKey: TEdit; btnBrowse: TButton; openDialog: TOpenDialog; + edtTconnect: TEdit; + lblTconnect: TLabel; procedure btnOKClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure btnBrowseClick(Sender: TObject); @@ -202,6 +204,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(settingsIni.ReadInteger('xcp', 't4', 10000)); FSettingsForm.edtT5.Text := IntToStr(settingsIni.ReadInteger('xcp', 't5', 1000)); FSettingsForm.edtT7.Text := IntToStr(settingsIni.ReadInteger('xcp', 't7', 2000)); + FSettingsForm.edtTconnect.Text := IntToStr(settingsIni.ReadInteger('xcp', 'tconnect', 20)); // release ini file object settingsIni.Free; @@ -216,7 +219,7 @@ begin FSettingsForm.edtT4.Text := IntToStr(10000); FSettingsForm.edtT5.Text := IntToStr(1000); FSettingsForm.edtT7.Text := IntToStr(2000); - + FSettingsForm.edtTconnect.Text := IntToStr(20); end; // show the form as modal so we can get the result here @@ -234,6 +237,7 @@ begin settingsIni.WriteInteger('xcp', 't4', StrToInt(FSettingsForm.edtT4.Text)); settingsIni.WriteInteger('xcp', 't5', StrToInt(FSettingsForm.edtT5.Text)); settingsIni.WriteInteger('xcp', 't7', StrToInt(FSettingsForm.edtT7.Text)); + settingsIni.WriteInteger('xcp', 'tconnect', StrToInt(FSettingsForm.edtTconnect.Text)); // release ini file object settingsIni.Free; diff --git a/Host/Source/MicroBoot/interfaces/usb/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/usb/XcpTransport.pas index 50537e83..92edee78 100644 --- a/Host/Source/MicroBoot/interfaces/usb/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/usb/XcpTransport.pas @@ -61,7 +61,7 @@ type packetLen : Word; constructor Create; procedure Configure(iniFile : string); - procedure Connect; + function Connect: Boolean; function SendPacket(timeOutms: LongWord): Boolean; procedure Disconnect; destructor Destroy; override; @@ -128,15 +128,15 @@ end; //*** end of Configure *** //*************************************************************************************** // NAME: Connect // PARAMETER: none -// RETURN VALUE: none +// RETURN VALUE: True if successful, False otherwise. // DESCRIPTION: Connects the transport layer device. // //*************************************************************************************** -procedure TXcpTransport.Connect; +function TXcpTransport.Connect: Boolean; begin + result := true; if UblOpen(Addr(deviceGuid)) <> UBL_OKAY then - Application.MessageBox( 'Could not connect to USB device.', - 'Error', MB_OK or MB_ICONERROR ); + result := false; end; //*** end of Connect *** diff --git a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.cfg b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.cfg index 1ec9ae84..929df35b 100644 --- a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.cfg +++ b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.cfg @@ -31,5 +31,5 @@ -M -$M16384,1048576 -K$00400000 --E.\..\..\..\ --LNc:\program files (x86)\borland\delphi4\Lib +-E.\..\..\..\..\ +-LNc:\borland\delphi4\Lib diff --git a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dof b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dof index 71c15f7a..66305adc 100644 --- a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dof +++ b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dof @@ -39,7 +39,7 @@ MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] -OutputDir=.\..\..\..\ +OutputDir=.\..\..\..\..\ UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= @@ -82,5 +82,6 @@ $(DELPHI)\Lib\dclusr40.bpl=Borland User Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlOutputDirectorry] -Count=1 -Item0=.\..\..\..\ +Count=2 +Item0=.\..\..\..\..\ +Item1=.\..\..\..\ diff --git a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dpr b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dpr index 098f8d99..6fcad194 100644 --- a/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dpr +++ b/Host/Source/MicroBoot/interfaces/usb/openblt_usb.dpr @@ -261,28 +261,49 @@ begin timer.Enabled := False; // connect the transport layer - MbiCallbackOnLog('Connecting the transport layer. t='+TimeToStr(Time)); - loader.Connect; + MbiCallbackOnInfo('Connecting to target via USB.'); + MbiCallbackOnLog('Connecting to target via USB. t='+TimeToStr(Time)); + Application.ProcessMessages; + if not loader.Connect then + begin + // update the user info + MbiCallbackOnInfo('Could not connect via USB. Retrying. Reset your target if this takes a long time.'); + MbiCallbackOnLog('Transport layer connection failed. t='+TimeToStr(Time)); + MbiCallbackOnLog('Retrying transport layer connection. Reset your target if this takes a long time. t='+TimeToStr(Time)); + Application.ProcessMessages; + // continuously try to coonect the transport layer + while not loader.Connect do + begin + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Transport layer connection cancelled by user.'); + Exit; + end; + end; + end; //---------------- start the programming session -------------------------------------- MbiCallbackOnLog('Starting the programming session. t='+TimeToStr(Time)); + // try initial connect via XCP if not loader.StartProgrammingSession then begin // update the user info MbiCallbackOnInfo('Could not connect. Please reset your target...'); MbiCallbackOnLog('Connect failed. Switching to backdoor entry mode. t='+TimeToStr(Time)); Application.ProcessMessages; - end; - - while not loader.StartProgrammingSession do - begin - Application.ProcessMessages; - Sleep(5); - if stopRequest then + // continuously try to connect via XCP true the backdoor + while not loader.StartProgrammingSession do begin - MbiCallbackOnError('Programming session cancelled by user.'); - Exit; + Application.ProcessMessages; + Sleep(5); + if stopRequest then + begin + MbiCallbackOnError('Programming session cancelled by user.'); + Exit; + end; end; end; diff --git a/Host/openblt_can_peak.dll b/Host/openblt_can_peak.dll index a45a49f6..f44bccab 100644 Binary files a/Host/openblt_can_peak.dll and b/Host/openblt_can_peak.dll differ diff --git a/Host/openblt_can_peak.ini b/Host/openblt_can_peak.ini index 3e08adc7..99679d0d 100644 --- a/Host/openblt_can_peak.ini +++ b/Host/openblt_can_peak.ini @@ -12,3 +12,4 @@ t3=2000 t4=10000 t5=1000 t7=2000 +tconnect=20 diff --git a/Host/openblt_can_vector.dll b/Host/openblt_can_vector.dll index c57e747f..6ecbe8e2 100644 Binary files a/Host/openblt_can_vector.dll and b/Host/openblt_can_vector.dll differ diff --git a/Host/openblt_can_vector.ini b/Host/openblt_can_vector.ini index b19f2962..b750f89e 100644 --- a/Host/openblt_can_vector.ini +++ b/Host/openblt_can_vector.ini @@ -12,3 +12,4 @@ t3=2000 t4=10000 t5=1000 t7=2000 +tconnect=20 diff --git a/Host/openblt_net.dll b/Host/openblt_net.dll new file mode 100644 index 00000000..abc512ec Binary files /dev/null and b/Host/openblt_net.dll differ diff --git a/Host/openblt_net.ini b/Host/openblt_net.ini new file mode 100644 index 00000000..c757969c --- /dev/null +++ b/Host/openblt_net.ini @@ -0,0 +1,11 @@ +[net] +hostname=169.254.19.63 +port=1000 +[xcp] +seedkey= +t1=1000 +t3=2000 +t4=10000 +t5=1000 +t7=2000 +tconnect=300 diff --git a/Host/openblt_uart.dll b/Host/openblt_uart.dll index 7f82ac50..4f73f7a3 100644 Binary files a/Host/openblt_uart.dll and b/Host/openblt_uart.dll differ diff --git a/Host/openblt_uart.ini b/Host/openblt_uart.ini index 56b278d5..fe11aa00 100644 --- a/Host/openblt_uart.ini +++ b/Host/openblt_uart.ini @@ -8,3 +8,4 @@ t3=2000 t4=10000 t5=1000 t7=2000 +tconnect=20 diff --git a/Host/openblt_usb.dll b/Host/openblt_usb.dll index f12b97ed..abe1d7db 100644 Binary files a/Host/openblt_usb.dll and b/Host/openblt_usb.dll differ diff --git a/Host/openblt_usb.ini b/Host/openblt_usb.ini index bc572461..6a8f24d1 100644 --- a/Host/openblt_usb.ini +++ b/Host/openblt_usb.ini @@ -5,3 +5,4 @@ t3=2000 t4=10000 t5=1000 t7=2000 +tconnect=20 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.elf index ac87650e..4dfd99d5 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.map index c323b42e..8c8d0e22 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.map @@ -1,15 +1,15 @@ Archive member included because of file (symbol) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) THUMB Debug/../../obj/file.o (isdigit) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) (memcpy) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) (__umoddi3) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) (__errno) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) (__floatsisf) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + THUMB Debug/../../obj/uip.o (memcpy) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) (__aeabi_uldivmod) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) (__errno) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) (__aeabi_i2f) Discarded input sections @@ -32,8 +32,6 @@ Discarded input sections 0x00000000 0x40 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralPowerOff 0x00000000 0x40 THUMB Debug/../../obj/sysctl.o - .text.SysCtlPeripheralReset - 0x00000000 0x90 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralDisable 0x00000000 0x64 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralSleepEnable @@ -45,7 +43,7 @@ Discarded input sections .text.SysCtlPeripheralDeepSleepDisable 0x00000000 0x64 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralClockGating - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlIntRegister 0x00000000 0x14 THUMB Debug/../../obj/sysctl.o .text.SysCtlIntUnregister @@ -57,7 +55,7 @@ Discarded input sections .text.SysCtlIntClear 0x00000000 0xc THUMB Debug/../../obj/sysctl.o .text.SysCtlIntStatus - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x14 THUMB Debug/../../obj/sysctl.o .text.SysCtlLDOSet 0x00000000 0x34 THUMB Debug/../../obj/sysctl.o .text.SysCtlLDOGet @@ -79,7 +77,7 @@ Discarded input sections .text.SysCtlMOSCConfigSet 0x00000000 0xc THUMB Debug/../../obj/sysctl.o .text.SysCtlPIOSCCalibrate - 0x00000000 0x4c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x48 THUMB Debug/../../obj/sysctl.o .text.SysCtlDeepSleepClockSet 0x00000000 0xc THUMB Debug/../../obj/sysctl.o .text.SysCtlPWMClockSet @@ -91,11 +89,11 @@ Discarded input sections .text.SysCtlADCSpeedGet 0x00000000 0x10 THUMB Debug/../../obj/sysctl.o .text.SysCtlIOSCVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlMOSCVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlPLLVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlClkVerificationClear 0x00000000 0x10 THUMB Debug/../../obj/sysctl.o .text.SysCtlGPIOAHBEnable @@ -120,8 +118,6 @@ Discarded input sections 0x00000000 0x120 THUMB Debug/../../obj/sysctl.o .rodata.g_pulSCGCRegs 0x00000000 0xc THUMB Debug/../../obj/sysctl.o - .rodata.g_pulSRCRRegs - 0x00000000 0xc THUMB Debug/../../obj/sysctl.o .bss.bNewPLL 0x00000000 0x1 THUMB Debug/../../obj/sysctl.o .text 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o .data 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o @@ -129,9 +125,9 @@ Discarded input sections .text.IntDefaultHandler 0x00000000 0x2 THUMB Debug/../../obj/interrupt.o .text.IntMasterEnable - 0x00000000 0xc THUMB Debug/../../obj/interrupt.o + 0x00000000 0xa THUMB Debug/../../obj/interrupt.o .text.IntMasterDisable - 0x00000000 0xc THUMB Debug/../../obj/interrupt.o + 0x00000000 0xa THUMB Debug/../../obj/interrupt.o .text.IntRegister 0x00000000 0x48 THUMB Debug/../../obj/interrupt.o .text.IntUnregister @@ -173,6 +169,18 @@ Discarded input sections 0x00000000 0x20 THUMB Debug/../../obj/interrupt.o .rodata.g_pulRegs 0x00000000 0x9c THUMB Debug/../../obj/interrupt.o + .debug_frame 0x00000000 0x1a8 THUMB Debug/../../obj/interrupt.o + .debug_info 0x00000000 0x5f2 THUMB Debug/../../obj/interrupt.o + .debug_abbrev 0x00000000 0x1a5 THUMB Debug/../../obj/interrupt.o + .debug_loc 0x00000000 0x58c THUMB Debug/../../obj/interrupt.o + .debug_aranges + 0x00000000 0x98 THUMB Debug/../../obj/interrupt.o + .debug_ranges 0x00000000 0x88 THUMB Debug/../../obj/interrupt.o + .debug_line 0x00000000 0x369 THUMB Debug/../../obj/interrupt.o + .debug_str 0x00000000 0x32f THUMB Debug/../../obj/interrupt.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/interrupt.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/interrupt.o .text 0x00000000 0x0 THUMB Debug/../../obj/cpulib.o .data 0x00000000 0x0 THUMB Debug/../../obj/cpulib.o .bss 0x00000000 0x0 THUMB Debug/../../obj/cpulib.o @@ -187,6 +195,17 @@ Discarded input sections 0x00000000 0x6 THUMB Debug/../../obj/cpulib.o .text.CPUbasepriGet 0x00000000 0x6 THUMB Debug/../../obj/cpulib.o + .debug_frame 0x00000000 0x70 THUMB Debug/../../obj/cpulib.o + .debug_info 0x00000000 0x116 THUMB Debug/../../obj/cpulib.o + .debug_abbrev 0x00000000 0xb4 THUMB Debug/../../obj/cpulib.o + .debug_aranges + 0x00000000 0x48 THUMB Debug/../../obj/cpulib.o + .debug_ranges 0x00000000 0x38 THUMB Debug/../../obj/cpulib.o + .debug_line 0x00000000 0x100 THUMB Debug/../../obj/cpulib.o + .debug_str 0x00000000 0x119 THUMB Debug/../../obj/cpulib.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/cpulib.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/cpulib.o .text 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .data 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .bss 0x00000000 0x0 THUMB Debug/../../obj/gpio.o @@ -195,11 +214,11 @@ Discarded input sections .text.GPIODirModeGet 0x00000000 0x4c THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeSet - 0x00000000 0x80 THUMB Debug/../../obj/gpio.o + 0x00000000 0x78 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeGet 0x00000000 0x5c THUMB Debug/../../obj/gpio.o .text.GPIOPadConfigGet - 0x00000000 0xa0 THUMB Debug/../../obj/gpio.o + 0x00000000 0xb0 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntEnable 0x00000000 0x28 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntDisable @@ -222,8 +241,6 @@ Discarded input sections 0x00000000 0x34 THUMB Debug/../../obj/gpio.o .text.GPIOPinTypeEPI 0x00000000 0x34 THUMB Debug/../../obj/gpio.o - .text.GPIOPinTypeEthernetLED - 0x00000000 0x34 THUMB Debug/../../obj/gpio.o .text.GPIOPinTypeEthernetMII 0x00000000 0x34 THUMB Debug/../../obj/gpio.o .text.GPIOPinTypeFan @@ -276,15 +293,13 @@ Discarded input sections .text.FlashProtectGet 0x00000000 0x98 THUMB Debug/../../obj/flashlib.o .text.FlashProtectSet - 0x00000000 0x11c THUMB Debug/../../obj/flashlib.o + 0x00000000 0x110 THUMB Debug/../../obj/flashlib.o .text.FlashProtectSave - 0x00000000 0x54 THUMB Debug/../../obj/flashlib.o - .text.FlashUserGet - 0x00000000 0x64 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x48 THUMB Debug/../../obj/flashlib.o .text.FlashUserSet - 0x00000000 0x38 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x34 THUMB Debug/../../obj/flashlib.o .text.FlashUserSave - 0x00000000 0x64 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x60 THUMB Debug/../../obj/flashlib.o .text.FlashIntRegister 0x00000000 0x14 THUMB Debug/../../obj/flashlib.o .text.FlashIntUnregister @@ -294,15 +309,15 @@ Discarded input sections .text.FlashIntDisable 0x00000000 0x10 THUMB Debug/../../obj/flashlib.o .text.FlashIntStatus - 0x00000000 0x1c THUMB Debug/../../obj/flashlib.o + 0x00000000 0x14 THUMB Debug/../../obj/flashlib.o .text.FlashIntClear 0x00000000 0xc THUMB Debug/../../obj/flashlib.o + .rodata.CSWTCH.8 + 0x00000000 0x3 THUMB Debug/../../obj/flashlib.o .rodata.g_pulFMPPERegs 0x00000000 0x20 THUMB Debug/../../obj/flashlib.o .rodata.g_pulFMPRERegs 0x00000000 0x20 THUMB Debug/../../obj/flashlib.o - .rodata.CSWTCH.3 - 0x00000000 0x3 THUMB Debug/../../obj/flashlib.o .text 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o .data 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o .bss 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o @@ -345,7 +360,7 @@ Discarded input sections .text.UARTTxIntModeGet 0x00000000 0x20 THUMB Debug/../../obj/uartlib.o .text.UARTCharsAvail - 0x00000000 0x28 THUMB Debug/../../obj/uartlib.o + 0x00000000 0x24 THUMB Debug/../../obj/uartlib.o .text.UARTCharGet 0x00000000 0x24 THUMB Debug/../../obj/uartlib.o .text.UARTCharPut @@ -416,9 +431,59 @@ Discarded input sections 0x00000000 0x20 THUMB Debug/../../obj/ssi.o .rodata.g_ppulSSIIntMap 0x00000000 0x20 THUMB Debug/../../obj/ssi.o + .text 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o + .data 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o + .text.EthernetConfigGet + 0x00000000 0x34 THUMB Debug/../../obj/ethernet.o + .text.EthernetMACAddrGet + 0x00000000 0x4c THUMB Debug/../../obj/ethernet.o + .text.EthernetDisable + 0x00000000 0x40 THUMB Debug/../../obj/ethernet.o + .text.EthernetPacketAvail + 0x00000000 0x28 THUMB Debug/../../obj/ethernet.o + .text.EthernetSpaceAvail + 0x00000000 0x28 THUMB Debug/../../obj/ethernet.o + .text.EthernetPacketGet + 0x00000000 0x50 THUMB Debug/../../obj/ethernet.o + .text.EthernetPacketPutNonBlocking + 0x00000000 0x60 THUMB Debug/../../obj/ethernet.o + .text.EthernetIntRegister + 0x00000000 0x3c THUMB Debug/../../obj/ethernet.o + .text.EthernetIntUnregister + 0x00000000 0x2c THUMB Debug/../../obj/ethernet.o + .text.EthernetIntEnable + 0x00000000 0x38 THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYAddrSet + 0x00000000 0x28 THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYWrite + 0x00000000 0x40 THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYPowerOff + 0x00000000 0x1e THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYPowerOn + 0x00000000 0x1e THUMB Debug/../../obj/ethernet.o .text 0x00000000 0x0 THUMB Debug/../../obj/mmc.o .data 0x00000000 0x0 THUMB Debug/../../obj/mmc.o .bss 0x00000000 0x0 THUMB Debug/../../obj/mmc.o + .text 0x00000000 0x0 THUMB Debug/../../obj/clock-arch.o + .data 0x00000000 0x0 THUMB Debug/../../obj/clock-arch.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/clock-arch.o + .text.clock_time + 0x00000000 0x4 THUMB Debug/../../obj/clock-arch.o + .debug_frame 0x00000000 0x20 THUMB Debug/../../obj/clock-arch.o + .debug_info 0x00000000 0xb8 THUMB Debug/../../obj/clock-arch.o + .debug_abbrev 0x00000000 0x74 THUMB Debug/../../obj/clock-arch.o + .debug_aranges + 0x00000000 0x20 THUMB Debug/../../obj/clock-arch.o + .debug_ranges 0x00000000 0x10 THUMB Debug/../../obj/clock-arch.o + .debug_line 0x00000000 0x130 THUMB Debug/../../obj/clock-arch.o + .debug_str 0x00000000 0x14b THUMB Debug/../../obj/clock-arch.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/clock-arch.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/clock-arch.o + .text 0x00000000 0x0 THUMB Debug/../../obj/netdev.o + .data 0x00000000 0x0 THUMB Debug/../../obj/netdev.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/netdev.o .text 0x00000000 0x0 THUMB Debug/../../obj/hooks.o .data 0x00000000 0x0 THUMB Debug/../../obj/hooks.o .bss 0x00000000 0x0 THUMB Debug/../../obj/hooks.o @@ -479,620 +544,696 @@ Discarded input sections .data 0x00000000 0x0 THUMB Debug/../../obj/ff.o .bss 0x00000000 0x0 THUMB Debug/../../obj/ff.o .text.f_opendir - 0x00000000 0x60 THUMB Debug/../../obj/ff.o + 0x00000000 0x68 THUMB Debug/../../obj/ff.o .text.f_readdir 0x00000000 0x58 THUMB Debug/../../obj/ff.o .text.f_getfree - 0x00000000 0xe2 THUMB Debug/../../obj/ff.o + 0x00000000 0xe4 THUMB Debug/../../obj/ff.o .text.f_truncate - 0x00000000 0x8c THUMB Debug/../../obj/ff.o - .text.f_mkdir 0x00000000 0x19c THUMB Debug/../../obj/ff.o + 0x00000000 0x8e THUMB Debug/../../obj/ff.o + .text.f_mkdir 0x00000000 0x1b4 THUMB Debug/../../obj/ff.o .text.f_chmod 0x00000000 0x58 THUMB Debug/../../obj/ff.o .text.f_utime 0x00000000 0x58 THUMB Debug/../../obj/ff.o .text.f_rename - 0x00000000 0x100 THUMB Debug/../../obj/ff.o + 0x00000000 0x114 THUMB Debug/../../obj/ff.o .text.f_printf - 0x00000000 0x23a THUMB Debug/../../obj/ff.o + 0x00000000 0x24a THUMB Debug/../../obj/ff.o .text 0x00000000 0x0 THUMB Debug/../../obj/unicode.o .data 0x00000000 0x0 THUMB Debug/../../obj/unicode.o .bss 0x00000000 0x0 THUMB Debug/../../obj/unicode.o - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + .text 0x00000000 0x0 THUMB Debug/../../obj/uip.o + .data 0x00000000 0x0 THUMB Debug/../../obj/uip.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/uip.o + .text.uip_setipid + 0x00000000 0xc THUMB Debug/../../obj/uip.o + .text.uip_chksum + 0x00000000 0x18 THUMB Debug/../../obj/uip.o + .text.uip_udpchksum + 0x00000000 0x6 THUMB Debug/../../obj/uip.o + .text.uip_connect + 0x00000000 0xa4 THUMB Debug/../../obj/uip.o + .text.uip_unlisten + 0x00000000 0x24 THUMB Debug/../../obj/uip.o + .text 0x00000000 0x0 THUMB Debug/../../obj/uip_arp.o + .data 0x00000000 0x0 THUMB Debug/../../obj/uip_arp.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/uip_arp.o + .text.uip_arp_init + 0x00000000 0x34 THUMB Debug/../../obj/uip_arp.o + .text 0x00000000 0x0 THUMB Debug/../../obj/uip_timer.o + .data 0x00000000 0x0 THUMB Debug/../../obj/uip_timer.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/uip_timer.o + .text.timer_set + 0x00000000 0xe THUMB Debug/../../obj/uip_timer.o + .text.timer_reset + 0x00000000 0xa THUMB Debug/../../obj/uip_timer.o + .text.timer_restart + 0x00000000 0xc THUMB Debug/../../obj/uip_timer.o + .text.timer_expired + 0x00000000 0x18 THUMB Debug/../../obj/uip_timer.o + .debug_frame 0x00000000 0x74 THUMB Debug/../../obj/uip_timer.o + .debug_info 0x00000000 0x140 THUMB Debug/../../obj/uip_timer.o + .debug_abbrev 0x00000000 0xee THUMB Debug/../../obj/uip_timer.o + .debug_loc 0x00000000 0xdb THUMB Debug/../../obj/uip_timer.o + .debug_aranges + 0x00000000 0x38 THUMB Debug/../../obj/uip_timer.o + .debug_ranges 0x00000000 0x28 THUMB Debug/../../obj/uip_timer.o + .debug_line 0x00000000 0x173 THUMB Debug/../../obj/uip_timer.o + .debug_str 0x00000000 0x12c THUMB Debug/../../obj/uip_timer.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/uip_timer.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/uip_timer.o + .text 0x00000000 0x0 THUMB Debug/../../obj/uiplib.o + .data 0x00000000 0x0 THUMB Debug/../../obj/uiplib.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/uiplib.o + .text.uiplib_ipaddrconv + 0x00000000 0x50 THUMB Debug/../../obj/uiplib.o + .debug_frame 0x00000000 0x30 THUMB Debug/../../obj/uiplib.o + .debug_info 0x00000000 0xe7 THUMB Debug/../../obj/uiplib.o + .debug_abbrev 0x00000000 0x7a THUMB Debug/../../obj/uiplib.o + .debug_loc 0x00000000 0x100 THUMB Debug/../../obj/uiplib.o + .debug_aranges + 0x00000000 0x20 THUMB Debug/../../obj/uiplib.o + .debug_ranges 0x00000000 0x10 THUMB Debug/../../obj/uiplib.o + .debug_line 0x00000000 0xd9 THUMB Debug/../../obj/uiplib.o + .debug_str 0x00000000 0x158 THUMB Debug/../../obj/uiplib.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/uiplib.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/uiplib.o + .text 0x00000000 0x0 THUMB Debug/../../obj/net.o + .data 0x00000000 0x0 THUMB Debug/../../obj/net.o + .bss 0x00000000 0x0 THUMB Debug/../../obj/net.o + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.twodigit - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_ch - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_str - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x16 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_twodigit - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_twodigit2 - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_twodigits_leading_blank - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.put_formatted - 0x00000000 0x330 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x32c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__digit - 0x00000000 0x32 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x32 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__getc - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__RAL_pow10 - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__stdin_ungetc - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__putc - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__print_padding - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__pre_padding - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__xlltoa - 0x00000000 0x76 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__xltoa - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__xtoa - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.abs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.asctime_r - 0x00000000 0xb0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xb0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.asctime - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.atexit - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc._execute_at_exit_fns - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.bsearch - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctl_is_exact_power_of_two - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctl_round_power_of_two - 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctl_count_leading_zeroes - 0x00000000 0x3a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x3a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctl_ilogb - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.buddy_alloc - 0x00000000 0xc8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xbc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.buddy_free - 0x00000000 0xb6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xb4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.buddy_heap_init - 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isalpha - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isupper - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.islower - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isxdigit - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isspace - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x16 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__strtoull - 0x00000000 0x126 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x11a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.__strtoul - 0x00000000 0xc6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xba C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ispunct - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isalnum - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isprint - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isgraph - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.iscntrl - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.tolower - 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.isblank - 0x00000000 0x16 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x16 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.div - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.itoa - 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.labs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ldiv - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.linked_heap_init - 0x00000000 0x4e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.linked_heap_alloc - 0x00000000 0x92 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.linked_heap_free - 0x00000000 0x9c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x9c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.linked_heap_realloc - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.llabs - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.lldiv - 0x00000000 0x5a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x56 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.lltoa - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.localeconv - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.setlocale - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ltoa - 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.malloc - 0x00000000 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.calloc - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.free - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.realloc - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.memccpy - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.mempcpy - 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.memchr - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.memcmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x2a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.memmove - 0x00000000 0x3a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.qsort - 0x00000000 0x1f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1d0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.rand - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.snprintf - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.sprintf - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.srand - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.sscanf - 0x00000000 0x22 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strcasecmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x2a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strcasestr - 0x00000000 0x4a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strcat - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strchr - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strcspn - 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strdup - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strftime - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strncasecmp - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strncasestr - 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strncat - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strlcat - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strnchr - 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strncmp - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x2e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strncpy - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strlcpy - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x3a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strnlen - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strndup - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strnstr - 0x00000000 0x4a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strpbrk - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strrchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strsep - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x3a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strspn - 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strstr - 0x00000000 0x2e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtod - 0x00000000 0x17c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x184 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtof - 0x00000000 0x150 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x150 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtok - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtok_r - 0x00000000 0x4e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtol - 0x00000000 0x7e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.atol - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.atoi - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.atof - 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtoll - 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.atoll - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtoul - 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x86 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.strtoull - 0x00000000 0xbc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.localtime_r - 0x00000000 0x104 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x108 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.difftime - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.checktm - 0x00000000 0x19c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x194 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.mktime - 0x00000000 0x114 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x110 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctime - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ctime_r - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.gmtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.gmtime_r - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.localtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.gettimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.settimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ulltoa - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.ultoa - 0x00000000 0x6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.utoa - 0x00000000 0x6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.vsnprintf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.vsprintf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.vsscanf - 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcscat - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcschr - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcscmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcscpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcscspn - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x22 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcslen - 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x12 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsdup - 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsncat - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsnchr - 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsncmp - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsncpy - 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsnlen - 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsnstr - 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcspbrk - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsrchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcssep - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x36 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsspn - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x22 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcsstr - 0x00000000 0x2e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcstok - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wcstok_r - 0x00000000 0x4e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemcpy - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x16 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemccpy - 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmempcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemmove - 0x00000000 0x3e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemcmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x26 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemchr - 0x00000000 0x1a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .text.libc.wmemset - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .data.libc.heap - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.__hex_lc - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.__crt_get_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.year_lengths - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.mon_name - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .bss.libc.last.2692 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.__atexitfns - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.str1.1 - 0x00000000 0x102 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x102 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.__format_extender - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.invalid - 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .data.libc.__RAL_rand_next - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.power - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.__RAL_mon_lengths - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .bss.libc.last.3164 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .bss.libc.last.5990 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .bss.libc.last.5518 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.day_name - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.month_names - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.asctime_buf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.__ctype - 0x00000000 0x101 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x101 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.__crt_set_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .bss.libc.atexitfn_count - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .data.libc.__ungot - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .data.libc._lconv - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.__hex_uc - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .rodata.libc.day_names - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.longjmp - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - .text.libc.memcpy - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.memcpy_fast - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.memcpy_small - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.__aeabi_memset - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.setjmp - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.strcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.strcmp - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) .text.libc.strlen - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r4 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r1 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r2 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r3 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r0 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r5 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_sp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r7 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r8 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r9 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_sl - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_r6 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_lr - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_ip - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc._call_via_fp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + .debug_frame 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_asr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_div - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_lsl - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_lsr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_mod - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_udivmod - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__aeabi_ldivmod - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_cmp - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int64_ucmp - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.muldi3 - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int32_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int32_div - 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .rodata.libc.__aeabi_uidiv - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__int32_mod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__aeabi_uidivmod - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__aeabi_idivmod - 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_16 - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__gnu_thumb1_case_shi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__gnu_thumb1_case_si - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__gnu_thumb1_case_sqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uhi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc_asm.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__errno - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__heap_lock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__heap_unlock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__printf_lock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__printf_unlock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__scanf_lock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__scanf_unlock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__debug_io_lock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .text.libc.__debug_io_unlock - 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000000 0x2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) .bss.libc.errno - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_frame 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_info 0x00000000 0xd6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_abbrev 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_aranges + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_ranges 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_line 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .debug_str 0x00000000 0x11b C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .ARM.attributes + 0x00000000 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__int32_to_float32 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) + .debug_frame 0x00000000 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__int32_to_float64 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__uint32_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__uint32_to_float64 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__int64_to_float32 - 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__int64_to_float64 - 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__uint64_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__uint64_to_float64 - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_to_int32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_to_int64 - 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_to_uint32 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_to_int32 - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_to_int64 - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_to_uint32 - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_to_float64 - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_to_float32 - 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_add - 0x00000000 0x138 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_mul - 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0xe4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_div - 0x00000000 0x1e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x1f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_cmp - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_fcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_fcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_fcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_fcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_fcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_add - 0x00000000 0x294 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x2b8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_mul - 0x00000000 0x16c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x180 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_div - 0x00000000 0x214 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_cmp - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_dcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_dcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_dcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_dcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__aeabi_dcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_isfinite - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_isfinite - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float32_classify - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .text.libc.__float64_classify - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .rodata.libc.__float32_infinity - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .rodata.libc.__float32_nan - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .rodata.libc.__float64_infinity - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) .rodata.libc.__float64_nan - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a(libm_asm.o) Memory Configuration Name Origin Length Attributes UNPLACED_SECTIONS 0xffffffff 0x00000000 xw SRAM 0x20000000 0x00002000 xw -FLASH 0x00000000 0x00006000 xr +FLASH 0x00000000 0x00008000 xr *default* 0x00000000 0xffffffff Linker script and memory map @@ -1100,7 +1241,7 @@ Linker script and memory map 0x20000000 __SRAM_segment_start__ = 0x20000000 0x20002000 __SRAM_segment_end__ = 0x20002000 0x00000000 __FLASH_segment_start__ = 0x0 - 0x00006000 __FLASH_segment_end__ = 0x6000 + 0x00008000 __FLASH_segment_end__ = 0x8000 0x00000200 __STACKSIZE__ = 0x200 0x00000000 __STACKSIZE_PROCESS__ = 0x0 0x00000000 __STACKSIZE_IRQ__ = 0x0 @@ -1129,499 +1270,623 @@ Linker script and memory map 0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= __FLASH_segment_end__)), error: .vectors is too large to fit in FLASH memory segment) 0x000000f0 __init_load_start__ = ALIGN (__vectors_end__, 0x4) -.init 0x000000f0 0x198 +.init 0x000000f0 0x1a0 0x000000f0 __init_start__ = . *(.init .init.*) - .init 0x000000f0 0x198 THUMB Debug/../../obj/cstart.o + .init 0x000000f0 0x1a0 THUMB Debug/../../obj/cstart.o 0x000000f0 EntryFromProg - 0x0000017a reset_handler - 0x000001fa exit - 0x00000288 __init_end__ = (__init_start__ + SIZEOF (.init)) - 0x00000288 __init_load_end__ = __init_end__ + 0x0000017e reset_handler + 0x00000202 exit + 0x00000290 __init_end__ = (__init_start__ + SIZEOF (.init)) + 0x00000290 __init_load_end__ = __init_end__ 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= __FLASH_segment_end__)), error: .init is too large to fit in FLASH memory segment) - 0x00000288 __text_load_start__ = ALIGN (__init_end__, 0x4) + 0x00000290 __text_load_start__ = ALIGN (__init_end__, 0x4) -.text 0x00000288 0x3fac - 0x00000288 __text_start__ = . +.text 0x00000290 0x55e0 + 0x00000290 __text_start__ = . *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*) .glue_7 0x00000000 0x0 linker stubs .glue_7t 0x00000000 0x0 linker stubs .text.SysCtlPeripheralValid - 0x00000288 0x280 THUMB Debug/../../obj/sysctl.o + 0x00000290 0x27c THUMB Debug/../../obj/sysctl.o + .text.SysCtlPeripheralReset + 0x0000050c 0x90 THUMB Debug/../../obj/sysctl.o + 0x0000050c SysCtlPeripheralReset .text.SysCtlPeripheralEnable - 0x00000508 0x64 THUMB Debug/../../obj/sysctl.o - 0x00000508 SysCtlPeripheralEnable + 0x0000059c 0x64 THUMB Debug/../../obj/sysctl.o + 0x0000059c SysCtlPeripheralEnable .text.SysCtlDelay - 0x0000056c 0x6 THUMB Debug/../../obj/sysctl.o - 0x0000056c SysCtlDelay - *fill* 0x00000572 0x2 00 + 0x00000600 0x8 THUMB Debug/../../obj/sysctl.o + 0x00000600 SysCtlDelay .text.SysCtlClockSet - 0x00000574 0x160 THUMB Debug/../../obj/sysctl.o - 0x00000574 SysCtlClockSet + 0x00000608 0x160 THUMB Debug/../../obj/sysctl.o + 0x00000608 SysCtlClockSet .text.SysCtlClockGet - 0x000006d4 0x1c0 THUMB Debug/../../obj/sysctl.o - 0x000006d4 SysCtlClockGet + 0x00000768 0x1b4 THUMB Debug/../../obj/sysctl.o + 0x00000768 SysCtlClockGet .text.GPIOBaseValid - 0x00000894 0xd0 THUMB Debug/../../obj/gpio.o + 0x0000091c 0xc8 THUMB Debug/../../obj/gpio.o .text.GPIODirModeSet - 0x00000964 0x58 THUMB Debug/../../obj/gpio.o - 0x00000964 GPIODirModeSet + 0x000009e4 0x58 THUMB Debug/../../obj/gpio.o + 0x000009e4 GPIODirModeSet .text.GPIOPadConfigSet - 0x000009bc 0x118 THUMB Debug/../../obj/gpio.o - 0x000009bc GPIOPadConfigSet + 0x00000a3c 0x108 THUMB Debug/../../obj/gpio.o + 0x00000a3c GPIOPadConfigSet .text.GPIOPinWrite - 0x00000ad4 0x24 THUMB Debug/../../obj/gpio.o - 0x00000ad4 GPIOPinWrite + 0x00000b44 0x24 THUMB Debug/../../obj/gpio.o + 0x00000b44 GPIOPinWrite + .text.GPIOPinTypeEthernetLED + 0x00000b68 0x34 THUMB Debug/../../obj/gpio.o + 0x00000b68 GPIOPinTypeEthernetLED .text.GPIOPinTypeGPIOOutput - 0x00000af8 0x34 THUMB Debug/../../obj/gpio.o - 0x00000af8 GPIOPinTypeGPIOOutput + 0x00000b9c 0x34 THUMB Debug/../../obj/gpio.o + 0x00000b9c GPIOPinTypeGPIOOutput .text.GPIOPinTypeSSI - 0x00000b2c 0x34 THUMB Debug/../../obj/gpio.o - 0x00000b2c GPIOPinTypeSSI + 0x00000bd0 0x34 THUMB Debug/../../obj/gpio.o + 0x00000bd0 GPIOPinTypeSSI .text.GPIOPinTypeUART - 0x00000b60 0x34 THUMB Debug/../../obj/gpio.o - 0x00000b60 GPIOPinTypeUART + 0x00000c04 0x34 THUMB Debug/../../obj/gpio.o + 0x00000c04 GPIOPinTypeUART .text.FlashClear - 0x00000b94 0x50 THUMB Debug/../../obj/flashlib.o - 0x00000b94 FlashClear + 0x00000c38 0x50 THUMB Debug/../../obj/flashlib.o + 0x00000c38 FlashClear .text.FlashProgram - 0x00000be4 0xe4 THUMB Debug/../../obj/flashlib.o - 0x00000be4 FlashProgram + 0x00000c88 0xd4 THUMB Debug/../../obj/flashlib.o + 0x00000c88 FlashProgram + .text.FlashUserGet + 0x00000d5c 0x60 THUMB Debug/../../obj/flashlib.o + 0x00000d5c FlashUserGet .text.UARTBaseValid - 0x00000cc8 0x50 THUMB Debug/../../obj/uartlib.o + 0x00000dbc 0x4c THUMB Debug/../../obj/uartlib.o .text.UARTEnable - 0x00000d18 0x30 THUMB Debug/../../obj/uartlib.o - 0x00000d18 UARTEnable + 0x00000e08 0x30 THUMB Debug/../../obj/uartlib.o + 0x00000e08 UARTEnable .text.UARTDisable - 0x00000d48 0x34 THUMB Debug/../../obj/uartlib.o - 0x00000d48 UARTDisable + 0x00000e38 0x34 THUMB Debug/../../obj/uartlib.o + 0x00000e38 UARTDisable .text.UARTConfigSetExpClk - 0x00000d7c 0xd8 THUMB Debug/../../obj/uartlib.o - 0x00000d7c UARTConfigSetExpClk + 0x00000e6c 0xd0 THUMB Debug/../../obj/uartlib.o + 0x00000e6c UARTConfigSetExpClk .text.UARTSpaceAvail - 0x00000e54 0x28 THUMB Debug/../../obj/uartlib.o - 0x00000e54 UARTSpaceAvail + 0x00000f3c 0x24 THUMB Debug/../../obj/uartlib.o + 0x00000f3c UARTSpaceAvail .text.UARTCharGetNonBlocking - 0x00000e7c 0x28 THUMB Debug/../../obj/uartlib.o - 0x00000e7c UARTCharGetNonBlocking + 0x00000f60 0x28 THUMB Debug/../../obj/uartlib.o + 0x00000f60 UARTCharGetNonBlocking .text.UARTCharPutNonBlocking - 0x00000ea4 0x2c THUMB Debug/../../obj/uartlib.o - 0x00000ea4 UARTCharPutNonBlocking + 0x00000f88 0x2c THUMB Debug/../../obj/uartlib.o + 0x00000f88 UARTCharPutNonBlocking .text.UARTBusy - 0x00000ed0 0x20 THUMB Debug/../../obj/uartlib.o - 0x00000ed0 UARTBusy + 0x00000fb4 0x20 THUMB Debug/../../obj/uartlib.o + 0x00000fb4 UARTBusy .text.SSIBaseValid - 0x00000ef0 0x30 THUMB Debug/../../obj/ssi.o + 0x00000fd4 0x2c THUMB Debug/../../obj/ssi.o .text.SSIConfigSetExpClk - 0x00000f20 0xd4 THUMB Debug/../../obj/ssi.o - 0x00000f20 SSIConfigSetExpClk + 0x00001000 0xd0 THUMB Debug/../../obj/ssi.o + 0x00001000 SSIConfigSetExpClk .text.SSIEnable - 0x00000ff4 0x24 THUMB Debug/../../obj/ssi.o - 0x00000ff4 SSIEnable + 0x000010d0 0x24 THUMB Debug/../../obj/ssi.o + 0x000010d0 SSIEnable .text.SSIDisable - 0x00001018 0x24 THUMB Debug/../../obj/ssi.o - 0x00001018 SSIDisable + 0x000010f4 0x24 THUMB Debug/../../obj/ssi.o + 0x000010f4 SSIDisable .text.SSIDataPut - 0x0000103c 0x40 THUMB Debug/../../obj/ssi.o - 0x0000103c SSIDataPut + 0x00001118 0x40 THUMB Debug/../../obj/ssi.o + 0x00001118 SSIDataPut .text.SSIDataGet - 0x0000107c 0x28 THUMB Debug/../../obj/ssi.o - 0x0000107c SSIDataGet + 0x00001158 0x28 THUMB Debug/../../obj/ssi.o + 0x00001158 SSIDataGet + .text.EthernetPacketGetInternal + 0x00001180 0x7c THUMB Debug/../../obj/ethernet.o + .text.EthernetPacketPutInternal.part.0 + 0x000011fc 0x66 THUMB Debug/../../obj/ethernet.o + *fill* 0x00001262 0x2 00 + .text.EthernetInitExpClk + 0x00001264 0x2c THUMB Debug/../../obj/ethernet.o + 0x00001264 EthernetInitExpClk + .text.EthernetConfigSet + 0x00001290 0x58 THUMB Debug/../../obj/ethernet.o + 0x00001290 EthernetConfigSet + .text.EthernetMACAddrSet + 0x000012e8 0x5c THUMB Debug/../../obj/ethernet.o + 0x000012e8 EthernetMACAddrSet + .text.EthernetEnable + 0x00001344 0x40 THUMB Debug/../../obj/ethernet.o + 0x00001344 EthernetEnable + .text.EthernetPacketGetNonBlocking + 0x00001384 0x54 THUMB Debug/../../obj/ethernet.o + 0x00001384 EthernetPacketGetNonBlocking + .text.EthernetPacketPut + 0x000013d8 0x5c THUMB Debug/../../obj/ethernet.o + 0x000013d8 EthernetPacketPut + .text.EthernetIntDisable + 0x00001434 0x38 THUMB Debug/../../obj/ethernet.o + 0x00001434 EthernetIntDisable + .text.EthernetIntStatus + 0x0000146c 0x28 THUMB Debug/../../obj/ethernet.o + 0x0000146c EthernetIntStatus + .text.EthernetIntClear + 0x00001494 0x34 THUMB Debug/../../obj/ethernet.o + 0x00001494 EthernetIntClear + .text.EthernetPHYRead + 0x000014c8 0x40 THUMB Debug/../../obj/ethernet.o + 0x000014c8 EthernetPHYRead .text.xchg_spi - 0x000010a4 0x20 THUMB Debug/../../obj/mmc.o + 0x00001508 0x20 THUMB Debug/../../obj/mmc.o .text.wait_ready - 0x000010c4 0x2a THUMB Debug/../../obj/mmc.o - *fill* 0x000010ee 0x2 00 + 0x00001528 0x28 THUMB Debug/../../obj/mmc.o .text.deselect - 0x000010f0 0x1c THUMB Debug/../../obj/mmc.o - .text.select 0x0000110c 0x2c THUMB Debug/../../obj/mmc.o + 0x00001550 0x1c THUMB Debug/../../obj/mmc.o + .text.select 0x0000156c 0x2c THUMB Debug/../../obj/mmc.o .text.send_cmd - 0x00001138 0x7e THUMB Debug/../../obj/mmc.o + 0x00001598 0x7e THUMB Debug/../../obj/mmc.o + .text.xmit_datablock.part.1 + 0x00001616 0x40 THUMB Debug/../../obj/mmc.o .text.rcvr_datablock - 0x000011b6 0x52 THUMB Debug/../../obj/mmc.o - .text.xmit_datablock - 0x00001208 0x56 THUMB Debug/../../obj/mmc.o - *fill* 0x0000125e 0x2 00 + 0x00001656 0x58 THUMB Debug/../../obj/mmc.o + *fill* 0x000016ae 0x2 00 .text.disk_initialize - 0x00001260 0x218 THUMB Debug/../../obj/mmc.o - 0x00001260 disk_initialize + 0x000016b0 0x228 THUMB Debug/../../obj/mmc.o + 0x000016b0 disk_initialize .text.disk_status - 0x00001478 0x14 THUMB Debug/../../obj/mmc.o - 0x00001478 disk_status + 0x000018d8 0x10 THUMB Debug/../../obj/mmc.o + 0x000018d8 disk_status .text.disk_read - 0x0000148c 0x88 THUMB Debug/../../obj/mmc.o - 0x0000148c disk_read + 0x000018e8 0x88 THUMB Debug/../../obj/mmc.o + 0x000018e8 disk_read .text.disk_write - 0x00001514 0xa8 THUMB Debug/../../obj/mmc.o - 0x00001514 disk_write + 0x00001970 0xc4 THUMB Debug/../../obj/mmc.o + 0x00001970 disk_write .text.disk_ioctl - 0x000015bc 0x1f4 THUMB Debug/../../obj/mmc.o - 0x000015bc disk_ioctl + 0x00001a34 0x1fc THUMB Debug/../../obj/mmc.o + 0x00001a34 disk_ioctl .text.get_fattime - 0x000017b0 0x8 THUMB Debug/../../obj/mmc.o - 0x000017b0 get_fattime + 0x00001c30 0x8 THUMB Debug/../../obj/mmc.o + 0x00001c30 get_fattime + .text.netdev_init + 0x00001c38 0x90 THUMB Debug/../../obj/netdev.o + 0x00001c38 netdev_init + .text.netdev_setmacaddr + 0x00001cc8 0x94 THUMB Debug/../../obj/netdev.o + 0x00001cc8 netdev_setmacaddr + .text.netdev_read + 0x00001d5c 0x34 THUMB Debug/../../obj/netdev.o + 0x00001d5c netdev_read + .text.netdev_send + 0x00001d90 0x18 THUMB Debug/../../obj/netdev.o + 0x00001d90 netdev_send .text.FileIsFirmwareUpdateRequestedHook - 0x000017b8 0x34 THUMB Debug/../../obj/hooks.o - 0x000017b8 FileIsFirmwareUpdateRequestedHook + 0x00001da8 0x34 THUMB Debug/../../obj/hooks.o + 0x00001da8 FileIsFirmwareUpdateRequestedHook .text.FileGetFirmwareFilenameHook - 0x000017ec 0x8 THUMB Debug/../../obj/hooks.o - 0x000017ec FileGetFirmwareFilenameHook + 0x00001ddc 0x8 THUMB Debug/../../obj/hooks.o + 0x00001ddc FileGetFirmwareFilenameHook .text.FileFirmwareUpdateStartedHook - 0x000017f4 0x28 THUMB Debug/../../obj/hooks.o - 0x000017f4 FileFirmwareUpdateStartedHook + 0x00001de4 0x28 THUMB Debug/../../obj/hooks.o + 0x00001de4 FileFirmwareUpdateStartedHook .text.FileFirmwareUpdateCompletedHook - 0x0000181c 0x30 THUMB Debug/../../obj/hooks.o - 0x0000181c FileFirmwareUpdateCompletedHook + 0x00001e0c 0x30 THUMB Debug/../../obj/hooks.o + 0x00001e0c FileFirmwareUpdateCompletedHook .text.FileFirmwareUpdateErrorHook - 0x0000184c 0x14 THUMB Debug/../../obj/hooks.o - 0x0000184c FileFirmwareUpdateErrorHook + 0x00001e3c 0x14 THUMB Debug/../../obj/hooks.o + 0x00001e3c FileFirmwareUpdateErrorHook .text.FileFirmwareUpdateLogHook - 0x00001860 0x4c THUMB Debug/../../obj/hooks.o - 0x00001860 FileFirmwareUpdateLogHook + 0x00001e50 0x48 THUMB Debug/../../obj/hooks.o + 0x00001e50 FileFirmwareUpdateLogHook .text.startup.main - 0x000018ac 0x2c THUMB Debug/../../obj/main.o - 0x000018ac main + 0x00001e98 0x2c THUMB Debug/../../obj/main.o + 0x00001e98 main .text.UnusedISR - 0x000018d8 0xc THUMB Debug/../../obj/vectors.o - 0x000018d8 UnusedISR + 0x00001ec4 0xc THUMB Debug/../../obj/vectors.o + 0x00001ec4 UnusedISR .text.CpuStartUserProgram - 0x000018e4 0x28 THUMB Debug/../../obj/cpu.o - 0x000018e4 CpuStartUserProgram + 0x00001ed0 0x30 THUMB Debug/../../obj/cpu.o + 0x00001ed0 CpuStartUserProgram .text.CpuMemCopy - 0x0000190c 0x20 THUMB Debug/../../obj/cpu.o - 0x0000190c CpuMemCopy + 0x00001f00 0x1e THUMB Debug/../../obj/cpu.o + 0x00001f00 CpuMemCopy .text.CpuReset - 0x0000192c 0x4 THUMB Debug/../../obj/cpu.o - 0x0000192c CpuReset + 0x00001f1e 0x4 THUMB Debug/../../obj/cpu.o + 0x00001f1e CpuReset + *fill* 0x00001f22 0x2 00 .text.FlashGetSector - 0x00001930 0x38 THUMB Debug/../../obj/flash.o + 0x00001f24 0x38 THUMB Debug/../../obj/flash.o .text.FlashWriteBlock - 0x00001968 0x48 THUMB Debug/../../obj/flash.o + 0x00001f5c 0x4e THUMB Debug/../../obj/flash.o + *fill* 0x00001faa 0x2 00 .text.FlashSwitchBlock - 0x000019b0 0x50 THUMB Debug/../../obj/flash.o + 0x00001fac 0x4c THUMB Debug/../../obj/flash.o .text.FlashAddToBlock - 0x00001a00 0x80 THUMB Debug/../../obj/flash.o + 0x00001ff8 0x80 THUMB Debug/../../obj/flash.o .text.FlashInit - 0x00001a80 0x18 THUMB Debug/../../obj/flash.o - 0x00001a80 FlashInit + 0x00002078 0x18 THUMB Debug/../../obj/flash.o + 0x00002078 FlashInit .text.FlashWrite - 0x00001a98 0x48 THUMB Debug/../../obj/flash.o - 0x00001a98 FlashWrite + 0x00002090 0x48 THUMB Debug/../../obj/flash.o + 0x00002090 FlashWrite .text.FlashErase - 0x00001ae0 0xe0 THUMB Debug/../../obj/flash.o - 0x00001ae0 FlashErase + 0x000020d8 0xc0 THUMB Debug/../../obj/flash.o + 0x000020d8 FlashErase .text.FlashWriteChecksum - 0x00001bc0 0x44 THUMB Debug/../../obj/flash.o - 0x00001bc0 FlashWriteChecksum + 0x00002198 0x40 THUMB Debug/../../obj/flash.o + 0x00002198 FlashWriteChecksum .text.FlashVerifyChecksum - 0x00001c04 0x48 THUMB Debug/../../obj/flash.o - 0x00001c04 FlashVerifyChecksum + 0x000021d8 0x48 THUMB Debug/../../obj/flash.o + 0x000021d8 FlashVerifyChecksum .text.FlashDone - 0x00001c4c 0x34 THUMB Debug/../../obj/flash.o - 0x00001c4c FlashDone - .text.NvmInit 0x00001c80 0x4 THUMB Debug/../../obj/nvm.o - 0x00001c80 NvmInit + 0x00002220 0x34 THUMB Debug/../../obj/flash.o + 0x00002220 FlashDone + .text.FlashGetUserProgBaseAddress + 0x00002254 0x6 THUMB Debug/../../obj/flash.o + 0x00002254 FlashGetUserProgBaseAddress + .text.NvmInit 0x0000225a 0x4 THUMB Debug/../../obj/nvm.o + 0x0000225a NvmInit .text.NvmWrite - 0x00001c84 0x4 THUMB Debug/../../obj/nvm.o - 0x00001c84 NvmWrite + 0x0000225e 0x4 THUMB Debug/../../obj/nvm.o + 0x0000225e NvmWrite .text.NvmErase - 0x00001c88 0x4 THUMB Debug/../../obj/nvm.o - 0x00001c88 NvmErase + 0x00002262 0x4 THUMB Debug/../../obj/nvm.o + 0x00002262 NvmErase .text.NvmVerifyChecksum - 0x00001c8c 0x4 THUMB Debug/../../obj/nvm.o - 0x00001c8c NvmVerifyChecksum - .text.NvmDone 0x00001c90 0x14 THUMB Debug/../../obj/nvm.o - 0x00001c90 NvmDone + 0x00002266 0x4 THUMB Debug/../../obj/nvm.o + 0x00002266 NvmVerifyChecksum + .text.NvmDone 0x0000226a 0x12 THUMB Debug/../../obj/nvm.o + 0x0000226a NvmDone .text.TimerInit - 0x00001ca4 0x20 THUMB Debug/../../obj/timer.o - 0x00001ca4 TimerInit + 0x0000227c 0x20 THUMB Debug/../../obj/timer.o + 0x0000227c TimerInit .text.TimerReset - 0x00001cc4 0xc THUMB Debug/../../obj/timer.o - 0x00001cc4 TimerReset + 0x0000229c 0xc THUMB Debug/../../obj/timer.o + 0x0000229c TimerReset .text.TimerUpdate - 0x00001cd0 0x1c THUMB Debug/../../obj/timer.o - 0x00001cd0 TimerUpdate + 0x000022a8 0x1c THUMB Debug/../../obj/timer.o + 0x000022a8 TimerUpdate .text.TimerGet - 0x00001cec 0x14 THUMB Debug/../../obj/timer.o - 0x00001cec TimerGet + 0x000022c4 0x10 THUMB Debug/../../obj/timer.o + 0x000022c4 TimerGet .text.UartInit - 0x00001d00 0x28 THUMB Debug/../../obj/uart.o - 0x00001d00 UartInit + 0x000022d4 0x28 THUMB Debug/../../obj/uart.o + 0x000022d4 UartInit .text.UartTransmitPacket - 0x00001d28 0x74 THUMB Debug/../../obj/uart.o - 0x00001d28 UartTransmitPacket + 0x000022fc 0x6c THUMB Debug/../../obj/uart.o + 0x000022fc UartTransmitPacket .text.UartReceivePacket - 0x00001d9c 0x70 THUMB Debug/../../obj/uart.o - 0x00001d9c UartReceivePacket + 0x00002368 0x68 THUMB Debug/../../obj/uart.o + 0x00002368 UartReceivePacket .text.AssertFailure - 0x00001e0c 0x18 THUMB Debug/../../obj/assert.o - 0x00001e0c AssertFailure + 0x000023d0 0x18 THUMB Debug/../../obj/assert.o + 0x000023d0 AssertFailure .text.BackDoorCheck - 0x00001e24 0x44 THUMB Debug/../../obj/backdoor.o - 0x00001e24 BackDoorCheck + 0x000023e8 0x44 THUMB Debug/../../obj/backdoor.o + 0x000023e8 BackDoorCheck .text.BackDoorInit - 0x00001e68 0x20 THUMB Debug/../../obj/backdoor.o - 0x00001e68 BackDoorInit + 0x0000242c 0x20 THUMB Debug/../../obj/backdoor.o + 0x0000242c BackDoorInit .text.BootInit - 0x00001e88 0x1e THUMB Debug/../../obj/boot.o - 0x00001e88 BootInit + 0x0000244c 0x1e THUMB Debug/../../obj/boot.o + 0x0000244c BootInit .text.BootTask - 0x00001ea6 0x1a THUMB Debug/../../obj/boot.o - 0x00001ea6 BootTask - .text.ComInit 0x00001ec0 0x34 THUMB Debug/../../obj/com.o - 0x00001ec0 ComInit - .text.ComTask 0x00001ef4 0x28 THUMB Debug/../../obj/com.o - 0x00001ef4 ComTask - .text.ComFree 0x00001f1c 0x2 THUMB Debug/../../obj/com.o - 0x00001f1c ComFree - *fill* 0x00001f1e 0x2 00 + 0x0000246a 0x1a THUMB Debug/../../obj/boot.o + 0x0000246a BootTask + .text.ComInit 0x00002484 0x3c THUMB Debug/../../obj/com.o + 0x00002484 ComInit + .text.ComTask 0x000024c0 0x3c THUMB Debug/../../obj/com.o + 0x000024c0 ComTask + .text.ComFree 0x000024fc 0x2 THUMB Debug/../../obj/com.o + 0x000024fc ComFree + *fill* 0x000024fe 0x2 00 .text.ComTransmitPacket - 0x00001f20 0x1c THUMB Debug/../../obj/com.o - 0x00001f20 ComTransmitPacket + 0x00002500 0x30 THUMB Debug/../../obj/com.o + 0x00002500 ComTransmitPacket .text.ComGetActiveInterfaceMaxRxLen - 0x00001f3c 0x14 THUMB Debug/../../obj/com.o - 0x00001f3c ComGetActiveInterfaceMaxRxLen + 0x00002530 0x14 THUMB Debug/../../obj/com.o + 0x00002530 ComGetActiveInterfaceMaxRxLen .text.ComGetActiveInterfaceMaxTxLen - 0x00001f50 0x14 THUMB Debug/../../obj/com.o - 0x00001f50 ComGetActiveInterfaceMaxTxLen + 0x00002544 0x14 THUMB Debug/../../obj/com.o + 0x00002544 ComGetActiveInterfaceMaxTxLen .text.ComSetConnectEntryState - 0x00001f64 0xc THUMB Debug/../../obj/com.o - 0x00001f64 ComSetConnectEntryState + 0x00002558 0xc THUMB Debug/../../obj/com.o + 0x00002558 ComSetConnectEntryState .text.ComIsConnected - 0x00001f70 0x4 THUMB Debug/../../obj/com.o - 0x00001f70 ComIsConnected - .text.CopInit 0x00001f74 0x2 THUMB Debug/../../obj/cop.o - 0x00001f74 CopInit + 0x00002564 0x4 THUMB Debug/../../obj/com.o + 0x00002564 ComIsConnected + .text.CopInit 0x00002568 0x2 THUMB Debug/../../obj/cop.o + 0x00002568 CopInit .text.CopService - 0x00001f76 0x2 THUMB Debug/../../obj/cop.o - 0x00001f76 CopService + 0x0000256a 0x2 THUMB Debug/../../obj/cop.o + 0x0000256a CopService .text.XcpSetCtoError - 0x00001f78 0x14 THUMB Debug/../../obj/xcp.o - .text.XcpInit 0x00001f8c 0x1c THUMB Debug/../../obj/xcp.o - 0x00001f8c XcpInit + 0x0000256c 0x14 THUMB Debug/../../obj/xcp.o + .text.XcpInit 0x00002580 0x1c THUMB Debug/../../obj/xcp.o + 0x00002580 XcpInit .text.XcpIsConnected - 0x00001fa8 0x10 THUMB Debug/../../obj/xcp.o - 0x00001fa8 XcpIsConnected + 0x0000259c 0x10 THUMB Debug/../../obj/xcp.o + 0x0000259c XcpIsConnected .text.XcpPacketTransmitted - 0x00001fb8 0x10 THUMB Debug/../../obj/xcp.o - 0x00001fb8 XcpPacketTransmitted + 0x000025ac 0x10 THUMB Debug/../../obj/xcp.o + 0x000025ac XcpPacketTransmitted .text.XcpPacketReceived - 0x00001fc8 0x228 THUMB Debug/../../obj/xcp.o - 0x00001fc8 XcpPacketReceived + 0x000025bc 0x21c THUMB Debug/../../obj/xcp.o + 0x000025bc XcpPacketReceived .text.FileLibHexStringToByte - 0x000021f0 0x44 THUMB Debug/../../obj/file.o - .text.FileLibByteToHexString - 0x00002234 0x3a THUMB Debug/../../obj/file.o - *fill* 0x0000226e 0x2 00 + 0x000027d8 0x42 THUMB Debug/../../obj/file.o + *fill* 0x0000281a 0x2 00 .text.FileLibLongToIntString.constprop.0 - 0x00002270 0x38 THUMB Debug/../../obj/file.o + 0x0000281c 0x38 THUMB Debug/../../obj/file.o + .text.FileLibByteToHexString + 0x00002854 0x3a THUMB Debug/../../obj/file.o + *fill* 0x0000288e 0x2 00 .text.FileInit - 0x000022a8 0x2c THUMB Debug/../../obj/file.o - 0x000022a8 FileInit + 0x00002890 0x2c THUMB Debug/../../obj/file.o + 0x00002890 FileInit .text.FileIsIdle - 0x000022d4 0x14 THUMB Debug/../../obj/file.o - 0x000022d4 FileIsIdle + 0x000028bc 0x14 THUMB Debug/../../obj/file.o + 0x000028bc FileIsIdle .text.FileHandleFirmwareUpdateRequest - 0x000022e8 0x28 THUMB Debug/../../obj/file.o - 0x000022e8 FileHandleFirmwareUpdateRequest + 0x000028d0 0x28 THUMB Debug/../../obj/file.o + 0x000028d0 FileHandleFirmwareUpdateRequest .text.FileSrecGetLineType - 0x00002310 0x36 THUMB Debug/../../obj/file.o - 0x00002310 FileSrecGetLineType + 0x000028f8 0x38 THUMB Debug/../../obj/file.o + 0x000028f8 FileSrecGetLineType .text.FileSrecVerifyChecksum - 0x00002346 0x3e THUMB Debug/../../obj/file.o - 0x00002346 FileSrecVerifyChecksum + 0x00002930 0x3c THUMB Debug/../../obj/file.o + 0x00002930 FileSrecVerifyChecksum .text.FileSrecParseLine - 0x00002384 0x144 THUMB Debug/../../obj/file.o - 0x00002384 FileSrecParseLine + 0x0000296c 0x138 THUMB Debug/../../obj/file.o + 0x0000296c FileSrecParseLine .text.FileTask - 0x000024c8 0x338 THUMB Debug/../../obj/file.o - 0x000024c8 FileTask - .text.mem_cpy 0x00002800 0x12 THUMB Debug/../../obj/ff.o - .text.st_clust - 0x00002812 0x12 THUMB Debug/../../obj/ff.o - .text.sum_sfn 0x00002824 0x1c THUMB Debug/../../obj/ff.o - .text.get_fileinfo - 0x00002840 0xfa THUMB Debug/../../obj/ff.o - .text.ld_clust.isra.0 - 0x0000293a 0x1c THUMB Debug/../../obj/ff.o + 0x00002aa4 0x344 THUMB Debug/../../obj/file.o + 0x00002aa4 FileTask + .text.mem_cpy 0x00002de8 0x12 THUMB Debug/../../obj/ff.o + .text.sum_sfn 0x00002dfa 0x1e THUMB Debug/../../obj/ff.o .text.validate - 0x00002956 0x32 THUMB Debug/../../obj/ff.o + 0x00002e18 0x2a THUMB Debug/../../obj/ff.o + .text.get_fileinfo + 0x00002e42 0xee THUMB Debug/../../obj/ff.o + .text.ld_clust.isra.0 + 0x00002f30 0x1c THUMB Debug/../../obj/ff.o .text.check_fs - 0x00002988 0x88 THUMB Debug/../../obj/ff.o + 0x00002f4c 0x88 THUMB Debug/../../obj/ff.o .text.chk_mounted - 0x00002a10 0x328 THUMB Debug/../../obj/ff.o + 0x00002fd4 0x314 THUMB Debug/../../obj/ff.o .text.sync_window - 0x00002d38 0x4e THUMB Debug/../../obj/ff.o - .text.sync_fs 0x00002d86 0xb2 THUMB Debug/../../obj/ff.o + 0x000032e8 0x4e THUMB Debug/../../obj/ff.o + .text.sync_fs 0x00003336 0xb2 THUMB Debug/../../obj/ff.o .text.move_window - 0x00002e38 0x32 THUMB Debug/../../obj/ff.o + 0x000033e8 0x2e THUMB Debug/../../obj/ff.o .text.clust2sect - 0x00002e6a 0x18 THUMB Debug/../../obj/ff.o - 0x00002e6a clust2sect - .text.get_fat 0x00002e82 0xca THUMB Debug/../../obj/ff.o - 0x00002e82 get_fat - .text.dir_sdi 0x00002f4c 0x88 THUMB Debug/../../obj/ff.o - .text.put_fat 0x00002fd4 0xf6 THUMB Debug/../../obj/ff.o - 0x00002fd4 put_fat + 0x00003416 0x18 THUMB Debug/../../obj/ff.o + 0x00003416 clust2sect + .text.get_fat 0x0000342e 0xca THUMB Debug/../../obj/ff.o + 0x0000342e get_fat + .text.dir_sdi 0x000034f8 0x84 THUMB Debug/../../obj/ff.o + .text.put_fat 0x0000357c 0xf6 THUMB Debug/../../obj/ff.o + 0x0000357c put_fat .text.create_chain - 0x000030ca 0x9a THUMB Debug/../../obj/ff.o + 0x00003672 0x9a THUMB Debug/../../obj/ff.o .text.dir_next - 0x00003164 0xfc THUMB Debug/../../obj/ff.o - .text.dir_find.part.7 - 0x00003260 0x138 THUMB Debug/../../obj/ff.o + 0x0000370c 0xf0 THUMB Debug/../../obj/ff.o + .text.dir_find.part.6 + 0x000037fc 0x12c THUMB Debug/../../obj/ff.o .text.follow_path - 0x00003398 0x248 THUMB Debug/../../obj/ff.o + 0x00003928 0x280 THUMB Debug/../../obj/ff.o .text.dir_remove - 0x000035e0 0x4e THUMB Debug/../../obj/ff.o - *fill* 0x0000362e 0x2 00 - .text.dir_read.constprop.9 - 0x00003630 0xfc THUMB Debug/../../obj/ff.o + 0x00003ba8 0x4e THUMB Debug/../../obj/ff.o + *fill* 0x00003bf6 0x2 00 + .text.dir_read.constprop.8 + 0x00003bf8 0x100 THUMB Debug/../../obj/ff.o .text.remove_chain - 0x0000372c 0x5c THUMB Debug/../../obj/ff.o + 0x00003cf8 0x54 THUMB Debug/../../obj/ff.o .text.gen_numname - 0x00003788 0x76 THUMB Debug/../../obj/ff.o - 0x00003788 gen_numname - *fill* 0x000037fe 0x2 00 + 0x00003d4c 0x78 THUMB Debug/../../obj/ff.o + 0x00003d4c gen_numname .text.dir_register - 0x00003800 0x1c4 THUMB Debug/../../obj/ff.o - .text.f_mount 0x000039c4 0x20 THUMB Debug/../../obj/ff.o - 0x000039c4 f_mount - .text.f_open 0x000039e4 0x148 THUMB Debug/../../obj/ff.o - 0x000039e4 f_open - .text.f_read 0x00003b2c 0x15e THUMB Debug/../../obj/ff.o - 0x00003b2c f_read - .text.f_write 0x00003c8a 0x18c THUMB Debug/../../obj/ff.o - 0x00003c8a f_write - .text.f_sync 0x00003e16 0x9c THUMB Debug/../../obj/ff.o - 0x00003e16 f_sync - .text.f_close 0x00003eb2 0xe THUMB Debug/../../obj/ff.o - 0x00003eb2 f_close - .text.f_lseek 0x00003ec0 0x146 THUMB Debug/../../obj/ff.o - 0x00003ec0 f_lseek - *fill* 0x00004006 0x2 00 - .text.f_stat 0x00004008 0x48 THUMB Debug/../../obj/ff.o - 0x00004008 f_stat + 0x00003dc4 0x1c8 THUMB Debug/../../obj/ff.o + .text.f_mount 0x00003f8c 0x20 THUMB Debug/../../obj/ff.o + 0x00003f8c f_mount + .text.f_open 0x00003fac 0x160 THUMB Debug/../../obj/ff.o + 0x00003fac f_open + .text.f_read 0x0000410c 0x164 THUMB Debug/../../obj/ff.o + 0x0000410c f_read + .text.f_write 0x00004270 0x192 THUMB Debug/../../obj/ff.o + 0x00004270 f_write + .text.f_sync 0x00004402 0xac THUMB Debug/../../obj/ff.o + 0x00004402 f_sync + .text.f_close 0x000044ae 0xe THUMB Debug/../../obj/ff.o + 0x000044ae f_close + .text.f_lseek 0x000044bc 0x13c THUMB Debug/../../obj/ff.o + 0x000044bc f_lseek + .text.f_stat 0x000045f8 0x48 THUMB Debug/../../obj/ff.o + 0x000045f8 f_stat .text.f_unlink - 0x00004050 0xbc THUMB Debug/../../obj/ff.o - 0x00004050 f_unlink - .text.f_gets 0x0000410c 0x4a THUMB Debug/../../obj/ff.o - 0x0000410c f_gets - .text.f_putc 0x00004156 0x2e THUMB Debug/../../obj/ff.o - 0x00004156 f_putc - .text.f_puts 0x00004184 0x24 THUMB Debug/../../obj/ff.o - 0x00004184 f_puts + 0x00004640 0xc0 THUMB Debug/../../obj/ff.o + 0x00004640 f_unlink + .text.f_gets 0x00004700 0x48 THUMB Debug/../../obj/ff.o + 0x00004700 f_gets + .text.f_putc 0x00004748 0x30 THUMB Debug/../../obj/ff.o + 0x00004748 f_putc + .text.f_puts 0x00004778 0x20 THUMB Debug/../../obj/ff.o + 0x00004778 f_puts .text.ff_convert - 0x000041a8 0x3c THUMB Debug/../../obj/unicode.o - 0x000041a8 ff_convert + 0x00004798 0x38 THUMB Debug/../../obj/unicode.o + 0x00004798 ff_convert .text.ff_wtoupper - 0x000041e4 0x24 THUMB Debug/../../obj/unicode.o - 0x000041e4 ff_wtoupper + 0x000047d0 0x24 THUMB Debug/../../obj/unicode.o + 0x000047d0 ff_wtoupper + .text.chksum 0x000047f4 0x38 THUMB Debug/../../obj/uip.o + .text.upper_layer_chksum + 0x0000482c 0x40 THUMB Debug/../../obj/uip.o + .text.uip_add32 + 0x0000486c 0x54 THUMB Debug/../../obj/uip.o + 0x0000486c uip_add32 + .text.unlikely.uip_add_rcv_nxt + 0x000048c0 0x2c THUMB Debug/../../obj/uip.o + .text.uip_ipchksum + 0x000048ec 0x24 THUMB Debug/../../obj/uip.o + 0x000048ec uip_ipchksum + .text.uip_tcpchksum + 0x00004910 0x6 THUMB Debug/../../obj/uip.o + 0x00004910 uip_tcpchksum + *fill* 0x00004916 0x2 00 + .text.uip_init + 0x00004918 0x2c THUMB Debug/../../obj/uip.o + 0x00004918 uip_init + .text.uip_listen + 0x00004944 0x1c THUMB Debug/../../obj/uip.o + 0x00004944 uip_listen + .text.uip_process + 0x00004960 0x9b8 THUMB Debug/../../obj/uip.o + 0x00004960 uip_process + .text.htons 0x00005318 0xa THUMB Debug/../../obj/uip.o + 0x00005318 htons + *fill* 0x00005322 0x2 00 + .text.uip_send + 0x00005324 0x24 THUMB Debug/../../obj/uip.o + 0x00005324 uip_send + .text.uip_arp_update.constprop.0 + 0x00005348 0xd4 THUMB Debug/../../obj/uip_arp.o + .text.uip_arp_timer + 0x0000541c 0x58 THUMB Debug/../../obj/uip_arp.o + 0x0000541c uip_arp_timer + .text.uip_arp_arpin + 0x00005474 0xbc THUMB Debug/../../obj/uip_arp.o + 0x00005474 uip_arp_arpin + .text.uip_arp_out + 0x00005530 0x140 THUMB Debug/../../obj/uip_arp.o + 0x00005530 uip_arp_out + .text.NetInit 0x00005670 0x60 THUMB Debug/../../obj/net.o + 0x00005670 NetInit + .text.NetTransmitPacket + 0x000056d0 0x38 THUMB Debug/../../obj/net.o + 0x000056d0 NetTransmitPacket + .text.NetReceivePacket + 0x00005708 0xb0 THUMB Debug/../../obj/net.o + 0x00005708 NetReceivePacket + .text.NetApp 0x000057b8 0x6c THUMB Debug/../../obj/net.o + 0x000057b8 NetApp .text.libc.isdigit - 0x00004208 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - 0x00004208 isdigit + 0x00005824 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + 0x00005824 isdigit .text.libc.toupper - 0x00004214 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - 0x00004214 toupper - *fill* 0x00004222 0x2 00 + 0x00005830 0xe C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + 0x00005830 toupper + *fill* 0x0000583e 0x2 00 + .text.libc.memcpy + 0x00005840 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + 0x00005840 __aeabi_memcpy + 0x00005840 __aeabi_memcpy4 + 0x00005840 __aeabi_memcpy8 + 0x00005840 memcpy .text.libc.memset - 0x00004224 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - 0x00004224 memset - 0x00004234 __text_end__ = (__text_start__ + SIZEOF (.text)) - 0x00004234 __text_load_end__ = __text_end__ + 0x0000585c 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) + 0x0000585c memset + 0x00005870 __text_end__ = (__text_start__ + SIZEOF (.text)) + 0x00005870 __text_load_end__ = __text_end__ .vfp11_veneer 0x00000000 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs .v4_bx 0x00000000 0x0 .v4_bx 0x00000000 0x0 linker stubs - 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= __FLASH_segment_end__)), error: .text is too large to fit in FLASH memory segment) - 0x00004234 __dtors_load_start__ = ALIGN (__text_end__, 0x4) -.dtors 0x00004234 0x0 - 0x00004234 __dtors_start__ = . +.iplt 0x00000000 0x0 + .iplt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o + 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= __FLASH_segment_end__)), error: .text is too large to fit in FLASH memory segment) + 0x00005870 __dtors_load_start__ = ALIGN (__text_end__, 0x4) + +.dtors 0x00005870 0x0 + 0x00005870 __dtors_start__ = . *(SORT(.dtors.*)) *(.dtors) *(.fini_array .fini_array.*) - 0x00004234 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) - 0x00004234 __dtors_load_end__ = __dtors_end__ + 0x00005870 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) + 0x00005870 __dtors_load_end__ = __dtors_end__ 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= __FLASH_segment_end__)), error: .dtors is too large to fit in FLASH memory segment) - 0x00004234 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) + 0x00005870 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) -.ctors 0x00004234 0x0 - 0x00004234 __ctors_start__ = . +.ctors 0x00005870 0x0 + 0x00005870 __ctors_start__ = . *(SORT(.ctors.*)) *(.ctors) *(.init_array .init_array.*) - 0x00004234 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) - 0x00004234 __ctors_load_end__ = __ctors_end__ + 0x00005870 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) + 0x00005870 __ctors_load_end__ = __ctors_end__ 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= __FLASH_segment_end__)), error: .ctors is too large to fit in FLASH memory segment) - 0x00004234 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) + 0x00005870 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) -.rodata 0x00004234 0xbd4 - 0x00004234 __rodata_start__ = . +.rodata 0x00005870 0xc46 + 0x00005870 __rodata_start__ = . *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata.g_pulXtals - 0x00004234 0x6c THUMB Debug/../../obj/sysctl.o + 0x00005870 0x6c THUMB Debug/../../obj/sysctl.o .rodata.str1.1 - 0x000042a0 0x6b THUMB Debug/../../obj/sysctl.o - *fill* 0x0000430b 0x1 00 + 0x000058dc 0x6b THUMB Debug/../../obj/sysctl.o + *fill* 0x00005947 0x1 00 .rodata.g_pulRCGCRegs - 0x0000430c 0xc THUMB Debug/../../obj/sysctl.o + 0x00005948 0xc THUMB Debug/../../obj/sysctl.o + .rodata.g_pulSRCRRegs + 0x00005954 0xc THUMB Debug/../../obj/sysctl.o .rodata.str1.1 - 0x00004318 0x69 THUMB Debug/../../obj/gpio.o + 0x00005960 0x69 THUMB Debug/../../obj/gpio.o .rodata.str1.1 - 0x00004381 0x6d THUMB Debug/../../obj/flashlib.o + 0x000059c9 0x6d THUMB Debug/../../obj/flashlib.o .rodata.str1.1 - 0x000043ee 0x6c THUMB Debug/../../obj/uartlib.o + 0x00005a36 0x6c THUMB Debug/../../obj/uartlib.o .rodata.str1.1 - 0x0000445a 0x68 THUMB Debug/../../obj/ssi.o + 0x00005aa2 0x68 THUMB Debug/../../obj/ssi.o + .rodata.str1.1 + 0x00005b0a 0x6d THUMB Debug/../../obj/ethernet.o .rodata.firmwareFilename - 0x000044c2 0x1b THUMB Debug/../../obj/hooks.o + 0x00005b77 0x1b THUMB Debug/../../obj/hooks.o .rodata.str1.1 - 0x000044dd 0xd THUMB Debug/../../obj/hooks.o + 0x00005b92 0xd THUMB Debug/../../obj/hooks.o .rodata.str1.1 - 0x000044ea 0x85 THUMB Debug/../../obj/vectors.o - *fill* 0x0000456f 0x1 00 + 0x00005b9f 0x85 THUMB Debug/../../obj/vectors.o .rodata.flashLayout - 0x00004570 0xcc THUMB Debug/../../obj/flash.o + 0x00005c24 0xc0 THUMB Debug/../../obj/flash.o .rodata.str1.1 - 0x0000463c 0x77 THUMB Debug/../../obj/uart.o + 0x00005ce4 0x77 THUMB Debug/../../obj/uart.o .rodata.xcpStationId - 0x000046b3 0x8 THUMB Debug/../../obj/xcp.o + 0x00005d5b 0x8 THUMB Debug/../../obj/xcp.o .rodata.str1.1 - 0x000046bb 0x1ef THUMB Debug/../../obj/file.o + 0x00005d63 0x1ef THUMB Debug/../../obj/file.o 0x1fb (size before relaxing) .rodata.str1.1 - 0x000048aa 0x10 THUMB Debug/../../obj/ff.o - .rodata.ExCvt 0x000048ba 0x80 THUMB Debug/../../obj/ff.o + 0x00005f52 0x10 THUMB Debug/../../obj/ff.o + .rodata.ExCvt 0x00005f62 0x80 THUMB Debug/../../obj/ff.o .rodata.LfnOfs - 0x0000493a 0xd THUMB Debug/../../obj/ff.o - *fill* 0x00004947 0x1 00 - .rodata.tbl_upper.984 - 0x00004948 0x1e0 THUMB Debug/../../obj/unicode.o - .rodata.tbl_lower.983 - 0x00004b28 0x1e0 THUMB Debug/../../obj/unicode.o - .rodata.Tbl 0x00004d08 0x100 THUMB Debug/../../obj/unicode.o - 0x00004e08 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) - 0x00004e08 __rodata_load_end__ = __rodata_end__ + 0x00005fe2 0xd THUMB Debug/../../obj/ff.o + *fill* 0x00005fef 0x1 00 + .rodata.tbl_lower.3809 + 0x00005ff0 0x1e0 THUMB Debug/../../obj/unicode.o + .rodata.Tbl 0x000061d0 0x100 THUMB Debug/../../obj/unicode.o + .rodata.tbl_upper.3810 + 0x000062d0 0x1e0 THUMB Debug/../../obj/unicode.o + .rodata.broadcast_ethaddr + 0x000064b0 0x6 THUMB Debug/../../obj/uip_arp.o + 0x000064b6 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) + 0x000064b6 __rodata_load_end__ = __rodata_end__ + +.rel.dyn 0x00000000 0x0 + .rel.iplt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= __FLASH_segment_end__)), error: .rodata is too large to fit in FLASH memory segment) - 0x00004e08 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) + 0x000064b8 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) -.ARM.exidx 0x00004e08 0x0 - 0x00004e08 __ARM.exidx_start__ = . - 0x00004e08 __exidx_start = __ARM.exidx_start__ +.ARM.exidx 0x000064b8 0x0 + 0x000064b8 __ARM.exidx_start__ = . + 0x000064b8 __exidx_start = __ARM.exidx_start__ *(.ARM.exidx .ARM.exidx.*) - 0x00004e08 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) - 0x00004e08 __exidx_end = __ARM.exidx_end__ - 0x00004e08 __ARM.exidx_load_end__ = __ARM.exidx_end__ + 0x000064b8 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) + 0x000064b8 __exidx_end = __ARM.exidx_end__ + 0x000064b8 __ARM.exidx_load_end__ = __ARM.exidx_end__ 0x00000001 . = ASSERT (((__ARM.exidx_end__ >= __FLASH_segment_start__) && (__ARM.exidx_end__ <= __FLASH_segment_end__)), error: .ARM.exidx is too large to fit in FLASH memory segment) - 0x00004e08 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) + 0x000064b8 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) -.fast 0x20000000 0x0 load address 0x00004e08 +.fast 0x20000000 0x0 load address 0x000064b8 0x20000000 __fast_start__ = . *(.fast .fast.*) 0x20000000 __fast_end__ = (__fast_start__ + SIZEOF (.fast)) - 0x00004e08 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) + 0x000064b8 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) 0x00000001 . = ASSERT (((__fast_load_end__ >= __FLASH_segment_start__) && (__fast_load_end__ <= __FLASH_segment_end__)), error: .fast is too large to fit in FLASH memory segment) .fast_run 0x20000000 0x0 @@ -1630,140 +1895,202 @@ Linker script and memory map 0x20000000 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run)) 0x20000000 __fast_run_load_end__ = __fast_run_end__ 0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= __SRAM_segment_end__)), error: .fast_run is too large to fit in SRAM memory segment) - 0x00004e08 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) + 0x000064b8 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) -.data 0x20000000 0x8 load address 0x00004e08 +.data 0x20000000 0x2 load address 0x000064b8 0x20000000 __data_start__ = . *(.data .data.* .gnu.linkonce.d.*) .data.Stat 0x20000000 0x1 THUMB Debug/../../obj/mmc.o - *fill* 0x20000001 0x3 00 .data.comActiveInterface - 0x20000004 0x4 THUMB Debug/../../obj/com.o - 0x20000008 __data_end__ = (__data_start__ + SIZEOF (.data)) - 0x00004e10 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + 0x20000001 0x1 THUMB Debug/../../obj/com.o + 0x20000002 __data_end__ = (__data_start__ + SIZEOF (.data)) + 0x000064ba __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + +.igot.plt 0x00000000 0x0 + .igot.plt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o 0x00000001 . = ASSERT (((__data_load_end__ >= __FLASH_segment_start__) && (__data_load_end__ <= __FLASH_segment_end__)), error: .data is too large to fit in FLASH memory segment) -.data_run 0x20000000 0x8 load address 0x00004e08 +.data_run 0x20000000 0x2 load address 0x000064b8 0x20000000 __data_run_start__ = . - 0x20000008 . = MAX ((__data_run_start__ + SIZEOF (.data)), .) - *fill* 0x20000000 0x8 00 - 0x20000008 __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run)) - 0x20000008 __data_run_load_end__ = __data_run_end__ + 0x20000002 . = MAX ((__data_run_start__ + SIZEOF (.data)), .) + *fill* 0x20000000 0x2 00 + 0x20000002 __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run)) + 0x20000002 __data_run_load_end__ = __data_run_end__ 0x00000001 . = ASSERT (((__data_run_end__ >= __SRAM_segment_start__) && (__data_run_end__ <= __SRAM_segment_end__)), error: .data_run is too large to fit in SRAM memory segment) - 0x20000008 __bss_load_start__ = ALIGN (__data_run_end__, 0x4) + 0x20000004 __bss_load_start__ = ALIGN (__data_run_end__, 0x4) -.bss 0x20000008 0xf4c - 0x20000008 __bss_start__ = . +.bss 0x20000004 0x16a0 + 0x20000004 __bss_start__ = . *(.bss .bss.* .gnu.linkonce.b.*) - .bss.CardType 0x20000008 0x4 THUMB Debug/../../obj/mmc.o - .bss.logfile 0x2000000c 0x228 THUMB Debug/../../obj/hooks.o + .bss.CardType 0x20000004 0x4 THUMB Debug/../../obj/mmc.o + .bss.logfile 0x20000008 0x228 THUMB Debug/../../obj/hooks.o .bss.bootBlockInfo - 0x20000234 0x204 THUMB Debug/../../obj/flash.o + 0x20000230 0x204 THUMB Debug/../../obj/flash.o .bss.blockInfo - 0x20000438 0x204 THUMB Debug/../../obj/flash.o + 0x20000434 0x204 THUMB Debug/../../obj/flash.o .bss.millisecond_counter - 0x2000063c 0x4 THUMB Debug/../../obj/timer.o - .bss.xcpCtoReqPacket.1350 - 0x20000640 0x41 THUMB Debug/../../obj/uart.o - .bss.xcpCtoRxLength.1351 - 0x20000681 0x1 THUMB Debug/../../obj/uart.o - .bss.xcpCtoRxInProgress.1352 - 0x20000682 0x1 THUMB Debug/../../obj/uart.o - *fill* 0x20000683 0x1 00 + 0x20000638 0x4 THUMB Debug/../../obj/timer.o + .bss.xcpCtoReqPacket.4178 + 0x2000063c 0x41 THUMB Debug/../../obj/uart.o + .bss.xcpCtoRxInProgress.4180 + 0x2000067d 0x1 THUMB Debug/../../obj/uart.o + .bss.xcpCtoRxLength.4179 + 0x2000067e 0x1 THUMB Debug/../../obj/uart.o + *fill* 0x2000067f 0x1 00 .bss.assert_failure_file - 0x20000684 0x4 THUMB Debug/../../obj/assert.o + 0x20000680 0x4 THUMB Debug/../../obj/assert.o .bss.assert_failure_line - 0x20000688 0x4 THUMB Debug/../../obj/assert.o + 0x20000684 0x4 THUMB Debug/../../obj/assert.o .bss.backdoorOpen - 0x2000068c 0x1 THUMB Debug/../../obj/backdoor.o - *fill* 0x2000068d 0x3 00 + 0x20000688 0x1 THUMB Debug/../../obj/backdoor.o + *fill* 0x20000689 0x3 00 .bss.backdoorOpenTime - 0x20000690 0x4 THUMB Debug/../../obj/backdoor.o + 0x2000068c 0x4 THUMB Debug/../../obj/backdoor.o .bss.comEntryStateConnect - 0x20000694 0x1 THUMB Debug/../../obj/com.o - .bss.xcpCtoReqPacket.1120 - 0x20000695 0x40 THUMB Debug/../../obj/com.o - *fill* 0x200006d5 0x3 00 - .bss.xcpInfo 0x200006d8 0x4c THUMB Debug/../../obj/xcp.o + 0x20000690 0x1 THUMB Debug/../../obj/com.o + .bss.xcpCtoReqPacket.3962 + 0x20000691 0x40 THUMB Debug/../../obj/com.o + *fill* 0x200006d1 0x3 00 + .bss.xcpInfo 0x200006d4 0x4c THUMB Debug/../../obj/xcp.o .bss.loggingStr - 0x20000724 0x40 THUMB Debug/../../obj/file.o + 0x20000720 0x40 THUMB Debug/../../obj/file.o .bss.firmwareUpdateState - 0x20000764 0x4 THUMB Debug/../../obj/file.o + 0x20000760 0x1 THUMB Debug/../../obj/file.o + *fill* 0x20000761 0x3 00 .bss.eraseInfo - 0x20000768 0x8 THUMB Debug/../../obj/file.o + 0x20000764 0x8 THUMB Debug/../../obj/file.o .bss.fatFsObjects - 0x20000770 0x458 THUMB Debug/../../obj/file.o + 0x2000076c 0x458 THUMB Debug/../../obj/file.o .bss.lineParseObject - 0x20000bc8 0x184 THUMB Debug/../../obj/file.o - .bss.LfnBuf 0x20000d4c 0x200 THUMB Debug/../../obj/ff.o - .bss.Fsid 0x20000f4c 0x2 THUMB Debug/../../obj/ff.o - *fill* 0x20000f4e 0x2 00 - .bss.FatFs 0x20000f50 0x4 THUMB Debug/../../obj/ff.o + 0x20000bc4 0x184 THUMB Debug/../../obj/file.o + .bss.LfnBuf 0x20000d48 0x200 THUMB Debug/../../obj/ff.o + .bss.Fsid 0x20000f48 0x2 THUMB Debug/../../obj/ff.o + *fill* 0x20000f4a 0x2 00 + .bss.FatFs 0x20000f4c 0x4 THUMB Debug/../../obj/ff.o + .bss.uip_conn 0x20000f50 0x4 THUMB Debug/../../obj/uip.o + 0x20000f50 uip_conn + .bss.uip_conns + 0x20000f54 0x68 THUMB Debug/../../obj/uip.o + 0x20000f54 uip_conns + .bss.uip_netmask + 0x20000fbc 0x4 THUMB Debug/../../obj/uip.o + 0x20000fbc uip_netmask + .bss.uip_len 0x20000fc0 0x2 THUMB Debug/../../obj/uip.o + 0x20000fc0 uip_len + .bss.ipid 0x20000fc2 0x2 THUMB Debug/../../obj/uip.o + .bss.uip_draddr + 0x20000fc4 0x4 THUMB Debug/../../obj/uip.o + 0x20000fc4 uip_draddr + .bss.uip_slen 0x20000fc8 0x2 THUMB Debug/../../obj/uip.o + 0x20000fc8 uip_slen + .bss.uip_buf 0x20000fca 0x642 THUMB Debug/../../obj/uip.o + 0x20000fca uip_buf + .bss.uip_appdata + 0x2000160c 0x4 THUMB Debug/../../obj/uip.o + 0x2000160c uip_appdata + .bss.iss 0x20001610 0x4 THUMB Debug/../../obj/uip.o + .bss.uip_hostaddr + 0x20001614 0x4 THUMB Debug/../../obj/uip.o + 0x20001614 uip_hostaddr + .bss.uip_flags + 0x20001618 0x1 THUMB Debug/../../obj/uip.o + 0x20001618 uip_flags + .bss.uip_acc32 + 0x20001619 0x4 THUMB Debug/../../obj/uip.o + 0x20001619 uip_acc32 + *fill* 0x2000161d 0x1 00 + .bss.lastport 0x2000161e 0x2 THUMB Debug/../../obj/uip.o + .bss.tmp16 0x20001620 0x2 THUMB Debug/../../obj/uip.o + .bss.uip_ethaddr + 0x20001622 0x6 THUMB Debug/../../obj/uip.o + 0x20001622 uip_ethaddr + .bss.c 0x20001628 0x1 THUMB Debug/../../obj/uip.o + *fill* 0x20001629 0x1 00 + .bss.uip_listenports + 0x2000162a 0x2 THUMB Debug/../../obj/uip.o + 0x2000162a uip_listenports + .bss.uip_sappdata + 0x2000162c 0x4 THUMB Debug/../../obj/uip.o + 0x2000162c uip_sappdata + .bss.opt 0x20001630 0x1 THUMB Debug/../../obj/uip.o + .bss.i 0x20001631 0x1 THUMB Debug/../../obj/uip_arp.o + .bss.tmpage 0x20001632 0x1 THUMB Debug/../../obj/uip_arp.o + *fill* 0x20001633 0x1 00 + .bss.arp_table + 0x20001634 0x60 THUMB Debug/../../obj/uip_arp.o + .bss.c 0x20001694 0x1 THUMB Debug/../../obj/uip_arp.o + .bss.arptime 0x20001695 0x1 THUMB Debug/../../obj/uip_arp.o + .bss.ipaddr 0x20001696 0x4 THUMB Debug/../../obj/uip_arp.o + *fill* 0x2000169a 0x2 00 + .bss.ARPTimerTimeOut + 0x2000169c 0x4 THUMB Debug/../../obj/net.o + .bss.periodicTimerTimeOut + 0x200016a0 0x4 THUMB Debug/../../obj/net.o *(COMMON) - 0x20000f54 __bss_end__ = (__bss_start__ + SIZEOF (.bss)) - 0x20000f54 __bss_load_end__ = __bss_end__ + 0x200016a4 __bss_end__ = (__bss_start__ + SIZEOF (.bss)) + 0x200016a4 __bss_load_end__ = __bss_end__ 0x00000001 . = ASSERT (((__bss_end__ >= __SRAM_segment_start__) && (__bss_end__ <= __SRAM_segment_end__)), error: .bss is too large to fit in SRAM memory segment) - 0x20000f54 __non_init_load_start__ = ALIGN (__bss_end__, 0x4) + 0x200016a4 __non_init_load_start__ = ALIGN (__bss_end__, 0x4) -.non_init 0x20000f54 0x0 - 0x20000f54 __non_init_start__ = . +.non_init 0x200016a4 0x0 + 0x200016a4 __non_init_start__ = . *(.non_init .non_init.*) - 0x20000f54 __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init)) - 0x20000f54 __non_init_load_end__ = __non_init_end__ + 0x200016a4 __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init)) + 0x200016a4 __non_init_load_end__ = __non_init_end__ 0x00000001 . = ASSERT (((__non_init_end__ >= __SRAM_segment_start__) && (__non_init_end__ <= __SRAM_segment_end__)), error: .non_init is too large to fit in SRAM memory segment) - 0x20000f54 __heap_load_start__ = ALIGN (__non_init_end__, 0x4) + 0x200016a4 __heap_load_start__ = ALIGN (__non_init_end__, 0x4) -.heap 0x20000f54 0x80 - 0x20000f54 __heap_start__ = . +.heap 0x200016a4 0x80 + 0x200016a4 __heap_start__ = . *(.heap .heap.*) - 0x20000fd4 . = ALIGN (MAX ((__heap_start__ + __HEAPSIZE__), .), 0x4) - *fill* 0x20000f54 0x80 00 - 0x20000fd4 __heap_end__ = (__heap_start__ + SIZEOF (.heap)) - 0x20000fd4 __heap_load_end__ = __heap_end__ + 0x20001724 . = ALIGN (MAX ((__heap_start__ + __HEAPSIZE__), .), 0x4) + *fill* 0x200016a4 0x80 00 + 0x20001724 __heap_end__ = (__heap_start__ + SIZEOF (.heap)) + 0x20001724 __heap_load_end__ = __heap_end__ 0x00000001 . = ASSERT (((__heap_end__ >= __SRAM_segment_start__) && (__heap_end__ <= __SRAM_segment_end__)), error: .heap is too large to fit in SRAM memory segment) - 0x20000fd4 __stack_load_start__ = ALIGN (__heap_end__, 0x4) + 0x20001724 __stack_load_start__ = ALIGN (__heap_end__, 0x4) -.stack 0x20000fd4 0x200 - 0x20000fd4 __stack_start__ = . +.stack 0x20001724 0x200 + 0x20001724 __stack_start__ = . *(.stack .stack.*) - 0x200011d4 . = ALIGN (MAX ((__stack_start__ + __STACKSIZE__), .), 0x4) - *fill* 0x20000fd4 0x200 00 - 0x200011d4 __stack_end__ = (__stack_start__ + SIZEOF (.stack)) - 0x200011d4 __stack_load_end__ = __stack_end__ + 0x20001924 . = ALIGN (MAX ((__stack_start__ + __STACKSIZE__), .), 0x4) + *fill* 0x20001724 0x200 00 + 0x20001924 __stack_end__ = (__stack_start__ + SIZEOF (.stack)) + 0x20001924 __stack_load_end__ = __stack_end__ 0x00000001 . = ASSERT (((__stack_end__ >= __SRAM_segment_start__) && (__stack_end__ <= __SRAM_segment_end__)), error: .stack is too large to fit in SRAM memory segment) - 0x200011d4 __stack_process_load_start__ = ALIGN (__stack_end__, 0x4) + 0x20001924 __stack_process_load_start__ = ALIGN (__stack_end__, 0x4) -.stack_process 0x200011d4 0x0 - 0x200011d4 __stack_process_start__ = . +.stack_process 0x20001924 0x0 + 0x20001924 __stack_process_start__ = . *(.stack_process .stack_process.*) - 0x200011d4 . = ALIGN (MAX ((__stack_process_start__ + __STACKSIZE_PROCESS__), .), 0x4) - 0x200011d4 __stack_process_end__ = (__stack_process_start__ + SIZEOF (.stack_process)) - 0x200011d4 __stack_process_load_end__ = __stack_process_end__ + 0x20001924 . = ALIGN (MAX ((__stack_process_start__ + __STACKSIZE_PROCESS__), .), 0x4) + 0x20001924 __stack_process_end__ = (__stack_process_start__ + SIZEOF (.stack_process)) + 0x20001924 __stack_process_load_end__ = __stack_process_end__ 0x00000001 . = ASSERT (((__stack_process_end__ >= __SRAM_segment_start__) && (__stack_process_end__ <= __SRAM_segment_end__)), error: .stack_process is too large to fit in SRAM memory segment) - 0x200011d4 __tbss_load_start__ = ALIGN (__stack_process_end__, 0x4) + 0x20001924 __tbss_load_start__ = ALIGN (__stack_process_end__, 0x4) -.tbss 0x200011d4 0x0 - 0x200011d4 __tbss_start__ = . +.tbss 0x20001924 0x0 + 0x20001924 __tbss_start__ = . *(.tbss .tbss.*) - 0x200011d4 __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) - 0x200011d4 __tbss_load_end__ = __tbss_end__ + 0x20001924 __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) + 0x20001924 __tbss_load_end__ = __tbss_end__ 0x00000001 . = ASSERT (((__tbss_end__ >= __SRAM_segment_start__) && (__tbss_end__ <= __SRAM_segment_end__)), error: .tbss is too large to fit in SRAM memory segment) - 0x00004e10 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + 0x000064bc __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) -.tdata 0x200011d4 0x0 load address 0x00004e10 - 0x200011d4 __tdata_start__ = . +.tdata 0x20001924 0x0 load address 0x000064bc + 0x20001924 __tdata_start__ = . *(.tdata .tdata.*) - 0x200011d4 __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) - 0x00004e10 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) - 0x00004e10 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) + 0x20001924 __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) + 0x000064bc __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) + 0x000064bc __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) 0x00000001 . = ASSERT (((__tdata_load_end__ >= __FLASH_segment_start__) && (__tdata_load_end__ <= __FLASH_segment_end__)), error: .tdata is too large to fit in FLASH memory segment) -.tdata_run 0x200011d4 0x0 - 0x200011d4 __tdata_run_start__ = . - 0x200011d4 . = MAX ((__tdata_run_start__ + SIZEOF (.tdata)), .) - 0x200011d4 __tdata_run_end__ = (__tdata_run_start__ + SIZEOF (.tdata_run)) - 0x200011d4 __tdata_run_load_end__ = __tdata_run_end__ - 0x200011d4 __SRAM_segment_used_end__ = (ALIGN (__tbss_end__, 0x4) + SIZEOF (.tdata_run)) +.tdata_run 0x20001924 0x0 + 0x20001924 __tdata_run_start__ = . + 0x20001924 . = MAX ((__tdata_run_start__ + SIZEOF (.tdata)), .) + 0x20001924 __tdata_run_end__ = (__tdata_run_start__ + SIZEOF (.tdata_run)) + 0x20001924 __tdata_run_load_end__ = __tdata_run_end__ + 0x20001924 __SRAM_segment_used_end__ = (ALIGN (__tbss_end__, 0x4) + SIZEOF (.tdata_run)) 0x00000001 . = ASSERT (((__tdata_run_end__ >= __SRAM_segment_start__) && (__tdata_run_end__ <= __SRAM_segment_end__)), error: .tdata_run is too large to fit in SRAM memory segment) START GROUP LOAD THUMB Debug/../../obj/sysctl.o @@ -1773,7 +2100,10 @@ LOAD THUMB Debug/../../obj/gpio.o LOAD THUMB Debug/../../obj/flashlib.o LOAD THUMB Debug/../../obj/uartlib.o LOAD THUMB Debug/../../obj/ssi.o +LOAD THUMB Debug/../../obj/ethernet.o LOAD THUMB Debug/../../obj/mmc.o +LOAD THUMB Debug/../../obj/clock-arch.o +LOAD THUMB Debug/../../obj/netdev.o LOAD THUMB Debug/../../obj/hooks.o LOAD THUMB Debug/../../obj/main.o LOAD THUMB Debug/../../obj/cstart.o @@ -1792,316 +2122,341 @@ LOAD THUMB Debug/../../obj/xcp.o LOAD THUMB Debug/../../obj/file.o LOAD THUMB Debug/../../obj/ff.o LOAD THUMB Debug/../../obj/unicode.o -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le_small.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a +LOAD THUMB Debug/../../obj/uip.o +LOAD THUMB Debug/../../obj/uip_arp.o +LOAD THUMB Debug/../../obj/uip_timer.o +LOAD THUMB Debug/../../obj/uiplib.o +LOAD THUMB Debug/../../obj/net.o +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le_eabi_small.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi_small.a END GROUP OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/../bin/openbtl_ek_lm3s6965.elf elf32-littlearm) -.debug_frame 0x00000000 0x40d0 +.debug_frame 0x00000000 0x3c4c .debug_frame 0x00000000 0x49c THUMB Debug/../../obj/sysctl.o - .debug_frame 0x0000049c 0x1a8 THUMB Debug/../../obj/interrupt.o - .debug_frame 0x00000644 0x70 THUMB Debug/../../obj/cpulib.o - .debug_frame 0x000006b4 0x574 THUMB Debug/../../obj/gpio.o - .debug_frame 0x00000c28 0x18c THUMB Debug/../../obj/flashlib.o - .debug_frame 0x00000db4 0x58c THUMB Debug/../../obj/uartlib.o - .debug_frame 0x00001340 0x254 THUMB Debug/../../obj/ssi.o - .debug_frame 0x00001594 0x198 THUMB Debug/../../obj/mmc.o - .debug_frame 0x0000172c 0xb4 THUMB Debug/../../obj/hooks.o - .debug_frame 0x000017e0 0x2c THUMB Debug/../../obj/main.o - .debug_frame 0x0000180c 0x20 THUMB Debug/../../obj/vectors.o - .debug_frame 0x0000182c 0x5c THUMB Debug/../../obj/cpu.o - .debug_frame 0x00001888 0x13c THUMB Debug/../../obj/flash.o - .debug_frame 0x000019c4 0x6c THUMB Debug/../../obj/nvm.o - .debug_frame 0x00001a30 0x5c THUMB Debug/../../obj/timer.o - .debug_frame 0x00001a8c 0x70 THUMB Debug/../../obj/uart.o - .debug_frame 0x00001afc 0x2c THUMB Debug/../../obj/assert.o - .debug_frame 0x00001b28 0x48 THUMB Debug/../../obj/backdoor.o - .debug_frame 0x00001b70 0x48 THUMB Debug/../../obj/boot.o - .debug_frame 0x00001bb8 0xd8 THUMB Debug/../../obj/com.o - .debug_frame 0x00001c90 0x30 THUMB Debug/../../obj/cop.o - .debug_frame 0x00001cc0 0x74 THUMB Debug/../../obj/xcp.o - .debug_frame 0x00001d34 0x140 THUMB Debug/../../obj/file.o - .debug_frame 0x00001e74 0x64c THUMB Debug/../../obj/ff.o - .debug_frame 0x000024c0 0x30 THUMB Debug/../../obj/unicode.o - .debug_frame 0x000024f0 0x11c0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .debug_frame 0x000036b0 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) - .debug_frame 0x000037d0 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) - .debug_frame 0x00003a30 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - .debug_frame 0x00003ad0 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + .debug_frame 0x0000049c 0x574 THUMB Debug/../../obj/gpio.o + .debug_frame 0x00000a10 0x178 THUMB Debug/../../obj/flashlib.o + .debug_frame 0x00000b88 0x58c THUMB Debug/../../obj/uartlib.o + .debug_frame 0x00001114 0x254 THUMB Debug/../../obj/ssi.o + .debug_frame 0x00001368 0x338 THUMB Debug/../../obj/ethernet.o + .debug_frame 0x000016a0 0x198 THUMB Debug/../../obj/mmc.o + .debug_frame 0x00001838 0x80 THUMB Debug/../../obj/netdev.o + .debug_frame 0x000018b8 0xa8 THUMB Debug/../../obj/hooks.o + .debug_frame 0x00001960 0x2c THUMB Debug/../../obj/main.o + .debug_frame 0x0000198c 0x20 THUMB Debug/../../obj/vectors.o + .debug_frame 0x000019ac 0x60 THUMB Debug/../../obj/cpu.o + .debug_frame 0x00001a0c 0x150 THUMB Debug/../../obj/flash.o + .debug_frame 0x00001b5c 0x6c THUMB Debug/../../obj/nvm.o + .debug_frame 0x00001bc8 0x5c THUMB Debug/../../obj/timer.o + .debug_frame 0x00001c24 0x70 THUMB Debug/../../obj/uart.o + .debug_frame 0x00001c94 0x2c THUMB Debug/../../obj/assert.o + .debug_frame 0x00001cc0 0x48 THUMB Debug/../../obj/backdoor.o + .debug_frame 0x00001d08 0x48 THUMB Debug/../../obj/boot.o + .debug_frame 0x00001d50 0xe0 THUMB Debug/../../obj/com.o + .debug_frame 0x00001e30 0x30 THUMB Debug/../../obj/cop.o + .debug_frame 0x00001e60 0x74 THUMB Debug/../../obj/xcp.o + .debug_frame 0x00001ed4 0x13c THUMB Debug/../../obj/file.o + .debug_frame 0x00002010 0x640 THUMB Debug/../../obj/ff.o + .debug_frame 0x00002650 0x30 THUMB Debug/../../obj/unicode.o + .debug_frame 0x00002680 0x194 THUMB Debug/../../obj/uip.o + .debug_frame 0x00002814 0xac THUMB Debug/../../obj/uip_arp.o + .debug_frame 0x000028c0 0x88 THUMB Debug/../../obj/net.o + .debug_frame 0x00002948 0x11e4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) + .debug_frame 0x00003b2c 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) -.debug_info 0x00000000 0x920a - .debug_info 0x00000000 0xa06 THUMB Debug/../../obj/sysctl.o - .debug_info 0x00000a06 0x427 THUMB Debug/../../obj/interrupt.o - .debug_info 0x00000e2d 0x110 THUMB Debug/../../obj/cpulib.o - .debug_info 0x00000f3d 0xb9d THUMB Debug/../../obj/gpio.o - .debug_info 0x00001ada 0x422 THUMB Debug/../../obj/flashlib.o - .debug_info 0x00001efc 0xbb2 THUMB Debug/../../obj/uartlib.o - .debug_info 0x00002aae 0x5d5 THUMB Debug/../../obj/ssi.o - .debug_info 0x00003083 0x6a3 THUMB Debug/../../obj/mmc.o - .debug_info 0x00003726 0x4f6 THUMB Debug/../../obj/hooks.o - .debug_info 0x00003c1c 0x97 THUMB Debug/../../obj/main.o - .debug_info 0x00003cb3 0xfd THUMB Debug/../../obj/cstart.o - .debug_info 0x00003db0 0xf7 THUMB Debug/../../obj/vectors.o - .debug_info 0x00003ea7 0x140 THUMB Debug/../../obj/cpu.o - .debug_info 0x00003fe7 0x673 THUMB Debug/../../obj/flash.o - .debug_info 0x0000465a 0x161 THUMB Debug/../../obj/nvm.o - .debug_info 0x000047bb 0x133 THUMB Debug/../../obj/timer.o - .debug_info 0x000048ee 0x27c THUMB Debug/../../obj/uart.o - .debug_info 0x00004b6a 0xeb THUMB Debug/../../obj/assert.o - .debug_info 0x00004c55 0xc7 THUMB Debug/../../obj/backdoor.o - .debug_info 0x00004d1c 0x8f THUMB Debug/../../obj/boot.o - .debug_info 0x00004dab 0x258 THUMB Debug/../../obj/com.o - .debug_info 0x00005003 0x8d THUMB Debug/../../obj/cop.o - .debug_info 0x00005090 0x5e9 THUMB Debug/../../obj/xcp.o - .debug_info 0x00005679 0x80f THUMB Debug/../../obj/file.o - .debug_info 0x00005e88 0x2500 THUMB Debug/../../obj/ff.o - .debug_info 0x00008388 0x160 THUMB Debug/../../obj/unicode.o - .debug_info 0x000084e8 0xc55 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .debug_info 0x0000913d 0xcd C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) +.debug_info 0x00000000 0x113e9 + .debug_info 0x00000000 0xef6 THUMB Debug/../../obj/sysctl.o + .debug_info 0x00000ef6 0x1b47 THUMB Debug/../../obj/gpio.o + .debug_info 0x00002a3d 0x5ed THUMB Debug/../../obj/flashlib.o + .debug_info 0x0000302a 0x1707 THUMB Debug/../../obj/uartlib.o + .debug_info 0x00004731 0xb01 THUMB Debug/../../obj/ssi.o + .debug_info 0x00005232 0xde2 THUMB Debug/../../obj/ethernet.o + .debug_info 0x00006014 0x10f2 THUMB Debug/../../obj/mmc.o + .debug_info 0x00007106 0x53d THUMB Debug/../../obj/netdev.o + .debug_info 0x00007643 0x73c THUMB Debug/../../obj/hooks.o + .debug_info 0x00007d7f 0x157 THUMB Debug/../../obj/main.o + .debug_info 0x00007ed6 0xfd THUMB Debug/../../obj/cstart.o + .debug_info 0x00007fd3 0x13b THUMB Debug/../../obj/vectors.o + .debug_info 0x0000810e 0x1de THUMB Debug/../../obj/cpu.o + .debug_info 0x000082ec 0x89d THUMB Debug/../../obj/flash.o + .debug_info 0x00008b89 0x24f THUMB Debug/../../obj/nvm.o + .debug_info 0x00008dd8 0x14c THUMB Debug/../../obj/timer.o + .debug_info 0x00008f24 0x4e5 THUMB Debug/../../obj/uart.o + .debug_info 0x00009409 0x106 THUMB Debug/../../obj/assert.o + .debug_info 0x0000950f 0x15d THUMB Debug/../../obj/backdoor.o + .debug_info 0x0000966c 0x175 THUMB Debug/../../obj/boot.o + .debug_info 0x000097e1 0x40f THUMB Debug/../../obj/com.o + .debug_info 0x00009bf0 0x96 THUMB Debug/../../obj/cop.o + .debug_info 0x00009c86 0x81d THUMB Debug/../../obj/xcp.o + .debug_info 0x0000a4a3 0x11a0 THUMB Debug/../../obj/file.o + .debug_info 0x0000b643 0x3525 THUMB Debug/../../obj/ff.o + .debug_info 0x0000eb68 0x169 THUMB Debug/../../obj/unicode.o + .debug_info 0x0000ecd1 0xd71 THUMB Debug/../../obj/uip.o + .debug_info 0x0000fa42 0x65f THUMB Debug/../../obj/uip_arp.o + .debug_info 0x000100a1 0x662 THUMB Debug/../../obj/net.o + .debug_info 0x00010703 0xce6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_abbrev 0x00000000 0x1f46 - .debug_abbrev 0x00000000 0x1c5 THUMB Debug/../../obj/sysctl.o - .debug_abbrev 0x000001c5 0x13d THUMB Debug/../../obj/interrupt.o - .debug_abbrev 0x00000302 0xa8 THUMB Debug/../../obj/cpulib.o - .debug_abbrev 0x000003aa 0x10e THUMB Debug/../../obj/gpio.o - .debug_abbrev 0x000004b8 0x1a3 THUMB Debug/../../obj/flashlib.o - .debug_abbrev 0x0000065b 0x177 THUMB Debug/../../obj/uartlib.o - .debug_abbrev 0x000007d2 0x16d THUMB Debug/../../obj/ssi.o - .debug_abbrev 0x0000093f 0x2a1 THUMB Debug/../../obj/mmc.o - .debug_abbrev 0x00000be0 0x15d THUMB Debug/../../obj/hooks.o - .debug_abbrev 0x00000d3d 0x5f THUMB Debug/../../obj/main.o - .debug_abbrev 0x00000d9c 0x14 THUMB Debug/../../obj/cstart.o - .debug_abbrev 0x00000db0 0xbe THUMB Debug/../../obj/vectors.o - .debug_abbrev 0x00000e6e 0xaf THUMB Debug/../../obj/cpu.o - .debug_abbrev 0x00000f1d 0x22e THUMB Debug/../../obj/flash.o - .debug_abbrev 0x0000114b 0xba THUMB Debug/../../obj/nvm.o - .debug_abbrev 0x00001205 0xe8 THUMB Debug/../../obj/timer.o - .debug_abbrev 0x000012ed 0x161 THUMB Debug/../../obj/uart.o - .debug_abbrev 0x0000144e 0x7c THUMB Debug/../../obj/assert.o - .debug_abbrev 0x000014ca 0x5b THUMB Debug/../../obj/backdoor.o - .debug_abbrev 0x00001525 0x3f THUMB Debug/../../obj/boot.o - .debug_abbrev 0x00001564 0x11c THUMB Debug/../../obj/com.o - .debug_abbrev 0x00001680 0x3f THUMB Debug/../../obj/cop.o - .debug_abbrev 0x000016bf 0x1e0 THUMB Debug/../../obj/xcp.o - .debug_abbrev 0x0000189f 0x1ff THUMB Debug/../../obj/file.o - .debug_abbrev 0x00001a9e 0x315 THUMB Debug/../../obj/ff.o - .debug_abbrev 0x00001db3 0xa5 THUMB Debug/../../obj/unicode.o - .debug_abbrev 0x00001e58 0xc9 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .debug_abbrev 0x00001f21 0x25 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) +.debug_abbrev 0x00000000 0x32ae + .debug_abbrev 0x00000000 0x227 THUMB Debug/../../obj/sysctl.o + .debug_abbrev 0x00000227 0x182 THUMB Debug/../../obj/gpio.o + .debug_abbrev 0x000003a9 0x203 THUMB Debug/../../obj/flashlib.o + .debug_abbrev 0x000005ac 0x1e7 THUMB Debug/../../obj/uartlib.o + .debug_abbrev 0x00000793 0x1da THUMB Debug/../../obj/ssi.o + .debug_abbrev 0x0000096d 0x224 THUMB Debug/../../obj/ethernet.o + .debug_abbrev 0x00000b91 0x348 THUMB Debug/../../obj/mmc.o + .debug_abbrev 0x00000ed9 0x1c1 THUMB Debug/../../obj/netdev.o + .debug_abbrev 0x0000109a 0x1dc THUMB Debug/../../obj/hooks.o + .debug_abbrev 0x00001276 0xd3 THUMB Debug/../../obj/main.o + .debug_abbrev 0x00001349 0x14 THUMB Debug/../../obj/cstart.o + .debug_abbrev 0x0000135d 0xf7 THUMB Debug/../../obj/vectors.o + .debug_abbrev 0x00001454 0x10e THUMB Debug/../../obj/cpu.o + .debug_abbrev 0x00001562 0x2df THUMB Debug/../../obj/flash.o + .debug_abbrev 0x00001841 0x123 THUMB Debug/../../obj/nvm.o + .debug_abbrev 0x00001964 0x101 THUMB Debug/../../obj/timer.o + .debug_abbrev 0x00001a65 0x1ea THUMB Debug/../../obj/uart.o + .debug_abbrev 0x00001c4f 0x9b THUMB Debug/../../obj/assert.o + .debug_abbrev 0x00001cea 0x9d THUMB Debug/../../obj/backdoor.o + .debug_abbrev 0x00001d87 0x6e THUMB Debug/../../obj/boot.o + .debug_abbrev 0x00001df5 0x1c9 THUMB Debug/../../obj/com.o + .debug_abbrev 0x00001fbe 0x42 THUMB Debug/../../obj/cop.o + .debug_abbrev 0x00002000 0x291 THUMB Debug/../../obj/xcp.o + .debug_abbrev 0x00002291 0x2cc THUMB Debug/../../obj/file.o + .debug_abbrev 0x0000255d 0x3a5 THUMB Debug/../../obj/ff.o + .debug_abbrev 0x00002902 0xa8 THUMB Debug/../../obj/unicode.o + .debug_abbrev 0x000029aa 0x34b THUMB Debug/../../obj/uip.o + .debug_abbrev 0x00002cf5 0x208 THUMB Debug/../../obj/uip_arp.o + .debug_abbrev 0x00002efd 0x24e THUMB Debug/../../obj/net.o + .debug_abbrev 0x0000314b 0x163 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_loc 0x00000000 0xa0a1 - .debug_loc 0x00000000 0x9fa THUMB Debug/../../obj/sysctl.o - .debug_loc 0x000009fa 0x43c THUMB Debug/../../obj/interrupt.o - .debug_loc 0x00000e36 0x1240 THUMB Debug/../../obj/gpio.o - .debug_loc 0x00002076 0x43c THUMB Debug/../../obj/flashlib.o - .debug_loc 0x000024b2 0x100c THUMB Debug/../../obj/uartlib.o - .debug_loc 0x000034be 0x796 THUMB Debug/../../obj/ssi.o - .debug_loc 0x00003c54 0x6cc THUMB Debug/../../obj/mmc.o - .debug_loc 0x00004320 0xb1 THUMB Debug/../../obj/hooks.o - .debug_loc 0x000043d1 0x20 THUMB Debug/../../obj/main.o - .debug_loc 0x000043f1 0xbf THUMB Debug/../../obj/cpu.o - .debug_loc 0x000044b0 0x63e THUMB Debug/../../obj/flash.o - .debug_loc 0x00004aee 0x7f THUMB Debug/../../obj/nvm.o - .debug_loc 0x00004b6d 0x20 THUMB Debug/../../obj/timer.o - .debug_loc 0x00004b8d 0x190 THUMB Debug/../../obj/uart.o - .debug_loc 0x00004d1d 0x46 THUMB Debug/../../obj/assert.o - .debug_loc 0x00004d63 0x40 THUMB Debug/../../obj/backdoor.o - .debug_loc 0x00004da3 0x40 THUMB Debug/../../obj/boot.o - .debug_loc 0x00004de3 0x86 THUMB Debug/../../obj/com.o - .debug_loc 0x00004e69 0x216 THUMB Debug/../../obj/xcp.o - .debug_loc 0x0000507f 0x73c THUMB Debug/../../obj/file.o - .debug_loc 0x000057bb 0x3a0f THUMB Debug/../../obj/ff.o - .debug_loc 0x000091ca 0xa2 THUMB Debug/../../obj/unicode.o - .debug_loc 0x0000926c 0xe35 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) +.debug_loc 0x00000000 0xc94b + .debug_loc 0x00000000 0xcc5 THUMB Debug/../../obj/sysctl.o + .debug_loc 0x00000cc5 0x13fb THUMB Debug/../../obj/gpio.o + .debug_loc 0x000020c0 0x525 THUMB Debug/../../obj/flashlib.o + .debug_loc 0x000025e5 0x1144 THUMB Debug/../../obj/uartlib.o + .debug_loc 0x00003729 0x88d THUMB Debug/../../obj/ssi.o + .debug_loc 0x00003fb6 0xccc THUMB Debug/../../obj/ethernet.o + .debug_loc 0x00004c82 0x95d THUMB Debug/../../obj/mmc.o + .debug_loc 0x000055df 0xd3 THUMB Debug/../../obj/netdev.o + .debug_loc 0x000056b2 0xcb THUMB Debug/../../obj/hooks.o + .debug_loc 0x0000577d 0x20 THUMB Debug/../../obj/main.o + .debug_loc 0x0000579d 0xc9 THUMB Debug/../../obj/cpu.o + .debug_loc 0x00005866 0x679 THUMB Debug/../../obj/flash.o + .debug_loc 0x00005edf 0xc5 THUMB Debug/../../obj/nvm.o + .debug_loc 0x00005fa4 0x20 THUMB Debug/../../obj/timer.o + .debug_loc 0x00005fc4 0x150 THUMB Debug/../../obj/uart.o + .debug_loc 0x00006114 0x71 THUMB Debug/../../obj/assert.o + .debug_loc 0x00006185 0x40 THUMB Debug/../../obj/backdoor.o + .debug_loc 0x000061c5 0x40 THUMB Debug/../../obj/boot.o + .debug_loc 0x00006205 0x9f THUMB Debug/../../obj/com.o + .debug_loc 0x000062a4 0x362 THUMB Debug/../../obj/xcp.o + .debug_loc 0x00006606 0x919 THUMB Debug/../../obj/file.o + .debug_loc 0x00006f1f 0x41ae THUMB Debug/../../obj/ff.o + .debug_loc 0x0000b0cd 0xdd THUMB Debug/../../obj/unicode.o + .debug_loc 0x0000b1aa 0x683 THUMB Debug/../../obj/uip.o + .debug_loc 0x0000b82d 0x166 THUMB Debug/../../obj/uip_arp.o + .debug_loc 0x0000b993 0x14e THUMB Debug/../../obj/net.o + .debug_loc 0x0000bae1 0xe6a C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_aranges 0x00000000 0x11e0 +.debug_aranges 0x00000000 0x12d0 .debug_aranges 0x00000000 0x1b0 THUMB Debug/../../obj/sysctl.o .debug_aranges - 0x000001b0 0x98 THUMB Debug/../../obj/interrupt.o + 0x000001b0 0x178 THUMB Debug/../../obj/gpio.o .debug_aranges - 0x00000248 0x48 THUMB Debug/../../obj/cpulib.o + 0x00000328 0x98 THUMB Debug/../../obj/flashlib.o .debug_aranges - 0x00000290 0x178 THUMB Debug/../../obj/gpio.o + 0x000003c0 0x190 THUMB Debug/../../obj/uartlib.o .debug_aranges - 0x00000408 0x98 THUMB Debug/../../obj/flashlib.o + 0x00000550 0xb0 THUMB Debug/../../obj/ssi.o .debug_aranges - 0x000004a0 0x190 THUMB Debug/../../obj/uartlib.o + 0x00000600 0xe8 THUMB Debug/../../obj/ethernet.o .debug_aranges - 0x00000630 0xb0 THUMB Debug/../../obj/ssi.o + 0x000006e8 0x80 THUMB Debug/../../obj/mmc.o .debug_aranges - 0x000006e0 0x80 THUMB Debug/../../obj/mmc.o + 0x00000768 0x38 THUMB Debug/../../obj/netdev.o .debug_aranges - 0x00000760 0x48 THUMB Debug/../../obj/hooks.o + 0x000007a0 0x48 THUMB Debug/../../obj/hooks.o .debug_aranges - 0x000007a8 0x20 THUMB Debug/../../obj/main.o + 0x000007e8 0x20 THUMB Debug/../../obj/main.o .debug_aranges - 0x000007c8 0x20 THUMB Debug/../../obj/cstart.o + 0x00000808 0x20 THUMB Debug/../../obj/cstart.o .debug_aranges - 0x000007e8 0x20 THUMB Debug/../../obj/vectors.o + 0x00000828 0x20 THUMB Debug/../../obj/vectors.o .debug_aranges - 0x00000808 0x30 THUMB Debug/../../obj/cpu.o + 0x00000848 0x30 THUMB Debug/../../obj/cpu.o .debug_aranges - 0x00000838 0x68 THUMB Debug/../../obj/flash.o + 0x00000878 0x70 THUMB Debug/../../obj/flash.o .debug_aranges - 0x000008a0 0x40 THUMB Debug/../../obj/nvm.o + 0x000008e8 0x40 THUMB Debug/../../obj/nvm.o .debug_aranges - 0x000008e0 0x38 THUMB Debug/../../obj/timer.o + 0x00000928 0x38 THUMB Debug/../../obj/timer.o .debug_aranges - 0x00000918 0x30 THUMB Debug/../../obj/uart.o + 0x00000960 0x30 THUMB Debug/../../obj/uart.o .debug_aranges - 0x00000948 0x20 THUMB Debug/../../obj/assert.o + 0x00000990 0x20 THUMB Debug/../../obj/assert.o .debug_aranges - 0x00000968 0x28 THUMB Debug/../../obj/backdoor.o + 0x000009b0 0x28 THUMB Debug/../../obj/backdoor.o .debug_aranges - 0x00000990 0x28 THUMB Debug/../../obj/boot.o + 0x000009d8 0x28 THUMB Debug/../../obj/boot.o .debug_aranges - 0x000009b8 0x68 THUMB Debug/../../obj/com.o + 0x00000a00 0x68 THUMB Debug/../../obj/com.o .debug_aranges - 0x00000a20 0x28 THUMB Debug/../../obj/cop.o + 0x00000a68 0x28 THUMB Debug/../../obj/cop.o .debug_aranges - 0x00000a48 0x40 THUMB Debug/../../obj/xcp.o + 0x00000a90 0x40 THUMB Debug/../../obj/xcp.o .debug_aranges - 0x00000a88 0x68 THUMB Debug/../../obj/file.o + 0x00000ad0 0x68 THUMB Debug/../../obj/file.o .debug_aranges - 0x00000af0 0x180 THUMB Debug/../../obj/ff.o + 0x00000b38 0x178 THUMB Debug/../../obj/ff.o .debug_aranges - 0x00000c70 0x28 THUMB Debug/../../obj/unicode.o + 0x00000cb0 0x28 THUMB Debug/../../obj/unicode.o .debug_aranges - 0x00000c98 0x4e8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x00000cd8 0x98 THUMB Debug/../../obj/uip.o .debug_aranges - 0x00001180 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x00000d70 0x40 THUMB Debug/../../obj/uip_arp.o + .debug_aranges + 0x00000db0 0x38 THUMB Debug/../../obj/net.o + .debug_aranges + 0x00000de8 0x4e8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_ranges 0x00000000 0x1430 +.debug_ranges 0x00000000 0x1478 .debug_ranges 0x00000000 0x1a0 THUMB Debug/../../obj/sysctl.o - .debug_ranges 0x000001a0 0x88 THUMB Debug/../../obj/interrupt.o - .debug_ranges 0x00000228 0x38 THUMB Debug/../../obj/cpulib.o - .debug_ranges 0x00000260 0x168 THUMB Debug/../../obj/gpio.o - .debug_ranges 0x000003c8 0x88 THUMB Debug/../../obj/flashlib.o - .debug_ranges 0x00000450 0x1e0 THUMB Debug/../../obj/uartlib.o - .debug_ranges 0x00000630 0x100 THUMB Debug/../../obj/ssi.o - .debug_ranges 0x00000730 0x70 THUMB Debug/../../obj/mmc.o - .debug_ranges 0x000007a0 0x38 THUMB Debug/../../obj/hooks.o - .debug_ranges 0x000007d8 0x10 THUMB Debug/../../obj/main.o - .debug_ranges 0x000007e8 0x10 THUMB Debug/../../obj/vectors.o - .debug_ranges 0x000007f8 0x20 THUMB Debug/../../obj/cpu.o - .debug_ranges 0x00000818 0x70 THUMB Debug/../../obj/flash.o - .debug_ranges 0x00000888 0x30 THUMB Debug/../../obj/nvm.o - .debug_ranges 0x000008b8 0x40 THUMB Debug/../../obj/timer.o - .debug_ranges 0x000008f8 0xa0 THUMB Debug/../../obj/uart.o - .debug_ranges 0x00000998 0x10 THUMB Debug/../../obj/assert.o - .debug_ranges 0x000009a8 0x18 THUMB Debug/../../obj/backdoor.o - .debug_ranges 0x000009c0 0x18 THUMB Debug/../../obj/boot.o - .debug_ranges 0x000009d8 0x58 THUMB Debug/../../obj/com.o - .debug_ranges 0x00000a30 0x18 THUMB Debug/../../obj/cop.o - .debug_ranges 0x00000a48 0x60 THUMB Debug/../../obj/xcp.o - .debug_ranges 0x00000aa8 0xb8 THUMB Debug/../../obj/file.o - .debug_ranges 0x00000b60 0x390 THUMB Debug/../../obj/ff.o - .debug_ranges 0x00000ef0 0x18 THUMB Debug/../../obj/unicode.o - .debug_ranges 0x00000f08 0x4d8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .debug_ranges 0x000013e0 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + .debug_ranges 0x000001a0 0x168 THUMB Debug/../../obj/gpio.o + .debug_ranges 0x00000308 0x88 THUMB Debug/../../obj/flashlib.o + .debug_ranges 0x00000390 0x180 THUMB Debug/../../obj/uartlib.o + .debug_ranges 0x00000510 0xa0 THUMB Debug/../../obj/ssi.o + .debug_ranges 0x000005b0 0xd8 THUMB Debug/../../obj/ethernet.o + .debug_ranges 0x00000688 0x88 THUMB Debug/../../obj/mmc.o + .debug_ranges 0x00000710 0x28 THUMB Debug/../../obj/netdev.o + .debug_ranges 0x00000738 0x38 THUMB Debug/../../obj/hooks.o + .debug_ranges 0x00000770 0x10 THUMB Debug/../../obj/main.o + .debug_ranges 0x00000780 0x10 THUMB Debug/../../obj/vectors.o + .debug_ranges 0x00000790 0x20 THUMB Debug/../../obj/cpu.o + .debug_ranges 0x000007b0 0x60 THUMB Debug/../../obj/flash.o + .debug_ranges 0x00000810 0x30 THUMB Debug/../../obj/nvm.o + .debug_ranges 0x00000840 0x40 THUMB Debug/../../obj/timer.o + .debug_ranges 0x00000880 0xb0 THUMB Debug/../../obj/uart.o + .debug_ranges 0x00000930 0x10 THUMB Debug/../../obj/assert.o + .debug_ranges 0x00000940 0x18 THUMB Debug/../../obj/backdoor.o + .debug_ranges 0x00000958 0x18 THUMB Debug/../../obj/boot.o + .debug_ranges 0x00000970 0x58 THUMB Debug/../../obj/com.o + .debug_ranges 0x000009c8 0x18 THUMB Debug/../../obj/cop.o + .debug_ranges 0x000009e0 0xa8 THUMB Debug/../../obj/xcp.o + .debug_ranges 0x00000a88 0x88 THUMB Debug/../../obj/file.o + .debug_ranges 0x00000b10 0x398 THUMB Debug/../../obj/ff.o + .debug_ranges 0x00000ea8 0x18 THUMB Debug/../../obj/unicode.o + .debug_ranges 0x00000ec0 0x88 THUMB Debug/../../obj/uip.o + .debug_ranges 0x00000f48 0x30 THUMB Debug/../../obj/uip_arp.o + .debug_ranges 0x00000f78 0x28 THUMB Debug/../../obj/net.o + .debug_ranges 0x00000fa0 0x4d8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_line 0x00000000 0x54cd - .debug_line 0x00000000 0x8f1 THUMB Debug/../../obj/sysctl.o - .debug_line 0x000008f1 0x2e2 THUMB Debug/../../obj/interrupt.o - .debug_line 0x00000bd3 0x100 THUMB Debug/../../obj/cpulib.o - .debug_line 0x00000cd3 0x735 THUMB Debug/../../obj/gpio.o - .debug_line 0x00001408 0x3e4 THUMB Debug/../../obj/flashlib.o - .debug_line 0x000017ec 0x823 THUMB Debug/../../obj/uartlib.o - .debug_line 0x0000200f 0x3dd THUMB Debug/../../obj/ssi.o - .debug_line 0x000023ec 0x3ae THUMB Debug/../../obj/mmc.o - .debug_line 0x0000279a 0x230 THUMB Debug/../../obj/hooks.o - .debug_line 0x000029ca 0x97 THUMB Debug/../../obj/main.o - .debug_line 0x00002a61 0x14f THUMB Debug/../../obj/cstart.o - .debug_line 0x00002bb0 0x132 THUMB Debug/../../obj/vectors.o - .debug_line 0x00002ce2 0xe8 THUMB Debug/../../obj/cpu.o - .debug_line 0x00002dca 0x257 THUMB Debug/../../obj/flash.o - .debug_line 0x00003021 0x104 THUMB Debug/../../obj/nvm.o - .debug_line 0x00003125 0xfb THUMB Debug/../../obj/timer.o - .debug_line 0x00003220 0x138 THUMB Debug/../../obj/uart.o - .debug_line 0x00003358 0x120 THUMB Debug/../../obj/assert.o - .debug_line 0x00003478 0x142 THUMB Debug/../../obj/backdoor.o - .debug_line 0x000035ba 0xb7 THUMB Debug/../../obj/boot.o - .debug_line 0x00003671 0x1ea THUMB Debug/../../obj/com.o - .debug_line 0x0000385b 0xab THUMB Debug/../../obj/cop.o - .debug_line 0x00003906 0x220 THUMB Debug/../../obj/xcp.o - .debug_line 0x00003b26 0x419 THUMB Debug/../../obj/file.o - .debug_line 0x00003f3f 0xde3 THUMB Debug/../../obj/ff.o - .debug_line 0x00004d22 0x184 THUMB Debug/../../obj/unicode.o - .debug_line 0x00004ea6 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .debug_line 0x00005459 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) +.debug_line 0x00000000 0x7086 + .debug_line 0x00000000 0x955 THUMB Debug/../../obj/sysctl.o + .debug_line 0x00000955 0x7dc THUMB Debug/../../obj/gpio.o + .debug_line 0x00001131 0x455 THUMB Debug/../../obj/flashlib.o + .debug_line 0x00001586 0x889 THUMB Debug/../../obj/uartlib.o + .debug_line 0x00001e0f 0x45a THUMB Debug/../../obj/ssi.o + .debug_line 0x00002269 0x5c9 THUMB Debug/../../obj/ethernet.o + .debug_line 0x00002832 0x4ab THUMB Debug/../../obj/mmc.o + .debug_line 0x00002cdd 0x329 THUMB Debug/../../obj/netdev.o + .debug_line 0x00003006 0x300 THUMB Debug/../../obj/hooks.o + .debug_line 0x00003306 0x17d THUMB Debug/../../obj/main.o + .debug_line 0x00003483 0x178 THUMB Debug/../../obj/cstart.o + .debug_line 0x000035fb 0x1a2 THUMB Debug/../../obj/vectors.o + .debug_line 0x0000379d 0x17c THUMB Debug/../../obj/cpu.o + .debug_line 0x00003919 0x363 THUMB Debug/../../obj/flash.o + .debug_line 0x00003c7c 0x10f THUMB Debug/../../obj/nvm.o + .debug_line 0x00003d8b 0xf8 THUMB Debug/../../obj/timer.o + .debug_line 0x00003e83 0x2a5 THUMB Debug/../../obj/uart.o + .debug_line 0x00004128 0x127 THUMB Debug/../../obj/assert.o + .debug_line 0x0000424f 0x163 THUMB Debug/../../obj/backdoor.o + .debug_line 0x000043b2 0x165 THUMB Debug/../../obj/boot.o + .debug_line 0x00004517 0x20f THUMB Debug/../../obj/com.o + .debug_line 0x00004726 0xa9 THUMB Debug/../../obj/cop.o + .debug_line 0x000047cf 0x263 THUMB Debug/../../obj/xcp.o + .debug_line 0x00004a32 0x476 THUMB Debug/../../obj/file.o + .debug_line 0x00004ea8 0xe05 THUMB Debug/../../obj/ff.o + .debug_line 0x00005cad 0x182 THUMB Debug/../../obj/unicode.o + .debug_line 0x00005e2f 0x73f THUMB Debug/../../obj/uip.o + .debug_line 0x0000656e 0x28f THUMB Debug/../../obj/uip_arp.o + .debug_line 0x000067fd 0x2d6 THUMB Debug/../../obj/net.o + .debug_line 0x00006ad3 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) -.debug_str 0x00000000 0x3520 - .debug_str 0x00000000 0x661 THUMB Debug/../../obj/sysctl.o - 0x688 (size before relaxing) - .debug_str 0x00000661 0x1e6 THUMB Debug/../../obj/interrupt.o - 0x2d6 (size before relaxing) - .debug_str 0x00000847 0xb8 THUMB Debug/../../obj/cpulib.o - 0x119 (size before relaxing) - .debug_str 0x000008ff 0x411 THUMB Debug/../../obj/gpio.o - 0x4e9 (size before relaxing) - .debug_str 0x00000d10 0x22d THUMB Debug/../../obj/flashlib.o - 0x315 (size before relaxing) - .debug_str 0x00000f3d 0x441 THUMB Debug/../../obj/uartlib.o - 0x54d (size before relaxing) - .debug_str 0x0000137e 0x1f3 THUMB Debug/../../obj/ssi.o - 0x304 (size before relaxing) - .debug_str 0x00001571 0x1bd THUMB Debug/../../obj/mmc.o - 0x288 (size before relaxing) - .debug_str 0x0000172e 0x368 THUMB Debug/../../obj/hooks.o - 0x44c (size before relaxing) - .debug_str 0x00001a96 0x5b THUMB Debug/../../obj/main.o - 0x112 (size before relaxing) - .debug_str 0x00001af1 0xbf THUMB Debug/../../obj/vectors.o - 0x16c (size before relaxing) - .debug_str 0x00001bb0 0xce THUMB Debug/../../obj/cpu.o - 0x190 (size before relaxing) - .debug_str 0x00001c7e 0x249 THUMB Debug/../../obj/flash.o - 0x358 (size before relaxing) - .debug_str 0x00001ec7 0xaa THUMB Debug/../../obj/nvm.o - 0x188 (size before relaxing) - .debug_str 0x00001f71 0xcd THUMB Debug/../../obj/timer.o - 0x185 (size before relaxing) - .debug_str 0x0000203e 0x10e THUMB Debug/../../obj/uart.o - 0x1f0 (size before relaxing) - .debug_str 0x0000214c 0xa3 THUMB Debug/../../obj/assert.o - 0x16e (size before relaxing) - .debug_str 0x000021ef 0xa8 THUMB Debug/../../obj/backdoor.o - 0x169 (size before relaxing) - .debug_str 0x00002297 0x7d THUMB Debug/../../obj/boot.o - 0x12a (size before relaxing) - .debug_str 0x00002314 0x1b2 THUMB Debug/../../obj/com.o - 0x299 (size before relaxing) - .debug_str 0x000024c6 0x7d THUMB Debug/../../obj/cop.o - 0x12a (size before relaxing) - .debug_str 0x00002543 0x262 THUMB Debug/../../obj/xcp.o +.debug_str 0x00000000 0x3c4f + .debug_str 0x00000000 0x693 THUMB Debug/../../obj/sysctl.o + 0x6e9 (size before relaxing) + .debug_str 0x00000693 0x411 THUMB Debug/../../obj/gpio.o + 0x543 (size before relaxing) + .debug_str 0x00000aa4 0x234 THUMB Debug/../../obj/flashlib.o + 0x36f (size before relaxing) + .debug_str 0x00000cd8 0x447 THUMB Debug/../../obj/uartlib.o + 0x5a7 (size before relaxing) + .debug_str 0x0000111f 0x1f3 THUMB Debug/../../obj/ssi.o + 0x35e (size before relaxing) + .debug_str 0x00001312 0x2c0 THUMB Debug/../../obj/ethernet.o + 0x419 (size before relaxing) + .debug_str 0x000015d2 0x1c6 THUMB Debug/../../obj/mmc.o 0x34c (size before relaxing) - .debug_str 0x000027a5 0x33b THUMB Debug/../../obj/file.o - 0x64a (size before relaxing) - .debug_str 0x00002ae0 0x341 THUMB Debug/../../obj/ff.o - 0x698 (size before relaxing) - .debug_str 0x00002e21 0xb6 THUMB Debug/../../obj/unicode.o - 0x162 (size before relaxing) - .debug_str 0x00002ed7 0x577 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + .debug_str 0x00001798 0xe8 THUMB Debug/../../obj/netdev.o + 0x2f3 (size before relaxing) + .debug_str 0x00001880 0x38d THUMB Debug/../../obj/hooks.o + 0x4c2 (size before relaxing) + .debug_str 0x00001c0d 0x6d THUMB Debug/../../obj/main.o + 0x163 (size before relaxing) + .debug_str 0x00001c7a 0xb4 THUMB Debug/../../obj/vectors.o + 0x18c (size before relaxing) + .debug_str 0x00001d2e 0x128 THUMB Debug/../../obj/cpu.o + 0x1fc (size before relaxing) + .debug_str 0x00001e56 0x249 THUMB Debug/../../obj/flash.o + 0x3ab (size before relaxing) + .debug_str 0x0000209f 0x98 THUMB Debug/../../obj/nvm.o + 0x1e2 (size before relaxing) + .debug_str 0x00002137 0xb9 THUMB Debug/../../obj/timer.o + 0x18e (size before relaxing) + .debug_str 0x000021f0 0x10e THUMB Debug/../../obj/uart.o + 0x2af (size before relaxing) + .debug_str 0x000022fe 0x95 THUMB Debug/../../obj/assert.o + 0x182 (size before relaxing) + .debug_str 0x00002393 0xe2 THUMB Debug/../../obj/backdoor.o + 0x1c9 (size before relaxing) + .debug_str 0x00002475 0x95 THUMB Debug/../../obj/boot.o + 0x1a1 (size before relaxing) + .debug_str 0x0000250a 0x1f4 THUMB Debug/../../obj/com.o + 0x339 (size before relaxing) + .debug_str 0x000026fe 0x6a THUMB Debug/../../obj/cop.o + 0x133 (size before relaxing) + .debug_str 0x00002768 0x224 THUMB Debug/../../obj/xcp.o + 0x3e7 (size before relaxing) + .debug_str 0x0000298c 0x366 THUMB Debug/../../obj/file.o + 0x7dd (size before relaxing) + .debug_str 0x00002cf2 0x30e THUMB Debug/../../obj/ff.o + 0x74c (size before relaxing) + .debug_str 0x00003000 0x9f THUMB Debug/../../obj/unicode.o + 0x16b (size before relaxing) + .debug_str 0x0000309f 0x406 THUMB Debug/../../obj/uip.o + 0x5be (size before relaxing) + .debug_str 0x000034a5 0x17e THUMB Debug/../../obj/uip_arp.o + 0x36e (size before relaxing) + .debug_str 0x00003623 0xbd THUMB Debug/../../obj/net.o + 0x3ad (size before relaxing) + .debug_str 0x000036e0 0x56f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) 0x655 (size before relaxing) - .debug_str 0x0000344e 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) - 0x11b (size before relaxing) .comment 0x00000000 0x4e .comment 0x00000000 0x4e THUMB Debug/../../obj/sysctl.o 0x4f (size before relaxing) - .comment 0x00000000 0x4f THUMB Debug/../../obj/interrupt.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/cpulib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/gpio.o .comment 0x00000000 0x4f THUMB Debug/../../obj/flashlib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/uartlib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/ssi.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/ethernet.o .comment 0x00000000 0x4f THUMB Debug/../../obj/mmc.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/netdev.o .comment 0x00000000 0x4f THUMB Debug/../../obj/hooks.o .comment 0x00000000 0x4f THUMB Debug/../../obj/main.o .comment 0x00000000 0x4f THUMB Debug/../../obj/vectors.o @@ -2119,70 +2474,72 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/B .comment 0x00000000 0x4f THUMB Debug/../../obj/file.o .comment 0x00000000 0x4f THUMB Debug/../../obj/ff.o .comment 0x00000000 0x4f THUMB Debug/../../obj/unicode.o - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + .comment 0x00000000 0x4f THUMB Debug/../../obj/uip.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/uip_arp.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/net.o + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .ARM.attributes - 0x00000000 0x10 + 0x00000000 0x33 .ARM.attributes - 0x00000000 0x10 THUMB Debug/../../obj/sysctl.o + 0x00000000 0x33 THUMB Debug/../../obj/sysctl.o .ARM.attributes - 0x00000010 0x10 THUMB Debug/../../obj/interrupt.o + 0x00000033 0x33 THUMB Debug/../../obj/gpio.o .ARM.attributes - 0x00000020 0x10 THUMB Debug/../../obj/cpulib.o + 0x00000066 0x33 THUMB Debug/../../obj/flashlib.o .ARM.attributes - 0x00000030 0x10 THUMB Debug/../../obj/gpio.o + 0x00000099 0x33 THUMB Debug/../../obj/uartlib.o .ARM.attributes - 0x00000040 0x10 THUMB Debug/../../obj/flashlib.o + 0x000000cc 0x33 THUMB Debug/../../obj/ssi.o .ARM.attributes - 0x00000050 0x10 THUMB Debug/../../obj/uartlib.o + 0x000000ff 0x33 THUMB Debug/../../obj/ethernet.o .ARM.attributes - 0x00000060 0x10 THUMB Debug/../../obj/ssi.o + 0x00000132 0x33 THUMB Debug/../../obj/mmc.o .ARM.attributes - 0x00000070 0x10 THUMB Debug/../../obj/mmc.o + 0x00000165 0x33 THUMB Debug/../../obj/netdev.o .ARM.attributes - 0x00000080 0x10 THUMB Debug/../../obj/hooks.o + 0x00000198 0x33 THUMB Debug/../../obj/hooks.o .ARM.attributes - 0x00000090 0x10 THUMB Debug/../../obj/main.o + 0x000001cb 0x33 THUMB Debug/../../obj/main.o .ARM.attributes - 0x000000a0 0x10 THUMB Debug/../../obj/cstart.o + 0x000001fe 0x23 THUMB Debug/../../obj/cstart.o .ARM.attributes - 0x000000b0 0x10 THUMB Debug/../../obj/vectors.o + 0x00000221 0x33 THUMB Debug/../../obj/vectors.o .ARM.attributes - 0x000000c0 0x10 THUMB Debug/../../obj/cpu.o + 0x00000254 0x33 THUMB Debug/../../obj/cpu.o .ARM.attributes - 0x000000d0 0x10 THUMB Debug/../../obj/flash.o + 0x00000287 0x33 THUMB Debug/../../obj/flash.o .ARM.attributes - 0x000000e0 0x10 THUMB Debug/../../obj/nvm.o + 0x000002ba 0x33 THUMB Debug/../../obj/nvm.o .ARM.attributes - 0x000000f0 0x10 THUMB Debug/../../obj/timer.o + 0x000002ed 0x33 THUMB Debug/../../obj/timer.o .ARM.attributes - 0x00000100 0x10 THUMB Debug/../../obj/uart.o + 0x00000320 0x33 THUMB Debug/../../obj/uart.o .ARM.attributes - 0x00000110 0x10 THUMB Debug/../../obj/assert.o + 0x00000353 0x33 THUMB Debug/../../obj/assert.o .ARM.attributes - 0x00000120 0x10 THUMB Debug/../../obj/backdoor.o + 0x00000386 0x33 THUMB Debug/../../obj/backdoor.o .ARM.attributes - 0x00000130 0x10 THUMB Debug/../../obj/boot.o + 0x000003b9 0x33 THUMB Debug/../../obj/boot.o .ARM.attributes - 0x00000140 0x10 THUMB Debug/../../obj/com.o + 0x000003ec 0x33 THUMB Debug/../../obj/com.o .ARM.attributes - 0x00000150 0x10 THUMB Debug/../../obj/cop.o + 0x0000041f 0x33 THUMB Debug/../../obj/cop.o .ARM.attributes - 0x00000160 0x10 THUMB Debug/../../obj/xcp.o + 0x00000452 0x33 THUMB Debug/../../obj/xcp.o .ARM.attributes - 0x00000170 0x10 THUMB Debug/../../obj/file.o + 0x00000485 0x33 THUMB Debug/../../obj/file.o .ARM.attributes - 0x00000180 0x10 THUMB Debug/../../obj/ff.o + 0x000004b8 0x33 THUMB Debug/../../obj/ff.o .ARM.attributes - 0x00000190 0x10 THUMB Debug/../../obj/unicode.o + 0x000004eb 0x33 THUMB Debug/../../obj/unicode.o .ARM.attributes - 0x000001a0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2.o) + 0x0000051e 0x33 THUMB Debug/../../obj/uip.o .ARM.attributes - 0x000001b0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc2_asm.o) + 0x00000551 0x33 THUMB Debug/../../obj/uip_arp.o .ARM.attributes - 0x000001c0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_small.a(libc_asm.o) + 0x00000584 0x33 THUMB Debug/../../obj/net.o .ARM.attributes - 0x000001d0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_small.a(user_libc.o) + 0x000005b7 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2.o) .ARM.attributes - 0x000001e0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_small.a(libm_asm.o) + 0x000005e4 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi_small.a(libc2_asm.o) diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.srec index 2797511b..305d6f68 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/bin/openbtl_ek_lm3s6965.srec @@ -1,1253 +1,1615 @@ S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF -S1130000D41100207B010000D9180000D918000089 -S1130010D9180000D9180000D9180000D918000018 -S1130020D9180000D9180000D9180000D918000008 -S1130030D9180000D9180000D9180000D9180000F8 -S1130040D9180000D9180000D9180000D9180000E8 -S1130050D9180000D9180000D9180000D9180000D8 -S1130060D9180000D9180000D9180000D9180000C8 -S1130070D9180000D9180000D9180000D9180000B8 -S1130080D9180000D9180000D9180000D9180000A8 -S1130090D9180000D9180000D9180000D918000098 -S11300A0D9180000D9180000D9180000D918000088 -S11300B0D9180000D9180000D9180000D918000078 -S11300C0D9180000D9180000D9180000D918000068 -S11300D0D9180000D9180000D9180000D918000058 -S11300E0D9180000D9180000D9180000D918000048 -S11300F072B64B484B4901604B498D464B484C49BD -S11301004C4A00F07BF84C484C494D4A00F076F8D4 -S11301104C484D494D4A00F071F84D484D494E4AFE -S113012000F06CF84D484E494E4A00F067F84E48CE -S11301304E494F4A00F062F84E484F49002200F001 -S113014068F84E484E49091A082903DB0022026068 -S1130150043001603F484049884205D002680430B9 -S113016003B4904703BCF7E700208646EC4601F051 -S1130170F9FE00200021434A904772B62A498D4671 -S11301802A482B492B4A00F039F82B482B492C4A92 -S113019000F034F82B482C492C4A00F02FF82C4856 -S11301A02C492D4A00F02AF82C482D492D4A00F0FC -S11301B025F82D482D492E4A00F020F82D482E49C7 -S11301C0002200F026F82D482D49091A082903DBDE -S11301D000220260043001601E481F49884205D095 -S11301E00268043003B4904703BCF7E70020864656 -S11301F0EC4600200021234A9047FEE7884207D0BE -S1130200521A05D0037801300B700131013AF9D14B -S11302107047884202D002700130FAE7704700004C -S113022008ED00E000000000D4110020084E00009A -S1130230000000200800002088020000880200005E -S113024034420000084E000000000020000000209E -S113025034420000344200003442000034420000C2 -S113026034420000344200003442000034420000B2 -S1130270084E000008000020540F0020540F0020F6 -S10B0280D40F0020AD180000AA -S1130288A0F58013013B012B40F20281824B984276 -S113029800F0FE8003F58073984200F0F98003F5BE -S11302A80073984200F0F4807C4B984200F0F08090 -S11302B803F58073984200F0EB8003F500739842CD -S11302C800F0E680764B984200F0E280754B984245 -S11302D800F0DE8003F11023984200F0D980724BBD -S11302E8984200F0D580714B984200F0D1800133D8 -S11302F8984200F0CD800233984200F0C98004335C -S1130308984200F0C5800833984200F0C180103349 -S1130318984200F0BD802033984200F0B980403301 -S1130328984200F0B5808033984200F0B180604B69 -S1130338984200F0AD800133984200F0A98001335F -S1130348984200F0A5800133984200F0A18001335F -S1130358984200F09D800133984200F0998001335F -S1130368984200F095800133984200F0918040282B -S113037800F08E80B0F1102F00F08A804D4B984227 -S113038800F086804C4B984200F0828001339842FA -S11303987ED0013398427BD00133984278D0474BC2 -S11303A8984275D0464B984272D0464B98426FD0CB -S11303B8454B98426CD0454B984269D0444B98427F -S11303C866D0B0F1101F63D0424B984260D0424BC4 -S11303D898425DD003F58073984259D0A3F5F87319 -S11303E8984255D01033984252D03C4B98424FD043 -S11303F8013398424CD03A4B984249D0394B9842F1 -S113040846D00133984243D00233984240D0043353 -S113041898423DD0344B98423AD00133984237D071 -S1130428324B984234D00133984231D00233984247 -S11304382ED02F4B98422BD00133984228D0013329 -S1130448984225D00133984222D0013398421FD0D4 -S1130458B0F1202F1CD0274B984219D0082817D068 -S1130468254B984214D0254B984211D00133984219 -S11304780ED0013398420BD00133984208D001338F -S1130488984207D00133C31A584240EB030070471F -S1130498012070470120704700011000000110106E -S11304A8005800F000401010005400F00100002033 -S11304B8090800F000400010022000F0001010109D -S11304C800011020004800F080000030005000F0C7 -S11304D810000030014000F000010010021C00F080 -S11304E82000003001001010040400F00100001086 -S11304F8031800F00100102000101000005C00F048 -S113050810B50446FFF7BCFE20B9144840F29631F2 -S113051801F078FC04F07043B3F1704F10D1E3B2EA -S1130528C4F3072404F57E249B0004F5C06443F057 -S1130538844324F4700443EA44140123236010BD63 -S1130548220FA1B2C4F3044401FA04F4044B53F88F -S113055822301A6814431C6010BD00BFA04200007A -S11305680C4300000138FDD1704700004E4B2DE9C3 -S1130578F0411A68044612F0E04F05D01A684B4B54 -S11305881340B3F1805F02D1002CC0F28B8048493C -S1130598484A0B68166843F4006323F480050D6029 -S11305A846F400669907166001D5A20703D5EB0740 -S11305B819D5E70717D464F003031D403C4B002EFC -S11305C81D6005DA06F07003302B05D0702B02E0AD -S11305D805F03003302B02D14FF4805001E04FF482 -S11305E80020FFF7BFFF25F4FE6504F4FE6345EA27 -S11305F80308314B26F0004626F0700623403343A7 -S11306082C4F2B4E04F0080543EAC505C6F80080B4 -S113061810203D60FFF7A6FF28F4405804F4005268 -S1130628264904F4405325F4005548EA03034020BE -S11306381543234A086052BF33603D60336023F09A -S1130648F86304EA020223F0030358BF3D6013432E -S113065804F0FC5125F0FC52600042EA010207D57F -S1130668184922F48002214043F480030A4301E03C -S113067822F0804221050CD413484FF40041046849 -S113068814F0400F01D10139F9D123F4006322F4A5 -S11306980062074910200B60064B1A60BDE8F04160 -S11306A8FFF760BFBDE8F08100E00F400000FF7075 -S11306B860E00F4070E00F403000008058E00F40C9 -S11306C80300C0070000404050E00F40624B70B583 -S11306D81A6810331B68002BB4BF03F0700102F0D2 -S11306E83001202936D004D869B1102940F0B180EE -S11306F80FE0602956D0702951D0302940F0A980E4 -S113070847F230505CE05549C2F3841051F8200098 -S113071856E05349086810F0E04F46D00C68514839 -S11307282040B0F1805F40D00C684E4820404E4CC9 -S1130738A04203D1096889B2022938D048484949F6 -S113074804682140494CA14233D10068484980B229 -S1130758484C1FE04249086810F0E04F2BD00C6861 -S113076840482040B0F1805F25D00C683D482040C7 -S11307783D4CA04203D1096889B202291DD03848EA -S1130788384904682140394CA14218D100683A49D3 -S11307983A4C80B200280CBF2046084610E04FF4BB -S11307A800400DE04FF480000AE0354808E0314885 -S11307B806E02F4804E0334802E0304800E02E48C1 -S11307C8002B02DA13F4006F01E012F4006F28D151 -S11307D82D49234D09682C6814F0E04F43F6E07462 -S11307E801EA04044FEA541405D02E681D4D35401F -S11307F8B5F1805F05D1023401F01F05604302356D -S113080804E0604301F01F0501356D00B0FBF5F00D -S113081811F4804F18BF4008090448BF800842F407 -S11308288002510216D5002B0DDA590005D51A0598 -S113083803D44000C3F3865301E0C3F3C553013323 -S1130848B0FBF3F070BDC2F3C3520132B0FBF2F057 -S113085870BD002070BD00BF60E00F40344200004E -S113086800E00F400000FF700000011000000310BA -S11308780024F400001BB70000093D00C0C62D0089 -S1130888C0E1E4007038390064E00F40B0F1402F53 -S11308985DD0314B98425AD0A3F5A623984256D03E -S11308A803F5A823984252D0A3F5A62398424ED024 -S11308B803F5A82398424AD0A3F5A623984246D024 -S11308C803F5A823984242D0A3F55C3398423ED05E -S11308D803F5603398423AD0A3F55C33984236D096 -S11308E803F56033984232D0A3F55C3398422ED096 -S11308F803F5603398422AD0A3F55C33984226D096 -S113090803F56033984222D0A3F5083398421ED0E9 -S113091803F50C3398421AD003F58053984216D045 -S113092803F58053984212D003F5805398420ED0B1 -S113093803F5805398420AD003F58053984208D0AF -S113094803F58053C31A584240EB03007047012053 -S113095870470120704700BF0080054070B5044609 -S11309681646CDB2FFF792FF20B911484FF49071A3 -S113097801F048FA022E04D90D484FF4917101F0A0 -S113098841FAD4F8003416F0010F14BF2B43AB43DB -S113099804F580621360D4F8202416F0020F04F5DD -S11309A8846314BF154322EA05051D6070BD00BFAA -S11309B818430000F0B5044615461F46CEB2FFF7AB -S11309C865FF20B9404840F2FF1101F01BFA6B1E85 -S11309D8012B08D9042D06D00C2D04D03A4840F236 -S11309E8032101F00FFA082F0BD00A2F09D00C2F7E -S11309F807D0092F05D027B133484FF4027101F00D -S1130A0801FAD4F8003515F0010F14BF3343B3438A -S1130A1804F5A0621360D4F8042515F0020F04F558 -S1130A28A06314BF3243B24303F104031A60D4F839 -S1130A38083515F0040F14BF3343B34304F5A1621A -S1130A481360D4F8183515F0080F14BF3343B343B3 -S1130A5804F5A3621360D4F80C2517F0010F04F50C -S1130A68A06314BF3243B24303F10C031A60D4F8F1 -S1130A78103517F0020F14BF3343B34304F5A262D1 -S1130A881360D4F8142517F0040F04F5A26314BFF7 -S1130A983243B24303F104031A60D4F81C2517F057 -S1130AA8080F04F5A26303F10C0314BF3243B243E5 -S1130AB81A60D4F8282504F5A5630FB9164301E094 -S1130AC822EA06061E60F0BD1843000070B504460D -S1130AD8CDB2D6B2FFF7DAFE20B9044840F2853128 -S1130AE801F090F944F8256070BD00BF1843000078 -S1130AF830B50446CDB2FFF7C9FE20B9084840F224 -S1130B08F14101F07FF92046294601220823FFF725 -S1130B1851FF204629460122BDE83040FFF71EBF99 -S1130B281843000030B50446CDB2FFF7AFFE20B934 -S1130B38084840F2966101F065F9204629460222E8 -S1130B48FFF70CFF2046294601220823BDE8304060 -S1130B58FFF730BF1843000030B50446CDB2FFF7A5 -S1130B6895FE20B9084840F2EA6101F04BF92046A5 -S1130B7829460222FFF7F2FE2046294601220823CD -S1130B88BDE83040FFF716BF18430000830510B5D1 -S1130B98044603D00D489C2101F034F90C4B40F66F -S1130BA801221A6043F8144C0A4A143B08331A60A9 -S1130BB81A689207FCD4084B40F601201B681840B9 -S1130BC8002814BF4FF0FF30002010BD81430000FF -S1130BD814D00F40020042A40CD00F402DE9F0417C -S1130BE8054688070C46164603D02A48DF2101F03B -S1130BF809F9B10703D02748E02101F003F9264B8E -S1130C0842F201621A60254B1B68DA071ED4244B92 -S1130C18244F254825491A462EE024F07F03CCF8B2 -S1130C28003007E0224B0434434455F8048B043E57 -S1130C38C3F8008014F07C0801D13B680BB9002E7E -S1130C48F0D110600B68DB07FCD405E0194ADFF823 -S1130C5854C0194F15481146002EDED10EE03C60F1 -S1130C6855F804CBC0F800C01960D2F800C01CF0D5 -S1130C78010FFAD10434043E002EF0D10F4B42F296 -S1130C8801601B681840002814BF4FF0FF30002093 -S1130C98BDE8F0818143000014D00F40A0E10F406B -S1130CA808D00F4000D00F4004D00F40010042A4E8 -S1130CB800D10F4020D00F4030D00F400CD00F404F -S1130CC8124B98421ED003F5805398421AD003F56C -S1130CD88053984216D003F58053984212D003F5F6 -S1130CE8805398420ED003F5805398420AD003F5F6 -S1130CF88053984208D003F58053C31A584240EBF6 -S1130D0803007047012070470120704700C000406D -S1130D1810B50446FFF7D4FF20B908484FF4FB7117 -S1130D2801F070F8E36A43F01003E362236B43F4C1 -S1130D38407343F00103236310BD00BFEE4300007A -S1130D4810B50446FFF7BCFF20B9094840F2162144 -S1130D5801F058F8A3691907FCD4E36A23F01003D7 -S1130D68E362236B23F4407323F00103236310BD70 -S1130D78EE430000F0B504460D4616461F46FFF73D -S1130D889FFF20B92C484FF4B07101F03BF826B905 -S1130D98294840F2611101F035F8284B1A6812F01D -S1130DA8E04F1DD01968264A0A40B2F1805F17D077 -S1130DB81968234A0A4023498A4203D11B689BB213 -S1130DC8022B0DD01D4A1E4B11680B401E498B4245 -S1130DD808D113689BB2002B0CBF1023082302E030 -S1130DE8102300E0082373439D4204D212484FF4B1 -S1130DF8B17101F007F82046FFF7A2FFB5EB061F13 -S1130E08236B04D243F020032363760802E023F023 -S1130E1820032363ED00B5FBF6F60136F30963629C -S1130E28C6F3450600232046A662E762A361BDE82F -S1130E38F040FFF76DBF00BFEE43000000E00F4035 -S1130E480000FF70000001100000031010B50446F4 -S1130E58FFF736FF20B9064840F2554100F0D2FFAB -S1130E68A36913F0200F14BF0020012010BD00BF98 -S1130E78EE43000010B50446FFF722FF20B90648E8 -S1130E8840F2764100F0BEFFA369D80654BF20683B -S1130E984FF0FF3010BD00BFEE43000030B50446EC -S1130EA8CDB2FFF70DFF20B9064840F2C94100F062 -S1130EB8A9FFA3699A0602D42560012030BD002049 -S1130EC830BD00BFEE43000010B50446FFF7F8FE3E -S1130ED820B9044840F23B5100F094FFA069C0F3E4 -S1130EE8C00010BDEE4300000A4B98420ED003F533 -S1130EF8805398420AD003F58053984208D003F5EA -S1130F088053C31A584240EB0300704701207047CE -S1130F1801207047008000402DE9F043DDF81C8073 -S1130F2804460D4616461F46DDF82090FFF7DCFF01 -S1130F3818B92D48CC2100F065FF6EB1022E0BD0F4 -S1130F48012E09D0032E07D0102E05D0202E03D051 -S1130F582548D22100F056FF022F04D92248D52172 -S1130F6800F050FF04E01FB9B8EB550F05D808E0AE -S1130F780C23B5FBF3F3984503D91B48D72100F09C -S1130F8841FFB5FBF8F5B5F57E4F03D91648D821CE -S1130F9800F038FFA9F104030C2B03D91248D92116 -S1130FA800F030FF022F02D027B1002700E0082705 -S1130FB8042300E03B461F43676000230233B5FB6C -S1130FC8F3F2013AFF2AF9D82361B301DBB206F040 -S1130FD830061E4309F1FF3946EA090949EA0222A3 -S1130FE82260BDE8F08300BF5A44000010B50446EF -S1130FF8FFF77AFF20B905484FF4857100F002FF26 -S1131008636843F00203636010BD00BF5A440000E4 -S113101810B50446FFF768FF20B9054840F22311CC -S113102800F0F0FE636823F00203636010BD00BFA4 -S11310385A44000030B504460D46FFF755FF20B961 -S11310480B4840F2232100F0DDFE23686FF0010213 -S113105803F00F0302FA03F32B4204D0044840F2CE -S1131068252100F0CFFEE3689A07FCD5A56030BDC2 -S11310785A44000030B504460D46FFF735FF20B941 -S1131088054840F27F2100F0BDFEE3685907FCD50E -S1131098A3682B6030BD00BF5A44000011B5064C4C -S11310A8C1B22046FFF7C6FF20466946FFF7E2FFB4 -S11310B89DF8000018BD00BF0080004030B500F066 -S11310C811FE00F5FA75FF20FFF7E8FFFF28044634 -S11310D803D000F007FEA842F5D3A4F1FF03584259 -S11310E840EB030030BD0000012100B504480A4666 -S11310F8FFF7ECFCFF205DF804EBFFF7CFBF00BF60 -S11311080070004010B5012100220848FFF7DEFCFA -S1131118FF20FFF7C3FFFFF7D1FF044618B9FFF715 -S1131128E3FF204610BD012010BD00BF0070004041 -S113113830B5C4B20D46210607D537200021FFF784 -S1131148F7FF012832D804F07F04FFF7CDFFFFF73B -S1131158D9FF50B344F04000FFF7A0FF280EFFF773 -S11311689DFFC5F30740FFF799FFC5F30720FFF775 -S113117895FFE8B2FFF792FF24B1082C0CBF872033 -S1131188012000E09520FFF789FF0C2C02D1FF20F5 -S1131198FFF784FF0A24FF20FFF780FF020605D526 -S11311A8013CE4B2002CF6D130BDFF2030BD70B54F -S11311B804460D4600F096FD00F16406FF20FFF793 -S11311C86DFFFF2805D100F08DFDB042F6D3002055 -S11311D870BDFE2812D1FF20FFF760FF2070FF20AA -S11311E8FFF75CFF60700234023DF4D1FF20FFF783 -S11311F855FFFF20FFF752FF012070BD002070BD8E -S113120830B50446CDB2FFF759FF18B32846FFF7A7 -S113121845FFFD2D1DD00025605DFFF73FFF6319D5 -S113122858780235FFF73AFFB5F5007FF4D1FF206F -S1131238FFF734FFFF20FFF731FFFF20FFF72EFFF2 -S113124800F01F00A0F1050EDEF1000040EB0E00D7 -S113125830BD012030BD000010F0FF0F7FB540F015 -S1131268F2807A4B1C7814F0020440F0EA80784843 -S1131278FFF746F97748FFF743F97748FFF740F94E -S11312884FF040203421FFF74DFC74480121FFF74B -S11312982FFC4FF04020342102220A23FFF78AFB57 -S11312A80A236E4801210222FFF784FB01210A4622 -S11312B86A48FFF70BFCFFF709FA694B4FF0080C73 -S11312C88DE808100146234622466648FFF724FEA7 -S11312D86448FFF78BFE01210A466048FFF7F6FBD6 -S11312E84FF040202021FFF703FC20214FF040203D -S11312F80A46FFF7EBFB0A24FF215A48FFF79AFE38 -S1131308584803A9FFF7B6FE013CF5D120214FF058 -S11313184020FFF707FC012150482246FFF7D6FB7F -S113132820462146FFF704FF0128064662D100F053 -S1131338D9FC4FF4D57100F57A750820FFF7F8FE4B -S1131348012835D1FF20FFF7A9FE02ABE054013490 -S1131358042CF7D19DF80A30012B4AD19DF80B30A3 -S1131368AA2B46D100F0BEFCA84206D2A9204FF011 -S11313788041FFF7DDFE0028F4D100F0B3FCA84259 -S113138837D23A200021FFF7D3FE002831D1044692 -S1131398FF20FFF783FE02ABE0540134042CF7D19D -S11313A89DF8083013F0400F0CBF04240C2421E0EE -S11313B8A9202146FFF7BCFE012802D80224A92649 -S11313C800E0344600F08EFCA84205D230460021E5 -S11313D8FFF7AEFE0028F5D100F084FCA84208D23D -S11313E810204FF40071FFF7A3FE002818BF002453 -S11313F800E000241C4B1C60FFF776FE134B1A78A0 -S1131408DCB102F0FE021A701648FFF701FEFFF77E -S11314185DF94408FFF75AF9144B00229C4294BF23 -S1131428009400930823014601930E481346FFF7DE -S113143873FD0C48FFF7DAFD02E042F001021A706E -S1131448024B187800E0012004B070BD00000020B1 -S11314581000001001000020080000200070004067 -S1131468801A0600008000400800002020BCBE004E -S113147810F0FF0F06BF024B18780120704700BF19 -S11314880000002010F0FF0F30B50C46DDB2114605 -S113149834D1002D32D01B4B1B78DA0730D41A4BC9 -S11314A81B681B0758BF4902012D0DD11120FFF7F6 -S11314B83FFEE8B920464FF40071FFF778FED0F1FB -S11314C8010538BF002513E01220FFF731FE78B973 -S11314D820464FF40071FFF76AFE28B1013DEDB2D2 -S11314E804F50074002DF3D10C200021FFF720FE31 -S11314F8FFF7FAFD281C18BF012030BD042030BDB9 -S1131508032030BD000000200800002010F0FF0F69 -S113151870B50C461546DEB241D1002E3FD0234BA0 -S11315281A78D2073DD41B7858073CD4204B1B6843 -S1131538190758BF6D02012E0DD118202946FFF74F -S1131548F7FD30BBFE212046FFF75AFED0F1010615 -S113155838BF00261DE013F0060F03D0972031464C -S1131568FFF7E6FD19202946FFF7E2FD88B9204672 -S1131578FC21FFF745FE28B1013EF6B204F50074DC -S1131588002EF4D10020FD21FFF73AFE002808BF01 -S11315980126FFF7A9FD301C18BF012070BD0420E7 -S11315A870BD032070BD022070BD00BF0000002084 -S11315B80800002010F0FF0F7FB51446C9B240F0B0 -S11315C8E880774B1B78D80700F1E5800E2900F2F4 -S11315D8DA80DFE811F00F001200D8005300D800B9 -S11315E8D800D800D800D800D800A600AA00AC00BB -S11315F8B400C300FFF786FDC0E009200021FFF70F -S113160897FD0546002840F0C08068461021FFF782 -S1131618CEFD002800F0B9809DF800309B09012B0D -S11316289DF807300CD103F03F029DF808109DF88F -S113163809301204013203EB0123D3189B023FE063 -S11316489DF808209B0003EB92139DF806209DF853 -S1131658051002F0030203EB82239DF80A2001F02F -S11316680F0101EBD2119DF80920013302F00302A6 -S113167801EB4202073A03FA02F321E0494D2968D3 -S113168811F004011ED08D200021FFF751FD002820 -S11316987BD1FF20FFF702FD68461021FFF787FD85 -S11316A8002872D03025013DFF20EDB2FFF7F6FC8B -S11316B8002DF8D19DF80A3010221B0902FA03F311 -S11316C8236063E00920FFF733FD064600285CD158 -S11316D868461021FFF76BFD002856D02D689DF849 -S11316E80A2015F002059DF80B300ED09DF80D1058 -S11316F802F03F02DB0903EB420389090133013994 -S113170803FA01F33546236040E0C2F38402511C16 -S113171803F003025B0903EBC20201324A4322606D -S113172834E0204B1B68137016E0092000E00A20FF -S11317380021FFF7FDFC40BB204610211CE03A20A5 -S11317480021FFF7F5FC00BB0546FF20FFF7A6FCC8 -S113175860550135042DF8D1002517E0114B1B689D -S1131768590712D58D200021FFF7E2FC68B9FF2044 -S1131778FFF794FC20464021FFF719FDD0F101053D -S113178838BF002502E0042500E00125FFF7ACFC82 -S113179802E0042500E00325284604B070BD00BF1C -S11317A80000002008000020004870470000AA42FA -S11317B8FFB500216846202202F030FD084869463A -S11317C802F01EFC48B9009840B19DF8083013F0A7 -S11317D8100F14BF0020012000E0002008B000BD55 -S11317E8C244000000487047C244000010B5074CCA -S11317F80023204606490A2284F8243202F0EEF82F -S113180810B9012384F8243210BD00BF0C00002055 -S1131818DD44000000B5084890F82432012B01D1BA -S113182802F043FB0548FFF74FFB0128FAD00448B0 -S11318385DF804EB02F008BC0C00002000C0004076 -S1131848C2440000034890F82432012B01D102F06D -S11318582CBB70470C00002030B5104C054694F89A -S11318682432012B0AD1214602F088FC002805DA2B -S1131878002384F82432204602F017FB2C4607E0A4 -S11318880748FFF70BFB0648FFF7E0FA0028FAD0F1 -S113189814F8011B0029F3D130BD00BF0C0000204F -S11318A800C0004000B50848FEF760FE0748FEF790 -S11318B827FE4FF040200321FFF74EF900F0E0FA2D -S11318C800F0EDFAFCE700BF8003C001010000202E -S11318D801483D2100F096BAEA44000000B500F042 -S11318E8D1F958B100F016FB00F0E8F9044B4FF4B5 -S11318F8C0421A6046F204031B6898475DF804FB6B -S113190808ED00E070B50C4695B2064607E014F8F9 -S1131918013B013D06F8013B00F029FBADB2002D67 -S1131928F5D170BDFEF725BC70B50C4D06460024F4 -S113193800F01DFB2B689E4209D36A689B189E42DF -S113194805D2064B0C2202FB0434207A70BD013404 -S11319580C35112CECD1FF2070BD00BF7045000080 -S11319682DE9F14105460068FFF7DEFFFF2818D08E -S113197800242F68261DAB5904EB0708009300F0D8 -S1131988F6FA684641460422FFF728F948B9E259AD -S1131998009B9A4206D1B6F5007F3446E9D101206E -S11319A800E00020BDE8F881114B30B598420446A8 -S11319B80D4606D0B1F5C04F05D0FFF7D1FF18B9D1 -S11319C810E00C4C00E01C46EB050DD12368AB423B -S11319D80BD0204640F8045B29464FF40072FFF709 -S11319E891FF02E0044600E00024204630BD00BF19 -S11319F834020020380400202DE9F0439846036897 -S1131A0821F4FE77013304460D46164627F00307F2 -S1131A1806D140F8047B39464FF40072FFF772FF91 -S1131A282368BB4205D020463946FFF7BDFF04466C -S1131A38F0B1236840F2FF19ED1A0435651907F56A -S1131A48007700F094FA231DEB1A4B4506D920467B -S1131A583946FFF7A9FF044660B1051D16F8013B96 -S1131A68B8F1010805F8013BEBD10120BDE8F0838A -S1131A78BDE8F083BDE8F083034A4FF0FF331360F9 -S1131A88024A1360704700BF380400203402002063 -S1131A9870B504460D461646FFF746FFFF2815D0D5 -S1131AA8601E4019FFF740FFFF280FD024F4FE738F -S1131AB823F00303B3F5C04F0CBF0548054821467E -S1131AC832462B46BDE87040FFF796BF002070BD34 -S1131AD834020020380400202DE9F0410E46044663 -S1131AE8FFF722FF013C0546A019FFF71DFFFF2D54 -S1131AF8074659D0FF285AD0854255D8022D53D9C4 -S1131B08132851D82B4E0024B04600F030FA98F828 -S1131B180830AB4204D10C235C43264B1C5906E025 -S1131B280134112C08F10C08EFD14FF0FF34DFF821 -S1131B388480002500F01BFA98F80830BB4205D1D0 -S1131B480C235D431B4B53F8058006E00135112D2A -S1131B5808F10C08EED14FF0FF38002500F007FA21 -S1131B68337ABB4205D1134B0C2202FB05356B6853 -S1131B7804E001350C36112DF0D10023C4EB08061E -S1131B88F618C6F38F26002509E000F0F0F9204680 -S1131B98FEF7FCFF04F5806430B90135ADB2B542F7 -S1131BA8F3D30120BDE8F0810020BDE8F0810020D6 -S1131BB8BDE8F081704500000F4B01B51A68013289 -S1131BC817D05A68996846F2F0008918DA688918B3 -S1131BD81A6989185A6989189A698918DA698B18E7 -S1131BE85B4201AA42F8043D04216A46FFF750FF0C -S1131BF800E0012008BD00BF3402002046F20403BF -S1131C0818684FF4C0431B68C01846F208031B68E1 -S1131C18C01846F20C031B68C01846F210031B6870 -S1131C28C01846F214031B68C01846F218031B6850 -S1131C38C01846F2F0031B68C018D0F1010038BF81 -S1131C48002070470A4800B50368013302D0FFF743 -S1131C5887FE58B107480368013306D0FFF780FEB2 -S1131C68003018BF01205DF804FB01205DF804FB77 -S1131C783402002038040020FFF7FEBEFFF708BF37 -S1131C88FFF72ABFFFF7BABF00B5FFF795FF18B1F2 -S1131C985DF804EBFFF7D6BF5DF804FB054B0022A3 -S1131CA84CF24F311A60596005219A601960024B51 -S1131CB81A60704710E000E03C060020014B002247 -S1131CC81A60704710E000E0044B1B68DB0303D57F -S1131CD8034B1A6801321A60704700BF10E000E035 -S1131CE83C06002000B5FFF7EFFF024B18685DF8CB -S1131CF804FB00BF3C06002000B50748FEF700FCC3 -S1131D08FEF7E4FC014605484FF4614260235DF8A0 -S1131D1804EBFFF72FB800BF0100001000C000401B -S1131D2870B5CDB2402D064603D91848572100F0A6 -S1131D3869F817482946FFF7B1F840B101E000F007 -S1131D4816F91348FFF782F80028F8D003E00F4883 -S1131D585B2100F057F8002414E000F008F9315D25 -S1131D680B48FFF79BF840B101E000F000F9084880 -S1131D78FFF76CF80028F8D003E00448642100F069 -S1131D8841F80134A3B2AB42E7D370BD3C4600002E -S1131D9800C00040F0B5174C064625785DB91648D2 -S1131DA8FFF768F8421C1FD0144B187001232370E6 -S1131DB8134B1D7018E0124D0F482F78FFF75AF88F -S1131DC8431C13D00D492B78CF19787001330A7846 -S1131DD8DBB29A422B700BD130460131FFF792FDEA -S1131DE8002323700120F0BD2846F0BD0020F0BD7B -S1131DF80020F0BD8206002000C0004040060020FC -S1131E0881060020034B00B51860034B196000F0ED -S1131E18AEF8FCE7840600208806002010B500F020 -S1131E28A3F8012816D000F051FA98B10A4C237887 -S1131E38012B0FD1FFF756FF084B1B68323398422A -S1131E4808D30023237000F04BFA18B9BDE81040FA -S1131E58FFF744BD10BD00BF8C060020900600208B -S1131E68054B012200B51A70FFF73CFF034B1860BD -S1131E785DF804EBFFF7D2BF8C0600209006002023 -S1131E8800B500F073F8FFF709FFFFF7F5FE00F05F -S1131E9807FA00F011F85DF804EBFFF7E1BF00B5AD -S1131EA800F065F8FFF710FF00F00AFB00F01EF8D9 -S1131EB85DF804EBFFF7B2BF11B5FF2300248DF8DA -S1131EC800308DF8014000F05DF8FFF715FF054B71 -S1131ED81C60054B1B78012B02D1684600F070F892 -S1131EE818BD00BF040000209406002000B5074870 -S1131EF8FFF750FF012807D1054B044800221A6058 -S1131F085DF804EB00F05CB85DF804FB950600206E -S1131F180400002070470000054B00B51B6889B217 -S1131F2813B9C9B2FFF7FCFE5DF804EB00F040B842 -S1131F3804000020034B1868013802288CBF402095 -S1131F480020704704000020034B18680138022859 -S1131F588CBF40200020704704000020014B012260 -S1131F681A7070479406002000F01AB8704770473A -S1131F78034BFE22DA7002221871A3F8442070473A -S1131F88D8060020054B00221A709A6483F843206F -S1131F98A3F844209A705A70704700BFD8060020EE -S1131FA8024B1878003018BF01207047D80600206B -S1131FB8024B002283F84320704700BFD806002054 -S1131FC8F0B507780546FF2F854C19D100F07EF946 -S1131FD808B91020E9E0002310220125637022715A -S1131FE863712570E770FFF7A5FFA071FFF7ACFFD9 -S1131FF8E071FFF7A9FF000A20726572A57272E00A -S11320082678012E40F0EA80F32F46D012D8CF2F3D -S113201800F0C18005D8C92F7AD0CC2F40F0C480F5 -S1132028C0E0D12F00F0B180C0F08580D22F40F0FD -S1132038BB809DE0FA2F49D006D8F52F0CD013D3D6 -S1132048F62F40F0B18023E0FD2F50D0FE2F5BD057 -S1132058FC2F40F0A98048E0FFF76CFF6A789042B3 -S11320686FDD201DA16C08E0FFF764FF6B789842D0 -S113207867DD6968201DA1646A78FFF743FCFF23C4 -S1132088E3706A78A36CD318A3646B78013338E0DF -S1132098FF23E3704368A36481E0FF23E370002314 -S11320A8A06C69681A4603E01C5C01331219D2B2A9 -S11320B88B42F9D14A4BC3F8072001221A71002236 -S11320C85A719A710822A3F8442070E0FF23E37040 -S11320D8444B0722A364002323716371A371E27143 -S11320E823726372A37208230BE000205DE0FF23D0 -S11320F86278E37000232371A371E3712372627120 -S11321080623A4F8443052E000232370637044E0AB -S1132118A76CFFF70FFF6A1C411E3846FFF7AEFD98 -S113212800283FD0FF23E370A56CFFF703FF013DB0 -S11321382D18A56433E0FFF7FDFE6B78013898424B -S113214801DC222031E0FF23E370A4F844606978BD -S113215819B9FFF799FD50BB24E0214CAA1CA06CC7 -S1132168FFF78CFDF0B16A78A36CD318A3641EE062 -S11321780025FF23E37025716571FFF7DBFEE57128 -S1132188A071257265720723BBE7A06C6968FFF725 -S113219877FD10B906E0FFF7C5FBFF23E370A4F849 -S11321A8446004E0312000E02020FFF7E1FE0C4CFD -S11321B894F84330012B02D11020FFF7D9FEB4F86C -S11321C8441007480BB2002B08DD012380F8433084 -S11321D889B20330BDE8F040FFF79EBEF0BD00BFF2 -S11321E8D8060020B346000070B5002506462C46E4 -S11321F8705D02F00BF8C0B2A0F13003DBB2162B0D -S113220811D8A0F13A02D2B2062A0CD9092B84BFFC -S1132218A0F13703DBB2013503EB0414022D04F0FB -S1132228FF0401D0E4E70024204670BD30B5C5B2F0 -S1132238280909280C4601D9373003E0303001F069 -S1132248E5FFC0B205F00F05092D207001D9373517 -S113225804E005F1300001F0D9FFC5B20023657030 -S1132268A370204630BD000010B502460B490A246D -S113227800E01946B2FBF4F24B1C002AF9D14A706B -S11322880A22B0FBF2F102FB1100303003F8010D11 -S113229808460029F5D1184610BD00BF24070020C0 -S11322A8074B002000B50749186001F087FB28B1E7 -S11322B805487C215DF804EBFFF7A4BD5DF804FB39 -S11322C86407002070070020BB460000034B186811 -S11322D8D0F1010038BF0020704700BF6407002018 -S11322E830B5FFF741FE012808D0064D2C682CB9FB -S11322F8FFF75EFA012803D1286030BD002030BD05 -S1132308204630BD6407002010B50446007801F06B -S11323187DFF53280DD1607801F072FF48B16078D1 -S1132328312808D0322808D0332814BF03200220CB -S113233810BD032010BD002010BD012010BDF0B554 -S113234804460230FFF750FF0434074605460026CA -S11323582046FFF749FF013EB6B2F3199BB245196F -S11323680234012BEDB2F3D82046FFF73DFFED43CD -S1132378EDB22B1A584240EB0300F0BD2DE9F041B1 -S113238804460D46164601B120B94C4840F23621A0 -S1132398FFF738FD2046FFF7B7FF0328074600F08C -S11323A888802046FFF7CBFF00287FD0012F25D057 -S11323B802D3022F7DD14AE0A01CFFF715FF804607 -S11323C8201DFFF711FF07022F60A01DFFF70CFF68 -S11323D83F182F60A8F10305ADB2002E6AD0083467 -S11323E800270FFA85F806E02046FFF7FDFEF055B2 -S11323F801370234BFB24745F6DB5BE0A01CFFF7A8 -S1132408F3FE8046201DFFF7EFFE07042F60A01D92 -S1132418FFF7EAFE07EB00272F6004F10800FFF737 -S1132428E3FE3F182F60A8F10405ADB2002E41D099 -S11324380A3400270FFA85F806E02046FFF7D4FE91 -S1132448F05501370234BFB24745F6DB32E0A01C31 -S1132458FFF7CAFE8046201DFFF7C6FE07062F6059 -S1132468A01DFFF7C1FE07EB00472F6004F1080029 -S1132478FFF7BAFE07EB00272F6004F10A00FFF705 -S1132488B3FE3F182F60A8F10505ADB296B10C3420 -S113249800270FFA85F806E02046FFF7A5FEF05559 -S11324A801370234BFB24745F6DB03E04FF6FF7548 -S11324B800E0002528B2BDE8F08100BFBB4600005B -S11324C8F0B5954E3468002C00F08681012C26D195 -S11324D8FFF78CF99148FFF7BFF99148FFF7BCF96A -S11324E8FFF780F9224601468E4801F077FA05463F -S11324F838B18D48FFF7B0F92046BDE8F040FFF742 -S1132508A1B98A48FFF7A8F98948FFF7A5F98948C6 -S1132518FFF7A2F9884B1D605D600223BAE0022C24 -S113252840F08E80854F86484FF4807107F50D7210 -S113253801F0E8FD97F93A32002B01DA7A489FE076 -S113254868B17F48002200F5C071FFF717FF411CEE -S1132558054604D17448FFF77FF9032093E02CB2B1 -S1132568002C12DD744B764859681A4621B9D0F804 -S1132578802183E8140008E0D0F8803110682DB277 -S11325888342294438BF136051606C4DD5F83C220E -S1132598D5F840329A4240F01F8105F50D700021AC -S11325A801F08AFC68B16048FFF756F90420FFF788 -S11325B849F905F50D7001F078FC574B00221A60B3 -S11325C8F0BD5D4C5948FFF747F95E48FFF744F9F9 -S11325D86068FFF749FE5C48FFF73EF95B48FFF780 -S11325E83BF9E0785849FFF721FEA0785849FFF7EE -S11325F81DFE60785749FFF719FE57492078FFF701 -S113260815FE5148FFF728F95448FFF725F994E8CF -S11326180300FFF735FB404C064658B94248FFF71C -S11326281BF90520FFF70EF905F50D7001F03DFCC7 -S11326382660F0BD3D48FFF70FF903232360F0BD82 -S1132648032C40F0C9803D4F3D484FF4807107F595 -S11326580D7201F057FD97F93A32002B04DA40481D -S1132668FFF7FAF802200EE0B0B1354800F58072A1 -S113267800F5C071FFF782FE421C05460CD13948AB -S1132688FFF7EAF82046FFF7DDF807F50D7001F0CB -S11326980CFC00233360F0BD2DB2002D6BDD3248F5 -S11326A8FFF7DAF82846264CFFF7DEFD2648FFF741 -S11326B8D3F82E48FFF7D0F894F883012249FFF79E -S11326C8B5FD94F882012249FFF7B0FD94F8810121 -S11326D82049FFF7ABFD204994F88001FFF7A6FDD8 -S11326E81948FFF7B9F81D48FFF7B6F8D4F8800180 -S11326F804F580722946FFF7C1FA0446002837D149 -S11327080948FFF7A9F80620FFF79CF8054801F0E7 -S1132718CCFB014B1C60F0BD640700202647000079 -S113272849470000A4090020214800006E47000022 -S113273873470000974700006807002070070020CF -S1132748C80B0020C547000024070020CE4700001E -S113275826070020280700202A070020C147000078 -S1132768E7470000084800002948000036480000F0 -S11327781A48FFF771F81A4CD4F83C22D4F84032BE -S11327889A4229D11748FFF767F8FFF77DFA0546FB -S113279860B91548FFF760F80720FFF753F804F508 -S11327A80D7001F082FB114B1D60F0BD0B48FFF763 -S11327B853F80F48FFF750F804F50D7001F075FB56 -S11327C80C48FFF749F8094B00221A60FFF722F872 -S11327D8BDE8F040FFF782B8F0BD00BF6E470000C7 -S11327E8700700204D4800002148000064070020BD -S11327F8694800008148000010B5002302E0CC5C61 -S1132808C45401339342FAD110BDC1F3072381762E -S1132818090C0175090AC3764175704700230246FD -S11328281846410841EAC010D15C013340180B2B0B -S113283800F0FF00F5D170470369F0B50D4601F1CA -S11328480901002B4FD043690C461F7B002607F073 -S1132858080C9A5D2146202A12D0052A08BFE522D1 -S1132868BCF1000F06D0A2F14101C9B2192901D85F -S11328782032D2B2013604F8012B082E2146E8D1C1 -S11328881A7A202A18D022462E2102F8011B08267B -S113289807F010079C5D1146202C0DD037B1A4F128 -S11328A84101C9B2192901D82034E4B2013602F829 -S11328B8014B0B2E1146EDD1DA7A2A729A7FDC7F0E -S11328C8120442EA04621C7F22435C7F42EA042227 -S11328D82A605C7E1A7E42EA0422AA80DA7D9B7D05 -S11328E843EA0223EB8000240C70AE6906B3EB695B -S11328F8F3B10369ABB1028C4FF6FF739A4215D05A -S1132908C76909E0002101F04BFC60B1EB69013BA8 -S11329189C420AD23055013437F8020B0028F1D111 -S113292804E01C4602E0044600E00024002333557A -S1132938F0BD03468A7EC87E032B42EA002005D1F7 -S11329484A7D0B7D43EA022340EA0340704700B501 -S113295880B1036873B11A7862B1D98882889142C8 -S11329680BD15878FEF784FD10F0010018BF03203E -S11329785DF804FB09205DF804FB09205DF804FBFD -S113298810B504460A46407804F134010123FEF7E1 -S113299879FD80BB94F8323294F8332243EA022258 -S11329A8174B12B29A4228D194F86C2094F86D30DF -S11329B8120442EA036294F86A301A4394F86B30BA -S11329C842EA03220F4B22F07F429A4216D094F82F -S11329D8880094F88920000440EA026094F886206C -S11329E8104394F8872040EA022020F07F40C01A60 -S11329F818BF012010BD032010BD022010BD00BF68 -S1132A0855AAFFFF464154002DE9F041D5B20268AA -S1132A181378303B092B05D854783A2C02D102326A -S1132A28026000E0002300220A60002B40F05D8170 -S1132A38BA4B1C68002C00F05B810C60237873B1DE -S1132A486078FEF715FDC30709D4002D00F0538103 -S1132A5810F0040F0CBF00200A20BDE8F08100200C -S1132A6820706070FEF7F8FBC10700F1478115B1CB -S1132A78420700F1468100212046FFF781FF012823 -S1132A8817D194F8F631002B00F0418194F8FC61D9 -S1132A9894F8FD31360446EA036694F8FA31204680 -S1132AA81E4394F8FB3146EA03263146FFF768FFD4 -S1132AB800E00026032800F02781002840F0278141 -S1132AC894F8402094F83F3043EA0223B3F5007F9A -S1132AD840F01D8194F84B0094F84A3053EA0020E2 -S1132AE80DD194F85A0094F85B30000440EA03606E -S1132AF894F85830184394F8593040EA032094F86D -S1132B084450E0616B1EDBB2012BE57000F2FF80DC -S1132B1894F84110A170002900F0F9804B1E0B4273 -S1132B2840F0F58094F8453094F8462043EA0222B0 -S1132B381307228140F0EB8094F8487094F84730EA -S1132B4853EA07230DD194F8563094F857701B04B0 -S1132B5843EA076394F854703B4394F8557043EA86 -S1132B68072394F843C094F8427057EA0C2C00F0F9 -S1132B78CE8005FB00F80CEB12174744BB42C0F0AB -S1132B88C680DB1BB3FBF1F3002B00F0C08040F6DA -S1132B98F5718B4206D94FF6F575AB428CBF032508 -S1132BA8022500E00125023306EB0C01BF19032DB1 -S1132BB8A36126626162E76213D1002A40F0A7800C -S1132BC894F8622094F86310120442EA016294F8BB -S1132BD860109B000A4394F8611042EA0122A26241 -S1132BE80EE0002A00F093804144022DA16201D135 -S1132BF85B0005E003225A4303F0010303EB52038D -S1132C0803F5FE730333B0EB532FC0F083804FF00A -S1132C18FF3323610023032DE3605AD1637194F8D1 -S1132C28652094F86430607843EA0222B21862613D -S1132C3804F134010123FEF725FC002849D194F856 -S1132C48323294F8332243EA0222354B12B29A42C2 -S1132C583FD194F8362094F83730120442EA0362DC -S1132C6894F834301A4394F8353042EA03222D4B51 -S1132C789A422ED194F81A2294F81B32120442EA8A -S1132C88036294F818321A4394F8193242EA032278 -S1132C98254B9A421DD194F8223294F823221B041E -S1132CA843EA026394F82022134394F8212243EA66 -S1132CB80223E36094F81E3294F81F221B0443EAAB -S1132CC8026394F81C22134394F81D2243EA022356 -S1132CD82361164A00201388257001339BB21380A0 -S1132CE8E38020632071BDE8F0810B20BDE8F0810A -S1132CF80C20BDE8F0812846BDE8F0810320BDE83A -S1132D08F0810A20BDE8F0810120BDE8F0810D20A2 -S1132D18BDE8F0810D20BDE8F08100BF500F002010 -S1132D2855AAFFFF52526141727241614C0F002053 -S1132D38F0B50446007908B3256B04F134076078CC -S1132D4839462A460123FEF7E1FBB0B9636A2071CC -S1132D589D4213D3E2699B189D420FD2E67808E09E -S1132D68E3696078ED1839462A460123FEF7CEFB5D -S1132D78013E012EF4D80020F0BD0120F0BD10B5AD -S1132D880446FFF7D5FF002851D12378032B46D1F9 -S1132D986379002B43D0206304F1340103460B54B8 -S1132DA80130B0F5007FFAD1552384F83232AA23D2 -S1132DB884F83332522384F8343084F8353061236C -S1132DC884F8363084F81B322369412284F837208A -S1132DD884F81A22C3F3072284F81C3284F81D22CB -S1132DE81A0C1B0E84F81F32E36884F81E22C3F3FE -S1132DF80722722084F8203284F821221A0C1B0E30 -S1132E0884F8180284F8190284F8222284F82332F8 -S1132E18607801236269FEF779FB0023637100215E -S1132E2860780A46FEF7C6FB003018BF012010BDC3 -S1132E38036B30B5994204460D460ED0FFF778FF70 -S1132E4868B9607804F134012A460123FEF71AFBB5 -S1132E5808B9256330BD012030BD002030BD0120F4 -S1132E6830BD83690239023B994204D28278C36A2D -S1132E7802FB01307047002070470129F0B5044671 -S1132E880D465BD9836999425AD20378022B28D01C -S1132E98032B36D0012B4ED101EB5106416A01EBCD -S1132EA85621FFF7C5FF002845D1616AF3050136AD -S1132EB804EBD35301EB5621204693F83470FFF703 -S1132EC8B7FF002837D1F60504EBD65494F834003C -S1132ED8EA0747EA002001D50009F0BD0005000D06 -S1132EE8F0BD416A01EB1521FFF7A2FF18BB2D06BF -S1132EF804EBD55494F8350094F8343043EA0020B0 -S1132F08F0BD416A01EBD511FFF792FF98B96D0640 -S1132F1804EBD55494F8360094F83730000440EAAA -S1132F28036094F8343094F83570184340EA072065 -S1132F3820F07040F0BD4FF0FF30F0BD0120F0BD2F -S1132F480120F0BD70B58DB2816804460129C580A1 -S1132F5838D003689A69914234D271B91A78032A2D -S1132F6801D1996A49B90022E2601A89AA4229D989 -S1132F789B6A03EB1513236119E09E7836010DE073 -S1132F882068FFF77AFF0146013019D0012919D9C1 -S1132F9823689B69994217D2AD1BADB2B542EFD2F3 -S1132FA8E1602068FFF75DFF00EB151020612368DE -S1132FB805F00F05343303EB45156561002070BD3A -S1132FC8012070BD022070BD022070BD0129F0B53A -S1132FD804460D46164670D9836999426FD2037820 -S1132FE8022B3AD0032B48D0012B62D101EB5107B5 -S1132FF8416A01EB5721FFF71BFF00285AD1FA0554 -S1133008D20D15F00105F3B207D0A11891F83410C8 -S113301801F00F0141EA0313DBB2A218616A82F8D6 -S1133028343001370123237101EB57212046FFF780 -S1133038FFFE00283ED1FF05FF0D15B1C6F30716A4 -S113304807E0E31993F83430C6F3032623F00F039B -S11330581E43E71987F834602CE0416A01EB152117 -S1133068FFF7E6FE30BB2D0604EBD55585F8346032 -S1133078C6F3072685F835601CE0416A01EBD511D3 -S1133088FFF7D6FEB0B96D0604EBD55595F8373081 -S11330981B0603F070431E43C6F3072385F8346008 -S11330A885F83530330C360E85F8363085F83760B8 -S11330B800E0022001232371F0BD0220F0BD0220AC -S11330C8F0BDF0B504460E4631B9C7686FB18369DF -S11330D89F4228BF012709E0FFF7CFFE012837D90F -S11330E8A369984239D3374600E001273D46A369CE -S11330F801359D4202D3012F2CD9022520462946A9 -S1133108FFF7BBFE30B1411C27D0012825D0BD42B2 -S1133118EDD11FE0204629466FF07042FFF756FFB5 -S113312880B92EB1204631462A46FFF74FFF48B9E9 -S11331382369E5605A1C0FD0013B236101236371A5 -S11331482846F0BD012814BF01204FF0FF30F0BD20 -S11331580120F0BD0020F0BD2846F0BD2DE9F04166 -S1133168C68804460136B6B20F46002E65D00369F8 -S1133178002B62D0320755D1C1680133036100685E -S113318819B90389B34258D94CE08378013B13EA4F -S1133198161347D1FFF771FE0128054653D9431C7E -S11331A854D0206883699D4236D3002F45D0E16806 -S11331B8FFF787FF0546002842D0012843D0013095 -S11331C844D02068FFF7B4FD00283FD122680346A5 -S11331D8343213540130B0F5007FFAD127682946F8 -S11331E83846FFF73EFE4FF00108386300270CE02D -S11331F883F804802068FFF79BFD002829D1236801 -S113320801371A6BFFB201321A6323689A78BA42FB -S1133218EED81A6BD71B1F63E56020682946FFF7B1 -S113322820FE20612368E680343306F00F0603EBA2 -S1133238461666610020BDE8F0810420BDE8F081EF -S11332480720BDE8F0810220BDE8F0810120BDE837 -S1133258F0810120BDE8F0812DE9F34FFF26DFF866 -S11332682C81054634464FF6FF7728682969FFF70D -S1133278DFFD8346002840F08280D5F8149099F841 -S113328800A0BAF1000F78D0BAF1E50F99F80B3025 -S113329869D003F03F03180702D50F2B63D101E06F -S11332A80F2B4BD1EB69002B5ED01AF0400F06D0E0 -S11332B8EA8899F80D600AF0BF0A2A8401E0A24559 -S11332C851D199F80D20B2424DD199F800400D2200 -S11332D824F04004013C54434FF0010B002212F83F -S11332E8081009EB0100407819F8011041EA0020A0 -S11332F8BBF1000F11D08DE80C0000F06FFFFE2C1D -S11333088346019B2FD833F8140000F067FF9DE82B -S11333180C00834527D1013401E0B84223D101329E -S11333280D2ADCD199F8002051062BD5BBF1000FEA -S113333828D033F81430002B24D014E024B948469C -S1133348FFF76CFA86421AD0AA692F84D37A13F04D -S1133358010302D007E00B2B11D019F80300D15C4C -S113336801338842F7D0FF2428460021FFF7F6FEF0 -S1133378834600283FF479AF01E04FF0040B584628 -S1133388BDE8FC8F0AF1FF34E4B2EDE73A490000E6 -S11333982DE9F74F0B7806462F2B0C4601D05C2BF2 -S11333A800D101340025B56023781F2B05D8304699 -S11333B82946FFF7C7FD756106E1237801940134B6 -S11333C82F2BFAD05C2BF8D0D6F81C9000254F464A -S11333D84C46019A6B1C505D02931F281AD92F285A -S11333E81AD05C2818D0B3F5807F00F0EA80012158 -S11333F800F0D6FE002800F0E4807F2806D8734B3E -S113340813F8012B12B18242FAD1DAE024F8020B44 -S1133418029DDEE7042400E0002409EB450306E0EE -S113342833F8022D202A01D02E2A03D1013D002D84 -S1133438F6D1C6E00023B06909EB450129F8153037 -S11334482022C25401330B2BFBD14FF0000801E0BA -S113345808F1010837F8022B202AF9D02E2AF7D0D0 -S1133468B8F1000F01D044F003040B4608E0013D15 -S113347806D14FF0000A4FF0080B5746544B04E0AE -S113348833F8022D2E2AF2D1F3E739F81800002870 -S113349852D0202808F1010803D02E2804D1A845C9 -S11334A802D044F00304F0E7DA4501D2A84512D16A -S11334B8BBF10B0F02D144F003043DE0A84502D050 -S11334C844F0030438D8BF00FFB2A8464FF00B0BF2 -S11334D84FF0080AD9E77F280BD90021009300F0A0 -S11334E85FFE009B10B1181810F8800C44F0020419 -S11334F860B1384A12F8011B11B18142FAD105E0D2 -S1133508A0F1410292B2192A04D906E044F0030456 -S11335185F200BE047F0020708E0A0F1610292B2D5 -S1133528192A03D8203847F0010780B2B26902F893 -S11335380A000AF1010AA8E7B3691A78E52A01D151 -S113354805221A70BBF1080F01D1BF00FFB207F0C2 -S11335580C030C2B03D007F00302032A01D144F017 -S11335680204A10709D407F00307012F08BF44F098 -S11335781004042B08BF44F00804B3693046DC7215 -S11335880021FFF7DFFC10B93046FFF765FEB36989 -S1133598DB7A38B1042817D113F0040F14BF0420C0 -S11335A8052011E05A070FD47169CB7ADB060AD5D6 -S11335B8019A029BD41833681878FFF7BAF9B060F7 -S11335C8FBE6062000E00520BDE8FE8FAA480000BF -S11335D8BA480000B3480000F0B5018CC5884FF61E -S11335E8FF73994208BF29460446FFF7ABFC01461E -S11335F8B8B9E527012621692068FFF719FC0146B7 -S113360860B963691F7023681E71E388AB4208D2EE -S11336182046FFF7A3FD01460028ECD0042908BF83 -S113362802210846F0BD00002DE9F047FF260446B4 -S113363835464FF00409DFF8E8804FF6FF775EE07F -S11336482068FFF7F5FB814600285ED1606903789E -S1133658002B62D0E52BC27A4AD02E2B48D002F038 -S11336683F02082A44D00F2A39D15A0605D5E288E0 -S1133678467B03F0BF03228401E0AB4238D1427B8E -S1133688B24235D102780D2102F03F02013AD4F852 -S11336981CE04A434FF0010C002111F8089000EB9C -S11336A8090595F801A010F8095045EA0A25BCF166 -S11336B8000F06D0FE2A1BD82EF81250AC46013251 -S11336C801E0BD4214D101310D29E6D10178480643 -S11336D820D5FE2A0CD800212EF812101AE01DB9A4 -S11336E8FFF79CF8864212D04FF6FF7323840EE04E -S11336F8FF2520460021FFF731FD814628B92169BD -S113370800299DD1B9F1000F01D000232361484657 -S1133718BDE8F0875D1EEDB2EBE74FF00409F4E76E -S11337283A4900000129F0B504460F4624D98369B3 -S1133738994223D217E020463946FFF79EFB0546F7 -S1133748B8B1012818D0013014D0204639460022D7 -S1133758FFF73CFC98B92369591C02D00133236153 -S113376866712F4600E00126A3699F42E3D3002037 -S1133778F0BDF0BD0120F0BD0220F0BD0220F0BD77 -S113378873B59EB215460B220446FFF735F8052E8D -S113379809D9730843EAC6362B88F61835F8023F68 -S11337A8B6B2002BF5D1072306F00F0101F1300260 -S11337B8392A88BF01F137020DF80320013B360985 -S11337C8F2D102A9CA187E2102F8081C00E00136C9 -S11337D89E4202D0A25D202AF9D1072B05D802A95E -S11337E8CA1812F8082C013300E02022A255013629 -S11337F8072EF2D97CBD00002DE9F74F8569C7690A -S11338080C22044629466846FEF7F6FF9DF80B305D -S1133818E846DB0723D50023EB720126E361E8467B -S1133828284669463A463346FFF7AAFF2046002150 -S1133838FFF788FB814650B92046FFF70DFD814606 -S113384828B90136642EEBD14FF00709A5E0B9F188 -S1133858040F40F0A2809DF80B30EB72E7619DF8ED -S11338680B309E0704D401260CE00136B6B200E002 -S1133878002637F81630002BF7D119360D2396FB9E -S1133888F3F6B6B220460021FFF75CFB8146002818 -S113389840F08380054620682169FFF7C9FA81460C -S11338A800287AD163691B78E52B00D01BB9013550 -S11338B8B54201D174E0054620460121FFF74EFCCC -S11338C881460028E7D068E0E1882046491B89B290 -S11338D8FFF738FB814600285FD1A069FEF79EFFF9 -S11338E84FF6FF76DFF8D080824637462068216994 -S11338F8FFF79EFA814600284FD163690F21EAB287 -S1133908D4F81CE0D97218739876D876511E0D2015 -S1133918414383F80DA04846B14518BF3EF81190BD -S113392810F808C018BF0131013003F80C904FEAB1 -S1133938192B9C44B9F1000F08BFB1460D288CF827 -S113394801B0E9D1B94502D03EF8111009B942F0E5 -S113395840021A70236801221A7120460021FFF7D9 -S1133968FDFB8146C8B9013DADB2002DBED11BE0B7 -S113397861694B464A46CA540133202BFBD10B22BA -S11339886069A169FEF738FFA2696369D27A02F017 -S113399818021A73236801221A714846BDE8FE8F7B -S11339A8013DADB2002D8FD120682169FFF740FA9F -S11339B881460028DCD0F0E73A490000C0B248B993 -S11339C8054A136803B1187009B100230B7011601C -S11339D8002070470B207047500F00202DE9F0435A -S11339E88DB004460091D5B2002800F08D800023E4 -S11339F805F01F05036005F0FE02684601A9FFF7FC -S1133A0803F88046002840F081800AAB0793444BB2 -S1133A1801A800990893FFF7BBFC069E18B9002E6D -S1133A280CBF0620002015F01C0F42D050B104280A -S1133A3802D101A8FFF7E0FE069E002862D145F0F6 -S1133A48080505E0F37A13F0110F67D1680761D40C -S1133A58290737D5FDF7A8FEC0F30723F373030C32 -S1133A680027B0733374000E019B7074F7723777B4 -S1133A787777B777F77718783146FEF75AFF3946DC -S1133A8881463046FEF7C1FE019801230371B9F15E -S1133A98000F17D04946076BFFF744FE002831D1C1 -S1133AA8019809F1FF33C3603946FFF7C1F948B1FA -S1133AB828E0002826D1F37ADA062DD4A80701D500 -S1133AC8D9072BD4019F2A073B6B48BF45F0200533 -S1133AD8E3612662A57138783146FEF72AFF206132 -S1133AE8B37FF27F1B0443EA0263327F1343727F7E -S1133AF8276043EA0223E3600023A360A361FB88F1 -S1133B08A38003E0804601E04FF0090840460DB069 -S1133B18BDE8F0830820F5E70420F3E70720F1E780 -S1133B284C0D00202DE9F34F00931646009A00230C -S1133B38136004468946FEF70AFF0546002840F04C -S1133B489D80A3791A0600F19680D80740F19580E4 -S1133B58A368E268C3EB020804F12403464538BFAE -S1133B68B046019382E0A368DA0567D1206890F82B -S1133B7802B00BF1FF3B0BEA532B5FFA8BFBBBF153 -S1133B88000F0AD10BB9206902E06169FFF775F9E2 -S1133B98012809D9411C4AD06061D4F800A06169A0 -S1133BA85046FFF75EF920B9A37963F07F03A37148 -S1133BB861E05FEA582700EB0B061FD09AF8023041 -S1133BC807EB0B029A4288BFCBEB0307FBB29AF8C8 -S1133BD8010049463246FDF755FCA37940BB5A0615 -S1133BE80AD5A3699E1BBE4206D209EB4620019959 -S1133BF84FF40072FEF700FE7F022DE0A269B24284 -S1133C081BD0A3795B060AD501239AF80100019910 -S1133C18FDF77CFCA37958B923F04003A37123680A -S1133C280199587832460123FDF72CFC28B1A37971 -S1133C3863F07F03A371012520E0A661A1684846CB -S1133C48C905C90DC1F50077B84538BF47462431C1 -S1133C5861183A46FEF7D0FDA368009ADB19A36001 -S1133C681368B944DB191360C7EB0808B8F1000FEF -S1133C787FF479AF02E0022500E007252846BDE875 -S1133C88FC8F2DE9F34F00931646009A0023136026 -S1133C9804468946FEF75BFE0546002840F0B480DA -S1133CA8A3791A0648D49B0740F1AD80E368DE4245 -S1133CB804F1240328BF0026019397E0A368DA05DA -S1133CC879D1206890F802A00AF1FF3A0AEA532A47 -S1133CD85FFA8AFABAF1000F13D133B9216951B9DD -S1133CE8FFF7EFF90146206103E06169FFF7E9F99D -S1133CF8014600297DD00129A3791AD0481C53D044 -S1133D086161A37959060CD5236801995878A26989 -S1133D180123FDF7FBFBA379002845D123F04003D9 -S1133D28A371D4F800B061695846FFF79AF828B926 -S1133D38A37963F07F03A371022565E0770A00EB9A -S1133D480A0821D09BF8023007EB0A029A4288BF7E -S1133D58CAEB03079BF80100FBB249464246FDF74C -S1133D68D5FB00BBA369C8EB0308B8450AD209EB25 -S1133D78482101984FF40072FEF73EFDA37923F021 -S1133D884003A3717F0228E0A369434511D0A268C8 -S1133D98E3689A420DD29BF8010001994246012337 -S1133DA8FDF770FB28B1A37963F07F03A3710125A4 -S1133DB82AE0C4F81880A0684946C005C00DC0F5BB -S1133DC80077BE4238BF3746243020183A46FEF7FB -S1133DD813FDA37943F04003A371A368009ADB1988 -S1133DE8A3601368B944DB191360F61B002E7FF433 -S1133DF865AFA368E268934288BFE360A37943F0A0 -S1133E082003A37100E007252846BDE8FC8F70B5A0 -S1133E180446FEF79CFD0646002844D1A37998067B -S1133E2841D559060DD5214651F8243BA269587845 -S1133E380123FDF76BFB002834D1A37923F0400359 -S1133E48A3712068E169FEF7F3FF064600282AD12A -S1133E58256AEB7A284643F02003EB72E3682B7754 -S1133E68A3891B0A6B77E389AB77E37BEB7721693B -S1133E78FEF7CBFCFDF798FCC0F30723A875EB7598 -S1133E88030C000E2B766876AE74EE74A3790122C7 -S1133E9823F02003A37123681A712068BDE87040D9 -S1133EA8FEF76DBF0126304670BD10B50446FFF716 -S1133EB8AEFF00B9206010BD2DE9F04104460F465D -S1133EC8FEF745FD0546002840F09680A2791106C4 -S1133ED800F19180E3689F4203D912F0020F08BFF2 -S1133EE81F460022A368A260002F52D0206890F8D1 -S1133EF802804FEA482873B1013B791EB1FBF8F1FF -S1133F08B3FBF8F2914206D3C8F100021340A36050 -S1133F18FF1A61690AE0216939B9FFF7D2F8012863 -S1133F2801462ED0421C55D020616161002932D04F -S1133F3819E0A37920689B0704D5FFF7C2F8014666 -S1133F4818B913E0FEF799FF01464A1C42D001292B -S1133F5817D923689B69994213D2A36861614344C2 -S1133F68A360C8EB07074745E3D800E04746A368C2 -S1133F78DB19A360FB05DE0D73B12068FEF771FF42 -S1133F8820B9A37963F07F03A37134E000EB5726CB -S1133F9802E03E4600E00E46A368DB0521D0A26994 -S1133FA896421ED0A3795B060BD5214651F8243BD3 -S1133FB858780123FDF7AAFAA37960B923F04003DE -S1133FC8A371214651F8243B324658780123FDF762 -S1133FD859FA28B1A37963F07F03A37101250BE093 -S1133FE8A661A368E268934206D9E360A37943F023 -S1133FF82003A37100E002252846BDE8F0810000F3 -S113400830B58DB00DAB43F8340D0C46684601A9A4 -S11340180022FEF7F9FC054688B90AAB0793094B59 -S113402801A800990893FFF7B3F9054638B9069B28 -S113403823B101A82146FEF7FFFB00E00625284628 -S11340480DB030BD4C0D002070B596B016AB43F8DA -S1134058580D01A968460122FEF7D6FC054600283A -S113406843D113AB0793264B01A800990893FFF794 -S11340788FF90546002838D1069E36B1F37A13F035 -S1134088010F0CBF0025072500E00625019B3146DA -S11340981878FEF74EFC04463DBBF37ADD0627D5B7 -S11340A8012813D90AA801A92422FEF7A5FB0AA806 -S11340B802210C94FEF746FF0546B0B90AA8FFF79B -S11340C8B3FA054620B1042812D00EE002250CE00C -S11340D807250AE02CB101982146FFF723FB054682 -S11340E818B90198FEF74BFE0546284616B070BD70 -S11340F801A8FFF771FA05460028EBD0F5E700BFE1 -S11341084C0D00202DE9F3410446174606460025C8 -S113411801F1FF3811E001226B46384601A9FFF787 -S113412801FD009B012B0AD19DF804300D2B04D00E -S113413801350A2B06F8013B01D04545EBDB00238A -S11341489D4208BF1C4633702046BDE8FC8133B548 -S1134158C5B20A2D0C4602D10D20FFF7F8FF02A9BB -S113416801F8045D204601226B46FFF78AFD00989A -S113417801280CBF01204FF0FF303CBD70B5064646 -S11341880D46002405E02946FFF7E1FF411C04D051 -S11341980134305D0028F6D100E00446204670BDA5 -S11341A880B27F2815D931B1FF2811D8094B80383E -S11341B833F810007047084B33F8022F824203D0BB -S11341C8013189B28029F7D101F18000C0B270476A -S11341D800207047084D0000064D000080B2064AD2 -S11341E8002300E0013332F8021F21B18842F9D1DB -S11341F8024A32F813007047264B00004849000071 -S1134208303809288CBF002001207047A0F16103D1 -S1134218DBB2192B98BF2038704700000346002AE8 -S10F422803D003F8011B013AFBD17047DE -S113423440420F0000201C0080841E0000802500E2 -S1134244999E36000040380000093D0000803E007D -S113425400004B00404B4C0000204E00808D5B005E -S113426400C05D000080700000127A0000007D0030 -S113427480969800001BB7000080BB00C0E8CE0005 -S1134284647ADA000024F4000000FA0080A8120121 -S1134294002D310100366E0140787D01433A2F57D9 -S11342A46F726B2F736F6674776172652F4F7065CD -S11342B46E424C542F5461726765742F44656D6F5C -S11342C42F41524D434D335F4C4D33535F454B5F48 -S11342D44C4D3353363936355F43726F7373776F8E -S11342E4726B732F426F6F742F6964652F2E2E2F98 -S11342F46C69622F6472697665726C69622F737972 -S11343047363746C2E63000000E10F4004E10F40FA -S113431408E10F40433A2F576F726B2F736F667423 -S1134324776172652F4F70656E424C542F546172DD -S11343346765742F44656D6F2F41524D434D335F50 -S11343444C4D33535F454B5F4C4D335336393635FF -S11343545F43726F7373776F726B732F426F6F74F3 -S11343642F6964652F2E2E2F6C69622F647269760F -S113437465726C69622F6770696F2E6300433A2F0C -S1134384576F726B2F736F6674776172652F4F70FA -S1134394656E424C542F5461726765742F44656D85 -S11343A46F2F41524D434D335F4C4D33535F454B57 -S11343B45F4C4D3353363936355F43726F737377BD -S11343C46F726B732F426F6F742F6964652F2E2E77 -S11343D42F6C69622F6472697665726C69622F66E8 -S11343E46C6173686C69622E6300433A2F576F7271 -S11343F46B2F736F6674776172652F4F70656E42AD -S11344044C542F5461726765742F44656D6F2F414A -S1134414524D434D335F4C4D33535F454B5F4C4DCD -S11344243353363936355F43726F7373776F726BF8 -S1134434732F426F6F742F6964652F2E2E2F6C694E -S1134444622F6472697665726C69622F7561727425 -S11344546C69622E6300433A2F576F726B2F736F2C -S11344646674776172652F4F70656E424C542F5495 -S113447461726765742F44656D6F2F41524D434DCE -S1134484335F4C4D33535F454B5F4C4D3353363997 -S113449436355F43726F7373776F726B732F426F2A -S11344A46F742F6964652F2E2E2F6C69622F6472CA -S11344B4697665726C69622F7373692E63002F6465 -S11344C4656D6F70726F675F656B5F6C6D337336A8 -S11344D43936352E73726563002F626F6F746C6F97 -S11344E4672E74787400433A2F576F726B2F736F6F -S11344F46674776172652F4F70656E424C542F5405 -S113450461726765742F44656D6F2F41524D434D3D -S1134514335F4C4D33535F454B5F4C4D3353363906 -S113452436355F43726F7373776F726B732F426F99 -S11345346F742F6964652F2E2E2F2E2E2F2E2E2F5F -S11345442E2E2F536F757263652F41524D434D3395 -S11345545F4C4D33532F43726F7373776F726B7366 -S11345642F766563746F72732E630000006000001D -S11345740020000003000000008000000020000070 -S11345840400000000A0000000200000050000005A -S113459400C00000002000000600000000E000004D -S11345A400200000070000000000010000200000BB -S11345B408000000002001000020000009000000A1 -S11345C400400100002000000A0000000060010017 -S11345D4002000000B000000008001000020000007 -S11345E40C00000000A00100002000000D000000E9 -S11345F400C00100002000000E00000000E00100E3 -S1134604002000000F0000000000020000800000F1 -S1134614100000000080020000800000110000006F -S1134624000003000080000012000000008003006A -S11346340080000013000000433A2F576F726B2F61 -S1134644736F6674776172652F4F70656E424C5454 -S11346542F5461726765742F44656D6F2F41524DF9 -S1134664434D335F4C4D33535F454B5F4C4D335394 -S1134674363936355F43726F7373776F726B732F8A -S1134684426F6F742F6964652F2E2E2F2E2E2F2EBA -S11346942E2F2E2E2F536F757263652F41524D4367 -S11346A44D335F4C4D33532F756172742E63004F39 -S11346B470656E424C5400433A2F576F726B2F73DC -S11346C46F6674776172652F4F70656E424C542F18 -S11346D45461726765742F44656D6F2F41524D4365 -S11346E44D335F4C4D33535F454B5F4C4D33533621 -S11346F43936355F43726F7373776F726B732F42FE -S11347046F6F742F6964652F2E2E2F2E2E2F2E2E4D -S11347142F2E2E2F536F757263652F66696C652E69 -S113472463004669726D77617265207570646174A3 -S1134734652072657175657374206465746563744A -S113474465640A0D004F70656E696E672066697250 -S11347546D776172652066696C6520666F7220727C -S1134764656164696E672E2E2E004F4B0A0D00534B -S113477474617274696E67207468652070726F67FF -S113478472616D6D696E672073657175656E6365BD -S11347940A0D0050617273696E67206669726D77E1 -S11347A46172652066696C6520746F206F62746140 -S11347B4696E2065726173652073697A652E2E2E85 -S11347C40045726173696E672000206279746573B1 -S11347D42066726F6D206D656D6F7279206174202F -S11347E430780052656164696E67206C696E652077 -S11347F466726F6D2066696C652E2E2E4552524F7B -S1134804520A0D00496E76616C69642063686563BD -S11348146B73756D20666F756E642E2E2E45525221 -S11348244F520A0D0050726F6772616D6D696E6745 -S1134834200020627974657320746F206D656D6F38 -S113484472792061742030780057726974696E67D4 -S11348542070726F6772616D20636865636B737532 -S11348646D2E2E2E00436C6F73696E672066697219 -S11348746D776172652066696C650A0D004669721C -S11348846D776172652075706461746520737563F6 -S11348946365737366756C6C7920636F6D706C6596 -S11348A47465640A0D00222A3A3C3E3F7C7F002B47 -S11348B42C3B3D5B5D00809A90418E418F80454541 -S11348C4454949498E8F9092924F994F555559991C -S11348D49A9B9C9D9E9F41494F55A5A5A6A7A8A90F -S11348E4AAABAC21AEAFB0B1B2B3B4B5B6B7B8B934 -S11348F4BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C998 -S1134904CACBCCCDCECFD0D1D2D3D4D5D6D7D8D987 -S1134914DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E977 -S1134924EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F967 -S1134934FAFBFCFDFEFF01030507090E1012141611 -S1134944181C1E0041004200430044004500460078 -S11349544700480049004A004B004C004D004E00FB -S11349644F005000510052005300540055005600AB -S11349745700580059005A002100E0FFE1FFE5FF09 -S1134984E2FFE3FFC000C100C200C300C400C500CD -S1134994C600C700C800C900CA00CB00CC00CD00C3 -S11349A4CE00CF00D000D100D200D300D400D50073 -S11349B4D600D800D900DA00DB00DC00DD00DE001C -S11349C47801000102010401060108010A010C0135 -S11349D40E01100112011401160118011A011C011F -S11349E41E01200122012401260128012A012C018F -S11349F42E01300132013401360139013B013D01FC -S1134A043F0141014301450147014A014C014E0163 -S1134A14500152015401560158015A015C015E01CE -S1134A24600162016401660168016A016C016E013E -S1134A34700172017401760179017B017D01910198 -S1134A4491039203930394039503960397039803A2 -S1134A5499039A039B039C039D039E039F03A00352 -S1134A64A103A303A403A503A603A703A803A903FB -S1134A74AA031004110412041304140415041604E0 -S1134A841704180419041A041B041C041D041E042A -S1134A941F042004210422042304240425042604DA -S1134AA42704280429042A042B042C042D042E048A -S1134AB42F04010402040304040405040604070483 -S1134AC4080409040A040B040C040E040F046021F2 -S1134AD461216221632164216521662167216821A2 -S1134AE469216A216B216C216D216E216F2121FFC3 -S1134AF422FF23FF24FF25FF26FF27FF28FF29FF8A -S1134B042AFF2BFF2CFF2DFF2EFF2FFF30FF31FF39 -S1134B1432FF33FF34FF35FF36FF37FF38FF39FFE9 -S1134B243AFF0000610062006300640065006600EF -S1134B346700680069006A006B006C006D006E0019 -S1134B446F007000710072007300740075007600C9 -S1134B547700780079007A00A100A200A300A500E0 -S1134B64AC00AF00E000E100E200E300E400E50093 -S1134B74E600E700E800E900EA00EB00EC00ED00E1 -S1134B84EE00EF00F000F100F200F300F400F50091 -S1134B94F600F800F900FA00FB00FC00FD00FE003A -S1134BA4FF00010103010501070109010B010D01C6 -S1134BB40F01110113011501170119011B011D0135 -S1134BC41F01210123012501270129012B012D01A5 -S1134BD42F0131013301350137013A013C013E0112 -S1134BE4400142014401460148014B014D014F017A -S1134BF4510153015501570159015B015D015F01E5 -S1134C04610163016501670169016B016D016F0154 -S1134C1471017301750177017A017C017E019201AE -S1134C24B103B203B303B403B503B603B703B803C0 -S1134C34B903BA03BB03BC03BD03BE03BF03C00370 -S1134C44C103C303C403C503C603C703C803C90319 -S1134C54CA033004310432043304340435043604FE -S1134C643704380439043A043B043C043D043E0448 -S1134C743F044004410442044304440445044604F8 -S1134C844704480449044A044B044C044D044E04A8 -S1134C944F04510452045304540455045604570451 -S1134CA4580459045A045B045C045E045F047021D0 -S1134CB47121722173217421752176217721782140 -S1134CC479217A217B217C217D217E217F2141FF51 -S1134CD442FF43FF44FF45FF46FF47FF48FF49FFA8 -S1134CE44AFF4BFF4CFF4DFF4EFF4FFF50FF51FF58 -S1134CF452FF53FF54FF55FF56FF57FF58FF59FF08 -S1134D045AFF0000C700FC00E900E200E400E000F0 -S1134D14E500E700EA00EB00E800EF00EE00EC0039 -S1134D24C400C500C900E600C600F400F600F200A1 -S1134D34FB00F900FF00D600DC00A200A300A500DC -S1134D44A7209201E100ED00F300FA00F100D10084 -S1134D54AA00BA00BF001023AC00BD00BC00A1002F -S1134D64AB00BB00912592259325022524256125BA -S1134D746225562555256325512557255D255C2532 -S1134D845B251025142534252C251C2500253C25BC -S1134D945E255F255A2554256925662560255025F9 -S1134DA46C256725682564256525592558255225CC -S1134DB453256B256A2518250C25882584258C25DF -S1134DC490258025B103DF009303C003A303C30329 -S1134DD4B500C403A6039803A903B4031E22C6039F -S1134DE4B50329226122B1006522642220232123F0 -S1134DF4F7004822B0001922B7001A227F20B2001B -S1074E04A025A00041 -S10B4E08010000000400000099 -S903017B80 +S1130000241900207F010000C51E0000C51E000049 +S1130010C51E0000C51E0000C51E0000C51E000050 +S1130020C51E0000C51E0000C51E0000C51E000040 +S1130030C51E0000C51E0000C51E0000C51E000030 +S1130040C51E0000C51E0000C51E0000C51E000020 +S1130050C51E0000C51E0000C51E0000C51E000010 +S1130060C51E0000C51E0000C51E0000C51E000000 +S1130070C51E0000C51E0000C51E0000C51E0000F0 +S1130080C51E0000C51E0000C51E0000C51E0000E0 +S1130090C51E0000C51E0000C51E0000C51E0000D0 +S11300A0C51E0000C51E0000C51E0000C51E0000C0 +S11300B0C51E0000C51E0000C51E0000C51E0000B0 +S11300C0C51E0000C51E0000C51E0000C51E0000A0 +S11300D0C51E0000C51E0000C51E0000C51E000090 +S11300E0C51E0000C51E0000C51E0000C51E000080 +S11300F072B64D484D4901604D49072291438D46E2 +S11301004C484D494D4A00F07DF84D484D494E4A02 +S113011000F078F84D484E494E4A00F073F84E48C6 +S11301204E494F4A00F06EF84E484F494F4A00F08E +S113013069F84F484F49504A00F064F84F48504915 +S1130140002200F06AF84F484F49091A082903DBD6 +S1130150002202600430016040484149884205D0D1 +S11301600268043003B4904703BCF7E700208646D6 +S1130170EC4602F0F1F900200021444A904772B69F +S11301802B49072291438D462A482B492B4A00F0DC +S113019039F82B482B492C4A00F034F82B482C49C9 +S11301A02C4A00F02FF82C482C492D4A00F02AF84C +S11301B02C482D492D4A00F025F82D482D492E4A6A +S11301C000F020F82D482E49002200F026F82D4892 +S11301D02D49091A082903DB00220260043001605A +S11301E01E481F49884205D00268043003B4904772 +S11301F003BCF7E700208646EC4600200021234A92 +S11302009047FEE7884207D0521A05D003780130A0 +S11302100B700131013AF9D17047884202D0027063 +S11302200130FAE77047000008ED00E0000000002C +S113023024190020B86400000000002002000020FF +S1130240900200009002000070580000B8640000A2 +S113025000000020000000207058000070580000CA +S1130260705800007058000070580000705800006A +S11302707058000070580000B664000004000020AC +S1130280A4160020A416002024170020991E0000A4 +S1130290A0F58013591E012940F20181814A904240 +S11302A000F0FD8002F58073984200F0F88003F5B9 +S11302B00071884200F0F3807B4A904200F0EF80A6 +S11302C002F58073984200F0EA8003F500718842D9 +S11302D000F0E580754A904200F0E180744B98424A +S11302E000F0DD8003F11021884200F0D880714ACB +S11302F0904200F0D480704B984200F0D080591C9A +S1130300884200F0CC808A1C904200F0C880131D03 +S1130310984200F0C4800833984200F0C080103343 +S1130320984200F0BC802033984200F0B8804033FB +S1130330984200F0B4808033984200F0B0805F4966 +S1130340884200F0AC804A1C904200F0A880531C04 +S1130350984200F0A480591C884200F0A0804A1CF6 +S1130360904200F09C80531C984200F09880591CE5 +S1130370884200F094804A1C904200F0908040280B +S113038000F08D80B0F1102F00F089804C4B984222 +S113039000F085804B49884200F081804A1C9042DD +S11303A07DD0531C98427AD0591C884277D0464A53 +S11303B0904274D0454B984271D0454988426ED0E2 +S11303C0444A90426BD0444B984268D04349884297 +S11303D065D0B0F1101F62D0414A90425FD0414BCA +S11303E098425CD003F58071884258D0A1F5F87228 +S11303F0904254D01032904251D03B4B98424ED050 +S1130400591C88424BD0394A904248D0384B9842C4 +S113041045D0591C884242D08A1C90423FD0131DBB +S113042098423CD03349884239D04A1C904236D055 +S1130430314B984233D0591C884230D08A1C9042A8 +S11304402DD02E4B98422AD0591C884227D04A1CC2 +S1130450904224D0531C984221D0591C88421ED06B +S1130460B0F1202F1BD0264A904218D0082816D06D +S1130470244B984213D02449884210D04A1C9042FD +S11304800DD0531C98420AD0591C884207D04A1CEC +S1130490904204D0531CC11A48424841704701207D +S11304A0704700BF0001100000011010005800F058 +S11304B000401010005400F001000020090800F072 +S11304C000400010022000F0001010100001102065 +S11304D0004800F080000030005000F010000030B0 +S11304E0014000F000010010021C00F02000003068 +S11304F001001010040400F001000010031800F0C3 +S11305000100102000101000005C00F013B5044638 +S1130510FFF7BEFE20B91F4840F2313101F058FF09 +S113052004F07043B3F1704F1AD1E1B2C4F307245D +S113053004F57E228B0002F5A06143F0844021F48F +S1130540700340EA43140120206000200190019AC6 +S11305500F2A02D8019B581CF8E70021216018E0FB +S1130560220FA1B2C4F3044401FA04F40A4850F877 +S113057022301A6844EA0200186000220192019AAB +S11305800F2A02D80198421CF8E7196821EA0404EA +S11305901C601CBDDC5800005459000010B5044612 +S11305A0FFF776FE20B9144840F2963101F010FFAF +S11305B004F07043B3F1704F10D1C4F30721E0B2DB +S11305C001F57E24830004F5C06043F0844220F4E6 +S11305D0700342EA43140122226010BD220FA1B22B +S11305E0C4F3044401FA04F4044850F822301A68AD +S11305F014431C6010BD00BFDC58000048590000C3 +S113060001387FF4FDAF70474E4B2DE9F0411A6875 +S1130610044612F0E04F05D018684B490140B1F18F +S1130620805F02D1002CC0F28A80484F48483B6862 +S1130630066823F4800545F4006546F400623D60D5 +S11306400260980701D5A10703D5DB0719D5E70791 +S113065017D464F003013D4F0D40002A3D6005DAD4 +S113066006F07000302805D0702802E005F0300351 +S1130670302B02D14FF4805001E04FF40020FFF7FB +S1130680BFFF26F00046334B26F0700141F40067AB +S113069004F4FE62234025F4FE6545EA020847EAB5 +S11306A003002B4E294F04F0080540EAC505C7F89E +S11306B0008010203560FFF7A3FF04F4405228F4B3 +S11306C04053134304F4005125F4005222484025BA +S11306D00A43224905604BBF32603B603B60326095 +S11306E004F0FC5023F0F86322F0FC5223F00303DF +S11306F021400243600043EA010307D5184922F46C +S11307008002214043F480030A4301E022F0804246 +S113071021050BD44FF4004112480068400601D46F +S11307200139F9D123F4006322F40062074808492F +S1130730036010200A60BDE8F041FFF761BFBDE827 +S1130740F08100BF00E00F400000FF7060E00F4048 +S113075070E00F403000008058E00F400300C007F5 +S11307600000404050E00F405F4B70B51A681033F2 +S11307701B68002BB4BF03F0700102F03001202984 +S113078037D004D869B1102940F0AB800FE060295C +S113079054D070294FD0302940F0A38047F2305014 +S11307A056E05249C2F3841051F8200050E05049F9 +S11307B0086810F0E04F44D00C684E482040B0F177 +S11307C0805F3ED00C684B4820404B4CA04203D184 +S11307D0096888B2022836D0454846490468214051 +S11307E0464CA14201D0464832E0006881B251B380 +S11307F0F9E73F49086810F0E04F26D00C683D48FF +S11308002040B0F1805F20D00C683A4820403A4C38 +S1130810A04203D1096888B2022818D03448354967 +S113082004682140354CA14201D0364810E00068EC +S113083081B261B1F9E74FF4004009E04FF4800060 +S113084006E0314804E0314802E0314800E0314834 +S1130850002B02DA13F4006F01E012F4006F28D1C8 +S11308602D4D2968224D2C6814F0E04F43F6E074B6 +S113087004EA01044FEA541405D02E681D4D354096 +S1130880B5F1805F05D1023401F01F0560430235E4 +S113089004E0604301F01F0501356D00B0FBF5F085 +S11308A011F4804F18BF4008090448BF800842F47F +S11308B08002510216D5002B0DDA590005D51A0510 +S11308C003D44000C3F3865201E0C3F3C552531C62 +S11308D0B0FBF3F070BDC2F3C353591CB0FBF1F08D +S11308E070BD002070BD00BF60E00F407058000074 +S11308F000E00F400000FF70000001100000031032 +S11309000024F40000093D00C0E1E400001BB7002E +S113091070383900C0C62D0064E00F40B0F1402F9C +S11309205CD02F4B984259D0A3F5A621884255D0CC +S113093001F5A822904251D0A2F5A62398424DD0A9 +S113094003F5A821884249D0A1F5A622904245D0BA +S113095002F5A823984241D0A3F55C3188423DD0EA +S113096001F56032904239D0A2F55C33984235D01B +S113097003F56031884231D0A1F55C3290422DD02C +S113098002F56033984229D0A3F55C31884225D022 +S113099001F56032904221D0A2F5083398421DD06F +S11309A003F50C31884219D001F58052904215D0DC +S11309B002F58053984211D003F5805188420DD03E +S11309C001F58052904209D002F58053984205D037 +S11309D003F58051421A504250417047012070473C +S11309E00080054070B504460D461646FFF796FF95 +S11309F020B911484FF4907101F0EAFC022E04D999 +S1130A000D484FF4917101F0E3FCD4F8003416F072 +S1130A10010F14BF2B43AB4304F580621360D4F879 +S1130A20200416F0020F04F5846114BF054320EA84 +S1130A3005050D6070BD00BF60590000F8B504469F +S1130A400D4617461E46FFF769FF20B93C4840F2A1 +S1130A50FF1101F0BDFC7B1E012B08D9042F06D029 +S1130A600C2F04D0364840F2032101F0B1FC082ECB +S1130A700BD00A2E09D00C2E07D0092E05D026B192 +S1130A802F484FF4027101F0A3FCD4F8000517F0CD +S1130A90010F14BF2843A84304F5A0621060D4F8E2 +S1130AA0041517F0020F14BF2943A94304F2045399 +S1130AB01960D4F8080517F0040F14BF2843A8439D +S1130AC004F5A1621060D4F8181517F0080F14BFCC +S1130AD02943A94304F5A3631960D4F80C0516F05F +S1130AE0010F14BF2843A84304F20C521060D4F839 +S1130AF0101516F0020F14BF2943A94304F5A2638D +S1130B001960D4F8140516F0040F14BF2843A84341 +S1130B1004F214521060D4F81C1516F0080F04F2F5 +S1130B201C5314BF2943A943196004F5A560D4F8E4 +S1130B3028250EB9154301E022EA05050560F8BD34 +S1130B406059000070B504460D461646FFF7E6FEF0 +S1130B5020B9044840F2853101F03AFC44F825609C +S1130B6070BD00BF6059000070B505460C46FFF724 +S1130B70D5FE20B9084840F2524101F029FC28462C +S1130B8021460222FFF72EFF28462146042208238D +S1130B90BDE87040FFF752BF6059000038B5054604 +S1130BA00C46FFF7BBFE20B9084840F2F14101F0C2 +S1130BB00FFC2846214601220823FFF73FFF284661 +S1130BC021460122BDE83840FFF70CBF6059000000 +S1130BD070B505460C46FFF7A1FE20B9084840F25F +S1130BE0966101F0F5FB284621460222FFF7FAFE42 +S1130BF02846214601220823BDE87040FFF71EBFA6 +S1130C006059000070B505460C46FFF787FE20B911 +S1130C10084840F2EA6101F0DBFB28462146022243 +S1130C20FFF7E0FE2846214601220823BDE8704074 +S1130C30FFF704BF60590000830510B5044603D0D4 +S1130C400D489C2101F0C4FB0C4B40F601221A60B4 +S1130C500B4843F8144C143B0833186019688A078E +S1130C60FCD4084A40F6012013681840002814BF39 +S1130C704FF0FF30002010BDC959000014D00F40C0 +S1130C80020042A40CD00F4070B50C46A1070646E2 +S1130C90154603D02748DF2101F09AFBAA0703D0A9 +S1130CA02448E02101F094FB234B42F201622348E3 +S1130CB01A600168CB0719D423462DE075B1204A88 +S1130CC0043D881853F8041B0160A11B5A1812F044 +S1130CD07C01F3D11B4800680028EFD01A4C1B4E4E +S1130CE026602168C807FCD414461E462DB1184B53 +S1130CF024F07F0018603346E7E7164842F20162A9 +S1130D0001680A40002A14BF4FF0FF30002070BD74 +S1130D100268D107FCD404332A199A42EDD00C4856 +S1130D20311B0360C8580C4A08491060101D01604B +S1130D30EEE700BFC959000014D00F40A0E10F40F6 +S1130D4000D10F4030D00F4020D00F40010042A40A +S1130D5000D00F400CD00F4004D00F4038B50C46E3 +S1130D60054620B910484FF4217101F031FB24B934 +S1130D700D4840F2852101F02BFB0C4B1A6812F050 +S1130D80E04F0DD018680A490140B1F1805F07D0E7 +S1130D90084B09481A682A6001680020216038BDA0 +S1130DA04FF0FF3038BD00BFC959000000E00F40CC +S1130DB00000FF70E0E10F40E4E10F40114B984266 +S1130DC01DD003F58051884219D001F5805290421C +S1130DD015D002F58053984211D003F58051884212 +S1130DE00DD001F58052904209D002F5805398420B +S1130DF005D003F58051421A5042504170470120FA +S1130E00704700BF00C0004010B50446FFF7D6FF8E +S1130E1020B908484FF4FB7101F0DAFAE36A43F0B1 +S1130E201000E062216B41F4407242F0010323633D +S1130E3010BD00BF365A000010B50446FFF7BEFFD0 +S1130E4020B9094840F2162101F0C2FAA369190732 +S1130E50FCD4E06A20F01001E162226B22F44073BA +S1130E6023F00100206310BD365A0000F8B5044693 +S1130E700E4615461F46FFF7A1FF20B92A484FF436 +S1130E80B07101F0A5FA25B9274840F2611101F0CB +S1130E909FFA264A136813F0E04F1CD011682448C7 +S1130EA00840B0F1805F16D01368214921481940E9 +S1130EB0814203D1126893B2022B0CD01B481C4A06 +S1130EC001681D4B0A409A4201D0082204E00068E0 +S1130ED081B20029F9D110226A43964204D2124801 +S1130EE04FF4B17101F074FA2046FFF7A5FFB6EB99 +S1130EF0051F236B04D243F0200121636D0802E037 +S1130F0023F020002063F600B6FBF5F56A1C0020F0 +S1130F10D309C2F345056362A562E762A061204676 +S1130F20BDE8F840FFF770BF365A000000E00F40FC +S1130F300000FF70000001100000031010B504460B +S1130F40FFF73CFF20B9054840F2554101F040FA53 +S1130F50A06980F02001C1F3401010BD365A000092 +S1130F6010B50446FFF72AFF20B9064840F276413F +S1130F7001F02EFAA369D80654BF20684FF0FF3061 +S1130F8010BD00BF365A000038B504460D46FFF7C1 +S1130F9015FF20B9064840F2C94101F019FAA369C6 +S1130FA09A0602D42560012038BD002038BD00BF58 +S1130FB0365A000010B50446FFF700FF20B9044874 +S1130FC040F23B5101F004FAA069C0F3C00010BD27 +S1130FD0365A0000094B98420DD003F580518842DF +S1130FE009D001F58052904205D002F58053C11A10 +S1130FF04842484170470120704700BF00800040CC +S11310002DE9F843089F0646884614461D46DDF838 +S11310102490FFF7DFFF18B92C48CC2101F0D8F950 +S11310206CB1022C0BD0012C09D0032C07D0102C4E +S113103005D0202C03D02548D22101F0C9F9022D76 +S113104004D92248D52101F0C3F908E03DB9B7EB32 +S1131050580F09D91D48D72101F0BAF904E00C232F +S1131060B8FBF3F08742F5D8B8FBF7F7B7F57E4F36 +S113107003D91648D82101F0ABF9A9F104010C29D0 +S113108003D91248D92101F0A3F9022D02D025B1C8 +S1131090002500E00825042200E02A461543756077 +S11310A000230233B7FBF3F0411EFF29F9D8A20154 +S11310B0336104F03004D3B21C4309F1FF3C44EA29 +S11310C00C0949EA01203060BDE8F883A25A000007 +S11310D010B50446FFF77EFF20B905484FF485712B +S11310E001F076F9636843F00200606010BD00BF50 +S11310F0A25A000010B50446FFF76CFF20B905485A +S113110040F2231101F064F9636823F00200606087 +S113111010BD00BFA25A000038B504460D46FFF7C3 +S113112059FF20B90B4840F2232101F051F92368FB +S11311306FF0010203F00F0002FA00F1294204D01B +S1131140044840F2252101F043F9E3689A07FCD5ED +S1131150A56038BDA25A000038B504460D46FFF715 +S113116039FF20B9054840F27F2101F031F9E368E5 +S11311705907FCD5A068286038BD00BFA25A0000FA +S11311800369F0B500F1100C9EB20546180C1C0E54 +S11311900870B01F4C7002239042B4BF044614463A +S11311A0E71E9F4204DDDCF80070CF500433F7E7FC +S11311B0A34218DABB422D6907D1CD54CB18290AB2 +S11311C02D0C59709D70631C0DE0A71EBB4205D108 +S11311D0CD54C9182D0A4D70A31C04E0671EBB42F0 +S11311E001D1CD54E31CB11E8B4203DADCF80010AC +S11311F00433F8E79042C8BF4042F0BD30B54B78A5 +S11312000C781D0645EA0443A2F10E04234303614E +S113121000F110050223D41E9C4203DDCC58043394 +S11312202C60F8E7934218D0A34208D1CC5CCB18C9 +S113123099785B781B0243EA014121430CE0941E38 +S1131240A34205D1CC5CCB18597844EA012103E0D0 +S1131250541EA34201D1C95C01610121816310467E +S113126030BD000038B5074B044698420D4603D004 +S113127005485D2101F0ACF80448B5FBF0F1CDB2AE +S1131280656238BD008004400A5B0000404B4C009E +S113129038B5134B044698420D4603D01148A62195 +S11312A001F096F825F4873020F0160119B10D48A5 +S11312B0AA2101F08DF8E268E8B222F01603034394 +S11312C0E360A168C5F3072221F00E031343A36072 +S11312D0E06BC5F3074520F001010D43E56338BD1C +S11312E0008004400A5B0000144B37B59842054661 +S11312F00C4604D0124840F2131101F069F824B9E5 +S11313000F484FF48A7101F063F820786178A2786D +S1131310E3788DF805108DF804008DF806208DF81B +S113132007300198002168612279637901918DF871 +S113133004208DF805300198A8613EBD008004406A +S11313400A5B00000D4B10B59842044604D00C48CB +S113135040F2691101F03CF8A06840F01001A1606E +S1131360A26842F00103A360E06840F00101E1607B +S1131370A26842F01003A36010BD00BF00800440C7 +S11313800A5B0000124B70B5984204460E4615469F +S113139004D0104840F28F2101F01AF826B90D4804 +S11313A04FF4247101F014F8002D04DC094840F2D4 +S11313B0912101F00DF8606B10F03F0006D020463B +S11313C031462A46BDE87040FFF7DABE70BD00BF63 +S11313D0008004400A5B0000144B70B59842054637 +S11313E00E46144604D0124840F29E3100F0F0FF3D +S11313F026B90F4840F29F3100F0EAFF002C04DCCC +S11314000B484FF4687100F0E3FFA86BC107FCD4EC +S113141040F2FE718C4201DD604270BD28463146C7 +S11314202246BDE87040FFF7E9BE00BF00800440DB +S11314300A5B000038B50B4B044698420D4604D0B5 +S1131440094840F2474100F0C3FF35F07F0304D060 +S1131450054840F24A4100F0BBFF606820EA0505F8 +S1131460656038BD008004400A5B000038B5074B56 +S1131470044698420D4604D0054840F26A4100F003 +S1131480A7FF20680DB16168084038BD00800440A2 +S11314900A5B000038B50A4B044698420D4604D056 +S11314A0084840F29F4100F093FF35F07F0304D0D9 +S11314B0044840F2A24100F08BFF256038BD00BF14 +S11314C0008004400A5B000038B50D4B0446984286 +S11314D00D4604D00B4840F2125100F079FF226A05 +S11314E004F12001D207FAD4E800C5B245F00105A1 +S11314F00D600B68D807FCD4216B88B238BD00BFDF +S1131500008004400A5B000013B5064C01462046E7 +S1131510FFF702FE204601A9FFF71EFE9DF8040016 +S11315201CBD00BF0080004038B500F0CBFE00F5C4 +S1131530FA75FF20FFF7E8FFFF28044603D000F008 +S1131540C1FEA842F5D3B4F1FF035842584138BD57 +S1131550012108B504480A46FFF7F4FAFF20BDE864 +S11315600840FFF7D1BF00BF0070004010B5012153 +S113157000220848FFF7E6FAFF20FFF7C5FFFFF750 +S1131580D3FF044618B9FFF7E3FF204610BD01203E +S113159010BD00BF0070004038B50D46010604467A +S11315A007D537200021FFF7F7FF012832D804F0D0 +S11315B07F04FFF7CDFFFFF7D9FF50B344F040009D +S11315C0FFF7A2FF280EFFF79FFFC5F30740FFF7C1 +S11315D09BFFC5F30720FFF797FFE8B2FFF794FFDF +S11315E024B1082C0CBF8720012000E09520FFF7D0 +S11315F08BFF0C2C02D1FF20FFF786FF0A24FF206B +S1131600FFF782FF020605D5013C14F0FF04F6D172 +S113161038BDFF2038BD38B505460024285DFFF7E6 +S113162073FF2B1958780234FFF76EFFB4F5007F6F +S1131630F4D1FF20FFF768FFFF20FFF765FFFF20CD +S1131640FFF762FF00F01F00B0F1050EDEF10001AC +S113165051EB0E0038BD70B505460E4600F032FE63 +S113166000F16404FF20FFF74FFFFF2805D100F0CD +S113167029FEA042F6D3002070BDFE28FBD1AC1C8D +S1131680FF20FFF741FF04F8020CFF20FFF73CFFA7 +S1131690AB1904F8010C0234981CA042F0D1FF20CD +S11316A0FFF732FFFF20FFF72FFF012070BD00007E +S11316B07FB5002840F0FA807E490C7804F00200DF +S11316C0C4B2002C40F0F0807B48FEF767FF7B48F3 +S11316D0FEF764FF7A48FEF761FF4FF040203421A3 +S11316E0FFF776FA77480121FFF758FA4FF04020C8 +S11316F0342102220A23FFF7A1F90A2371480121A8 +S11317000222FFF79BF901210A466E48FFF71AFAF5 +S1131710FFF72AF86C4B4FF0080C8DE808100146CF +S1131720234622466948FFF76BFC6848FFF7D0FC64 +S113173001210A466348FFF705FA4FF040202021B3 +S1131740FFF72CFA20214FF040200A46FFF7FAF960 +S11317500A24FF215D48FFF7DFFC5C4803A9FFF77B +S1131760FBFC013CF5D120214FF04020FFF730FA7B +S1131770012154482246FFF7E5F920462146FFF7A8 +S11317800BFF0128064601D0002466E000F09AFD14 +S11317904FF4D57100F57A750820FFF7FDFE012896 +S11317A039D1FF20FFF7B0FE02AB18550134042CE9 +S11317B0F7D19DF80A100129E6D19DF80B20AA2A39 +S11317C0E2D100F07FFDA84204D300F07BFDA842E3 +S11317D0DAD207E0A9204FF08041FFF7DDFE0028B0 +S11317E0EFD1F2E73A200021FFF7D6FE0028CBD153 +S11317F00446FF20FFF788FE02AB18550134042C81 +S1131800F7D19DF8080000F04001CAB2002A0CBFCD +S113181004240C2421E0A9202146FFF7BDFE012861 +S113182002D80224A92600E0344600F04BFDA84269 +S11318300CD300F047FDA842A6D210204FF400714B +S1131840FFF7AAFE002818BF002406E03046002156 +S1131850FFF7A2FE0028E8D1EBE71D4B1C60FFF761 +S113186077FE14480178DCB101F0FE0404701748D7 +S1131870FFF740FCFEF778FF4408FEF775FF154BB1 +S11318800146002208209C4294BF009400930190DA +S113189013460E48FFF7B4FB0C48FFF719FC02E0AF +S11318A041F0010202700349087800E0012004B00D +S11318B070BD00BF000000201000001001000020D7 +S11318C00800002000700040801A060000800040DC +S11318D00400002020BCBE0010B9024B18787047E9 +S11318E0012070470000002038B50D461C46114603 +S11318F0002834D1002B32D01B4B1878C20730D4C7 +S11319001A4A13681B0758BF4902012C0DD1112034 +S1131910FFF742FEE8B928464FF40071FFF79BFE3B +S1131920D0F1010438BF002413E01220FFF734FE85 +S113193078B928464FF40071FFF78DFE28B1013CB9 +S113194014F0FF0405F50075F3D10C200021FFF716 +S113195023FEFFF7FDFD201C18BF012038BD042025 +S113196038BD032038BD00BF000000200400002063 +S113197070B50D4616461C46002851D1002B4FD099 +S11319802A4B1A78D0074DD4187800F00401CBB252 +S1131990002B49D1264A1068010758BF7602012C52 +S11319A015D118203146FFF7F7FD08B1012431E0C5 +S11319B0FFF7BAFD0028F9D0FE20FFF7A5FD284661 +S11319C0FFF729FED0F1010438BF002422E010F013 +S11319D0060F03D097202146FFF7DEFD192031467C +S11319E0FFF7DAFDB0B9FFF79FFD60B1FC20FFF708 +S11319F08BFD2846FFF70FFE28B1013C14F0FF04CD +S1131A0005F50075EFD1FFF78FFD0028CED0FD203E +S1131A10FFF77AFDFFF79CFD201C18BF012070BD65 +S1131A20042070BD032070BD022070BD00000020A2 +S1131A3004000020F0B5154685B0002840F0EE8083 +S1131A40794B1878C30700F1EB800E2900F2E2808D +S1131A50DFE811F00F001200E0005200E000E000A7 +S1131A60E000E000E000E000A700AB00AD00B7003C +S1131A70C800FFF77BFDC8E009200021FFF78CFDBB +S1131A80044608B10124C6E068461021FFF7E3FDCF +S1131A900028F7D09DF800109DF807308A09012A24 +S1131AA00CD103F03F009DF808109DF809300204A2 +S1131AB0501C03EB0122801880023FE09DF80800CF +S1131AC09DF80620990001EB901302F0030003EB4C +S1131AD080219DF805309DF80A20481C03F00F0171 +S1131AE001EBD2139DF8091001F0030203EB42034A +S1131AF0D91F00FA01F021E04C4E316811F00401C5 +S1131B001ED08D200021FFF747FD0028BAD1FF2009 +S1131B10FFF7FAFC68461021FFF79DFD0028B1D0BD +S1131B203024FF20FFF7F0FC611E11F0FF04F8D110 +S1131B309DF80A201023100903FA00F028606AE0D7 +S1131B400920FFF729FD074600289BD1684610218C +S1131B50FFF781FD002895D032689DF80A0012F045 +S1131B60020410D000F03F049DF80B00C30903EBFE +S1131B7044019DF80D404A1CA009431E02FA03F2D9 +S1131B803C462A6047E09DF80B30C0F3840103F023 +S1131B9003025B09481C03EBC2014A1C42432A604E +S1131BA039E0224B186810701AE0092000E00A207E +S1131BB00021FFF7F1FC00287FF464AF28461021D0 +S1131BC021E03A200021FFF7E7FC00287FF45AAF18 +S1131BD00446FF20FFF798FC28550134042CF8D163 +S1131BE0002418E011490A6854077FF54BAF8D2093 +S1131BF00021FFF7D1FC00287FF444AFFF20FFF75A +S1131C0083FC28464021FFF726FDD0F1010438BFAC +S1131C10002400E00424FFF79BFC02E0042400E01D +S1131C200324204605B0F0BD00000020040000207D +S1131C30004870470000AA4238B51F48FEF7AEFCC2 +S1131C401D48FEF763FC1D48FEF7A8FC1C480C2148 +S1131C50FEF78AFF1B487F21FFF7ECFB00211948A0 +S1131C60FFF704FC01461748FFF714FCFEF77CFD60 +S1131C7001461448FFF7F6FA12481621FFF708FB4D +S1131C8001211048FFF720FC044600F01BFB00F57F +S1131C909C5000F10805630708D401210948FFF7A7 +S1131CA013FC044600F00EFBA842F4D30548BDE83B +S1131CB03840FFF747BB00BF005010202000002031 +S1131CC000500240008004401FB500200823272153 +S1131CD08DF80900452069228DF808308DF80A1026 +S1131CE05B238DF80D0001A968468DF80B208DF853 +S1131CF00C30FFF733F8009A501C12D0019B591C8A +S1131D000FD0110A100C8DF808208DF80B301A0A28 +S1131D101B0C8DF809108DF80A008DF80C208DF835 +S1131D200D300C4802A9FFF7DFFA0B499DF80800B3 +S1131D309DF809209DF80A3008704A708B709DF850 +S1131D400B009DF80C209DF80D30C8700A714B7182 +S1131D5005B000BD008004402216002010B500210B +S1131D600948FFF783FB044621460748FFF792FB27 +S1131D7014F0010007D00448044940F24262BDE86F +S1131D801040FFF7FFBA10BD00800440CA0F0020C6 +S1131D90024B034803491A88FFF71EBBC00F0020FB +S1131DA000800440CA0F002000B589B000216846B5 +S1131DB0202203F053FD0848694602F01DFC40B997 +S1131DC0009838B19DF8080080F01001C1F30010AC +S1131DD000E0002009B000BD775B000000487047B8 +S1131DE0775B000010B5074C0023204606490A2201 +S1131DF084F8243202F0DAF810B9012084F82402BD +S1131E0010BD00BF08000020925B000008B5084820 +S1131E1090F82432012B01D102F049FB0548FFF769 +S1131E20C9F80128FAD00448BDE8084002F008BC0B +S1131E300800002000C00040775B0000034890F8D1 +S1131E402432012B01D102F032BB7047080000207C +S1131E5038B50F4C054694F82432012B0AD121469B +S1131E6002F08AFC002805DA002084F824022046C7 +S1131E7002F01DFB6C1E14F8011F41B10548FFF769 +S1131E8083F80448FFF75AF80028FAD0F3E738BD7E +S1131E900800002000C0004008B50848FEF7B4FB65 +S1131EA00748FEF77BFB4FF040200321FEF7AAFE14 +S1131EB000F0CCFA00F0D9FAFCE700BF8003C001BF +S1131EC00100002001483D2100F082BA9F5B000020 +S1131ED008B500F0C8F978B100F010FB00F0DEF9A5 +S1131EE000F0B8F9054B20F0604020F07F01196044 +S1131EF000F0B0F94268904708BD00BF08ED00E06B +S1131F00F8B505460E4617460024A3B29F4205D0F5 +S1131F10A05D605500F029FB0134F6E7F8BDFEF73B +S1131F202EB9000070B500240646254600F01DFBBE +S1131F30094BE258964209D3191948681218964277 +S1131F4004D20C2101FB0535287A70BD0C3401350F +S1131F50C02CEBD1FF2070BD245C00002DE9F341BF +S1131F6005460068FFF7DEFFFF2801D100201AE0D4 +S1131F7000242B1958682F6802AE46F8040D04EBB0 +S1131F80070800F0F2FA304641460422FEF77CFED0 +S1131F900028EBD1E25901998A42E7D10434B4F51F +S1131FA0007FE6D10120BDE8FC81000038B5104B6C +S1131FB0044698420D4606D0B1F5004F05D0FFF710 +S1131FC0CDFF18B910E00B4C00E01C46EB050BD11B +S1131FD02068A84209D0204640F8045B29464FF403 +S1131FE00072FFF78DFF00E00024204638BD00BFDB +S1131FF030020020340400202DE9F8439946036898 +S113200021F4FF75013304460E46904625F0010580 +S113201006D140F8045B29464FF40072FFF770FFC5 +S11320202068A84208D020462946FFF7BFFF04468F +S113203010B90020BDE8F88321684746761AA21932 +S1132040161D00F092FA231DF01AB0F5007F08D394 +S1132050204605F50071FFF7A9FF04460028E8D0E3 +S1132060061D17F8011B08EB0902974206F8011B2D +S1132070E7D10120BDE8F883034A04484FF0FF3359 +S113208013600360704700BF340400203002002056 +S113209070B504460D461646FFF744FFFF2815D0D9 +S11320A0601E4019FFF73EFFFF280FD024F4FF7392 +S11320B023F00101B1F5004F0CBF05480548214646 +S11320C032462B46BDE87040FFF796BF002070BD36 +S11320D03002002034040020F8B505460E46FFF710 +S11320E021FF0446681E8019FFF71CFFFF2C0546DC +S11320F04DD0FF284BD0844249D8032C47D913280C +S113210045D8002600F031FA224B0C2202FB06319E +S11321100F7AA74201D10C6804E00136102EF1D1E8 +S11321204FF0FF34002700F020FA1A4A0C2000FB7D +S11321300723197AA94201D11F6804E00137102F3F +S1132140F1D14FF0FF37002600F00FFA114A0C20AE +S113215000FB0623197AA94201D15D6803E0013628 +S1132160102EF1D100253F1B7819C0F38F270025CD +S1132170BD420AD200F0F9F92046FEF75DFD04F5F0 +S1132180806420B96A1C95B2F2E70120F8BD0020F2 +S1132190F8BD00BF245C00000E4B07B51A6801327D +S11321A016D058689968DA680918881819695A693C +S11321B0401881189869DB690A18D118484202AAA4 +S11321C042F8040D042148F2F000FFF761FF00E03B +S11321D001200EBD3002002048F204034FF40041F8 +S11321E00A68186848F2080319688018421848F207 +S11321F00C000368D11848F21002106848F2140366 +S11322001A680918881848F218010B68C21848F2AD +S1132210F00001685318D3F1010038BF0020704763 +S11322200A4808B50368013305D1094801684B1C05 +S113223006D1012008BDFFF791FE0028F5D108BDA5 +S1132240FFF78CFE003018BF012008BD30020020CB +S1132250340400204FF400407047FFF70DBFFFF730 +S113226017BFFFF739BFFFF7B7BF08B5FFF794FFF4 +S113227018B1BDE80840FFF7D3BF08BD054B0022E5 +S11322804CF24F3105201A6059609A601860024B75 +S11322901A60704710E000E038060020014B00226D +S11322A01A60704710E000E0044B1868C30303D5BC +S11322B003490A68531C0B60704700BF10E000E03C +S11322C03806002008B5FFF7EFFF014B186808BD7A +S11322D03806002010B50748FEF760F9FEF744FA07 +S11322E0014605484FF461426023BDE81040FEF703 +S11322F0BDBD00BF0100001000C00040402970B502 +S113230006460D4603D91648572100F061F81548D2 +S11323102946FEF739FE30B11248FEF70FFE30B9F8 +S113232000F023F9F8E70E485B2100F051F800248F +S1132330A3B2AB4213D200F018F90A48315DFEF79C +S113234023FE30B10748FEF7F9FD30B900F00DF96E +S1132350F8E70348642100F03BF80134E8E770BD76 +S1132360E45C000000C00040F8B5154C0646257832 +S11323706DB91448FEF7F4FD421C01D10020F8BDEC +S11323801149124B0870012020701D70F6E70F4DA3 +S11323900C482F78FEF7E4FD0137431CEED00A49C0 +S11323A02B78C8550A78581CC3B29A422B70E5D1D1 +S11323B030460131FFF7A4FD002222700120F8BD50 +S11323C07D06002000C000403C0600207E06002060 +S11323D008B5034B18600348016000F0C6F8FCE739 +S11323E0800600208406002010B500F0BBF8012808 +S11323F017D000F063FAA0B10A4C2378012B10D156 +S1132400FFF760FF08490A6802F2EE23984208D3F6 +S11324100020207000F05CFA18B9BDE81040FFF706 +S113242057BD10BD880600208C06002008B5054B5A +S113243001221A70FFF746FF03490860BDE808400F +S1132440FFF7D2BF880600208C06002008B500F0F4 +S11324508BF8FFF713FFFFF700FF00F019FA00F005 +S113246011F8BDE80840FFF7E1BF08B500F07DF8BA +S1132470FFF71AFF00F016FB00F022F8BDE8084051 +S1132480FFF7B2BF37B50C4CFF2300258DF804309D +S11324908DF8055000F074F8FFF71CFF257003F069 +S11324A0E7F8064903200A782070012A02D101A81E +S11324B000F084F83EBD00BF01000020900600201B +S11324C008B50C48FFF750FF012805D10A4B00223C +S11324D008481A7000F072F8064803F015F901284C +S11324E007D10549032008700248BDE8084000F000 +S11324F065B808BD91060020010000207047000067 +S11325000A4B70B51A7806460C461D4612B9C9B274 +S1132510FFF7F4FE2878032803D13046E1B203F034 +S1132520D7F8BDE8704000F041B800BF01000020BA +S1132530034B1878411E01298CBF402000207047AE +S113254001000020034B1878411E01298CBF402054 +S11325500020704701000020014B01221A707047CF +S11325609006002000F01AB870477047034BFE2213 +S113257018710220DA70A3F844007047D4060020D2 +S1132580054B00221A709A6483F84320A3F8442070 +S11325909A705A70704700BFD4060020024B187816 +S11325A0003018BF01207047D4060020024B0022DF +S11325B083F84320704700BFD4060020F8B506789E +S11325C00546FF2E824C19D100F078F908B9102085 +S11325D0E4E0002301251020637063712570E67028 +S11325E02071FFF7A5FFA071FFF7ACFFE071FFF7C3 +S11325F0A9FF010A21726572A57281E02778012F73 +S113260040F0E480F32E57D01FD8CF2E00F0BC80CA +S113261006D8C92E00F08580CC2E40F0BE80BAE0EA +S1132620D12E00F0AB80C0F08E80D22E40F0B58069 +S11326300025FF21E17025716571FFF779FFE571D0 +S1132640A07125726572072229E0FA2E4DD00AD8AE +S1132650F52E11D026D3F62E40F09F80FF21E17095 +S11326604268A26494E0FD2E4CD0FE2E55D0FC2E80 +S113267040F09380002091E0FFF75AFF6A7890427F +S113268001DC22208AE0A16C201DFFF739FCFF2029 +S1132690E070A26C69788B18A3646878421CA4F873 +S11326A044207DE0FFF744FF6B789842E9DD6968D8 +S11326B0201DA1646A78E8E7FF22E270A36C4468F5 +S11326C000221C19A34204D013F8010B1118CAB23A +S11326D0F8E73F4B0021C3F80720012008221871B6 +S11326E059719971A3F844205AE03A4B0020FF2213 +S11326F00721E270A36420716071A071C4F807100F +S11327000822CCE761780020FF23E3702071617117 +S1132710A071E07120720622C1E70021217061706E +S113272034E0A66CFFF704FF6A1C411E3046FFF735 +S113273096FD80B3FF23A56CE370FFF7F9FE013D1E +S11327402818A06424E0FFF7F3FE6B780138984260 +S113275097DDFF21E170A4F84470697819B9FFF797 +S113276084FDE8B917E01A4CAA1CA06CFFF777FDAA +S113277088B16A78A06C1318A36411E0A06C69682E +S1132780FFF76FFD10B906E0FFF7C9FBFF22E27007 +S1132790A4F8447004E0312000E02020FFF7E6FEB6 +S11327A00B4C94F84320012A02D11020FFF7DEFEDF +S11327B0B4F8441006480BB2002B07DD012280F860 +S11327C043200330BDE8F840FFF79ABEF8BD00BFD0 +S11327D0D40600205B5D000070B5002506462C463B +S11327E0705D03F025F8C0B2A0F13003DAB2162A06 +S11327F010D8A0F13A0106290CD9092A84BFA0F106 +S11328003702D2B2013502EB0414022D04F0FF04A6 +S113281001D0E5E70024204670BD000010B5034652 +S11328200B4819460A24B1FBF4F102460130002991 +S1132830F8D102F801190A24B3FBF4F104FB1133B3 +S11328403033104602F801390B460029F3D110BD8C +S11328502107002038B50309092B05460C46184604 +S113286001D9373003E0303002F0E2FFC0B220700B +S113287005F00F00092801D9373003E0303002F0A9 +S1132880D7FFC0B260700020A070204638BD0000A1 +S113289008B5074B00200749187001F077FB28B1F1 +S11328A005487C21BDE80840FFF792BD08BD00BF84 +S11328B0600700206C070020635D0000034B18785C +S11328C0D0F1010038BF0020704700BF600700202E +S11328D010B5FFF747FE012801D1002010BD054CBB +S11328E02378002BF9D1FFF75FFA0128F5D1207086 +S11328F010BD00BF6007002010B50446007802F048 +S113290097FF532801D0032010BD607802F08AFF9E +S11329100028F8D06078312806D0322806D0332831 +S113292014BF0320022010BD002010BD012010BDE3 +S1132930F8B505460230FFF74FFF04350446074655 +S113294000262846FFF748FF013EB6B2BB1999B2EC +S1132950201802350129C4B2F3D82846FFF73CFFFA +S1132960E243D4B2231A58425841F8BD2DE9F0414C +S1132970044616460D4601B120B9494840F23621B5 +S1132980FFF726FD2046FFF7B7FF0328074600F0B0 +S113299082802046FFF7CCFF002879D0012F23D076 +S11329A002D3022F77D146E0A01CFFF715FF804623 +S11329B0201DFFF711FF07022F60A01DFFF70CFF7A +S11329C038182860A8F103050834ADB2002E63D08E +S11329D0002729B28F425FDA2046FFF7FDFEF0554B +S11329E001370234BFB2F4E7A01CFFF7F5FE8046BE +S11329F0201DFFF7F1FE07042F60A01DFFF7ECFE7A +S1132A0007EB00272F6004F10800FFF7E5FEA8F1AB +S1132A1004023B182B600A3495B2002E3CD00027E8 +S1132A2028B2874238DA2046FFF7D6FE791CF055E3 +S1132A3002348FB2F4E7A01CFFF7CEFE8046201DBF +S1132A40FFF7CAFE07062F60A01DFFF7C5FE07EBC0 +S1132A5000472F6004F10800FFF7BEFE07EB0027D4 +S1132A602F6004F10A00FFF7B7FEA8F1050138183A +S1132A7028600C348DB27EB100272BB29F420BDA52 +S1132A802046FFF7A9FE7A1CF055023497B2F4E70A +S1132A904FF6FF7500E0002528B2BDE8F08100BFC5 +S1132AA0635D00002DE9F041A84D2C78002C00F066 +S1132AB09181012C26D1FFF795F9A548FFF7C8F9B4 +S1132AC0A448FFF7C5F9FFF789F922460146A24851 +S1132AD001F06CFA064638B1A048FFF7B9F9204670 +S1132AE0BDE8F041FFF7AAB99D48FFF7B1F99D4849 +S1132AF0FFF7AEF99C48FFF7ABF99C480223066048 +S1132B004660BEE0022C40F09180994E4FF48071F3 +S1132B10984806F50D7201F0F3FD96F93A12002972 +S1132B2001DA8E48A3E068B19248002200F5C07132 +S1132B30FFF71CFF421C074604D18848FFF788F9B9 +S1132B40032097E03CB2002C12DD884D894B696864 +S1132B502A4621B9D3F8802185E8140008E0D3F887 +S1132B60805110683FB28542394438BF15605160C6 +S1132B707F4DD5F83C22D5F840329A4240F02A8164 +S1132B8005F50D70002101F099FC70B17348FFF751 +S1132B905FF90420FFF752F905F50D7001F087FC89 +S1132BA06A4A00211170BDE8F081704E6C48FFF74D +S1132BB04FF97148FFF74CF97068FFF72FFE6F4823 +S1132BC0FFF746F96E48FFF743F9F0786B49FFF7D2 +S1132BD041FEB0786B49FFF73DFE70786A49FFF714 +S1132BE039FE6A493078FFF735FE6448FFF730F95B +S1132BF06748FFF72DF996E80300FFF732FB534CC3 +S1132C00064660B95548FFF723F90520FFF716F982 +S1132C1005F50D7001F04BFC2670BDE8F0815048BD +S1132C20FFF716F903202070BDE8F081032C40F073 +S1132C30D1804F4E4F484FF4807106F50D7201F06C +S1132C405FFD96F93A32002B04DA5248FFF700F997 +S1132C5002200FE0C0B1474800F5C07100F5807252 +S1132C60FFF784FEB0F1FF3F80460DD14A48FFF7DD +S1132C70EFF82046FFF7E2F806F50D7001F017FCB7 +S1132C8000232B70BDE8F0810FFA88F5002D3FDD9D +S1132C904248FFF7DDF82846364CFFF7BFFD3748BA +S1132CA0FFF7D6F83E48FFF7D3F894F88301334989 +S1132CB0FFF7D0FD94F882013249FFF7CBFD94F879 +S1132CC081013149FFF7C6FD304994F88001FFF7CF +S1132CD0C1FD2A48FFF7BCF82D48FFF7B9F8D4F82E +S1132CE0800104F580722946FFF7B9FA044660B9F9 +S1132CF01A48FFF7ADF80620FFF7A0F8164801F0D0 +S1132D00D6FB12480470BDE8F0811548FFF7A0F81F +S1132D10174CD4F83C22D4F8400282425AD12148BC +S1132D20FFF796F8FFF7A1FA054600283CD10B48B7 +S1132D30FFF78EF80720FFF781F804F50D7001F016 +S1132D40B6FB024A1570BDE8F08100BF60070020A1 +S1132D50CE5D0000F15D0000A0090020C95E000006 +S1132D60165E00001B5E00003F5E0000640700204A +S1132D706C070020C40B00206D5E000020070020BB +S1132D80765E00002207002024070020260700208A +S1132D90695E00008F5E0000B05E0000D15E00003E +S1132DA0DE5E0000F55E00000B48FFF751F80B48AB +S1132DB0FFF74EF804F50D7001F079FB0848FFF7B2 +S1132DC047F8084B00211970FFF720F8BDE8F041DF +S1132DD0FFF77EB8BDE8F081165E0000115F0000C9 +S1132DE0295F00006007002010B50023934203D040 +S1132DF0CC5CC4540133F9E710BD002310B504467C +S1132E0018464208E15C42EAC010013342180B2B19 +S1132E1002F0FF00F5D110BD08B580B1036873B1AD +S1132E201A7862B1D9888088814208D15878FEF72F +S1132E3053FD10F0010F0CBF0020032008BD092032 +S1132E4008BDF8B503690C4601F10902002B4DD009 +S1132E50436911461F7B00255E5D0A46202E13D070 +S1132E60052E14BF3246E52207F00806F6B22EB14D +S1132E70A2F14106192E01D82032D2B2013501F84F +S1132E80012B082D0A46E7D11E7A202E17D02E22B8 +S1132E9001F8012B08269D5D0A46202D0FD007F06E +S1132EA01002D2B22AB1A5F14102192A01D8203563 +S1132EB0EDB2013601F8015B0B2E0A46EBD1D97A4B +S1132EC021729E7FDD7F310441EA05661D7F597FB3 +S1132ED02E4346EA012626605D7E197E41EA0526D8 +S1132EE0A680DD7D9B7D43EA0521E18000251570E8 +S1132EF0A669E6B1E269D2B103690BB9002514E011 +S1132F00018C4FF6FF729142F8D0C76937F815006B +S1132F1058B1002101F040FC0028EFD0E369591EAC +S1132F208D42EBD270550135F0E700207055F8BDA5 +S1132F30CA7E8B7E032843EA022305D1487D097D9E +S1132F4041EA002243EA02431846704710B504469A +S1132F500A46407804F134010123FEF7C5FC80BB26 +S1132F6094F8332294F8323243EA0221174B0AB21E +S1132F709A4228D194F86C2094F86D10130494F8B4 +S1132F806A2043EA016194F86B30114341EA03215A +S1132F900F4B21F07F429A4216D094F8880094F89F +S1132FA08910020494F8860042EA016194F88720AB +S1132FB0014341EA022121F07F40C01A18BF0120D9 +S1132FC010BD032010BD022010BD00BF55AAFFFF95 +S1132FD0464154002DE9F041154602681378303B10 +S1132FE0092B05D854783A2C02D10232026000E051 +S1132FF0002300200860002B40F05A81B54C24685F +S1133000002C00F058810C60217881B16078FEF7C3 +S113301063FCC1070BD4002D00F0508100F00401C3 +S1133020C8B2002814BF0A200020BDE8F0810020A7 +S113303020706070FEF73CFBC20700F142812DB1A5 +S113304000F00403DAB2002A40F03E810021204659 +S1133050FFF77CFF012818D194F8F60110B90D2070 +S1133060BDE8F08194F8FC5194F8FD112B0494F818 +S1133070FA0143EA016294F8FB11024342EA012592 +S113308020462946FFF762FF00E00025032800F0F0 +S11330901E810028E3D194F8402094F83F3043EA9D +S11330A00220B0F5007FDAD194F84B6094F84A100E +S11330B051EA06210DD194F85A3094F85B2094F823 +S11330C05810180440EA026694F859200E4346EA60 +S11330D0022194F84460E161731E012BE670BED8AE +S11330E094F84120A270002AB9D0501E1042B6D1E3 +S11330F094F8460094F8453043EA002398B21B073D +S11331002081ACD194F8487094F8473053EA0723EF +S11331100DD194F8563094F857701B0443EA0763B2 +S113312094F854703B4394F8557043EA072394F899 +S1133130438094F8427057EA082890D006FB01FCBB +S113314008EB10176744BB4289D3DB1BB3FBF2F3D4 +S1133150002B84D040F6F576B34206D94FF6F572CB +S113316093428CBF0326022600E00126023305EBBE +S113317008027F19032EA36125626262E76213D1FC +S113318000287FF46CAF94F8622094F86300120472 +S113319042EA006294F86000024394F8610042EA53 +S11331A00022A26298000FE000283FF458AF0CEB15 +S11331B00200022EA06201D1580005E003225A4306 +S11331C003F0010303EB520000F2FF13B1EB532FA2 +S11331D0FFF445AF00204FF0FF31032E2161E06082 +S11331E05AD194F8652094F86430607143EA02215E +S11331F06A186261607804F134010123FEF774FBFC +S1133200002849D194F8330294F8322242EA002388 +S1133210314819B281423FD194F8362094F83730BE +S1133220110441EA036094F8343094F835201843CB +S113323040EA0221294881422ED194F81A2294F8B6 +S11332401B32110441EA036094F8183294F81922ED +S1133250184340EA0221224881421DD194F82232C7 +S113326094F82322190441EA026094F8202294F885 +S11332702132104394F81E2240EA032194F81F02DD +S11332801304E16043EA006194F81C0294F81D22DF +S1133290014341EA02232361124926700888421C33 +S11332A093B200200B80E38020632071BDE8F0819D +S11332B00B20BDE8F0810C20BDE8F0812846BDE874 +S11332C0F0810320BDE8F0810A20BDE8F0810120EF +S11332D0BDE8F0814C0F002055AAFFFF5252614116 +S11332E072724161480F0020F8B50446007908B3B2 +S11332F0256B04F13407607839462A460123FEF72A +S113330037FBB0B9636A20719D4201D20020F8BD39 +S1133310E26998188542F9D2E678012EF6D9E16976 +S113332060786D182A4639460123FEF721FB013ED9 +S1133330F3E70120F8BD38B50446FFF7D5FF03468F +S1133340002B50D12278032A45D16079002842D03D +S1133350236304F134010025CD540133B3F5007F18 +S1133360F9D1522384F8343084F835306123AA200B +S113337084F8363084F81B32236984F833027220CF +S1133380552284F8180284F81902180C84F83222A1 +S113339084F81E024122E06884F8372084F81A2257 +S11333A084F81C32C3F307221B0E84F81D2284F810 +S11333B01F32C0F30722030C84F82002000E84F8A5 +S11333C0212284F8223284F823026269607801237E +S11333D0FEF7CEFA6571002160780A46FEF72AFBF3 +S11333E0003018BF012038BD38B5036B044699423C +S11333F00D460CD0FFF778FF58B9607804F134011A +S11334002A460123FEF770FA18B9256338BD002057 +S113341038BD012038BD836902399A1E914204D215 +S11334208278C06A02FB01007047002070470129BE +S1133430F8B504460D465DD9836999425AD201789C +S1133440022928D0032937D0012950D1426A05EB3B +S1133450550602EB5621FFF7C7FF002847D1636AE0 +S1133460F005013604EBD05703EB5621204697F8BC +S11334703470FFF7B9FF002839D1F60504EBD654B0 +S113348094F83410EB0747EA012201D51009F8BD7E +S11334901005000DF8BD426A02EB1521FFF7A4FFE9 +S11334A028BB2D06ED0D6119641991F8343094F898 +S11334B0350043EA0020F8BD436A03EBD511FFF75A +S11334C093FFA0B96D06ED0D611991F8370091F8DD +S11334D03620343103064978641943EA024294F8E9 +S11334E0343042EA0120184320F07040F8BD4FF018 +S11334F0FF30F8BD0120F8BD70B504460D46E180EB +S11335008168012901D1022070BD03689A69914242 +S1133510F9D271B91878032801D1996A49B919897E +S11335200020A942E060EED99B6A03EB15122261E8 +S113353019E09E783601B5420ED32068FFF777FF75 +S1133540421C014618D00128DDD923689A699042AB +S1133550D9D2AD1BADB2EEE7E1602068FFF75BFFA7 +S113356000EB15112161206805F00F0500EB4511F2 +S113357034316161002070BD012070BD0129F8B5AE +S113358004460D46164672D9836999426FD2017872 +S113359002293AD0032949D0012964D1426A05EBB2 +S11335A0550702EB5721FFF71FFF00285CD1F805F0 +S11335B0C20D15F00105F3B207D0A11891F834003B +S11335C000F00F0141EA0313DBB2616A0120A21883 +S11335D00137207182F83430204601EB5721FFF780 +S11335E003FF002840D1FF05FA0D15B1C6F30716F5 +S11335F007E0A31893F83410C6F3032621F00F074D +S11336003E43A71887F834602EE0416A01EB152188 +S1133610FFF7EAFE40BB2D06EB0DE21882F834609A +S1133620C6F30726154682F835601DE0426A02EBB0 +S1133630D511FFF7D9FEB8B96D06EB0DE11891F875 +S113364037200D46130603F070421643C6F30723D2 +S1133650320C81F83460360E81F8353081F836202A +S113366081F8376000E0022001212171F8BD0220B9 +S1133670F8BDF8B505460F4631B9C6686EB1806924 +S1133680864228BF012609E0FFF7D1FE01283BD975 +S1133690AB69984239D33E4600E001263446A96915 +S11336A001348C4204D3012E01D80020F8BD022439 +S11336B028462146FFF7BBFE48B1431C02D14FF018 +S11336C0FF30F8BD01281FD0B442E8D1EDE7284609 +S11336D021466FF07042FFF751FF98B947B92A6944 +S11336E0EC60511C0CD0531E01202B61687107E063 +S11336F0284639462246FFF741FF0028EFD001E073 +S11337002046F8BD0128DAD00120F8BD2DE9F843A0 +S1133710C6880446701C86B20F4616B90420BDE85C +S1133720F8832369002BF9D016F00F085AD1591CDD +S11337302161E168206819B90289B242EED951E0E9 +S11337408278531E13EA16124CD1FFF770FE01283B +S1133750054602D80220BDE8F883411C02D10120AD +S1133760BDE8F883206881698D4235D3002FD5D018 +S1133770E168FFF77EFF054600283CD00128E9D028 +S1133780421CECD02068FFF7AFFD0028E7D1226887 +S11337903432002717540130B0F5007FF9D1D4F842 +S11337A0009029464846FFF736FEC9F830002068E5 +S11337B08378BB420DD9012202712068FFF794FD82 +S11337C00028CCD120680137036BFFB2591C016378 +S11337D0EDE7016BCF1B0763E56020682946FFF71F +S11337E01AFE20612068E68000EB481334336361DD +S11337F00020BDE8F8830720BDE8F8832DE9F84FE1 +S11338004FF0FF0906464C4630683169FFF7ECFD7E +S11338108046002840F0838075692F78002F78D087 +S1133820EA7AE52F02F03F0369D002F00800C1B242 +S113383011B10F2B63D101E00F2B4AD1D6F81CB084 +S1133840BBF1000F5CD007F04000C1B231B1F48885 +S113385095F80D9007F0BF07348401E0A7424ED1DC +S11338606B7B4B454BD12A780D2122F04000441E3E +S11338704C434FF001084FF0000A2A4B1AF803108A +S11338806A1850786B5C43EA0020B8F1000F0BD043 +S113389000F09EFFFE2C804631D83BF8140000F067 +S11338A097FF0134804502E04FF6FF71884226D12C +S11338B00AF1010ABAF10D0FDFD12A7802F04000B3 +S11338C0C3B24BB3B8F1000F26D03BF814401CB37D +S11338D015E024B92846FFF790FA81451FD04FF62A +S11338E0FF723284B269D37A13F0010307D1E85C22 +S11338F0D15C0133884202D10B2BF8D10FE0FF24B5 +S113390030460021FFF702FF804600283FF47CAFD9 +S113391005E04FF0040802E0791ECCB2F0E740461F +S1133920BDE8F88FE25F00002DE9F74F0B780646FB +S11339302F2B894601D05C2B01D109F10109002408 +S1133940B46099F800001F2800F2948030462146A4 +S1133950FFF7D2FD74611FE15C2900F08B80D6F87B +S11339601CB00025785D6C1C1F2800F28B8007EBCF +S113397004091F2894BF042400240BEB4500002DE8 +S113398000F0048130F8021D202900F098802E29CF +S113399000F095800023B2690BEB45072BF8153036 +S11339A02020D05401330B2BFAD14FF000083BF800 +S11339B01810202900F085802E2900F08280B8F1AB +S11339C0000F01D044F003043B4633F8027D2E2F50 +S11339D001D0013DF9D100224FF0080A17463BF807 +S11339E0183008F10108002B6ED1B3691978E52964 +S11339F001D105201870BAF1080F01D1BA00D7B26D +S1133A0007F00C030C2B00F0A88007F00301032936 +S1133A1000F0A38004F00200C2B24AB907F0030721 +S1133A20012F08BF44F01004042B08BF44F008041D +S1133A30B3693046DC720021FFF75EFD10B93046F1 +S1133A40FFF7DCFEB169CA7A002840F0898002F0F1 +S1133A500403D9B2002940F09F807169C87A00F04C +S1133A601002D3B2002B00F0858034682078FFF771 +S1133A705FFAB0604F46397809F101092F297FF4C4 +S1133A806BAFF7E72F283FF472AF5C283FF46FAFBA +S1133A90B4F5807F7AD0012100F07EFE002875D035 +S1133AA07F2806D83D4A12F8013F13B18342FAD168 +S1133AB06CE00BEB440525F8020C254652E7013D6A +S1133AC05DE708F1010872E7202B03D02E2B04D107 +S1133AD0A8455DD044F0030481E7524502D2A845CD +S1133AE015D155E0BAF10B0F04D144F003044FF0A3 +S1133AF00B0A7AE7A84503D044F003043FF675AFF8 +S1133B00BF00FFB2A8464FF00B0A082267E77F2BDD +S1133B100ED918460021019200F03EFE019A034698 +S1133B2018B11F48C11811F8803C44F002042BB1AD +S1133B301C4810F8011F29B19942FAD144F003043A +S1133B405F2306E0A3F1410081B2192914D847F09C +S1133B500207B0698354013241E744F0020459E793 +S1133B60042819D102F00401C8B2002814BF0420AB +S1133B70052011E005200FE0A3F1610081B21929AD +S1133B80E7D8203B47F001079BB2E2E7062003E0B9 +S1133B90BAF10B0FB4D1A8E7BDE8FE8F515F000066 +S1133BA0625F00005A5F000038B5018CC5884FF68B +S1133BB0FF73994208BF29460446FFF79DFC01465E +S1133BC0B8B921692068FFF70FFC014670B9606934 +S1133BD0E5220270236801201871E288AA4208D203 +S1133BE02046FFF793FD01460028EAD0042908BFC8 +S1133BF00221084638BD00002DE9F041FF270446A4 +S1133C003D4604262169002967D02068FFF7ECFBB4 +S1133C100646002862D163691A78002A64D0E52A2E +S1133C20D97A51D02E2A4FD001F03F0008284BD02A +S1133C300F283FD102F04006F1B229B1E5885F7B3D +S1133C4002F0BF02258401E0AA423DD1587BB8426C +S1133C503AD119780D2001F03F05691EE669414308 +S1133C604FF0010E0020234D10F805C003EB0C05A6 +S1133C7095F8018013F80C5045EA0825BEF1000FB1 +S1133C8006D0FE2920D826F81150AE46013103E0B3 +S1133C904FF6FF7C654517D101300D28E3D11B7821 +S1133CA003F04005E8B2E0B1FE290DD8002326F860 +S1133CB0113016E025B91846FFF79FF8874215D052 +S1133CC04FF6FF73238411E0FF2520460021FFF700 +S1133CD01DFD0646002895D000E03EB1002121617B +S1133CE004E0013AD5B2F0E70426F7E73046BDE830 +S1133CF0F08100BFE25F0000012970B504460D4663 +S1133D0022D9836999421FD2A069854205D22046EF +S1133D102946FFF78CFB064608B9002070BD012830 +S1133D2012D0431C0ED0204629460022FFF726FC61 +S1133D3058B92169481C03D04A1C012522616571C8 +S1133D403546E1E7012070BD022070BD73B51C4605 +S1133D5016460B220546FFF747F8052C0AD9B21E72 +S1133D6032F8020F630843EAC434538821188CB232 +S1133D70002BF5D1072304F00F0000F13002392A9B +S1133D8088BF00F137020DF80320013B2409F2D16A +S1133D9002A9C8187E2200F8082C9C4204D0295D90 +S1133DA0202901D00134F8E7072B05D802AAD1183D +S1133DB011F8080C013300E0202028550134072CA9 +S1133DC0F2D97CBD2DE9FF418669D0F81C800C2214 +S1133DD00446314601A8FFF707F89DF80F30DA07CB +S1133DE022D50020F0720127E061304601A9424645 +S1133DF03B46FFF7ABFF20460021FFF77DFB05465E +S1133E0050B92046FFF7FAFC054628B90137BFB27E +S1133E10642FEAD10725B2E0042D40F0B0809DF86C +S1133E200F10F172C4F81C809DF80F2002F00205F7 +S1133E30EBB20BB901270CE0002038F8107017B171 +S1133E40471CB8B2F9E700F119010D2291FBF2F514 +S1133E50AFB220460021FFF74FFB0546002840F093 +S1133E608E80064620682169FFF7BEFA05460028C1 +S1133E7040F0858063691878E52800D018B90136C8 +S1133E80BE4201D108E02E4620460121FFF73EFC48 +S1133E9005460028E6D072E0013EB6B2002E53D0AB +S1133EA0E18820468A1B91B2FFF726FB05460028CD +S1133EB065D1A069FEF7A1FF074620682169FFF7D5 +S1133EC093FA03460546002859D162690F20F5B2DA +S1133ED0D4F81CE0691ED0720D204143577313734C +S1133EE09376D37618464FF6FF7CDFF89C806345C3 +S1133EF018BF3EF8113010F808C04FEA132802F832 +S1133F000C30944418BF01318CF8018001304FF615 +S1133F10FF7C002B08BF63460D28E4D1634502D023 +S1133F203EF8113013B946F04005EDB21570216822 +S1133F3001220A7120460021FFF7E8FB0546F0B98B +S1133F40013EB6B2002EB8D120682169FFF74CFAC1 +S1133F500546A0B960692B460021C1540133202BCA +S1133F60FAD16069A1690B22FEF73EFFA26960697C +S1133F70D17A012201F018030373206802712846E4 +S1133F8004B0BDE8F08100BFE25F000048B9064A12 +S1133F90136803B1187009B1002008701160002083 +S1133FA070470B20704700BF4C0F00202DE9F047ED +S1133FB08EB0019116460546002800F09880002333 +S1133FC0036005A901A802F01E02FFF703F880466A +S1133FD0002840F095804C4902A80B900C9105A84C +S1133FE00199FFF7A1FC0A9C18B9002C0CBF06200C +S1133FF0002016F01C0F06F01F0748D048B1042813 +S113400002D105A8FFF7DEFE47F008070A9C48B175 +S113401075E0E17A11F0110F70D106F00403DEB2FD +S1134020002E67D107F00802D0B200283DD0FDF77A +S1134030FFFDC0F30726E673010C0026030EDDF82E +S113404014902174E67226776677A677E677A073D4 +S1134050637499F800002146FEF76AFF0122A676F0 +S1134060E6762675667589F804200646E8B1484662 +S11340703146D9F830A0FFF73FFE00283FD105981C +S1134080013EC6605146FFF7AFF970B137E0002832 +S113409035D1E37A03F01002D0B200282CD106F017 +S11340A00206F6B20EB1D90728D407F00800C1B24F +S11340B009B147F02007059E2146336B2C62EB6162 +S11340C0AF713078FEF734FF2861A07FE27F0104EE +S11340D041EA0263227F607F1343F28843EA0021AE +S11340E00023E960AB60AB612E60AA8008E04FF06A +S11340F0090805E0082002E0042000E007208046CB +S113410040460EB0BDE8F087480D00202DE9F74F7A +S11341109A460023CAF80030044688461746FEF73C +S11341207BFE0546002840F0A080A179080600F136 +S11341309980C90740F19880E068A268861AB7425E +S113414038BF3E46002E00F09080A168CB0570D1A8 +S1134150206883785A1E02EA512313F0FF030CD11E +S113416009B9206904E061690193FFF760F9019BD3 +S113417001280BD9421C55D06061D4F800B06169A4 +S113418058460193FFF747F9019B20B9A07960F0E5 +S11341907F03A37166E05FEA562900EB030724D08E +S11341A09BF8022009EB0300904288BFC3EB02098D +S11341B041469BF801003A465FFA89F3FDF794FB08 +S11341C0A17980BB01F04001CBB25BB1A269D71BDE +S11341D04F4507D208EB472004F124014FF4007245 +S11341E0FEF702FE4FEA492731E0A269BA421FD026 +S11341F0A07900F04001CBB25BB104F124019BF83B +S113420001000123FDF7B4FBA17960B921F040025C +S1134210A271214651F8240B3A4640780123FDF758 +S113422063FB28B1A17961F07F05A57101251CE02C +S1134230A761A7684046F905CB0DC3F50077BE42D8 +S113424038BF3746E11824313A46FEF7CDFDA06861 +S1134250DAF80030C119DA19A160B844CAF80020AC +S1134260F61B6FE7022500E007252846BDE8FE8F10 +S11342702DE9F74F99460023C9F8003004468846D3 +S11342801746FEF7C9FD0546002840F0B780A0791F +S1134290010657D400F00201CAB2002A00F0AD8032 +S11342A0E368DF4228BF002730E05FEA572B00EBCA +S11342B00A0674D098780BEB0A01814288BFCAEBD6 +S11342C0000B4146587832465FFA8BF3FDF750FBFA +S11342D0002873D1A3699E1B5E450BD204F1240010 +S11342E04FF4007208EB4621FEF77EFDA27922F01E +S11342F04000A0714FEA4B26A168D9F800208B1921 +S11343009019A360B044C9F80000BF1B0FB3A168A3 +S1134310CA055AD1206890F802A00AF1FF3202EAD5 +S1134320512313F0FF0A1DD171B9216921B9FFF797 +S1134330A0F90146206161B10129A3790FD163F08D +S11343407F01A171022559E06169FFF792F90146E5 +S1134350F1E7A068E26890424AD9E06048E04A1C6C +S11343602DD06161A07900F04001CAB262B121464A +S113437051F8243BA26958780123FDF7F9FAA3798F +S1134380E8B923F04000A0712268616910460192E7 +S1134390FFF741F8019B002887D1A379CFE7A169F2 +S11343A0B14211D0A068E26890420DD2587804F16D +S11343B0240132460123FDF797FA28B1A37963F06B +S11343C07F05A571012519E0A661A668F305D90D3D +S11343D0C1F500766018B74238BF3E4624303246F5 +S11343E04146FEF701FDA07940F04002A27183E747 +S11343F0A37943F02001A17100E007252846BDE818 +S1134400FE8F70B50446FEF707FD00284ED1A37950 +S113441003F02002D1B2002948D003F04000C3B217 +S11344206BB1214651F8242B01235078A269FDF782 +S11344309FFA002839D1A67926F04001A17120689D +S1134440E169FEF7D1FF0646002E2FD1256AE87AEE +S113445040F02003EB72E2682A77A189080A6877A2 +S1134460E389AB77E27BEA7721690B0C1A0AC1F383 +S11344700720A9762B756A75E876FDF7D9FBA87530 +S1134480030CC0F30721000EE97568762B76AE7431 +S1134490EE74A2792368012022F02001A171187121 +S11344A02068BDE87040FEF746BF012070BD10B51E +S11344B00446FFF7A6FF00B9206010BDF8B5044616 +S11344C00D46FEF7A9FC0646002840F09380A27929 +S11344D0110600F18E80E3689D4205D902F00200C6 +S11344E0C1B2002908BF1D460022A368A2600DB90D +S11344F000254DE0206887787F026BB1013B691E7F +S1134500B1FBF7F1B3FBF7F2914205D378420340D4 +S1134510A360ED1A61690AE0216939B9FFF7A9F8C6 +S1134520012801462DD0431C52D02061616100292D +S1134530DED0BD421CD9A379206803F00202D3B2B5 +S113454023B1FFF796F8014618B910E0FEF76FFFA4 +S11345500146481C3CD0012913D920688269914244 +S11345600FD2A3686161D819A060ED1BE1E73D4655 +S1134570A2685319A360EB05BAD02068FEF74BFF7D +S113458020B9A07960F07F02A27132E000EB5525DA +S1134590A168CB0523D0A269954220D0A07900F070 +S11345A04003D9B259B1214651F8240B0123407874 +S11345B0FDF7DEF9A17960B921F04002A27121462C +S11345C051F8243B2A4658780123FDF78DF928B188 +S11345D0A17961F07F06A67101260BE0A561A168AF +S11345E0E068814206D9A279E16042F02003A37118 +S11345F000E002263046F8BD30B58FB00EAB43F86C +S1134600340D0D46184605A90022FEF7E3FC0446C6 +S113461088B90A4902A80B900C9105A80199FFF7E3 +S113462083F9044638B90A9A22B105A82946FEF747 +S113463008FC00E0062420460FB030BD480D0020E1 +S113464070B598B018AB43F85C0D184606A9012262 +S1134650FEF7C0FC044600284DD1284903A80C905D +S11346600D9106A80199FFF75FF90446002842D18D +S11346700B9E36B1F27A12F0010F0CBF002407240E +S113468000E00624069D31462878FEF751FC0546D5 +S1134690002C30D1F47A04F01003D8B2C8B1012D43 +S11346A013D90FA806A92422FEF79EFB0FA8022106 +S11346B01195FEF721FF0446E8B90FA8FFF79CFA0D +S11346C0044620B1042804D015E0022413E0072492 +S11346D011E006A8FFF768FA044660B925B9069800 +S11346E0FEF729FE044606E006982946FFF704FB78 +S11346F004460028F3D0204618B070BD480D0020B1 +S11347002DE9F34106460F469046054600247B1EDC +S11347109C4211DA01224046694601ABFFF7F6FCE0 +S11347200198012808D19DF800100D29EFD001341B +S11347300A2905F8011BEAD100222A70944214BF09 +S113474030461046BDE8FC810A2837B504460D46BC +S113475002D10D20FFF7F8FF02A901F8084D284601 +S11347606946012201ABFFF783FD0198012814BFBC +S11347704FF0FF3001203EBD70B505460E460024C3 +S1134780285D38B13146FFF7DFFF431C01D0013407 +S1134790F6E70446204670BD7F2816D931B1FF28BC +S11347A012D80A49803831F810007047074A8BB292 +S11347B032F81120824203D001318029F6D10B4610 +S11347C003F18000C0B2704700207047D061000040 +S11347D00023064A32F8131031B1884201D0013364 +S11347E0F7E7034830F81300704700BFF05F00009C +S11347F0D062000010B5013A8A1891420CD20C78AC +S11348004B7803EB04239BB2181880B2984201D270 +S1134810431C98B20231F0E707D10B78190208184B +S113482080B2884201D2421C90B210BD38B50E4C01 +S11348300822657C237C143D05EB03218DB24019CD +S113484004F11A0180B2FFF7D5FF04F122012A46D0 +S1134850FFF7D0FF20B1020A42EA002398B238BD24 +S11348604FF6FF7038BD00BFCA0F002070B5C47882 +S1134870124B0A19D4B2DC7085780E0A7219D2B2BE +S11348809A704578B2425D700078187005D201358F +S1134890EDB25D700DB901301870C9B28C420CDAFA +S11348A0531C0648DAB282703AB941784B1CDAB22A +S11348B0427012B901784B1C037070BD19160020A8 +S11348C010B5084C014620680830FFF7CFFF064AB0 +S11348D023681178507819729178D2785872997245 +S11348E0DA7210BD500F00201916002008B5002000 +S11348F006491422FFF77EFF20B1030A43EA002091 +S113490080B208BD4FF6FF7008BD00BFD80F00206D +S11349100620FFF78BBF0000064900231A460B80D0 +S1134920054B01200549187005484A764FF480620A +S1134930028070472A16002028160020540F0020F9 +S11349401E160020044A054B118811B919701080F5 +S113495070470120187070472A160020281600207E +S1134960F8B5834B83491C68834B032803F1360253 +S11349700A6082490A600AD1607E00F00F03032BAB +S113498040F0BE84218A002940F0BA846DE00228F8 +S11349906FD17B48C278511CCBB2C37063B98278A3 +S11349A0511CCBB283703BB94278511CCBB24370DB +S11349B013B90278511C0170724B734A002018809D +S11349C01080607E072801D005280AD1A07E431CF0 +S11349D0D9B27829A17640F093840022627600F05F +S11349E08FBC002800F08C84218A002938D0A27E54 +S11349F0511EA176002A40F08384E37E082B04D064 +S1134A00421E012A09D8052B07D100235F4A8021C1 +S1134A106376117000F0D0FE60E3042B04D8032207 +S1134A2002FA03F2D1B200E0302100F00F00A176C7 +S1134A300133411EE376072900F26284DFE811F0B6 +S1134A40800108000A00EC026004EC026004EC023D +S1134A50002576E14D4B04221A7000F0ADFE5CE3B4 +S1134A6000F00F03032B40F04B84484808220270E7 +S1134A709DE2987B452840F0438442481E7C5A7C42 +S1134A80018802EB06268E4200F33A841A7DB6B200 +S1134A909206068040F034845B7D002B40F0308425 +S1134AA03B4804880CB9418849B1334AD38BA342AB +S1134AB040F02684118C4088814240F02184FFF725 +S1134AC015FF4FF6FF729042074640F019842A4DB5 +S1134AD0EB7D062B1DD0012B40F0128495F822109B +S1134AE0082940F00D84AB8C4FF6F67200209342F7 +S1134AF085F8220001D9093300E008331E49AB844C +S1134B00488B234A8B8BC88350880B844C838883BF +S1134B10DFE3FFF7FDFEB84240F0F2831D4B5C7EFD +S1134B2084B1A98C9A8891420CD1688CD988884226 +S1134B3008D1688B1A88904204D1A98B5888814285 +S1134B4000F01A810C4B93F82F2002F03F01022948 +S1134B502AD19A8C1048114602801048104B0088C4 +S1134B6082421FD1002C74D100241C70094C7AE0BD +S1134B70500F00200C160020CA0F00202C16002015 +S1134B8010160020C00F0020C80F002018160020A7 +S1134B9014160020540F0020201600202A1600208E +S1134BA02816002001221A707B4B93F82F1001F075 +S1134BB00400C2B2002A40F0A38393F82D20774961 +S1134BC0142528240C8083F82F5093F8294093F857 +S1134BD02C5083F8292093F82B20502093F8271089 +S1134BE083F82E0083F8272093F8280093F82620D2 +S1134BF083F828506A4D01342A7093F82A5083F8B8 +S1134C002C0083F82650E5B283F82B1083F82A2071 +S1134C1083F82D5065B90130C4B283F82C403CB9F7 +S1134C200131CDB283F82B5015B9013283F82A2013 +S1134C30594B5C4C588C5D8B2080998C98845A48D5 +S1134C4059849A8B04884188DD831A845C83998310 +S1134C5017E356480122072C0CBF044600241A709F +S1134C60002C00F04D83524D0326A67626760423AD +S1134C7000262C60484DE375A675E676A18095F86C +S1134C80221095F823006B8B41EA0022E280A98B65 +S1134C90484A238061801378517823736173937831 +S1134CA095F82910D278A373E27395F8283095F813 +S1134CB02720E17295F82610012060762082A372E5 +S1134CC062722172FFF7FCFD95F82E5005F0F0009A +S1134CD0502835DD2B0938495A1F95000A78334688 +S1134CE0AB4229DA2C48C11891F8362022B3012AA4 +S1134CF001D101331EE0022A17D191F83760042E46 +S1134D0013D12D48264D027091F8382091F83910AE +S1134D102B70244D41EA022340F20A602B80834227 +S1134D2028BF03466382A3820AE0C01890F83710B4 +S1134D3011B1CB18DBB2D3E719491F4D0B702A70A0 +S1134D4010251548144B80F82F5093F82F10042089 +S1134D5041F00202022583F837001048062183F847 +S1134D602F2083F836500A222C2583F8381083F834 +S1134D703920058060214AE20D4F95F82F203B60D1 +S1134D800E4902F004070020FFB20870C7B158763C +S1134D9020230B70E8E100BFCA0F0020C00F0020E1 +S1134DA0281600202016002014160020540F00207E +S1134DB0500F002010160020301600201816002076 +S1134DC095F82E30143E19098800964B361A9649E8 +S1134DD004F00F04B6B2022C18700E8003D102F056 +S1134DE03F0012280ED00EB994070BD08F49904B78 +S1134DF0CC8C1889844240F00082098D5B899942E9 +S1134E0040F0FB8102F01002D4B2002C44D0884C54 +S1134E10218A002940D004F10C00FFF727FD834AC2 +S1134E20844B92F82A001D78854235D192F82B10D4 +S1134E305878884230D192F82C609978B1422BD1BD +S1134E4092F82D20DB78934226D16073E07E25739F +S1134E50A173E373C0B9227EA37EA17DD01AA0EB17 +S1134E60D102D3B2DAB25918C9B21006A17501D56C +S1134E705C42E2B26E4BD87DA0EB9004A218D0B293 +S1134E8000EBD101D875197669486B4B027E012479 +S1134E9000211C7082760182654B674A597E01F0BD +S1134EA00F04601E072800F22B82DFE810F00800D0 +S1134EB01D008D00600181019D01A601540111783E +S1134EC05D4CCA0740F11C820320002158761982E8 +S1134ED0554B402218882270002800F0EF804222AF +S1134EE02270FFF7EDFCE9E01478E30762D54F4B3D +S1134EF093F82F2002F03F0012285BD193F82E3054 +S1134F0003F0F002502A36DD4C491809441F0A7890 +S1134F10A4000023A3422ADA4448C11891F8362099 +S1134F202AB3012A01D101331FE0022A18D191F8D2 +S1134F303750042D14D141483A4C027091F838206E +S1134F4091F8391023703E4B41EA022440F20A6082 +S1134F50374A1C80844228BF0446548294820AE063 +S1134F60C01890F8371011B1CB18DBB2D2E72D4935 +S1134F70324C0B7022702E4C2C4B032093F82620BD +S1134F8093F82710607693F8280093F8293022725A +S1134F906172A072E3720120FFF792FC264942225B +S1134FA00A70214B274A002020821880108000F0CC +S1134FB003FC89E0204C2021217000F0FDFB224BF2 +S1134FC0002218684276EFE5184C94F82F30D80781 +S1134FD03CD501F01002D0B2002837D11448018A20 +S1134FE0002940F08D81104D2A88541CA0B2FFF78F +S1134FF067FC114B2D88187840F01001197015B119 +S113500040F012021A700A4C00F0D6FB012308206B +S1135010002123826076E1761122044D85F82F2049 +S1135020F0E000BF28160020C00F0020CA0F0020A7 +S1135030540F0020191600201816002030160020E6 +S113504020160020C80F0020500F002003F0200479 +S1135050E3B273B1A04AA14B92F8340092F8354000 +S113506044EA0022186884181C609D4B1888821A30 +S11350701A809B4C208850B101F01001CBB233B997 +S1135080984C227842F002012170FFF719FC9248F3 +S113509090F8304090F83130934803EB0422818A31 +S11350A094B2924B8C421C8000D804B919808D4C68 +S11350B01A88237842829A0700F022818C480024BF +S11350C0048000F079FB884C864B894A1B7803F0F6 +S11350D02001C9B221B100231380637614229CE716 +S11350E003F01000C0B230B10125042011802582E4 +S11350F06076E17690E7118869B1DB0748BF2082CA +S1135100228A7B4B32B9608A814288BF1880198811 +S1135110218200E01A800022E276764B744A1868F5 +S11351206E491388086033B1208A20B16C4B283053 +S1135130188018220BE06B490A7802F00203D8B2F7 +S1135140002800F0DD806648282505801022624989 +S113515081F82F2059E01178CA0740F1D18000244A +S11351605C76604B1020187000F026FBC8E05C48A9 +S1135170008808B1FFF7A4FB574B5A4993F82F2036 +S1135180087812F001040CD010F0010F564D05D030 +S1135190002207236B76AA762A8218E006246C760E +S11351A015E0C0071CD55048052141760482A7E0CC +S11351B04B48008808B1FFF783FB474B93F82F2037 +S11351C0D1070DD5484D072100246976AC7601201E +S11351D0FFF776FB43491020087000F0EDFA0CE06D +S11351E03F4B1A884AB98BE01278D20740F1888085 +S11351F00721002459769C7682E0374910253A4CE1 +S113520081F82F50364B28201880334B502183F8D7 +S11352102E10227A304D85F82A20607A85F82B00EA +S1135220A17A85F82C10E37A85F82D30227B85F855 +S11352302620607B062285F82700A17B85F82810AC +S1135240E37BEA7585F82930A0882B4B6884E188D4 +S1135250A984188859886883A9832388EB83608884 +S11352602884647E04F01001CBB22BB1002085F8B1 +S1135270310085F8300004E085F830200A2285F8F2 +S113528031201749144C0B8840251A0AA5750025AE +S11352902274637484F8355084F8345084F832509E +S11352A084F83350FFF734FB144AC04360861388F4 +S11352B04521581CA17381B211800A0AE5736575F2 +S11352C02575A274E17425766576FFF70FFBC34359 +S11352D02383002218E000BFCA0F00200C16002010 +S11352E0C00F002018160020540F002020160020A4 +S11352F0C80F00202C16002014160020C20F002016 +S1135300034900231A460B8002480270F8BD00BF0F +S1135310C00F002018160020030A43EA002080B2C0 +S1135320704700000A1E034609DD05480549006868 +S11353300A80834203D0194692B200F081BA7047C2 +S11353402C160020C80F002038B52C4B988BDD8B11 +S11353500023072B11D80C225A4329498C18895A47 +S113536041B1628832B1884204D1954202D12548C4 +S1135370037039E00133DBB2EBE70023072B0DD8D0 +S11353800C2058431E490A5A0C1822B9618811B9D5 +S11353901C48037023E00133DBB2EFE7194A082B02 +S11353A013701CD118480023057819461A46072A99 +S11353B013480BD80C2404FB0200847A281B98425F +S11353C0C4BFC3B211460132D2B2F0E70F4C0D4A4A +S11353D023700C2404FB01040D4B1170197020463A +S11353E00C49042200F02CFA0B490622201D00F07F +S11353F027FA05490A78A27238BD00BFCA0F0020F7 +S11354003416002031160020951600203216002094 +S113541094160020E60F0020E00F002008B5124B80 +S113542000211A78501C1870104801700F490B782D +S1135430072B17D80C2043430D4AD0184188D35A60 +S113544041EA030291B249B1074B817A1A78531A9F +S1135450772B03DD0021042200F000FA03480278D0 +S1135460511CE2E708BD00BF95160020311600204C +S113547034160020F8B52A4D2B88292B4FF0000351 +S11354803DD9284C1F46A08A2B80B0F5807F03D0DD +S1135490B0F5007F42D134E0234EE18C3288914252 +S11354A03CD1208D7388984238D1FFF74DFF0221FB +S11354B06175062204F1160104F12000277500F03D +S11354C0BFF91A49062204F1160000F0B9F9174988 +S11354D00622A01D00F0B4F904F1200106222046A2 +S11354E000F0AEF9A28BE08B33887188E2842085CA +S11354F008220620A383E183227360732A232B806E +S1135500F8BD094BE18C1A88914207D1208D5B8844 +S1135510984203D1BDE8F840FFF716BFF8BD00BFBD +S1135520C00F0020CA0F00201416002022160020ED +S1135530434838B5C38B4FF6FF72934204D1028CB3 +S11355409A4201D13F4968E03F4C404A258810887F +S11355505D40054207D13A4D6488288C528880EA20 +S11355600405154206D03A4D3A4B28886A881880BB +S11355705A8002E0374C23806080364C0025208816 +S11355806488072D0CD80C236B43334AD118D25AA4 +S1135590824202D14B88A3423BD00135EDB2F0E701 +S11355A02E4B082D1D7036D1254CFF212046062296 +S11355B000F054F904F120000021062200F04EF915 +S11355C0A01D2749062200F03BF904F116002449E6 +S11355D0062200F035F91F491B4B08884A88E084ED +S11355E01988588800232375A37363742285A183C3 +S11355F0E0830621012204201A4B61736275E27371 +S11356002574A174E074257336341C602A2116486D +S113561013E0124805700A480431062200F010F91C +S11356200F490622114800F00BF90549082200230E +S11356300D480A734B7301880E31018038BD00BFD9 +S1135640CA0F0020B064000014160020BC0F002014 +S1135650C40F0020961600203416002031160020B6 +S1135660221600200C160020C00F0020D00F0020AE +S113567008B5FCF7E1FAFFF74FF9114B114943F66E +S113568013704FF6A9621A80588000224FF6FF73F8 +S11356900B804A80FCF718FBFCF714FE0A4900F55E +S11356A0FA700860FCF70EFE084B00F51C5210322D +S11356B04EF603001A60BDE80840FFF743B900BF87 +S11356C014160020BC0F0020A01600209C160020F9 +S11356D038B50C4B1C680023E26922629AB28A42F4 +S11356E005D2C55CE21882F824500133F6E7043190 +S11356F0A4F8641004F12000FFF714FEE069411CD3 +S1135700E16138BD500F002070B5FCF727FB00B3F2 +S1135710234C244D20804FF40060AE89FFF7FCFD3C +S1135720864207D10120FFF71BF9208888B1FFF7D3 +S1135730FFFE0AE040F60600AD89FFF7EDFD854265 +S113574007D1FFF797FE23881BB1FCF721FB00214B +S11357502180FCF7B7FD144B1A68904211D302F56F +S1135760FA74124812491C600D4C08600220FFF7BD +S1135770F7F823882BB1FFF7DBFEFCF709FB0022C7 +S11357802280FCF79FFD0B490B68984205D303F573 +S11357901C5010300860FFF741FE002070BD00BFB0 +S11357A0C00F0020CA0F0020A0160020540F0020B4 +S11357B0500F00209C16002010B5174B17481C688A +S11357C0037803F04002D0B228B101230022E36140 +S11357D0A4F8642010BDD90703F00401CBB248BF7C +S11357E0A4F8640033B1B4F8641019B104F12000D2 +S11357F0FFF798FD094A107800F00201CBB24BB1D3 +S1135800074800220168A4F86420081DBDE8104080 +S1135810FCF7D4BE10BD00BF500F002018160020A6 +S11358200C160020303809288CBF00200120704756 +S1135830A0F16103D9B2192998BF2038704700003C +S11358404FF00003002A07D011F803C000F803C08A +S113585003F10103013AF7D1704700BF0346002A60 +S113586000F0048003F8011B013AFBD1704700BF2C +S113587040420F0000201C0080841E000080250090 +S1135880999E36000040380000093D0000803E002B +S113589000004B00404B4C0000204E00808D5B000C +S11358A000C05D000080700000127A0000007D00DE +S11358B080969800001BB7000080BB00C0E8CE00B3 +S11358C0647ADA000024F4000000FA0080A81201CF +S11358D0002D310100366E0140787D01433A2F5787 +S11358E06F726B2F736F6674776172652F4F70657B +S11358F06E424C542F5461726765742F44656D6F0A +S11359002F41524D434D335F4C4D33535F454B5FF5 +S11359104C4D3353363936355F43726F7373776F3B +S1135920726B732F426F6F742F6964652F2E2E2F45 +S11359306C69622F6472697665726C69622F73791F +S11359407363746C2E63000000E10F4004E10F40A8 +S113595008E10F4040E00F4044E00F4048E00F40B2 +S1135960433A2F576F726B2F736F6674776172654A +S11359702F4F70656E424C542F5461726765742FBB +S113598044656D6F2F41524D434D335F4C4D33533E +S11359905F454B5F4C4D3353363936355F43726F39 +S11359A07373776F726B732F426F6F742F696465B3 +S11359B02F2E2E2F6C69622F6472697665726C6962 +S11359C0622F6770696F2E6300433A2F576F726BB3 +S11359D02F736F6674776172652F4F70656E424CDA +S11359E0542F5461726765742F44656D6F2F415253 +S11359F04D434D335F4C4D33535F454B5F4C4D33FB +S1135A0053363936355F43726F7373776F726B73C6 +S1135A102F426F6F742F6964652F2E2E2F6C69626D +S1135A202F6472697665726C69622F666C61736843 +S1135A306C69622E6300433A2F576F726B2F736F3A +S1135A406674776172652F4F70656E424C542F54A3 +S1135A5061726765742F44656D6F2F41524D434DDC +S1135A60335F4C4D33535F454B5F4C4D33533639A5 +S1135A7036355F43726F7373776F726B732F426F38 +S1135A806F742F6964652F2E2E2F6C69622F6472D8 +S1135A90697665726C69622F756172746C69622EC5 +S1135AA06300433A2F576F726B2F736F667477617D +S1135AB072652F4F70656E424C542F546172676546 +S1135AC0742F44656D6F2F41524D434D335F4C4DE0 +S1135AD033535F454B5F4C4D3353363936355F4353 +S1135AE0726F7373776F726B732F426F6F742F695A +S1135AF064652F2E2E2F6C69622F6472697665722D +S1135B006C69622F7373692E6300433A2F576F7267 +S1135B106B2F736F6674776172652F4F70656E4279 +S1135B204C542F5461726765742F44656D6F2F4117 +S1135B30524D434D335F4C4D33535F454B5F4C4D9A +S1135B403353363936355F43726F7373776F726BC5 +S1135B50732F426F6F742F6964652F2E2E2F6C691B +S1135B60622F6472697665726C69622F6574686508 +S1135B70726E65742E63002F64656D6F70726F674B +S1135B805F656B5F6C6D3373363936352E737265B2 +S1135B9063002F626F6F746C6F672E7478740043A8 +S1135BA03A2F576F726B2F736F6674776172652F1C +S1135BB04F70656E424C542F5461726765742F4464 +S1135BC0656D6F2F41524D434D335F4C4D33535FE1 +S1135BD0454B5F4C4D3353363936355F43726F73E3 +S1135BE073776F726B732F426F6F742F6964652FB5 +S1135BF02E2E2F2E2E2F2E2E2F2E2E2F536F7572CC +S1135C0063652F41524D434D335F4C4D33532F4306 +S1135C10726F7373776F726B732F766563746F72C1 +S1135C20732E6300008000000020000004000000C8 +S1135C3000A00000002000000500000000C00000DB +S1135C40002000000600000000E00000002000002A +S1135C500700000000000100002000000800000010 +S1135C6000200100002000000900000000400100A5 +S1135C70002000000A000000006001000020000075 +S1135C800B00000000800100002000000C00000058 +S1135C9000A00100002000000D00000000C0010071 +S1135CA0002000000E00000000E0010000200000C1 +S1135CB00F0000000000020000800000100000003F +S1135CC000800200008000001100000000000300BA +S1135CD0008000001200000000800300008000002B +S1135CE013000000433A2F576F726B2F736F667463 +S1135CF0776172652F4F70656E424C542F546172F8 +S1135D006765742F44656D6F2F41524D434D335F6A +S1135D104C4D33535F454B5F4C4D33533639363519 +S1135D205F43726F7373776F726B732F426F6F740D +S1135D302F6964652F2E2E2F2E2E2F2E2E2F2E2ED2 +S1135D402F536F757263652F41524D434D335F4C32 +S1135D504D33532F756172742E63004F70656E421C +S1135D604C5400433A2F576F726B2F736F667477DE +S1135D706172652F4F70656E424C542F5461726787 +S1135D8065742F44656D6F2F41524D434D335F4C05 +S1135D904D33535F454B5F4C4D3353363936355F86 +S1135DA043726F7373776F726B732F426F6F742FBD +S1135DB06964652F2E2E2F2E2E2F2E2E2F2E2E2F52 +S1135DC0536F757263652F66696C652E630046694F +S1135DD0726D776172652075706461746520726597 +S1135DE071756573742064657465637465640A0D04 +S1135DF0004F70656E696E67206669726D776172B7 +S1135E00652066696C6520666F72207265616469DD +S1135E106E672E2E2E004F4B0A0D00537461727460 +S1135E20696E67207468652070726F6772616D6D4A +S1135E30696E672073657175656E63650A0D005040 +S1135E40617273696E67206669726D77617265202D +S1135E5066696C6520746F206F627461696E206579 +S1135E60726173652073697A652E2E2E0045726106 +S1135E7073696E6720002062797465732066726F9F +S1135E806D206D656D6F72792061742030780052D9 +S1135E90656164696E67206C696E652066726F6DFA +S1135EA02066696C652E2E2E4552524F520A0D0003 +S1135EB0496E76616C696420636865636B73756DA4 +S1135EC020666F756E642E2E2E4552524F520A0D67 +S1135ED00050726F6772616D6D696E672000206299 +S1135EE07974657320746F206D656D6F72792061AC +S1135EF0742030780057726974696E672070726F0D +S1135F006772616D20636865636B73756D2E2E2EE9 +S1135F1000436C6F73696E67206669726D77617296 +S1135F20652066696C650A0D004669726D77617259 +S1135F30652075706461746520737563636573733C +S1135F4066756C6C7920636F6D706C657465640A3A +S1135F500D00222A3A3C3E3F7C7F002B2C3B3D5BCC +S1135F605D00809A90418E418F804545454949495D +S1135F708E8F9092924F994F555559999A9B9C9D0B +S1135F809E9F41494F55A5A5A6A7A8A9AAABAC2198 +S1135F90AEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDA5 +S1135FA0BEBFC0C1C2C3C4C5C6C7C8C9CACBCCCD95 +S1135FB0CECFD0D1D2D3D4D5D6D7D8D9DADBDCDD85 +S1135FC0DEDFE0E1E2E3E4E5E6E7E8E9EAEBECED75 +S1135FD0EEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFD65 +S1135FE0FEFF01030507090E10121416181C1E00EB +S1135FF06100620063006400650066006700680079 +S113600069006A006B006C006D006E006F00700028 +S113601071007200730074007500760077007800D8 +S113602079007A00A100A200A300A500AC00AF0093 +S1136030E000E100E200E300E400E500E600E70040 +S1136040E800E900EA00EB00EC00ED00EE00EF00F0 +S1136050F000F100F200F300F400F500F600F8009F +S1136060F900FA00FB00FC00FD00FE00FF00010146 +S113607003010501070109010B010D010F011101C4 +S113608013011501170119011B011D011F01210134 +S113609023012501270129012B012D012F013101A4 +S11360A03301350137013A013C013E01400142010F +S11360B04401460148014B014D014F015101530177 +S11360C05501570159015B015D015F0161016301E4 +S11360D06501670169016B016D016F017101730154 +S11360E0750177017A017C017E019201B103B2034B +S11360F0B303B403B503B603B703B803B903BA03D0 +S1136100BB03BC03BD03BE03BF03C003C103C3037E +S1136110C403C503C603C703C803C903CA033004C1 +S113612031043204330434043504360437043804A7 +S113613039043A043B043C043D043E043F04400457 +S11361404104420443044404450446044704480407 +S113615049044A044B044C044D044E044F045104B6 +S1136160520453045404550456045704580459045F +S11361705A045B045C045E045F0470217121722183 +S113618073217421752176217721782179217A214F +S11361907B217C217D217E217F2141FF42FF43FF22 +S11361A044FF45FF46FF47FF48FF49FF4AFF4BFFB7 +S11361B04CFF4DFF4EFF4FFF50FF51FF52FF53FF67 +S11361C054FF55FF56FF57FF58FF59FF5AFF000071 +S11361D0C700FC00E900E200E400E000E500E7009D +S11361E0EA00EB00E800EF00EE00EC00C400C5009C +S11361F0C900E600C600F400F600F200FB00F90056 +S1136200FF00D600DC00A200A300A500A720920195 +S1136210E100ED00F300FA00F100D100AA00BA0099 +S1136220BF001023AC00BD00BC00A100AB00BB004C +S1136230912592259325022524256125622556253D +S113624055256325512557255D255C255B2510259E +S1136250142534252C251C2500253C255E255F2589 +S11362605A25542569256625602550256C25672502 +S113627068256425652559255825522553256B2500 +S11362806A2518250C25882584258C2590258025AC +S1136290B103DF009303C003A303C303B500C40326 +S11362A0A6039803A903B4031E22C603B503292237 +S11362B06122B1006522642220232123F7004822B1 +S11362C0B0001922B7001A227F20B200A025A00036 +S11362D04100420043004400450046004700480096 +S11362E049004A004B004C004D004E004F00500046 +S11362F051005200530054005500560057005800F6 +S113630059005A002100E0FFE1FFE5FFE2FFE3FF4F +S1136310C000C100C200C300C400C500C600C7005D +S1136320C800C900CA00CB00CC00CD00CE00CF000D +S1136330D000D100D200D300D400D500D600D800BC +S1136340D900DA00DB00DC00DD00DE0078010001AA +S113635002010401060108010A010C010E011001E9 +S113636012011401160118011A011C011E01200159 +S113637022012401260128012A012C012E013001C9 +S113638032013401360139013B013D013F01410134 +S11363904301450147014A014C014E01500152019C +S11363A05401560158015A015C015E016001620109 +S11363B06401660168016A016C016E017001720179 +S11363C07401760179017B017D01910191039203AE +S11363D093039403950396039703980399039A03ED +S11363E09B039C039D039E039F03A003A103A3039C +S11363F0A403A503A603A703A803A903AA031004DF +S113640011041204130414041504160417041804C4 +S113641019041A041B041C041D041E041F04200474 +S11364202104220423042404250426042704280424 +S113643029042A042B042C042D042E042F04010403 +S113644002040304040405040604070408040904FC +S11364500A040B040C040E040F0460216121622160 +S113646063216421652166216721682169216A21EC +S11364706B216C216D216E216F2121FF22FF23FFEF +S113648024FF25FF26FF27FF28FF29FF2AFF2BFFD4 +S11364902CFF2DFF2EFF2FFF30FF31FF32FF33FF84 +S11364A034FF35FF36FF37FF38FF39FF3AFF00006E +S10964B0FFFFFFFFFFFFE8 +S10564B80104D9 +S903017F7C diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/blt_conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/blt_conf.h index 5ff1e5fd..e90acf9f 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/blt_conf.h +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/blt_conf.h @@ -81,6 +81,48 @@ #define BOOT_COM_UART_CHANNEL_INDEX (0) +/* The NET communication interface for firmware updates via TCP/IP is selected by setting + * the BOOT_COM_NET_ENABLE configurable to 1. The maximum amount of data bytes in a + * message for data transmission and reception is set through BOOT_COM_NET_TX_MAX_DATA + * and BOOT_COM_NET_RX_MAX_DATA, respectively. The default IP address is configured + * with the macros BOOT_COM_NET_IPADDRx. The default netmask is configued with the macros + * BOOT_COM_NET_NETMASKx. The bootloader acts and a TCP/IP server. The port the server + * listen on for connections is configured with BOOT_COM_NET_PORT. + */ +/** \brief Enable/disable the NET transport layer. */ +#define BOOT_COM_NET_ENABLE (1) +/** \brief Configure number of bytes in the target->host data packet. */ +#define BOOT_COM_NET_TX_MAX_DATA (64) +/** \brief Configure number of bytes in the host->target data packet. */ +#define BOOT_COM_NET_RX_MAX_DATA (64) +/** \brief Configure the port that the TCP/IP server listens on */ +#define BOOT_COM_NET_PORT (1000) +/** \brief Configure the 1st byte of the IP address */ +#define BOOT_COM_NET_IPADDR0 (169) +/** \brief Configure the 2nd byte of the IP address */ +#define BOOT_COM_NET_IPADDR1 (254) +/** \brief Configure the 3rd byte of the IP address */ +#define BOOT_COM_NET_IPADDR2 (19) +/** \brief Configure the 4th byte of the IP address */ +#define BOOT_COM_NET_IPADDR3 (63) +/** \brief Configure the 1st byte of the network mask */ +#define BOOT_COM_NET_NETMASK0 (255) +/** \brief Configure the 2nd byte of the network mask */ +#define BOOT_COM_NET_NETMASK1 (255) +/** \brief Configure the 3rd byte of the network mask */ +#define BOOT_COM_NET_NETMASK2 (0) +/** \brief Configure the 4th byte of the network mask */ +#define BOOT_COM_NET_NETMASK3 (0) +/** \brief Enable/disable a hook function that is called when the IP address is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_IPADDRx values. + */ +#define BOOT_COM_NET_IPADDR_HOOK_ENABLE (0) +/** \brief Enable/disable a hook function that is called when the netmask is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_NETMASKx values. + */ +#define BOOT_COM_NET_NETMASK_HOOK_ENABLE (0) + + /**************************************************************************************** * F I L E S Y S T E M I N T E R F A C E C O N F I G U R A T I O N ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/hooks.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/hooks.c index fa1218b7..d9239a7d 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/hooks.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/hooks.c @@ -187,6 +187,55 @@ blt_bool NvmWriteChecksumHook(void) #endif /* BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0 */ +/**************************************************************************************** +* N E T W O R K I N T E R F A C E H O O K F U N C T I O N S +****************************************************************************************/ +#if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the IP address is about to be configured. +** \param ipAddrArray 4-byte array where the IP address should be stored. +** \return none. +** +****************************************************************************************/ +void NetIpAddressHook(blt_int8u *ipAddrArray) +{ + /* This hook function allows a dynamic configuration of the IP address. This could for + * example be used if the bootloader is activated from a running user program and + * should have the same IP address as the user program. This IP address could be stored + * at a fixed location in RAM which can be read here. For now the example implemen- + * tation simply configures the bootloader's default IP address. + */ + ipAddrArray[0] = BOOT_COM_NET_IPADDR0; + ipAddrArray[1] = BOOT_COM_NET_IPADDR1; + ipAddrArray[2] = BOOT_COM_NET_IPADDR2; + ipAddrArray[3] = BOOT_COM_NET_IPADDR3; +} /*** end of NetIpAddressHook ***/ +#endif /* BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0 */ + + +#if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the network mask is about to be configured. +** \param netMaskArray 4-byte array where the network mask should be stored. +** \return none. +** +****************************************************************************************/ +void NetNetworkMaskHook(blt_int8u *netMaskArray) +{ + /* This hook function allows a dynamic configuration of the network mask. This could + * for example be used if the bootloader is activated from a running user program and + * should have the same network mask as the user program. This network mask could be + * stored at a fixed location in RAM which can be read here. For now the example + * implementation simply configures the bootloader's default network mask. + */ + netMaskArray[0] = BOOT_COM_NET_NETMASK0; + netMaskArray[1] = BOOT_COM_NET_NETMASK1; + netMaskArray[2] = BOOT_COM_NET_NETMASK2; + netMaskArray[3] = BOOT_COM_NET_NETMASK3; +} /*** end of NetNetworkMaskHook ***/ +#endif /* BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0 */ + + /**************************************************************************************** * W A T C H D O G D R I V E R H O O K F U N C T I O N S ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzp b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzp index 6758046d..d5d5ed88 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzp +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzp @@ -1,7 +1,7 @@ - + @@ -18,6 +18,7 @@ + @@ -36,11 +37,20 @@ + + + + + + + + + @@ -88,7 +98,29 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzs b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzs index 11e52773..b9f7b850 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzs +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/ide/lm3s6965_crossworks.hzs @@ -19,7 +19,8 @@ - + + @@ -50,9 +51,7 @@ - - - + - + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.c new file mode 100644 index 00000000..c085ce0d --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.c @@ -0,0 +1,1381 @@ +//***************************************************************************** +// +// ethernet.c - Driver for the Integrated Ethernet Controller +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +//***************************************************************************** +// +//! \addtogroup ethernet_api +//! @{ +// +//***************************************************************************** + +#include "inc/hw_ethernet.h" +#include "inc/hw_ints.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "driverlib/debug.h" +#include "driverlib/ethernet.h" +#include "driverlib/interrupt.h" + +//***************************************************************************** +// +//! Initializes the Ethernet controller for operation. +//! +//! \param ulBase is the base address of the controller. +//! \param ulEthClk is the rate of the clock supplied to the Ethernet module. +//! +//! This function prepares the Ethernet controller for first-time use in +//! a given hardware/software configuration. This function should be called +//! before any other Ethernet API functions are called. +//! +//! The peripheral clock is the same as the processor clock. This value is +//! returned by SysCtlClockGet(), or it can be explicitly hard-coded if it is +//! constant and known (to save the code/execution overhead of a call to +//! SysCtlClockGet()). +//! +//! This function replaces the original EthernetInit() API and performs the +//! same actions. A macro is provided in ethernet.h to map the +//! original API to this API. +//! +//! \note If the device configuration is changed (for example, the system clock +//! is reprogrammed to a different speed), then the Ethernet controller must be +//! disabled by calling the EthernetDisable() function and the controller must +//! be reinitialized by calling the EthernetInitExpClk() function again. After +//! the controller has been reinitialized, the controller should be +//! reconfigured using the appropriate Ethernet API calls. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk) +{ + unsigned long ulDiv; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Set the Management Clock Divider register for access to the PHY + // register set (via EthernetPHYRead/Write). + // + // The MDC clock divided down from the system clock using the following + // formula. A maximum of 2.5MHz is allowed for F(mdc). + // + // F(mdc) = F(sys) / (2 * (div + 1)) + // div = (F(sys) / (2 * F(mdc))) - 1 + // div = (F(sys) / 2 / F(mdc)) - 1 + // + // Note: Because we should round up, to ensure we don't violate the + // maximum clock speed, we can simplify this as follows: + // + // div = F(sys) / 2 / F(mdc) + // + // For example, given a system clock of 6.0MHz, and a div value of 1, + // the mdc clock would be programmed as 1.5 MHz. + // + ulDiv = (ulEthClk / 2) / 2500000; + HWREG(ulBase + MAC_O_MDV) = (ulDiv & MAC_MDV_DIV_M); +} + +//***************************************************************************** +// +//! Sets the configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param ulConfig is the configuration for the controller. +//! +//! After the EthernetInitExpClk() function has been called, this API function +//! can be used to configure the various features of the Ethernet controller. +//! +//! The Ethernet controller provides three control registers that are used +//! to configure the controller's operation. The transmit control register +//! provides settings to enable full-duplex operation, to auto-generate the +//! frame check sequence, and to pad the transmit packets to the minimum +//! length as required by the IEEE standard. The receive control register +//! provides settings to enable reception of packets with bad frame check +//! sequence values and to enable multi-cast or promiscuous modes. The +//! timestamp control register provides settings that enable support logic in +//! the controller that allow the use of the General Purpose Timer 3 to capture +//! timestamps for the transmitted and received packets. Note that not all +//! devices support this functionality; see the data sheet to determine if +//! this feature is supported. +//! +//! The \e ulConfig parameter is the logical OR of the following values: +//! +//! - \b ETH_CFG_TS_TSEN - Enable TX and RX interrupt status as CCP timer +//! inputs +//! - \b ETH_CFG_RX_BADCRCDIS - Disable reception of packets with a bad CRC +//! - \b ETH_CFG_RX_PRMSEN - Enable promiscuous mode reception (all packets) +//! - \b ETH_CFG_RX_AMULEN - Enable reception of multicast packets +//! - \b ETH_CFG_TX_DPLXEN - Enable full duplex transmit mode +//! - \b ETH_CFG_TX_CRCEN - Enable transmit with auto CRC generation +//! - \b ETH_CFG_TX_PADEN - Enable padding of transmit data to minimum size +//! +//! These bit-mapped values are programmed into the transmit, receive, and/or +//! timestamp control register. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig) +{ + unsigned long ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT((ulConfig & ~(ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN | ETH_CFG_RX_BADCRCDIS | + ETH_CFG_RX_PRMSEN | ETH_CFG_RX_AMULEN | + ETH_CFG_TS_TSEN)) == 0); + + // + // Setup the Transmit Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_TCTL); + ulTemp &= ~(MAC_TCTL_DUPLEX | MAC_TCTL_CRC | MAC_TCTL_PADEN); + ulTemp |= ulConfig & 0x0FF; + HWREG(ulBase + MAC_O_TCTL) = ulTemp; + + // + // Setup the Receive Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_RCTL); + ulTemp &= ~(MAC_RCTL_BADCRC | MAC_RCTL_PRMS | MAC_RCTL_AMUL); + ulTemp |= (ulConfig >> 8) & 0x0FF; + HWREG(ulBase + MAC_O_RCTL) = ulTemp; + + // + // Setup the Time Stamp Configuration register. + // + ulTemp = HWREG(ulBase + MAC_O_TS); + ulTemp &= ~(MAC_TS_TSEN); + ulTemp |= (ulConfig >> 16) & 0x0FF; + HWREG(ulBase + MAC_O_TS) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the current configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function queries the control registers of the Ethernet controller +//! and returns a bit-mapped configuration value. +//! +//! \sa The description of the EthernetConfigSet() function provides detailed +//! information for the bit-mapped configuration values that are returned. +//! +//! \return Returns the bit-mapped Ethernet controller configuration value. +// +//***************************************************************************** +unsigned long +EthernetConfigGet(unsigned long ulBase) +{ + unsigned long ulConfig; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read and return the Ethernet controller configuration parameters, + // properly shifted into the appropriate bit field positions. + // + ulConfig = HWREG(ulBase + MAC_O_TS) << 16; + ulConfig |= (HWREG(ulBase + MAC_O_RCTL) & ~(MAC_RCTL_RXEN)) << 8; + ulConfig |= HWREG(ulBase + MAC_O_TCTL) & ~(MAC_TCTL_TXEN); + return(ulConfig); +} + +//***************************************************************************** +// +//! Sets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the array of MAC-48 address octets. +//! +//! This function programs the IEEE-defined MAC-48 address specified in +//! \e pucMACAddr into the Ethernet controller. This address is used by the +//! Ethernet controller for hardware-level filtering of incoming Ethernet +//! packets (when promiscuous mode is not enabled). +//! +//! The MAC-48 address is defined as 6 octets, illustrated by the following +//! example address. The numbers are shown in hexadecimal format. +//! +//! AC-DE-48-00-00-80 +//! +//! In this representation, the first three octets (AC-DE-48) are the +//! Organizationally Unique Identifier (OUI). This is a number assigned by +//! the IEEE to an organization that requests a block of MAC addresses. The +//! last three octets (00-00-80) are a 24-bit number managed by the OUI owner +//! to uniquely identify a piece of hardware within that organization that is +//! to be connected to the Ethernet. +//! +//! In this representation, the octets are transmitted from left to right, +//! with the ``AC'' octet being transmitted first and the ``80'' octet being +//! transmitted last. Within an octet, the bits are transmitted LSB to MSB. +//! For this address, the first bit to be transmitted would be ``0'', the LSB +//! of ``AC'', and the last bit to be transmitted would be ``1'', the MSB of +//! ``80''. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrSet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Program the MAC Address into the device. The first four bytes of the + // MAC Address are placed into the IA0 register. The remaining two bytes + // of the MAC address are placed into the IA1 register. + // + pucTemp[0] = pucMACAddr[0]; + pucTemp[1] = pucMACAddr[1]; + pucTemp[2] = pucMACAddr[2]; + pucTemp[3] = pucMACAddr[3]; + HWREG(ulBase + MAC_O_IA0) = ulTemp; + ulTemp = 0; + pucTemp[0] = pucMACAddr[4]; + pucTemp[1] = pucMACAddr[5]; + HWREG(ulBase + MAC_O_IA1) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the location in which to store the +//! array of MAC-48 address octets. +//! +//! This function reads the currently programmed MAC address into the +//! \e pucMACAddr buffer. +//! +//! \sa Refer to EthernetMACAddrSet() API description for more details about +//! the MAC address format. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrGet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Read the MAC address from the device. The first four bytes of the + // MAC address are read from the IA0 register. The remaining two bytes + // of the MAC addres + // + ulTemp = HWREG(ulBase + MAC_O_IA0); + pucMACAddr[0] = pucTemp[0]; + pucMACAddr[1] = pucTemp[1]; + pucMACAddr[2] = pucTemp[2]; + pucMACAddr[3] = pucTemp[3]; + ulTemp = HWREG(ulBase + MAC_O_IA1); + pucMACAddr[4] = pucTemp[0]; + pucMACAddr[5] = pucTemp[1]; +} + +//***************************************************************************** +// +//! Enables the Ethernet controller for normal operation. +//! +//! \param ulBase is the base address of the controller. +//! +//! Once the Ethernet controller has been configured using the +//! EthernetConfigSet() function and the MAC address has been programmed using +//! the EthernetMACAddrSet() function, this API function can be called to +//! enable the controller for normal operation. +//! +//! This function enables the controller's transmitter and receiver, and +//! resets the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetEnable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Enable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RXEN; + + // + // Enable Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) |= MAC_TCTL_TXEN; + + // + // Reset the receive FIFO again, after the receiver has been enabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Disables the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! When terminating operations on the Ethernet interface, this function should +//! be called. This function disables the transmitter and receiver, and +//! clears out the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetDisable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Disable the Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) &= ~(MAC_TCTL_TXEN); + + // + // Disable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) &= ~(MAC_RCTL_RXEN); + + // + // Reset the receive FIFO again, after the receiver has been disabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Check for packet available from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller provides a register that contains the number of +//! packets available in the receive FIFO. When the last bytes of a packet are +//! successfully received (that is, the frame check sequence bytes), the packet +//! count is incremented. Once the packet has been fully read (including the +//! frame check sequence bytes) from the FIFO, the packet count is decremented. +//! +//! \return Returns \b true if there are one or more packets available in the +//! receive FIFO, including the current packet being read, and \b false +//! otherwise. +// +//***************************************************************************** +tBoolean +EthernetPacketAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of packets. + // + return((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) ? true : false); +} + +//***************************************************************************** +// +//! Checks for packet space available in the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller's transmit FIFO is designed to support a single +//! packet at a time. After the packet has been written into the FIFO, the +//! transmit request bit must be set to enable the transmission of the packet. +//! Only after the packet has been transmitted can a new packet be written +//! into the FIFO. This function simply checks to see if a packet is +//! in progress. If so, there is no space available in the transmit FIFO. +//! +//! \return Returns \b true if a space is available in the transmit FIFO, and +//! \b false otherwise. +// +//***************************************************************************** +tBoolean +EthernetSpaceAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of space. + // + return((HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) ? false : true); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for reading a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! Based on the following table of how the receive frame is stored in the +//! receive FIFO, this function will extract a packet from the FIFO and store +//! it in the packet buffer that was passed in. +//! +//! Format of the data in the RX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | FL MSB | FL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! | Word Y | FCS 4 | FCS 3 | FCS 2 | FCS 1 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where FL is Frame Length, (FL + DA + SA + FT + DATA + FCS) Bytes. +//! Where DA is Destination (MAC) Address. +//! Where SA is Source (MAC) Address. +//! Where FT is Frame Type (or Frame Length for Ethernet). +//! Where DATA is Payload Data for the Ethernet Frame. +//! Where FCS is the Frame Check Sequence. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +static long +EthernetPacketGetInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long lFrameLen, lTempLen; + long i = 0; + + // + // Read WORD 0 (see format above) from the FIFO, set the receive + // Frame Length and store the first two bytes of the destination + // address in the receive buffer. + // + ulTemp = HWREG(ulBase + MAC_O_DATA); + lFrameLen = (long)(ulTemp & 0xFFFF); + pucBuf[i++] = (unsigned char) ((ulTemp >> 16) & 0xff); + pucBuf[i++] = (unsigned char) ((ulTemp >> 24) & 0xff); + + // + // Read all but the last WORD into the receive buffer. + // + lTempLen = (lBufLen < (lFrameLen - 6)) ? lBufLen : (lFrameLen - 6); + while(i <= (lTempLen - 4)) + { + *(unsigned long *)&pucBuf[i] = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // Read the last 1, 2, or 3 BYTES into the buffer + // + if(i < lTempLen) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + if(i == lTempLen - 3) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + pucBuf[i++] = ((ulTemp >> 16) & 0xff); + i += 1; + } + else if(i == lTempLen - 2) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + i += 2; + } + else if(i == lTempLen - 1) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + i += 3; + } + } + + // + // Read any remaining WORDS (that did not fit into the buffer). + // + while(i < (lFrameLen - 2)) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // If frame was larger than the buffer, return the "negative" frame length + // + lFrameLen -= 6; + if(lFrameLen > lBufLen) + { + return(-lFrameLen); + } + + // + // Return the Frame Length + // + return(lFrameLen); +} + +//***************************************************************************** +// +//! Receives a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. If no packet is available the function +//! returns immediately. Otherwise, the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can fit +//! into \e pucBuf (as specified by \e lBufLen), the function returns the +//! negated length of the packet and the buffer contains \e lBufLen bytes +//! of the packet. Otherwise, the function returns the length of the +//! packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! This function replaces the original EthernetPacketNonBlockingGet() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function returns immediately if no packet is available. +//! +//! \return Returns \b 0 if no packet is available, the negated packet length +//! \b -n if the packet is too large for \e pucBuf, and the packet length \b n +//! otherwise. +// +//***************************************************************************** +long +EthernetPacketGetNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check to see if any packets are available. + // + if((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + return(0); + } + + // + // Read the packet, and return. + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits for a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. The function waits until a packet is +//! available in the FIFO. Then the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can +//! fit into \e pucBuf (as specified by \e lBufLen), the function returns +//! the negated length of the packet and the buffer contains \e lBufLen +//! bytes of the packet. Otherwise, the function returns the length of +//! the packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! \note This function is blocking and does not return until a packet arrives. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +long +EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for a packet to become available + // + while((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + } + + // + // Read the packet + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for sending a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! Puts a packet into the transmit FIFO of the controller. +//! +//! Format of the data in the TX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | PL MSB | PL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where PL is Payload Length, (DATA) only +//! Where DA is Destination (MAC) Address +//! Where SA is Source (MAC) Address +//! Where FT is Frame Type (or Frame Length for Ethernet) +//! Where DATA is Payload Data for the Ethernet Frame +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +static long +EthernetPacketPutInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long i = 0; + + // + // If the packet is too large, return the negative packet length as + // an error code. + // + if(lBufLen > (2048 - 2)) + { + return(-lBufLen); + } + + // + // Build and write WORD 0 (see format above) to the transmit FIFO. + // + ulTemp = (unsigned long)(lBufLen - 14); + ulTemp |= (pucBuf[i++] << 16); + ulTemp |= (pucBuf[i++] << 24); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + + // + // Write each subsequent WORD n to the transmit FIFO, except for the last + // WORD (if the word does not contain 4 bytes). + // + while(i <= (lBufLen - 4)) + { + HWREG(ulBase + MAC_O_DATA) = *(unsigned long *)&pucBuf[i]; + i += 4; + } + + // + // Build the last word of the remaining 1, 2, or 3 bytes, and store + // the WORD into the transmit FIFO. + // + if(i != lBufLen) + { + if(i == (lBufLen - 3)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + ulTemp |= (pucBuf[i++] << 16); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 2)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 1)) + { + ulTemp = (pucBuf[i++] << 0); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + } + + // + // Activate the transmitter + // + HWREG(ulBase + MAC_O_TR) = MAC_TR_NEWTX; + + // + // Return the Buffer Length transmitted. + // + return(lBufLen); +} + +//***************************************************************************** +// +//! Sends a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the +//! transmitter for this packet. If no space is available in the FIFO, the +//! function returns immediately. If space is available, the +//! function returns once \e lBufLen bytes of the packet have been placed +//! into the FIFO and the transmitter has been started. The function does not +//! wait for the transmission to complete. The function returns the +//! negated \e lBufLen if the length is larger than the space available in +//! the transmit FIFO. +//! +//! This function replaces the original EthernetPacketNonBlockingPut() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function does not block and returns immediately if no space +//! is available for the transmit packet. +//! +//! \return Returns \b 0 if no space is available in the transmit FIFO, the +//! negated packet length \b -lBufLen if the packet is too large for FIFO, and +//! the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPutNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check if the transmit FIFO is in use and return the appropriate code. + // + if(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + return(0); + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits to send a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the transmitter +//! for this packet. This function waits until the transmit FIFO is empty. +//! Once space is available, the function returns once \e lBufLen bytes of +//! the packet have been placed into the FIFO and the transmitter has been +//! started. The function does not wait for the transmission to complete. The +//! function returns the negated \e lBufLen if the length is larger than +//! the space available in the transmit FIFO. +//! +//! \note This function blocks and waits until space is available for the +//! transmit packet before returning. +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for current packet (if any) to complete. + // + while(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Registers an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! \param pfnHandler is a pointer to the function to be called when the +//! enabled Ethernet interrupts occur. +//! +//! This function sets the handler to be called when the Ethernet interrupt +//! occurs. This function enables the global interrupt in the interrupt +//! controller; specific Ethernet interrupts must be enabled via +//! EthernetIntEnable(). It is the interrupt handler's responsibility to clear +//! the interrupt source. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntRegister(unsigned long ulBase, void (*pfnHandler)(void)) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pfnHandler != 0); + + // + // Register the interrupt handler. + // + IntRegister(INT_ETH, pfnHandler); + + // + // Enable the Ethernet interrupt. + // + IntEnable(INT_ETH); +} + +//***************************************************************************** +// +//! Unregisters an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function unregisters the interrupt handler. This function disables +//! the global interrupt in the interrupt controller so that the interrupt +//! handler no longer is called. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntUnregister(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Disable the interrupt. + // + IntDisable(INT_ETH); + + // + // Unregister the interrupt handler. + // + IntUnregister(INT_ETH); +} + +//***************************************************************************** +// +//! Enables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be enabled. +//! +//! This function enables the indicated Ethernet interrupt sources. Only the +//! sources that are enabled can be reflected to the processor interrupt; +//! disabled sources have no effect on the processor. +//! +//! The \e ulIntFlags parameter is the logical OR of any of the following: +//! +//! - \b ETH_INT_PHY - An interrupt from the PHY has occurred. The integrated +//! PHY supports a number of interrupt conditions. The appropriate PHY +//! register, PHY_MR17 or PHY_MR29 depending on the device class, must be read +//! to determine which PHY interrupt has occurred. This register can be read +//! using the EthernetPHYRead() API function. +//! - \b ETH_INT_MDIO - This interrupt indicates that a transaction on the +//! management interface has completed successfully. +//! - \b ETH_INT_RXER - This interrupt indicates that an error has occurred +//! during reception of a frame. This error can indicate a length mismatch, a +//! CRC failure, or an error indication from the PHY. +//! - \b ETH_INT_RXOF - This interrupt indicates that a frame has been received +//! that exceeds the available space in the RX FIFO. +//! - \b ETH_INT_TX - This interrupt indicates that the packet stored in the TX +//! FIFO has been successfully transmitted. +//! - \b ETH_INT_TXER - This interrupt indicates that an error has occurred +//! during the transmission of a packet. This error can be either a retry +//! failure during the back-off process, or an invalid length stored in the TX +//! FIFO. +//! - \b ETH_INT_RX - This interrupt indicates that one (or more) packets are +//! available in the RX FIFO for processing. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Enable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) |= ulIntFlags; +} + +//***************************************************************************** +// +//! Disables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be disabled. +//! +//! Disables the indicated Ethernet interrupt sources. Only the sources that +//! are enabled can be reflected to the processor interrupt; disabled sources +//! have no effect on the processor. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Disable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) &= ~ulIntFlags; +} + +//***************************************************************************** +// +//! Gets the current Ethernet interrupt status. +//! +//! \param ulBase is the base address of the controller. +//! \param bMasked is false if the raw interrupt status is required and true +//! if the masked interrupt status is required. +//! +//! This function returns the interrupt status for the Ethernet controller. +//! Either the raw interrupt status or the status of interrupts that are +//! allowed to reflect to the processor can be returned. +//! +//! \return Returns the current interrupt status, enumerated as a bit field of +//! values described in EthernetIntEnable(). +// +//***************************************************************************** +unsigned long +EthernetIntStatus(unsigned long ulBase, tBoolean bMasked) +{ + unsigned long ulStatus; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read the unmasked status. + // + ulStatus = HWREG(ulBase + MAC_O_RIS); + + // + // If masked status is requested, mask it off. + // + if(bMasked) + { + ulStatus &= HWREG(ulBase + MAC_O_IM); + } + + // + // Return the interrupt status value. + // + return(ulStatus); +} + +//***************************************************************************** +// +//! Clears Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is a bit mask of the interrupt sources to be cleared. +//! +//! The specified Ethernet interrupt sources are cleared so that they no longer +//! assert. This function must be called in the interrupt handler to keep the +//! interrupt from being triggered again immediately upon exit. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \note Because there is a write buffer in the Cortex-M processor, it may +//! take several clock cycles before the interrupt source is actually cleared. +//! Therefore, it is recommended that the interrupt source be cleared early in +//! the interrupt handler (as opposed to the very last action) to avoid +//! returning from the interrupt handler before the interrupt source is +//! actually cleared. Failure to do so may result in the interrupt handler +//! being immediately reentered (because the interrupt controller still sees +//! the interrupt source asserted). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Clear the requested interrupt sources. + // + HWREG(ulBase + MAC_O_IACK) = ulIntFlags; +} + +//***************************************************************************** +// +//! Sets the PHY address. +//! +//! \param ulBase is the base address of the controller. +//! \param ucAddr is the address of the PHY. +//! +//! This function sets the address of the PHY that is accessed via +//! EthernetPHYRead() and EthernePHYWrite(). This configuration is only needed +//! when connecting to an external PHY via MII, and should not be used on +//! devices that have integrated PHYs. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Set the PHY address. + // + HWREG(ulBase + MAC_O_MADD) = ucAddr; +} + +//***************************************************************************** +// +//! Writes to the PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! \param ulData is the data to be written to the PHY register. +//! +//! This function writes the \e ulData to the PHY register specified by +//! \e ucRegAddr. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the DATA to be written. + // + HWREG(ulBase + MAC_O_MTXD) = ulData & MAC_MTXD_MDTX_M; + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_WRITE | MAC_MCTL_START); + + // + // Wait for the write transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } +} + +//***************************************************************************** +// +//! Reads from a PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! +//! This function returns the contents of the PHY register specified by +//! \e ucRegAddr. +//! +//! \return Returns the 16-bit value read from the PHY. +// +//***************************************************************************** +unsigned long +EthernetPHYRead(unsigned long ulBase, unsigned char ucRegAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_START); + + // + // Wait for the transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Return the PHY data that was read. + // + return(HWREG(ulBase + MAC_O_MRXD) & MAC_MRXD_MDRX_M); +} + +//***************************************************************************** +// +//! Powers off the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers off the Ethernet PHY, reducing the current +//! consumption of the device. While in the powered off state, the Ethernet +//! controller is unable to connect to the Ethernet. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOff(unsigned long ulBase) +{ + // + // Set the PWRDN bit and clear the ANEGEN bit in the PHY, putting it into + // its low power mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_ANEGEN) | + PHY_MR0_PWRDN); +} + +//***************************************************************************** +// +//! Powers on the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers on the Ethernet PHY, enabling it return to normal +//! operation. By default, the PHY is powered on, so this function is only +//! called if EthernetPHYPowerOff() has previously been called. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOn(unsigned long ulBase) +{ + // + // Clear the PWRDN bit and set the ANEGEN bit in the PHY, putting it into + // normal operating mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_PWRDN) | + PHY_MR0_ANEGEN); +} + +//***************************************************************************** +// +// Close the Doxygen group. +//! @} +// +//***************************************************************************** diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.h new file mode 100644 index 00000000..6e6c3fc3 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/driverlib/ethernet.h @@ -0,0 +1,187 @@ +//***************************************************************************** +// +// ethernet.h - Defines and Macros for the ethernet module. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +#ifndef __ETHERNET_H__ +#define __ETHERNET_H__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// Values that can be passed to EthernetConfigSet as the ulConfig value, and +// returned from EthernetConfigGet. +// +//***************************************************************************** +#define ETH_CFG_TS_TSEN 0x010000 // Enable Timestamp (CCP) +#define ETH_CFG_RX_BADCRCDIS 0x000800 // Disable RX BAD CRC Packets +#define ETH_CFG_RX_PRMSEN 0x000400 // Enable RX Promiscuous +#define ETH_CFG_RX_AMULEN 0x000200 // Enable RX Multicast +#define ETH_CFG_TX_DPLXEN 0x000010 // Enable TX Duplex Mode +#define ETH_CFG_TX_CRCEN 0x000004 // Enable TX CRC Generation +#define ETH_CFG_TX_PADEN 0x000002 // Enable TX Padding + +//***************************************************************************** +// +// Values that can be passed to EthernetIntEnable, EthernetIntDisable, and +// EthernetIntClear as the ulIntFlags parameter, and returned from +// EthernetIntStatus. +// +//***************************************************************************** +#define ETH_INT_PHY 0x040 // PHY Event/Interrupt +#define ETH_INT_MDIO 0x020 // Management Transaction +#define ETH_INT_RXER 0x010 // RX Error +#define ETH_INT_RXOF 0x008 // RX FIFO Overrun +#define ETH_INT_TX 0x004 // TX Complete +#define ETH_INT_TXER 0x002 // TX Error +#define ETH_INT_RX 0x001 // RX Complete + +//***************************************************************************** +// +// Helper Macros for Ethernet Processing +// +//***************************************************************************** +// +// htonl/ntohl - big endian/little endian byte swapping macros for +// 32-bit (long) values +// +//***************************************************************************** +#ifndef htonl + #define htonl(a) \ + ((((a) >> 24) & 0x000000ff) | \ + (((a) >> 8) & 0x0000ff00) | \ + (((a) << 8) & 0x00ff0000) | \ + (((a) << 24) & 0xff000000)) +#endif + +#ifndef ntohl + #define ntohl(a) htonl((a)) +#endif + +//***************************************************************************** +// +// htons/ntohs - big endian/little endian byte swapping macros for +// 16-bit (short) values +// +//***************************************************************************** +#ifndef htons + #define htons(a) \ + ((((a) >> 8) & 0x00ff) | \ + (((a) << 8) & 0xff00)) +#endif + +#ifndef ntohs + #define ntohs(a) htons((a)) +#endif + +//***************************************************************************** +// +// API Function prototypes +// +//***************************************************************************** +extern void EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk); +extern void EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig); +extern unsigned long EthernetConfigGet(unsigned long ulBase); +extern void EthernetMACAddrSet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetMACAddrGet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetEnable(unsigned long ulBase); +extern void EthernetDisable(unsigned long ulBase); +extern tBoolean EthernetPacketAvail(unsigned long ulBase); +extern tBoolean EthernetSpaceAvail(unsigned long ulBase); +extern long EthernetPacketGetNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPutNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern void EthernetIntRegister(unsigned long ulBase, + void (*pfnHandler)(void)); +extern void EthernetIntUnregister(unsigned long ulBase); +extern void EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags); +extern unsigned long EthernetIntStatus(unsigned long ulBase, tBoolean bMasked); +extern void EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr); +extern void EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData); +extern unsigned long EthernetPHYRead(unsigned long ulBase, + unsigned char ucRegAddr); +extern void EthernetPHYPowerOff(unsigned long ulBase); +extern void EthernetPHYPowerOn(unsigned long ulBase); + +//***************************************************************************** +// +// Several Ethernet APIs have been renamed, with the original function name +// being deprecated. These defines provide backward compatibility. +// +//***************************************************************************** +#ifndef DEPRECATED +#include "driverlib/sysctl.h" +#define EthernetInit(a) \ + EthernetInitExpClk(a, SysCtlClockGet()) +#define EthernetPacketNonBlockingGet(a, b, c) \ + EthernetPacketGetNonBlocking(a, b, c) +#define EthernetPacketNonBlockingPut(a, b, c) \ + EthernetPacketPutNonBlocking(a, b, c) +#endif + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/inc/hw_ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/inc/hw_ethernet.h new file mode 100644 index 00000000..61ae8a76 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/inc/hw_ethernet.h @@ -0,0 +1,703 @@ +//***************************************************************************** +// +// hw_ethernet.h - Macros used when accessing the Ethernet hardware. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Firmware Development Package. +// +//***************************************************************************** + +#ifndef __HW_ETHERNET_H__ +#define __HW_ETHERNET_H__ + +//***************************************************************************** +// +// The following are defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_RIS 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IACK 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IM 0x00000004 // Ethernet MAC Interrupt Mask +#define MAC_O_RCTL 0x00000008 // Ethernet MAC Receive Control +#define MAC_O_TCTL 0x0000000C // Ethernet MAC Transmit Control +#define MAC_O_DATA 0x00000010 // Ethernet MAC Data +#define MAC_O_IA0 0x00000014 // Ethernet MAC Individual Address + // 0 +#define MAC_O_IA1 0x00000018 // Ethernet MAC Individual Address + // 1 +#define MAC_O_THR 0x0000001C // Ethernet MAC Threshold +#define MAC_O_MCTL 0x00000020 // Ethernet MAC Management Control +#define MAC_O_MDV 0x00000024 // Ethernet MAC Management Divider +#define MAC_O_MADD 0x00000028 // Ethernet MAC Management Address +#define MAC_O_MTXD 0x0000002C // Ethernet MAC Management Transmit + // Data +#define MAC_O_MRXD 0x00000030 // Ethernet MAC Management Receive + // Data +#define MAC_O_NP 0x00000034 // Ethernet MAC Number of Packets +#define MAC_O_TR 0x00000038 // Ethernet MAC Transmission + // Request +#define MAC_O_TS 0x0000003C // Ethernet MAC Timer Support +#define MAC_O_LED 0x00000040 // Ethernet MAC LED Encoding +#define MAC_O_MDIX 0x00000044 // Ethernet PHY MDIX + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RIS register. +// +//***************************************************************************** +#define MAC_RIS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_RIS_MDINT 0x00000020 // MII Transaction Complete +#define MAC_RIS_RXER 0x00000010 // Receive Error +#define MAC_RIS_FOV 0x00000008 // FIFO Overrun +#define MAC_RIS_TXEMP 0x00000004 // Transmit FIFO Empty +#define MAC_RIS_TXER 0x00000002 // Transmit Error +#define MAC_RIS_RXINT 0x00000001 // Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IACK register. +// +//***************************************************************************** +#define MAC_IACK_PHYINT 0x00000040 // Clear PHY Interrupt +#define MAC_IACK_MDINT 0x00000020 // Clear MII Transaction Complete +#define MAC_IACK_RXER 0x00000010 // Clear Receive Error +#define MAC_IACK_FOV 0x00000008 // Clear FIFO Overrun +#define MAC_IACK_TXEMP 0x00000004 // Clear Transmit FIFO Empty +#define MAC_IACK_TXER 0x00000002 // Clear Transmit Error +#define MAC_IACK_RXINT 0x00000001 // Clear Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IM register. +// +//***************************************************************************** +#define MAC_IM_PHYINTM 0x00000040 // Mask PHY Interrupt +#define MAC_IM_MDINTM 0x00000020 // Mask MII Transaction Complete +#define MAC_IM_RXERM 0x00000010 // Mask Receive Error +#define MAC_IM_FOVM 0x00000008 // Mask FIFO Overrun +#define MAC_IM_TXEMPM 0x00000004 // Mask Transmit FIFO Empty +#define MAC_IM_TXERM 0x00000002 // Mask Transmit Error +#define MAC_IM_RXINTM 0x00000001 // Mask Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RCTL register. +// +//***************************************************************************** +#define MAC_RCTL_RSTFIFO 0x00000010 // Clear Receive FIFO +#define MAC_RCTL_BADCRC 0x00000008 // Enable Reject Bad CRC +#define MAC_RCTL_PRMS 0x00000004 // Enable Promiscuous Mode +#define MAC_RCTL_AMUL 0x00000002 // Enable Multicast Frames +#define MAC_RCTL_RXEN 0x00000001 // Enable Receiver + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TCTL register. +// +//***************************************************************************** +#define MAC_TCTL_DUPLEX 0x00000010 // Enable Duplex Mode +#define MAC_TCTL_CRC 0x00000004 // Enable CRC Generation +#define MAC_TCTL_PADEN 0x00000002 // Enable Packet Padding +#define MAC_TCTL_TXEN 0x00000001 // Enable Transmitter + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_DATA register. +// +//***************************************************************************** +#define MAC_DATA_TXDATA_M 0xFFFFFFFF // Transmit FIFO Data +#define MAC_DATA_RXDATA_M 0xFFFFFFFF // Receive FIFO Data +#define MAC_DATA_RXDATA_S 0 +#define MAC_DATA_TXDATA_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA0 register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4_M 0xFF000000 // MAC Address Octet 4 +#define MAC_IA0_MACOCT3_M 0x00FF0000 // MAC Address Octet 3 +#define MAC_IA0_MACOCT2_M 0x0000FF00 // MAC Address Octet 2 +#define MAC_IA0_MACOCT1_M 0x000000FF // MAC Address Octet 1 +#define MAC_IA0_MACOCT4_S 24 +#define MAC_IA0_MACOCT3_S 16 +#define MAC_IA0_MACOCT2_S 8 +#define MAC_IA0_MACOCT1_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA1 register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6_M 0x0000FF00 // MAC Address Octet 6 +#define MAC_IA1_MACOCT5_M 0x000000FF // MAC Address Octet 5 +#define MAC_IA1_MACOCT6_S 8 +#define MAC_IA1_MACOCT5_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_THR register. +// +//***************************************************************************** +#define MAC_THR_THRESH_M 0x0000003F // Threshold Value +#define MAC_THR_THRESH_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MCTL register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR_M 0x000000F8 // MII Register Address +#define MAC_MCTL_WRITE 0x00000002 // MII Register Transaction Type +#define MAC_MCTL_START 0x00000001 // MII Register Transaction Enable +#define MAC_MCTL_REGADR_S 3 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDV register. +// +//***************************************************************************** +#define MAC_MDV_DIV_M 0x000000FF // Clock Divider +#define MAC_MDV_DIV_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MADD register. +// +//***************************************************************************** +#define MAC_MADD_PHYADR_M 0x0000001F // PHY Address +#define MAC_MADD_PHYADR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MTXD register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX_M 0x0000FFFF // MII Register Transmit Data +#define MAC_MTXD_MDTX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MRXD register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX_M 0x0000FFFF // MII Register Receive Data +#define MAC_MRXD_MDRX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_NP register. +// +//***************************************************************************** +#define MAC_NP_NPR_M 0x0000003F // Number of Packets in Receive + // FIFO +#define MAC_NP_NPR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TR register. +// +//***************************************************************************** +#define MAC_TR_NEWTX 0x00000001 // New Transmission + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TS register. +// +//***************************************************************************** +#define MAC_TS_TSEN 0x00000001 // Time Stamp Enable + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_LED register. +// +//***************************************************************************** +#define MAC_LED_LED1_M 0x00000F00 // LED1 Source +#define MAC_LED_LED1_LINK 0x00000000 // Link OK +#define MAC_LED_LED1_RXTX 0x00000100 // RX or TX Activity (Default LED1) +#define MAC_LED_LED1_100 0x00000500 // 100BASE-TX mode +#define MAC_LED_LED1_10 0x00000600 // 10BASE-T mode +#define MAC_LED_LED1_DUPLEX 0x00000700 // Full-Duplex +#define MAC_LED_LED1_LINKACT 0x00000800 // Link OK & Blink=RX or TX + // Activity +#define MAC_LED_LED0_M 0x0000000F // LED0 Source +#define MAC_LED_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define MAC_LED_LED0_RXTX 0x00000001 // RX or TX Activity +#define MAC_LED_LED0_100 0x00000005 // 100BASE-TX mode +#define MAC_LED_LED0_10 0x00000006 // 10BASE-T mode +#define MAC_LED_LED0_DUPLEX 0x00000007 // Full-Duplex +#define MAC_LED_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDIX register. +// +//***************************************************************************** +#define MAC_MDIX_EN 0x00000001 // MDI/MDI-X Enable + +//***************************************************************************** +// +// The following are defines for the Ethernet Controller PHY registers. +// +//***************************************************************************** +#define PHY_MR0 0x00000000 // Ethernet PHY Management Register + // 0 - Control +#define PHY_MR1 0x00000001 // Ethernet PHY Management Register + // 1 - Status +#define PHY_MR2 0x00000002 // Ethernet PHY Management Register + // 2 - PHY Identifier 1 +#define PHY_MR3 0x00000003 // Ethernet PHY Management Register + // 3 - PHY Identifier 2 +#define PHY_MR4 0x00000004 // Ethernet PHY Management Register + // 4 - Auto-Negotiation + // Advertisement +#define PHY_MR5 0x00000005 // Ethernet PHY Management Register + // 5 - Auto-Negotiation Link + // Partner Base Page Ability +#define PHY_MR6 0x00000006 // Ethernet PHY Management Register + // 6 - Auto-Negotiation Expansion +#define PHY_MR16 0x00000010 // Ethernet PHY Management Register + // 16 - Vendor-Specific +#define PHY_MR17 0x00000011 // Ethernet PHY Management Register + // 17 - Mode Control/Status +#define PHY_MR18 0x00000012 // Ethernet PHY Management Register + // 18 - Diagnostic +#define PHY_MR19 0x00000013 // Ethernet PHY Management Register + // 19 - Transceiver Control +#define PHY_MR23 0x00000017 // Ethernet PHY Management Register + // 23 - LED Configuration +#define PHY_MR24 0x00000018 // Ethernet PHY Management Register + // 24 -MDI/MDIX Control +#define PHY_MR27 0x0000001B // Ethernet PHY Management Register + // 27 - Special Control/Status +#define PHY_MR29 0x0000001D // Ethernet PHY Management Register + // 29 - Interrupt Status +#define PHY_MR30 0x0000001E // Ethernet PHY Management Register + // 30 - Interrupt Mask +#define PHY_MR31 0x0000001F // Ethernet PHY Management Register + // 31 - PHY Special Control/Status + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR0 register. +// +//***************************************************************************** +#define PHY_MR0_RESET 0x00008000 // Reset Registers +#define PHY_MR0_LOOPBK 0x00004000 // Loopback Mode +#define PHY_MR0_SPEEDSL 0x00002000 // Speed Select +#define PHY_MR0_ANEGEN 0x00001000 // Auto-Negotiation Enable +#define PHY_MR0_PWRDN 0x00000800 // Power Down +#define PHY_MR0_ISO 0x00000400 // Isolate +#define PHY_MR0_RANEG 0x00000200 // Restart Auto-Negotiation +#define PHY_MR0_DUPLEX 0x00000100 // Set Duplex Mode +#define PHY_MR0_COLT 0x00000080 // Collision Test + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR1 register. +// +//***************************************************************************** +#define PHY_MR1_100X_F 0x00004000 // 100BASE-TX Full-Duplex Mode +#define PHY_MR1_100X_H 0x00002000 // 100BASE-TX Half-Duplex Mode +#define PHY_MR1_10T_F 0x00001000 // 10BASE-T Full-Duplex Mode +#define PHY_MR1_10T_H 0x00000800 // 10BASE-T Half-Duplex Mode +#define PHY_MR1_MFPS 0x00000040 // Management Frames with Preamble + // Suppressed +#define PHY_MR1_ANEGC 0x00000020 // Auto-Negotiation Complete +#define PHY_MR1_RFAULT 0x00000010 // Remote Fault +#define PHY_MR1_ANEGA 0x00000008 // Auto-Negotiation +#define PHY_MR1_LINK 0x00000004 // Link Made +#define PHY_MR1_JAB 0x00000002 // Jabber Condition +#define PHY_MR1_EXTD 0x00000001 // Extended Capabilities + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR2 register. +// +//***************************************************************************** +#define PHY_MR2_OUI_M 0x0000FFFF // Organizationally Unique + // Identifier[21:6] +#define PHY_MR2_OUI_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR3 register. +// +//***************************************************************************** +#define PHY_MR3_OUI_M 0x0000FC00 // Organizationally Unique + // Identifier[5:0] +#define PHY_MR3_MN_M 0x000003F0 // Model Number +#define PHY_MR3_RN_M 0x0000000F // Revision Number +#define PHY_MR3_OUI_S 10 +#define PHY_MR3_MN_S 4 +#define PHY_MR3_RN_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR4 register. +// +//***************************************************************************** +#define PHY_MR4_NP 0x00008000 // Next Page +#define PHY_MR4_RF 0x00002000 // Remote Fault +#define PHY_MR4_A3 0x00000100 // Technology Ability Field [3] +#define PHY_MR4_A2 0x00000080 // Technology Ability Field [2] +#define PHY_MR4_A1 0x00000040 // Technology Ability Field [1] +#define PHY_MR4_A0 0x00000020 // Technology Ability Field [0] +#define PHY_MR4_S_M 0x0000001F // Selector Field +#define PHY_MR4_S_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR5 register. +// +//***************************************************************************** +#define PHY_MR5_NP 0x00008000 // Next Page +#define PHY_MR5_ACK 0x00004000 // Acknowledge +#define PHY_MR5_RF 0x00002000 // Remote Fault +#define PHY_MR5_A_M 0x00001FE0 // Technology Ability Field +#define PHY_MR5_S_M 0x0000001F // Selector Field +#define PHY_MR5_S_8023 0x00000001 // IEEE Std 802.3 +#define PHY_MR5_S_8029 0x00000002 // IEEE Std 802.9 ISLAN-16T +#define PHY_MR5_S_8025 0x00000003 // IEEE Std 802.5 +#define PHY_MR5_S_1394 0x00000004 // IEEE Std 1394 +#define PHY_MR5_A_S 5 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR6 register. +// +//***************************************************************************** +#define PHY_MR6_PDF 0x00000010 // Parallel Detection Fault +#define PHY_MR6_LPNPA 0x00000008 // Link Partner is Next Page Able +#define PHY_MR6_PRX 0x00000002 // New Page Received +#define PHY_MR6_LPANEGA 0x00000001 // Link Partner is Auto-Negotiation + // Able + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR16 register. +// +//***************************************************************************** +#define PHY_MR16_RPTR 0x00008000 // Repeater Mode +#define PHY_MR16_INPOL 0x00004000 // Interrupt Polarity +#define PHY_MR16_TXHIM 0x00001000 // Transmit High Impedance Mode +#define PHY_MR16_SQEI 0x00000800 // SQE Inhibit Testing +#define PHY_MR16_NL10 0x00000400 // Natural Loopback Mode +#define PHY_MR16_SR_M 0x000003C0 // Silicon Revision Identifier +#define PHY_MR16_APOL 0x00000020 // Auto-Polarity Disable +#define PHY_MR16_RVSPOL 0x00000010 // Receive Data Polarity +#define PHY_MR16_PCSBP 0x00000002 // PCS Bypass +#define PHY_MR16_RXCC 0x00000001 // Receive Clock Control +#define PHY_MR16_SR_S 6 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR17 register. +// +//***************************************************************************** +#define PHY_MR17_JABBER_IE 0x00008000 // Jabber Interrupt Enable +#define PHY_MR17_FASTRIP 0x00004000 // 10-BASE-T Fast Mode Enable +#define PHY_MR17_RXER_IE 0x00004000 // Receive Error Interrupt Enable +#define PHY_MR17_EDPD 0x00002000 // Enable Energy Detect Power Down +#define PHY_MR17_PRX_IE 0x00002000 // Page Received Interrupt Enable +#define PHY_MR17_PDF_IE 0x00001000 // Parallel Detection Fault + // Interrupt Enable +#define PHY_MR17_LSQE 0x00000800 // Low Squelch Enable +#define PHY_MR17_LPACK_IE 0x00000800 // LP Acknowledge Interrupt Enable +#define PHY_MR17_LSCHG_IE 0x00000400 // Link Status Change Interrupt + // Enable +#define PHY_MR17_RFAULT_IE 0x00000200 // Remote Fault Interrupt Enable +#define PHY_MR17_ANEGCOMP_IE 0x00000100 // Auto-Negotiation Complete + // Interrupt Enable +#define PHY_MR17_FASTEST 0x00000100 // Auto-Negotiation Test Mode +#define PHY_MR17_JABBER_INT 0x00000080 // Jabber Event Interrupt +#define PHY_MR17_RXER_INT 0x00000040 // Receive Error Interrupt +#define PHY_MR17_PRX_INT 0x00000020 // Page Receive Interrupt +#define PHY_MR17_PDF_INT 0x00000010 // Parallel Detection Fault + // Interrupt +#define PHY_MR17_LPACK_INT 0x00000008 // LP Acknowledge Interrupt +#define PHY_MR17_LSCHG_INT 0x00000004 // Link Status Change Interrupt +#define PHY_MR17_FGLS 0x00000004 // Force Good Link Status +#define PHY_MR17_RFAULT_INT 0x00000002 // Remote Fault Interrupt +#define PHY_MR17_ENON 0x00000002 // Energy On +#define PHY_MR17_ANEGCOMP_INT 0x00000001 // Auto-Negotiation Complete + // Interrupt + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR18 register. +// +//***************************************************************************** +#define PHY_MR18_ANEGF 0x00001000 // Auto-Negotiation Failure +#define PHY_MR18_DPLX 0x00000800 // Duplex Mode +#define PHY_MR18_RATE 0x00000400 // Rate +#define PHY_MR18_RXSD 0x00000200 // Receive Detection +#define PHY_MR18_RX_LOCK 0x00000100 // Receive PLL Lock + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR19 register. +// +//***************************************************************************** +#define PHY_MR19_TXO_M 0x0000C000 // Transmit Amplitude Selection +#define PHY_MR19_TXO_00DB 0x00000000 // Gain set for 0.0dB of insertion + // loss +#define PHY_MR19_TXO_04DB 0x00004000 // Gain set for 0.4dB of insertion + // loss +#define PHY_MR19_TXO_08DB 0x00008000 // Gain set for 0.8dB of insertion + // loss +#define PHY_MR19_TXO_12DB 0x0000C000 // Gain set for 1.2dB of insertion + // loss + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR23 register. +// +//***************************************************************************** +#define PHY_MR23_LED1_M 0x000000F0 // LED1 Source +#define PHY_MR23_LED1_LINK 0x00000000 // Link OK +#define PHY_MR23_LED1_RXTX 0x00000010 // RX or TX Activity (Default LED1) +#define PHY_MR23_LED1_100 0x00000050 // 100BASE-TX mode +#define PHY_MR23_LED1_10 0x00000060 // 10BASE-T mode +#define PHY_MR23_LED1_DUPLEX 0x00000070 // Full-Duplex +#define PHY_MR23_LED1_LINKACT 0x00000080 // Link OK & Blink=RX or TX + // Activity +#define PHY_MR23_LED0_M 0x0000000F // LED0 Source +#define PHY_MR23_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define PHY_MR23_LED0_RXTX 0x00000001 // RX or TX Activity +#define PHY_MR23_LED0_100 0x00000005 // 100BASE-TX mode +#define PHY_MR23_LED0_10 0x00000006 // 10BASE-T mode +#define PHY_MR23_LED0_DUPLEX 0x00000007 // Full-Duplex +#define PHY_MR23_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR24 register. +// +//***************************************************************************** +#define PHY_MR24_PD_MODE 0x00000080 // Parallel Detection Mode +#define PHY_MR24_AUTO_SW 0x00000040 // Auto-Switching Enable +#define PHY_MR24_MDIX 0x00000020 // Auto-Switching Configuration +#define PHY_MR24_MDIX_CM 0x00000010 // Auto-Switching Complete +#define PHY_MR24_MDIX_SD_M 0x0000000F // Auto-Switching Seed +#define PHY_MR24_MDIX_SD_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR27 register. +// +//***************************************************************************** +#define PHY_MR27_XPOL 0x00000010 // Polarity State of 10 BASE-T + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR29 register. +// +//***************************************************************************** +#define PHY_MR29_EONIS 0x00000080 // ENERGYON Interrupt +#define PHY_MR29_ANCOMPIS 0x00000040 // Auto-Negotiation Complete + // Interrupt +#define PHY_MR29_RFLTIS 0x00000020 // Remote Fault Interrupt +#define PHY_MR29_LDIS 0x00000010 // Link Down Interrupt +#define PHY_MR29_LPACKIS 0x00000008 // Auto-Negotiation LP Acknowledge +#define PHY_MR29_PDFIS 0x00000004 // Parallel Detection Fault +#define PHY_MR29_PRXIS 0x00000002 // Auto Negotiation Page Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR30 register. +// +//***************************************************************************** +#define PHY_MR30_EONIM 0x00000080 // ENERGYON Interrupt Enabled +#define PHY_MR30_ANCOMPIM 0x00000040 // Auto-Negotiation Complete + // Interrupt Enabled +#define PHY_MR30_RFLTIM 0x00000020 // Remote Fault Interrupt Enabled +#define PHY_MR30_LDIM 0x00000010 // Link Down Interrupt Enabled +#define PHY_MR30_LPACKIM 0x00000008 // Auto-Negotiation LP Acknowledge + // Enabled +#define PHY_MR30_PDFIM 0x00000004 // Parallel Detection Fault Enabled +#define PHY_MR30_PRXIM 0x00000002 // Auto Negotiation Page Received + // Enabled + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR31 register. +// +//***************************************************************************** +#define PHY_MR31_AUTODONE 0x00001000 // Auto Negotiation Done +#define PHY_MR31_SPEED_M 0x0000001C // HCD Speed Value +#define PHY_MR31_SPEED_10HD 0x00000004 // 10BASE-T half duplex +#define PHY_MR31_SPEED_100HD 0x00000008 // 100BASE-T half duplex +#define PHY_MR31_SPEED_10FD 0x00000014 // 10BASE-T full duplex +#define PHY_MR31_SPEED_100FD 0x00000018 // 100BASE-T full duplex +#define PHY_MR31_SCRDIS 0x00000001 // Scramble Disable + +//***************************************************************************** +// +// The following definitions are deprecated. +// +//***************************************************************************** +#ifndef DEPRECATED + +//***************************************************************************** +// +// The following are deprecated defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_IS 0x00000000 // Interrupt Status Register + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IS +// register. +// +//***************************************************************************** +#define MAC_IS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_IS_MDINT 0x00000020 // MDI Transaction Complete +#define MAC_IS_RXER 0x00000010 // RX Error +#define MAC_IS_FOV 0x00000008 // RX FIFO Overrun +#define MAC_IS_TXEMP 0x00000004 // TX FIFO Empy +#define MAC_IS_TXER 0x00000002 // TX Error +#define MAC_IS_RXINT 0x00000001 // RX Packet Available + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA0 +// register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4 0xFF000000 // 4th Octet of MAC address +#define MAC_IA0_MACOCT3 0x00FF0000 // 3rd Octet of MAC address +#define MAC_IA0_MACOCT2 0x0000FF00 // 2nd Octet of MAC address +#define MAC_IA0_MACOCT1 0x000000FF // 1st Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA1 +// register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6 0x0000FF00 // 6th Octet of MAC address +#define MAC_IA1_MACOCT5 0x000000FF // 5th Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_THR +// register. +// +//***************************************************************************** +#define MAC_THR_THRESH 0x0000003F // Transmit Threshold Value + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MCTL +// register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR 0x000000F8 // Address for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MDV +// register. +// +//***************************************************************************** +#define MAC_MDV_DIV 0x000000FF // Clock Divider for MDC for TX + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MTXD +// register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX 0x0000FFFF // Data for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MRXD +// register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX 0x0000FFFF // Data Read from Last MII Trans + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_NP +// register. +// +//***************************************************************************** +#define MAC_NP_NPR 0x0000003F // Number of RX Frames in FIFO + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the PHY_MR23 +// register. +// +//***************************************************************************** +#define PHY_MR23_LED1_TX 0x00000020 // TX Activity +#define PHY_MR23_LED1_RX 0x00000030 // RX Activity +#define PHY_MR23_LED1_COL 0x00000040 // Collision +#define PHY_MR23_LED0_TX 0x00000002 // TX Activity +#define PHY_MR23_LED0_RX 0x00000003 // RX Activity +#define PHY_MR23_LED0_COL 0x00000004 // Collision + +//***************************************************************************** +// +// The following are deprecated defines for the reset values of the MAC +// registers. +// +//***************************************************************************** +#define MAC_RV_MDV 0x00000080 +#define MAC_RV_IM 0x0000007F +#define MAC_RV_THR 0x0000003F +#define MAC_RV_RCTL 0x00000008 +#define MAC_RV_IA0 0x00000000 +#define MAC_RV_TCTL 0x00000000 +#define MAC_RV_DATA 0x00000000 +#define MAC_RV_MRXD 0x00000000 +#define MAC_RV_TR 0x00000000 +#define MAC_RV_IS 0x00000000 +#define MAC_RV_NP 0x00000000 +#define MAC_RV_MCTL 0x00000000 +#define MAC_RV_MTXD 0x00000000 +#define MAC_RV_IA1 0x00000000 +#define MAC_RV_IACK 0x00000000 +#define MAC_RV_MADD 0x00000000 + +#endif + +#endif // __HW_ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.c new file mode 100644 index 00000000..1e213136 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * Implementation of architecture-specific clock functionality + * \author + * Adam Dunkels + */ + +#include "clock-arch.h" +#include "boot.h" + +/*---------------------------------------------------------------------------*/ +clock_time_t +clock_time(void) +{ + return (clock_time_t)TimerGet(); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.h new file mode 100644 index 00000000..aa97f0e7 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/clock-arch.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +#ifndef __CLOCK_ARCH_H__ +#define __CLOCK_ARCH_H__ + +typedef int clock_time_t; +#define CLOCK_CONF_SECOND 1000 + +#endif /* __CLOCK_ARCH_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.c new file mode 100644 index 00000000..a5228bfa --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Author: Adam Dunkels + * + * $Id: netdev.c,v 1.8 2006/06/07 08:39:58 adam Exp $ + */ + + +/*---------------------------------------------------------------------------*/ +#include "uip.h" +#include "uip_arp.h" +#include "boot.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "inc/hw_ethernet.h" +#include "driverlib/sysctl.h" +#include "driverlib/gpio.h" +#include "driverlib/ethernet.h" +#include "driverlib/flashlib.h" + + +/*---------------------------------------------------------------------------*/ +#define NETDEV_LINKUP_TIMEOUT_MS (5000) + +#define NETDEV_DEFAULT_MACADDR0 (0x08) +#define NETDEV_DEFAULT_MACADDR1 (0x00) +#define NETDEV_DEFAULT_MACADDR2 (0x27) +#define NETDEV_DEFAULT_MACADDR3 (0x69) +#define NETDEV_DEFAULT_MACADDR4 (0x5B) +#define NETDEV_DEFAULT_MACADDR5 (0x45) + + +/*---------------------------------------------------------------------------*/ +void netdev_init(void) +{ + blt_int32u ulTemp; + blt_int32u ulLinkTimeOut; + + /* enable and reset the ethernet controller. */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH); + SysCtlPeripheralReset(SYSCTL_PERIPH_ETH); + /* enable port F for ethernet LEDs. + * LED0 Bit 3 Output + * LED1 Bit 2 Output + */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); + GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3); + /* intialize the ethernet controller and disable all ethernet controller + * interrupt sources. + */ + EthernetIntDisable(ETH_BASE, (ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* initialize the ethernet controller for operation. */ + EthernetInitExpClk(ETH_BASE, SysCtlClockGet()); + /* configure the ethernet controller for normal operation. + * - Full Duplex + * - TX CRC Auto Generation + * - TX Padding Enabled + */ + EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN)); + /* wait for the link to become active. */ + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + ulLinkTimeOut = TimerGet() + NETDEV_LINKUP_TIMEOUT_MS; + + while ((ulTemp & 0x0004) == 0) + { + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + /* check for timeout so that the software program can still start if the + * ethernet cable is not connected. + */ + if (TimerGet() >= ulLinkTimeOut) + { + break; + } + } + /* enable the ethernet controller. */ + EthernetEnable(ETH_BASE); +} + + +/*---------------------------------------------------------------------------*/ +void netdev_setmacaddr(void) +{ + struct uip_eth_addr macAddress; + unsigned long ulUser0, ulUser1; + + /* set the default MAC address */ + macAddress.addr[0] = NETDEV_DEFAULT_MACADDR0; + macAddress.addr[1] = NETDEV_DEFAULT_MACADDR1; + macAddress.addr[2] = NETDEV_DEFAULT_MACADDR2; + macAddress.addr[3] = NETDEV_DEFAULT_MACADDR3; + macAddress.addr[4] = NETDEV_DEFAULT_MACADDR4; + macAddress.addr[5] = NETDEV_DEFAULT_MACADDR5; + /* the LM3S eval kit should have a MAC address pre-propgrammed in flash by the + * manufacturer. try to use this one, otherwise use the default values. + */ + FlashUserGet(&ulUser0, &ulUser1); + if ( (ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff) ) + { + macAddress.addr[0] = ((ulUser0 >> 0) & 0xff); + macAddress.addr[1] = ((ulUser0 >> 8) & 0xff); + macAddress.addr[2] = ((ulUser0 >> 16) & 0xff); + macAddress.addr[3] = ((ulUser1 >> 0) & 0xff); + macAddress.addr[4] = ((ulUser1 >> 8) & 0xff); + macAddress.addr[5] = ((ulUser1 >> 16) & 0xff); + } + EthernetMACAddrSet(ETH_BASE, &macAddress.addr[0]); + uip_setethaddr(macAddress); +} + + +/*---------------------------------------------------------------------------*/ +unsigned int netdev_read(void) +{ + blt_int32u ulTemp; + + /* read and Clear the interrupt flag. */ + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* check to see if an RX Interrupt has occured. */ + if(ulTemp & ETH_INT_RX) + { + return EthernetPacketGetNonBlocking(ETH_BASE, uip_buf, sizeof(uip_buf)); + } + return 0; +} + + +/*---------------------------------------------------------------------------*/ +void netdev_send(void) +{ + EthernetPacketPut(ETH_BASE, uip_buf, uip_len); +} + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.h new file mode 100644 index 00000000..d02efb3c --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/netdev.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Adam Dunkels. + * 4. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: netdev.h,v 1.1 2002/01/10 06:22:56 adam Exp $ + * + */ + +#ifndef __NETDEV_H__ +#define __NETDEV_H__ + +void netdev_init(void); +unsigned int netdev_read(void); +void netdev_send(void); +void netdev_setmacaddr(void); + +#endif /* __NETDEV_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/uip-conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/uip-conf.h new file mode 100644 index 00000000..fd9ba0dd --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Boot/lib/uip/uip-conf.h @@ -0,0 +1,151 @@ +/** + * \addtogroup uipopt + * @{ + */ + +/** + * \name Project-specific configuration options + * @{ + * + * uIP has a number of configuration options that can be overridden + * for each project. These are kept in a project-specific uip-conf.h + * file and all configuration names have the prefix UIP_CONF. + */ + +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * An example uIP configuration file + * \author + * Adam Dunkels + */ + +#ifndef __UIP_CONF_H__ +#define __UIP_CONF_H__ + + +/** + * 8 bit datatype + * + * This typedef defines the 8-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned char u8_t; + +/** + * 16 bit datatype + * + * This typedef defines the 16-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned short u16_t; + +/** + * Statistics datatype + * + * This typedef defines the dataype used for keeping statistics in + * uIP. + * + * \hideinitializer + */ +typedef unsigned short uip_stats_t; + +/** + * Maximum number of TCP connections. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_CONNECTIONS 1 + +/** + * Maximum number of listening TCP ports. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_LISTENPORTS 1 + +/** + * uIP buffer size. + * + * \hideinitializer + */ +#define UIP_CONF_BUFFER_SIZE 1600 + +/** + * CPU byte order. + * + * \hideinitializer + */ +#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN + +/** + * Logging on or off + * + * \hideinitializer + */ +#define UIP_CONF_LOGGING 0 + +/** + * UDP support on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP 0 + +/** + * UDP checksums on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP_CHECKSUMS 1 + +/** + * uIP statistics on or off + * + * \hideinitializer + */ +#define UIP_CONF_STATISTICS 0 + +/* Here we include the header file for the application(s) we use in + our project. */ +#include "boot.h" +#include "net.h" + +#endif /* __UIP_CONF_H__ */ + +/** @} */ +/** @} */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.elf index da7613ef..e8fd063d 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.map index 4817e43a..e6642e6c 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.map @@ -1,21 +1,21 @@ Archive member included because of file (symbol) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) (__vfprintf_int_nwp) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) (__vfscanf_int) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) (__getc) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (memcpy) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__umoddi3) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) (__getc) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (memcpy) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__aeabi_uldivmod) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) (__do_debug_operation_mempoll) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__errno) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__floatsisf) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__errno) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__aeabi_i2f) Discarded input sections @@ -120,6 +120,18 @@ Discarded input sections 0x00000000 0xc4 THUMB Debug/../../obj/adc.o .text.ADCPhaseDelayGet 0x00000000 0x4c THUMB Debug/../../obj/adc.o + .debug_frame 0x00000000 0x564 THUMB Debug/../../obj/adc.o + .debug_info 0x00000000 0x8f2 THUMB Debug/../../obj/adc.o + .debug_abbrev 0x00000000 0xf6 THUMB Debug/../../obj/adc.o + .debug_loc 0x00000000 0x6c8 THUMB Debug/../../obj/adc.o + .debug_aranges + 0x00000000 0x110 THUMB Debug/../../obj/adc.o + .debug_ranges 0x00000000 0x100 THUMB Debug/../../obj/adc.o + .debug_line 0x00000000 0x79b THUMB Debug/../../obj/adc.o + .debug_str 0x00000000 0x459 THUMB Debug/../../obj/adc.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/adc.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/adc.o .text 0x00000000 0x0 THUMB Debug/../../obj/comp.o .data 0x00000000 0x0 THUMB Debug/../../obj/comp.o .bss 0x00000000 0x0 THUMB Debug/../../obj/comp.o @@ -139,9 +151,21 @@ Discarded input sections .text.ComparatorIntDisable 0x00000000 0x74 THUMB Debug/../../obj/comp.o .text.ComparatorIntStatus - 0x00000000 0x88 THUMB Debug/../../obj/comp.o + 0x00000000 0x94 THUMB Debug/../../obj/comp.o .text.ComparatorIntClear 0x00000000 0x60 THUMB Debug/../../obj/comp.o + .debug_frame 0x00000000 0x19c THUMB Debug/../../obj/comp.o + .debug_info 0x00000000 0x274 THUMB Debug/../../obj/comp.o + .debug_abbrev 0x00000000 0xde THUMB Debug/../../obj/comp.o + .debug_loc 0x00000000 0x1f8 THUMB Debug/../../obj/comp.o + .debug_aranges + 0x00000000 0x60 THUMB Debug/../../obj/comp.o + .debug_ranges 0x00000000 0x50 THUMB Debug/../../obj/comp.o + .debug_line 0x00000000 0x225 THUMB Debug/../../obj/comp.o + .debug_str 0x00000000 0x1c1 THUMB Debug/../../obj/comp.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/comp.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/comp.o .text 0x00000000 0x0 THUMB Debug/../../obj/cpu.o .data 0x00000000 0x0 THUMB Debug/../../obj/cpu.o .bss 0x00000000 0x0 THUMB Debug/../../obj/cpu.o @@ -206,6 +230,18 @@ Discarded input sections 0x00000000 0x70 THUMB Debug/../../obj/epi.o .text.EPIIntUnregister 0x00000000 0x50 THUMB Debug/../../obj/epi.o + .debug_frame 0x00000000 0x430 THUMB Debug/../../obj/epi.o + .debug_info 0x00000000 0x6b0 THUMB Debug/../../obj/epi.o + .debug_abbrev 0x00000000 0xd1 THUMB Debug/../../obj/epi.o + .debug_loc 0x00000000 0x540 THUMB Debug/../../obj/epi.o + .debug_aranges + 0x00000000 0xd8 THUMB Debug/../../obj/epi.o + .debug_ranges 0x00000000 0xc8 THUMB Debug/../../obj/epi.o + .debug_line 0x00000000 0x50c THUMB Debug/../../obj/epi.o + .debug_str 0x00000000 0x36f THUMB Debug/../../obj/epi.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/epi.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/epi.o .text 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o .data 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o .bss 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o @@ -213,7 +249,7 @@ Discarded input sections .text.EthernetInitExpClk 0x00000000 0x58 THUMB Debug/../../obj/ethernet.o .text.EthernetConfigSet - 0x00000000 0xd8 THUMB Debug/../../obj/ethernet.o + 0x00000000 0xd4 THUMB Debug/../../obj/ethernet.o .text.EthernetConfigGet 0x00000000 0x70 THUMB Debug/../../obj/ethernet.o .text.EthernetMACAddrSet @@ -227,7 +263,7 @@ Discarded input sections .text.EthernetPacketAvail 0x00000000 0x4c THUMB Debug/../../obj/ethernet.o .text.EthernetSpaceAvail - 0x00000000 0x54 THUMB Debug/../../obj/ethernet.o + 0x00000000 0x4c THUMB Debug/../../obj/ethernet.o .text.EthernetPacketGetInternal 0x00000000 0x1b0 THUMB Debug/../../obj/ethernet.o .text.EthernetPacketGetNonBlocking @@ -253,13 +289,25 @@ Discarded input sections .text.EthernetIntClear 0x00000000 0x5c THUMB Debug/../../obj/ethernet.o .text.EthernetPHYWrite - 0x00000000 0x8c THUMB Debug/../../obj/ethernet.o - .text.EthernetPHYRead 0x00000000 0x88 THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYRead + 0x00000000 0x84 THUMB Debug/../../obj/ethernet.o .text.EthernetPHYPowerOff 0x00000000 0x3c THUMB Debug/../../obj/ethernet.o .text.EthernetPHYPowerOn 0x00000000 0x3c THUMB Debug/../../obj/ethernet.o + .debug_frame 0x00000000 0x454 THUMB Debug/../../obj/ethernet.o + .debug_info 0x00000000 0x6d3 THUMB Debug/../../obj/ethernet.o + .debug_abbrev 0x00000000 0x125 THUMB Debug/../../obj/ethernet.o + .debug_loc 0x00000000 0x578 THUMB Debug/../../obj/ethernet.o + .debug_aranges + 0x00000000 0xe0 THUMB Debug/../../obj/ethernet.o + .debug_ranges 0x00000000 0xd0 THUMB Debug/../../obj/ethernet.o + .debug_line 0x00000000 0x497 THUMB Debug/../../obj/ethernet.o + .debug_str 0x00000000 0x36a THUMB Debug/../../obj/ethernet.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/ethernet.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/ethernet.o .text 0x00000000 0x0 THUMB Debug/../../obj/flash.o .data 0x00000000 0x0 THUMB Debug/../../obj/flash.o .bss 0x00000000 0x0 THUMB Debug/../../obj/flash.o @@ -275,11 +323,11 @@ Discarded input sections .text.FlashErase 0x00000000 0x94 THUMB Debug/../../obj/flash.o .text.FlashProgram - 0x00000000 0x188 THUMB Debug/../../obj/flash.o + 0x00000000 0x180 THUMB Debug/../../obj/flash.o .text.FlashProtectGet 0x00000000 0x11c THUMB Debug/../../obj/flash.o .text.FlashProtectSet - 0x00000000 0x248 THUMB Debug/../../obj/flash.o + 0x00000000 0x24c THUMB Debug/../../obj/flash.o .text.FlashProtectSave 0x00000000 0x98 THUMB Debug/../../obj/flash.o .text.FlashUserGet @@ -300,6 +348,18 @@ Discarded input sections 0x00000000 0x34 THUMB Debug/../../obj/flash.o .text.FlashIntClear 0x00000000 0x20 THUMB Debug/../../obj/flash.o + .debug_frame 0x00000000 0x294 THUMB Debug/../../obj/flash.o + .debug_info 0x00000000 0x40b THUMB Debug/../../obj/flash.o + .debug_abbrev 0x00000000 0x1a0 THUMB Debug/../../obj/flash.o + .debug_loc 0x00000000 0x35c THUMB Debug/../../obj/flash.o + .debug_aranges + 0x00000000 0x98 THUMB Debug/../../obj/flash.o + .debug_ranges 0x00000000 0x88 THUMB Debug/../../obj/flash.o + .debug_line 0x00000000 0x38a THUMB Debug/../../obj/flash.o + .debug_str 0x00000000 0x2e0 THUMB Debug/../../obj/flash.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/flash.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/flash.o .text 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .data 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .bss 0x00000000 0x0 THUMB Debug/../../obj/gpio.o @@ -308,21 +368,21 @@ Discarded input sections .text.GPIOGetIntNumber 0x00000000 0x194 THUMB Debug/../../obj/gpio.o .text.GPIODirModeGet - 0x00000000 0xa0 THUMB Debug/../../obj/gpio.o + 0x00000000 0xa4 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeSet - 0x00000000 0x124 THUMB Debug/../../obj/gpio.o + 0x00000000 0x108 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeGet - 0x00000000 0xc8 THUMB Debug/../../obj/gpio.o + 0x00000000 0xc4 THUMB Debug/../../obj/gpio.o .text.GPIOPadConfigGet - 0x00000000 0x174 THUMB Debug/../../obj/gpio.o + 0x00000000 0x16c THUMB Debug/../../obj/gpio.o .text.GPIOPinIntEnable 0x00000000 0x50 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntDisable 0x00000000 0x54 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntStatus - 0x00000000 0x5c THUMB Debug/../../obj/gpio.o + 0x00000000 0x58 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntClear - 0x00000000 0x4c THUMB Debug/../../obj/gpio.o + 0x00000000 0x48 THUMB Debug/../../obj/gpio.o .text.GPIOPortIntRegister 0x00000000 0x64 THUMB Debug/../../obj/gpio.o .text.GPIOPortIntUnregister @@ -360,7 +420,7 @@ Discarded input sections .text.GPIOPinTypeEPI 0x00000000 0x68 THUMB Debug/../../obj/gpio.o .text.GPIOPinConfigure - 0x00000000 0xec THUMB Debug/../../obj/gpio.o + 0x00000000 0xe0 THUMB Debug/../../obj/gpio.o .text 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o .data 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o .bss 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o @@ -423,6 +483,18 @@ Discarded input sections 0x00000000 0x48 THUMB Debug/../../obj/hibernate.o .text.HibernateIsActive 0x00000000 0x24 THUMB Debug/../../obj/hibernate.o + .debug_frame 0x00000000 0x440 THUMB Debug/../../obj/hibernate.o + .debug_info 0x00000000 0x467 THUMB Debug/../../obj/hibernate.o + .debug_abbrev 0x00000000 0x144 THUMB Debug/../../obj/hibernate.o + .debug_loc 0x00000000 0x584 THUMB Debug/../../obj/hibernate.o + .debug_aranges + 0x00000000 0xf8 THUMB Debug/../../obj/hibernate.o + .debug_ranges 0x00000000 0xe8 THUMB Debug/../../obj/hibernate.o + .debug_line 0x00000000 0x394 THUMB Debug/../../obj/hibernate.o + .debug_str 0x00000000 0x398 THUMB Debug/../../obj/hibernate.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/hibernate.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/hibernate.o .text 0x00000000 0x0 THUMB Debug/../../obj/i2c.o .data 0x00000000 0x0 THUMB Debug/../../obj/i2c.o .bss 0x00000000 0x0 THUMB Debug/../../obj/i2c.o @@ -476,7 +548,7 @@ Discarded input sections .text.I2CMasterControl 0x00000000 0xa0 THUMB Debug/../../obj/i2c.o .text.I2CMasterErr - 0x00000000 0x78 THUMB Debug/../../obj/i2c.o + 0x00000000 0x74 THUMB Debug/../../obj/i2c.o .text.I2CMasterDataPut 0x00000000 0x50 THUMB Debug/../../obj/i2c.o .text.I2CMasterDataGet @@ -487,6 +559,18 @@ Discarded input sections 0x00000000 0x50 THUMB Debug/../../obj/i2c.o .text.I2CSlaveDataGet 0x00000000 0x4c THUMB Debug/../../obj/i2c.o + .debug_frame 0x00000000 0x538 THUMB Debug/../../obj/i2c.o + .debug_info 0x00000000 0x69b THUMB Debug/../../obj/i2c.o + .debug_abbrev 0x00000000 0xe2 THUMB Debug/../../obj/i2c.o + .debug_loc 0x00000000 0x690 THUMB Debug/../../obj/i2c.o + .debug_aranges + 0x00000000 0x108 THUMB Debug/../../obj/i2c.o + .debug_ranges 0x00000000 0xf8 THUMB Debug/../../obj/i2c.o + .debug_line 0x00000000 0x53e THUMB Debug/../../obj/i2c.o + .debug_str 0x00000000 0x35d THUMB Debug/../../obj/i2c.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/i2c.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/i2c.o .text 0x00000000 0x0 THUMB Debug/../../obj/i2s.o .data 0x00000000 0x0 THUMB Debug/../../obj/i2s.o .bss 0x00000000 0x0 THUMB Debug/../../obj/i2s.o @@ -512,23 +596,23 @@ Discarded input sections .text.I2SRxDisable 0x00000000 0x48 THUMB Debug/../../obj/i2s.o .text.I2SRxDataGet - 0x00000000 0x54 THUMB Debug/../../obj/i2s.o + 0x00000000 0x50 THUMB Debug/../../obj/i2s.o .text.I2SRxDataGetNonBlocking - 0x00000000 0x60 THUMB Debug/../../obj/i2s.o + 0x00000000 0x5c THUMB Debug/../../obj/i2s.o .text.I2SRxConfigSet - 0x00000000 0xdc THUMB Debug/../../obj/i2s.o + 0x00000000 0xc0 THUMB Debug/../../obj/i2s.o .text.I2SRxFIFOLimitSet - 0x00000000 0x60 THUMB Debug/../../obj/i2s.o + 0x00000000 0x5c THUMB Debug/../../obj/i2s.o .text.I2SRxFIFOLimitGet - 0x00000000 0x48 THUMB Debug/../../obj/i2s.o - .text.I2SRxFIFOLevelGet 0x00000000 0x44 THUMB Debug/../../obj/i2s.o + .text.I2SRxFIFOLevelGet + 0x00000000 0x40 THUMB Debug/../../obj/i2s.o .text.I2STxRxEnable 0x00000000 0x60 THUMB Debug/../../obj/i2s.o .text.I2STxRxDisable 0x00000000 0x48 THUMB Debug/../../obj/i2s.o .text.I2STxRxConfigSet - 0x00000000 0x104 THUMB Debug/../../obj/i2s.o + 0x00000000 0xe8 THUMB Debug/../../obj/i2s.o .text.I2SMasterClockSelect 0x00000000 0x74 THUMB Debug/../../obj/i2s.o .text.I2SIntEnable @@ -536,13 +620,25 @@ Discarded input sections .text.I2SIntDisable 0x00000000 0x70 THUMB Debug/../../obj/i2s.o .text.I2SIntStatus - 0x00000000 0x5c THUMB Debug/../../obj/i2s.o + 0x00000000 0x54 THUMB Debug/../../obj/i2s.o .text.I2SIntClear - 0x00000000 0x68 THUMB Debug/../../obj/i2s.o + 0x00000000 0x64 THUMB Debug/../../obj/i2s.o .text.I2SIntRegister 0x00000000 0x70 THUMB Debug/../../obj/i2s.o .text.I2SIntUnregister 0x00000000 0x50 THUMB Debug/../../obj/i2s.o + .debug_frame 0x00000000 0x488 THUMB Debug/../../obj/i2s.o + .debug_info 0x00000000 0x5ad THUMB Debug/../../obj/i2s.o + .debug_abbrev 0x00000000 0xed THUMB Debug/../../obj/i2s.o + .debug_loc 0x00000000 0x5b0 THUMB Debug/../../obj/i2s.o + .debug_aranges + 0x00000000 0xe8 THUMB Debug/../../obj/i2s.o + .debug_ranges 0x00000000 0xd8 THUMB Debug/../../obj/i2s.o + .debug_line 0x00000000 0x419 THUMB Debug/../../obj/i2s.o + .debug_str 0x00000000 0x2ce THUMB Debug/../../obj/i2s.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/i2s.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/i2s.o .text 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o .data 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o .bss 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o @@ -602,6 +698,18 @@ Discarded input sections 0x00000000 0x4c THUMB Debug/../../obj/mpu.o .text.MPUIntUnregister 0x00000000 0x24 THUMB Debug/../../obj/mpu.o + .debug_frame 0x00000000 0x17c THUMB Debug/../../obj/mpu.o + .debug_info 0x00000000 0x1c1 THUMB Debug/../../obj/mpu.o + .debug_abbrev 0x00000000 0xcb THUMB Debug/../../obj/mpu.o + .debug_loc 0x00000000 0x1d4 THUMB Debug/../../obj/mpu.o + .debug_aranges + 0x00000000 0x60 THUMB Debug/../../obj/mpu.o + .debug_ranges 0x00000000 0x50 THUMB Debug/../../obj/mpu.o + .debug_line 0x00000000 0x17c THUMB Debug/../../obj/mpu.o + .debug_str 0x00000000 0x193 THUMB Debug/../../obj/mpu.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/mpu.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/mpu.o .text 0x00000000 0x0 THUMB Debug/../../obj/pwm.o .data 0x00000000 0x0 THUMB Debug/../../obj/pwm.o .bss 0x00000000 0x0 THUMB Debug/../../obj/pwm.o @@ -621,9 +729,9 @@ Discarded input sections .text.PWMGenDisable 0x00000000 0x74 THUMB Debug/../../obj/pwm.o .text.PWMPulseWidthSet - 0x00000000 0xd4 THUMB Debug/../../obj/pwm.o + 0x00000000 0xd0 THUMB Debug/../../obj/pwm.o .text.PWMPulseWidthGet - 0x00000000 0xb8 THUMB Debug/../../obj/pwm.o + 0x00000000 0xb4 THUMB Debug/../../obj/pwm.o .text.PWMDeadBandEnable 0x00000000 0xd4 THUMB Debug/../../obj/pwm.o .text.PWMDeadBandDisable @@ -667,15 +775,27 @@ Discarded input sections .text.PWMFaultIntClearExt 0x00000000 0x60 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultConfigure - 0x00000000 0xec THUMB Debug/../../obj/pwm.o + 0x00000000 0xf4 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultTriggerSet 0x00000000 0x11c THUMB Debug/../../obj/pwm.o .text.PWMGenFaultTriggerGet 0x00000000 0xcc THUMB Debug/../../obj/pwm.o .text.PWMGenFaultStatus - 0x00000000 0xd8 THUMB Debug/../../obj/pwm.o + 0x00000000 0xe4 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultClear - 0x00000000 0x128 THUMB Debug/../../obj/pwm.o + 0x00000000 0x134 THUMB Debug/../../obj/pwm.o + .debug_frame 0x00000000 0x60c THUMB Debug/../../obj/pwm.o + .debug_info 0x00000000 0x9c5 THUMB Debug/../../obj/pwm.o + .debug_abbrev 0x00000000 0xeb THUMB Debug/../../obj/pwm.o + .debug_loc 0x00000000 0x7a8 THUMB Debug/../../obj/pwm.o + .debug_aranges + 0x00000000 0x130 THUMB Debug/../../obj/pwm.o + .debug_ranges 0x00000000 0x120 THUMB Debug/../../obj/pwm.o + .debug_line 0x00000000 0x6d3 THUMB Debug/../../obj/pwm.o + .debug_str 0x00000000 0x451 THUMB Debug/../../obj/pwm.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/pwm.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/pwm.o .text 0x00000000 0x0 THUMB Debug/../../obj/qei.o .data 0x00000000 0x0 THUMB Debug/../../obj/qei.o .bss 0x00000000 0x0 THUMB Debug/../../obj/qei.o @@ -693,7 +813,7 @@ Discarded input sections .text.QEIDirectionGet 0x00000000 0x60 THUMB Debug/../../obj/qei.o .text.QEIErrorGet - 0x00000000 0x54 THUMB Debug/../../obj/qei.o + 0x00000000 0x5c THUMB Debug/../../obj/qei.o .text.QEIVelocityEnable 0x00000000 0x50 THUMB Debug/../../obj/qei.o .text.QEIVelocityDisable @@ -714,6 +834,18 @@ Discarded input sections 0x00000000 0x60 THUMB Debug/../../obj/qei.o .text.QEIIntClear 0x00000000 0x50 THUMB Debug/../../obj/qei.o + .debug_frame 0x00000000 0x2fc THUMB Debug/../../obj/qei.o + .debug_info 0x00000000 0x3dc THUMB Debug/../../obj/qei.o + .debug_abbrev 0x00000000 0xed THUMB Debug/../../obj/qei.o + .debug_loc 0x00000000 0x3b8 THUMB Debug/../../obj/qei.o + .debug_aranges + 0x00000000 0xa0 THUMB Debug/../../obj/qei.o + .debug_ranges 0x00000000 0x90 THUMB Debug/../../obj/qei.o + .debug_line 0x00000000 0x366 THUMB Debug/../../obj/qei.o + .debug_str 0x00000000 0x23b THUMB Debug/../../obj/qei.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/qei.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/qei.o .text 0x00000000 0x0 THUMB Debug/../../obj/ssi.o .data 0x00000000 0x0 THUMB Debug/../../obj/ssi.o .bss 0x00000000 0x0 THUMB Debug/../../obj/ssi.o @@ -749,6 +881,18 @@ Discarded input sections .text.SSIDMADisable 0x00000000 0x5c THUMB Debug/../../obj/ssi.o .text.SSIBusy 0x00000000 0x5c THUMB Debug/../../obj/ssi.o + .debug_frame 0x00000000 0x2d0 THUMB Debug/../../obj/ssi.o + .debug_info 0x00000000 0x455 THUMB Debug/../../obj/ssi.o + .debug_abbrev 0x00000000 0xe2 THUMB Debug/../../obj/ssi.o + .debug_loc 0x00000000 0x380 THUMB Debug/../../obj/ssi.o + .debug_aranges + 0x00000000 0x98 THUMB Debug/../../obj/ssi.o + .debug_ranges 0x00000000 0x88 THUMB Debug/../../obj/ssi.o + .debug_line 0x00000000 0x3f3 THUMB Debug/../../obj/ssi.o + .debug_str 0x00000000 0x269 THUMB Debug/../../obj/ssi.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/ssi.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/ssi.o .text 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o .data 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o .bss 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o @@ -909,6 +1053,18 @@ Discarded input sections 0x00000000 0x44 THUMB Debug/../../obj/timer.o .text.TimerQuiesce 0x00000000 0x11c THUMB Debug/../../obj/timer.o + .debug_frame 0x00000000 0x4b0 THUMB Debug/../../obj/timer.o + .debug_info 0x00000000 0x6c7 THUMB Debug/../../obj/timer.o + .debug_abbrev 0x00000000 0xdc THUMB Debug/../../obj/timer.o + .debug_loc 0x00000000 0x5e8 THUMB Debug/../../obj/timer.o + .debug_aranges + 0x00000000 0xf0 THUMB Debug/../../obj/timer.o + .debug_ranges 0x00000000 0xe0 THUMB Debug/../../obj/timer.o + .debug_line 0x00000000 0x6b8 THUMB Debug/../../obj/timer.o + .debug_str 0x00000000 0x2f8 THUMB Debug/../../obj/timer.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/timer.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/timer.o .text 0x00000000 0x0 THUMB Debug/../../obj/uart.o .data 0x00000000 0x0 THUMB Debug/../../obj/uart.o .bss 0x00000000 0x0 THUMB Debug/../../obj/uart.o @@ -1034,6 +1190,18 @@ Discarded input sections 0x00000000 0x6c THUMB Debug/../../obj/udma.o .text.uDMAIntUnregister 0x00000000 0x28 THUMB Debug/../../obj/udma.o + .debug_frame 0x00000000 0x3b4 THUMB Debug/../../obj/udma.o + .debug_info 0x00000000 0x577 THUMB Debug/../../obj/udma.o + .debug_abbrev 0x00000000 0x182 THUMB Debug/../../obj/udma.o + .debug_loc 0x00000000 0x4c0 THUMB Debug/../../obj/udma.o + .debug_aranges + 0x00000000 0xd0 THUMB Debug/../../obj/udma.o + .debug_ranges 0x00000000 0xc0 THUMB Debug/../../obj/udma.o + .debug_line 0x00000000 0x415 THUMB Debug/../../obj/udma.o + .debug_str 0x00000000 0x3e2 THUMB Debug/../../obj/udma.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/udma.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/udma.o .text 0x00000000 0x0 THUMB Debug/../../obj/usb.o .data 0x00000000 0x0 THUMB Debug/../../obj/usb.o .bss 0x00000000 0x0 THUMB Debug/../../obj/usb.o @@ -1051,7 +1219,7 @@ Discarded input sections .text.USBHostSpeedGet 0x00000000 0x6c THUMB Debug/../../obj/usb.o .text.USBIntStatus - 0x00000000 0xe0 THUMB Debug/../../obj/usb.o + 0x00000000 0xd0 THUMB Debug/../../obj/usb.o .text.USBIntDisable 0x00000000 0x11c THUMB Debug/../../obj/usb.o .text.USBIntEnable @@ -1061,7 +1229,7 @@ Discarded input sections .text.USBIntEnableControl 0x00000000 0xac THUMB Debug/../../obj/usb.o .text.USBIntStatusControl - 0x00000000 0xb8 THUMB Debug/../../obj/usb.o + 0x00000000 0xa8 THUMB Debug/../../obj/usb.o .text.USBIntDisableEndpoint 0x00000000 0x84 THUMB Debug/../../obj/usb.o .text.USBIntEnableEndpoint @@ -1079,7 +1247,7 @@ Discarded input sections .text.USBDevEndpointStatusClear 0x00000000 0x17c THUMB Debug/../../obj/usb.o .text.USBHostEndpointDataToggle - 0x00000000 0x190 THUMB Debug/../../obj/usb.o + 0x00000000 0x174 THUMB Debug/../../obj/usb.o .text.USBEndpointDataToggleClear 0x00000000 0xf4 THUMB Debug/../../obj/usb.o .text.USBDevEndpointStall @@ -1095,19 +1263,19 @@ Discarded input sections .text.USBDevAddrGet 0x00000000 0x3c THUMB Debug/../../obj/usb.o .text.USBHostEndpointConfig - 0x00000000 0x274 THUMB Debug/../../obj/usb.o + 0x00000000 0x25c THUMB Debug/../../obj/usb.o .text.USBDevEndpointConfigSet - 0x00000000 0x1c0 THUMB Debug/../../obj/usb.o + 0x00000000 0x1b4 THUMB Debug/../../obj/usb.o .text.USBDevEndpointConfigGet - 0x00000000 0x204 THUMB Debug/../../obj/usb.o + 0x00000000 0x1fc THUMB Debug/../../obj/usb.o .text.USBFIFOConfigSet 0x00000000 0x140 THUMB Debug/../../obj/usb.o .text.USBFIFOConfigGet 0x00000000 0x148 THUMB Debug/../../obj/usb.o .text.USBEndpointDMAEnable - 0x00000000 0x78 THUMB Debug/../../obj/usb.o + 0x00000000 0x64 THUMB Debug/../../obj/usb.o .text.USBEndpointDMADisable - 0x00000000 0x78 THUMB Debug/../../obj/usb.o + 0x00000000 0x64 THUMB Debug/../../obj/usb.o .text.USBEndpointDataAvail 0x00000000 0xec THUMB Debug/../../obj/usb.o .text.USBEndpointDataGet @@ -1121,7 +1289,7 @@ Discarded input sections .text.USBEndpointDataSend 0x00000000 0xf8 THUMB Debug/../../obj/usb.o .text.USBFIFOFlush - 0x00000000 0x154 THUMB Debug/../../obj/usb.o + 0x00000000 0x14c THUMB Debug/../../obj/usb.o .text.USBHostRequestIN 0x00000000 0xd0 THUMB Debug/../../obj/usb.o .text.USBHostRequestStatus @@ -1155,13 +1323,25 @@ Discarded input sections .text.USBEndpointDMAChannel 0x00000000 0x108 THUMB Debug/../../obj/usb.o .text.USBHostMode - 0x00000000 0x44 THUMB Debug/../../obj/usb.o + 0x00000000 0x40 THUMB Debug/../../obj/usb.o .text.USBDevMode - 0x00000000 0x44 THUMB Debug/../../obj/usb.o + 0x00000000 0x40 THUMB Debug/../../obj/usb.o .text.USBPHYPowerOff 0x00000000 0x2c THUMB Debug/../../obj/usb.o .text.USBPHYPowerOn 0x00000000 0x2c THUMB Debug/../../obj/usb.o + .debug_frame 0x00000000 0xaa4 THUMB Debug/../../obj/usb.o + .debug_info 0x00000000 0x1106 THUMB Debug/../../obj/usb.o + .debug_abbrev 0x00000000 0x148 THUMB Debug/../../obj/usb.o + .debug_loc 0x00000000 0xd90 THUMB Debug/../../obj/usb.o + .debug_aranges + 0x00000000 0x208 THUMB Debug/../../obj/usb.o + .debug_ranges 0x00000000 0x1f8 THUMB Debug/../../obj/usb.o + .debug_line 0x00000000 0x1174 THUMB Debug/../../obj/usb.o + .debug_str 0x00000000 0x6d1 THUMB Debug/../../obj/usb.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/usb.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/usb.o .text 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o .data 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o .bss 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o @@ -1200,733 +1380,754 @@ Discarded input sections 0x00000000 0x50 THUMB Debug/../../obj/watchdog.o .text.WatchdogStallDisable 0x00000000 0x50 THUMB Debug/../../obj/watchdog.o - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + .debug_frame 0x00000000 0x2fc THUMB Debug/../../obj/watchdog.o + .debug_info 0x00000000 0x351 THUMB Debug/../../obj/watchdog.o + .debug_abbrev 0x00000000 0xde THUMB Debug/../../obj/watchdog.o + .debug_loc 0x00000000 0x3b8 THUMB Debug/../../obj/watchdog.o + .debug_aranges + 0x00000000 0xa0 THUMB Debug/../../obj/watchdog.o + .debug_ranges 0x00000000 0x90 THUMB Debug/../../obj/watchdog.o + .debug_line 0x00000000 0x309 THUMB Debug/../../obj/watchdog.o + .debug_str 0x00000000 0x236 THUMB Debug/../../obj/watchdog.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/watchdog.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/watchdog.o + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.twodigit - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.month_name - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.checked_day_name - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_ch - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_str - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_nstr - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_digit - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigit - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigits_leading_blank - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigit2 - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_formatted - 0x00000000 0x3ec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x3ec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__RAL_pow10 - 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__stdin_ungetc - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__print_padding - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__pre_padding - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xlltoa - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xltoa - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xtoa - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.abs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.asctime_r - 0x00000000 0xfc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xf8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.asctime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atexit - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc._execute_at_exit_fns - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.bsearch - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_is_exact_power_of_two - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_round_power_of_two - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_count_leading_zeroes - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_ilogb - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_alloc - 0x00000000 0x108 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1e8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_free - 0x00000000 0xf0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xf0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_heap_init - 0x00000000 0xc0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x138 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isalpha - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isxdigit - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__strtoull - 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__strtoul - 0x00000000 0xec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xe4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ispunct - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isalnum - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isprint - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isgraph - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.iscntrl - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.tolower - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.toupper - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isblank - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.div - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.itoa - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.labs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ldiv - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_init - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_alloc - 0x00000000 0xb4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_free - 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_realloc - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.llabs - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.lldiv - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.lltoa - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localeconv - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.setlocale - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ltoa - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.malloc - 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.calloc - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.free - 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.realloc - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memccpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.mempcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memcmp - 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x88 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memmove - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.qsort - 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x488 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.rand - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.snprintf - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.sprintf - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.srand - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.sscanf - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcasecmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcasestr - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcat - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcspn - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strdup - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strftime - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncasecmp - 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xd0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncasestr - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xbc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncat - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strlcat - 0x00000000 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncmp - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strlcpy - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnlen - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strndup - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnstr - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strpbrk - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strrchr - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strsep - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strspn - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strstr - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtod - 0x00000000 0x1bc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtof - 0x00000000 0x19c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtok - 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtok_r - 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtol - 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atol - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atoi - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atof - 0x00000000 0x14c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1cc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoll - 0x00000000 0xa4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atoll - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoul - 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoull - 0x00000000 0xb4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localtime_r - 0x00000000 0x190 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x188 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.difftime - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.checktm - 0x00000000 0x244 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x23c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.mktime - 0x00000000 0x1c0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x3b4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctime - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctime_r - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gmtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gmtime_r - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gettimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.settimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ulltoa - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ultoa - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.utoa - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsnprintf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsprintf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsscanf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscat - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcschr - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscmp - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscspn - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcslen - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsdup - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncat - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncmp - 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnlen - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnstr - 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcspbrk - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsrchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcssep - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsspn - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsstr - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcstok - 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcstok_r - 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemcpy - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemccpy - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmempcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemmove - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemcmp - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemset - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.heap - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__crt_get_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.year_lengths - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.mon_name - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc.last.2692 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__atexitfns - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.invalid - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.str1.4 - 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.__RAL_rand_next - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.power - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.__RAL_mon_lengths - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc.last.3164 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc.last.5990 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc.last.5518 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.day_name - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.month_names - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.asctime_buf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.__ctype - 0x00000000 0x104 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x104 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__crt_set_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.atexitfn_count - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.__ungot - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc._lconv - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.day_names - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.longjmp - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .debug_frame 0x00000000 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy_fast - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy_small - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memset - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.__aeabi_memset - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.setjmp - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strcpy - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strcmp - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strlen - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r4 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r1 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r2 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r3 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r0 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r5 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_sp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r7 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r8 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r9 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_sl - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r6 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_lr - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_ip - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_fp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .debug_frame 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_asr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_div - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_lsl - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_lsr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_mod - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_udivmod - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_ldivmod - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_cmp - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_ucmp - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.muldi3 - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_div - 0x00000000 0x310 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x320 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .rodata.libc.__aeabi_idiv - 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .rodata.libc.__aeabi_uidiv - 0x00000000 0x46 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x46 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_mod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_uidivmod - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_idivmod - 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_16 - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_shi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_si - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_sqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uhi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio - 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.__do_nvdebug_operation - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_abort - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fopen - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgets - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fputc - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fputs - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fread - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fwrite - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fseek - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ftell - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_gets - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fflush - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fclose - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgetc - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getchar - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_putchar - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_puts - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_rewind - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_clearerr - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_feof - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ferror - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getch - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_time - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vprintf - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vfprintf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ungetc - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgetpos - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fsetpos - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_freopen - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_perror - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_remove - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_rename - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_tmpfile - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_tmpnam - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getenv - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_system - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vfscanf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vscanf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_exit - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_enabled - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_kbhit - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ioctl - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_runtime_error - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_break - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getargs - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_geti - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getu - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getl - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getul - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getd - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getll - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getull - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_filesize - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_accept - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_bind - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_listen - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_shutdown - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_socket - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_htons - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_htonl - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_loadsymbols - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_unloadsymbols - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.getenv_buffer - 0x00000000 0x400 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x400 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.__dbgEnabled - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.tmpnam_buffer - 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__errno - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__heap_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__heap_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__printf_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__printf_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__scanf_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__scanf_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .bss.libc.errno - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int32_to_float32 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .debug_frame 0x00000000 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int32_to_float64 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint32_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint32_to_float64 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int64_to_float32 - 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int64_to_float64 - 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint64_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint64_to_float64 - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_int32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_int64 - 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_uint32 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_int32 - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_int64 - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_uint32 - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_float64 - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_float32 - 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_add - 0x00000000 0x138 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_mul - 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xe4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_div - 0x00000000 0x1e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_cmp - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_add - 0x00000000 0x294 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x2b8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_mul - 0x00000000 0x16c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x180 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_div - 0x00000000 0x214 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_cmp - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isfinite - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isfinite - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_classify - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_classify - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float32_infinity - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float32_nan - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float64_infinity - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float64_nan - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) Memory Configuration @@ -1936,14 +2137,14 @@ CM3_System_Control_Space 0xe000e000 0x00001000 xw Peripherals 0x40020000 0x00100000 xw FiRM_Peripherals 0x40000000 0x00010000 xw SRAM 0x20000000 0x00010000 xw -FLASH 0x00006000 0x0003a000 xr +FLASH 0x00008000 0x00038000 xr *default* 0x00000000 0xffffffff Linker script and memory map - 0x000082c4 __do_debug_operation = __do_debug_operation_mempoll - 0x00007888 __vfprintf = __vfprintf_int_nwp - 0x00007e18 __vfscanf = __vfscanf_int + 0x0000a48c __do_debug_operation = __do_debug_operation_mempoll + 0x00009850 __vfprintf = __vfprintf_int_nwp + 0x00009ea8 __vfscanf = __vfscanf_int 0xe000e000 __CM3_System_Control_Space_segment_start__ = 0xe000e000 0xe000f000 __CM3_System_Control_Space_segment_end__ = 0xe000f000 0x40020000 __Peripherals_segment_start__ = 0x40020000 @@ -1952,7 +2153,7 @@ Linker script and memory map 0x40010000 __FiRM_Peripherals_segment_end__ = 0x40010000 0x20000000 __SRAM_segment_start__ = 0x20000000 0x20010000 __SRAM_segment_end__ = 0x20010000 - 0x00006000 __FLASH_segment_start__ = 0x6000 + 0x00008000 __FLASH_segment_start__ = 0x8000 0x00040000 __FLASH_segment_end__ = 0x40000 0x00000100 __STACKSIZE__ = 0x100 0x00000000 __STACKSIZE_PROCESS__ = 0x0 @@ -1970,245 +2171,251 @@ Linker script and memory map 0x20000000 __vectors_ram_end__ = (__vectors_ram_start__ + SIZEOF (.vectors_ram)) 0x20000000 __vectors_ram_load_end__ = __vectors_ram_end__ 0x00000001 . = ASSERT (((__vectors_ram_end__ >= __SRAM_segment_start__) && (__vectors_ram_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .vectors_ram is too large to fit in SRAM memory segment) - 0x00006000 __vectors_load_start__ = ALIGN (__FLASH_segment_start__, 0x100) + 0x00008000 __vectors_load_start__ = ALIGN (__FLASH_segment_start__, 0x100) -.vectors 0x00006000 0xf4 - 0x00006000 __vectors_start__ = . +.vectors 0x00008000 0xf4 + 0x00008000 __vectors_start__ = . *(.vectors .vectors.*) - .vectors 0x00006000 0xf4 THUMB Debug/../../obj/vectors.o - 0x00006000 _vectors - 0x000060f4 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors)) - 0x000060f4 __vectors_load_end__ = __vectors_end__ + .vectors 0x00008000 0xf4 THUMB Debug/../../obj/vectors.o + 0x00008000 _vectors + 0x000080f4 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors)) + 0x000080f4 __vectors_load_end__ = __vectors_end__ 0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .vectors is too large to fit in FLASH memory segment) - 0x000060f4 __init_load_start__ = ALIGN (__vectors_end__, 0x4) + 0x000080f4 __init_load_start__ = ALIGN (__vectors_end__, 0x4) -.init 0x000060f4 0x114 - 0x000060f4 __init_start__ = . +.init 0x000080f4 0x118 + 0x000080f4 __init_start__ = . *(.init .init.*) - .init 0x000060f4 0x114 THUMB Debug/../../obj/cstart.o - 0x000060f4 _start - 0x00006172 exit - 0x00006196 reset_handler - 0x00006208 __init_end__ = (__init_start__ + SIZEOF (.init)) - 0x00006208 __init_load_end__ = __init_end__ + .init 0x000080f4 0x118 THUMB Debug/../../obj/cstart.o + 0x000080f4 _start + 0x00008176 exit + 0x0000819a reset_handler + 0x0000820c __init_end__ = (__init_start__ + SIZEOF (.init)) + 0x0000820c __init_load_end__ = __init_end__ 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .init is too large to fit in FLASH memory segment) - 0x00006208 __text_load_start__ = ALIGN (__init_end__, 0x4) + 0x0000820c __text_load_start__ = ALIGN (__init_end__, 0x4) -.text 0x00006208 0x20fc - 0x00006208 __text_start__ = . +.text 0x0000820c 0x22c4 + 0x0000820c __text_start__ = . *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*) .glue_7 0x00000000 0x0 linker stubs .glue_7t 0x00000000 0x0 linker stubs .text.BootActivate - 0x00006208 0x10 THUMB Debug/../../obj/boot.o + 0x0000820c 0x10 THUMB Debug/../../obj/boot.o .text.BootComInit - 0x00006218 0x64 THUMB Debug/../../obj/boot.o - 0x00006218 BootComInit + 0x0000821c 0x64 THUMB Debug/../../obj/boot.o + 0x0000821c BootComInit .text.BootComCheckActivationRequest - 0x0000627c 0xdc THUMB Debug/../../obj/boot.o - 0x0000627c BootComCheckActivationRequest + 0x00008280 0xdc THUMB Debug/../../obj/boot.o + 0x00008280 BootComCheckActivationRequest .text.UartReceiveByte - 0x00006358 0x44 THUMB Debug/../../obj/boot.o + 0x0000835c 0x40 THUMB Debug/../../obj/boot.o .text.IrqInterruptEnable - 0x0000639c 0x10 THUMB Debug/../../obj/irq.o - 0x0000639c IrqInterruptEnable - .text.LedInit 0x000063ac 0x48 THUMB Debug/../../obj/led.o - 0x000063ac LedInit + 0x0000839c 0x10 THUMB Debug/../../obj/irq.o + 0x0000839c IrqInterruptEnable + .text.LedInit 0x000083ac 0x48 THUMB Debug/../../obj/led.o + 0x000083ac LedInit .text.LedToggle - 0x000063f4 0xa4 THUMB Debug/../../obj/led.o - 0x000063f4 LedToggle - .text.main 0x00006498 0x30 THUMB Debug/../../obj/main.o - 0x00006498 main - .text.Init 0x000064c8 0x38 THUMB Debug/../../obj/main.o + 0x000083f4 0xa0 THUMB Debug/../../obj/led.o + 0x000083f4 LedToggle + .text.main 0x00008494 0x30 THUMB Debug/../../obj/main.o + 0x00008494 main + .text.Init 0x000084c4 0x38 THUMB Debug/../../obj/main.o .text.__error__ - 0x00006500 0x24 THUMB Debug/../../obj/main.o - 0x00006500 __error__ + 0x000084fc 0x24 THUMB Debug/../../obj/main.o + 0x000084fc __error__ .text.UnusedISR - 0x00006524 0x8 THUMB Debug/../../obj/vectors.o - 0x00006524 UnusedISR + 0x00008520 0x8 THUMB Debug/../../obj/vectors.o + 0x00008520 UnusedISR .text.TimeInit - 0x0000652c 0x50 THUMB Debug/../../obj/time.o - 0x0000652c TimeInit - .text.TimeSet 0x0000657c 0x20 THUMB Debug/../../obj/time.o - 0x0000657c TimeSet - .text.TimeGet 0x0000659c 0x18 THUMB Debug/../../obj/time.o - 0x0000659c TimeGet + 0x00008528 0x50 THUMB Debug/../../obj/time.o + 0x00008528 TimeInit + .text.TimeSet 0x00008578 0x20 THUMB Debug/../../obj/time.o + 0x00008578 TimeSet + .text.TimeGet 0x00008598 0x18 THUMB Debug/../../obj/time.o + 0x00008598 TimeGet .text.TimeISRHandler - 0x000065b4 0x24 THUMB Debug/../../obj/time.o - 0x000065b4 TimeISRHandler + 0x000085b0 0x24 THUMB Debug/../../obj/time.o + 0x000085b0 TimeISRHandler .text.CPUcpsie - 0x000065d8 0xc THUMB Debug/../../obj/cpu.o - 0x000065d8 CPUcpsie + 0x000085d4 0xc THUMB Debug/../../obj/cpu.o + 0x000085d4 CPUcpsie .text.GPIOBaseValid - 0x000065e4 0x118 THUMB Debug/../../obj/gpio.o + 0x000085e0 0x118 THUMB Debug/../../obj/gpio.o .text.GPIODirModeSet - 0x000066fc 0xcc THUMB Debug/../../obj/gpio.o - 0x000066fc GPIODirModeSet + 0x000086f8 0xcc THUMB Debug/../../obj/gpio.o + 0x000086f8 GPIODirModeSet .text.GPIOPadConfigSet - 0x000067c8 0x2a0 THUMB Debug/../../obj/gpio.o - 0x000067c8 GPIOPadConfigSet + 0x000087c4 0x26c THUMB Debug/../../obj/gpio.o + 0x000087c4 GPIOPadConfigSet .text.GPIOPinWrite - 0x00006a68 0x50 THUMB Debug/../../obj/gpio.o - 0x00006a68 GPIOPinWrite + 0x00008a30 0x50 THUMB Debug/../../obj/gpio.o + 0x00008a30 GPIOPinWrite .text.GPIOPinTypeGPIOOutput - 0x00006ab8 0x68 THUMB Debug/../../obj/gpio.o - 0x00006ab8 GPIOPinTypeGPIOOutput + 0x00008a80 0x68 THUMB Debug/../../obj/gpio.o + 0x00008a80 GPIOPinTypeGPIOOutput .text.GPIOPinTypeUART - 0x00006b20 0x68 THUMB Debug/../../obj/gpio.o - 0x00006b20 GPIOPinTypeUART + 0x00008ae8 0x68 THUMB Debug/../../obj/gpio.o + 0x00008ae8 GPIOPinTypeUART .text.IntMasterEnable - 0x00006b88 0x18 THUMB Debug/../../obj/interrupt.o - 0x00006b88 IntMasterEnable + 0x00008b50 0x18 THUMB Debug/../../obj/interrupt.o + 0x00008b50 IntMasterEnable .text.SysCtlPeripheralValid - 0x00006ba0 0x288 THUMB Debug/../../obj/sysctl.o + 0x00008b68 0x288 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralEnable - 0x00006e28 0x7c THUMB Debug/../../obj/sysctl.o - 0x00006e28 SysCtlPeripheralEnable + 0x00008df0 0x7c THUMB Debug/../../obj/sysctl.o + 0x00008df0 SysCtlPeripheralEnable .text.SysCtlReset - 0x00006ea4 0x18 THUMB Debug/../../obj/sysctl.o - 0x00006ea4 SysCtlReset + 0x00008e6c 0x18 THUMB Debug/../../obj/sysctl.o + 0x00008e6c SysCtlReset .text.SysCtlDelay - 0x00006ebc 0x8 THUMB Debug/../../obj/sysctl.o - 0x00006ebc SysCtlDelay + 0x00008e84 0x8 THUMB Debug/../../obj/sysctl.o + 0x00008e84 SysCtlDelay .text.SysCtlClockSet - 0x00006ec4 0x28c THUMB Debug/../../obj/sysctl.o - 0x00006ec4 SysCtlClockSet + 0x00008e8c 0x28c THUMB Debug/../../obj/sysctl.o + 0x00008e8c SysCtlClockSet .text.SysCtlClockGet - 0x00007150 0x370 THUMB Debug/../../obj/sysctl.o - 0x00007150 SysCtlClockGet + 0x00009118 0x370 THUMB Debug/../../obj/sysctl.o + 0x00009118 SysCtlClockGet .text.SysTickEnable - 0x000074c0 0x24 THUMB Debug/../../obj/systick.o - 0x000074c0 SysTickEnable + 0x00009488 0x24 THUMB Debug/../../obj/systick.o + 0x00009488 SysTickEnable .text.SysTickIntEnable - 0x000074e4 0x24 THUMB Debug/../../obj/systick.o - 0x000074e4 SysTickIntEnable + 0x000094ac 0x24 THUMB Debug/../../obj/systick.o + 0x000094ac SysTickIntEnable .text.SysTickPeriodSet - 0x00007508 0x44 THUMB Debug/../../obj/systick.o - 0x00007508 SysTickPeriodSet + 0x000094d0 0x44 THUMB Debug/../../obj/systick.o + 0x000094d0 SysTickPeriodSet .text.UARTBaseValid - 0x0000754c 0x4c THUMB Debug/../../obj/uart.o + 0x00009514 0x4c THUMB Debug/../../obj/uart.o .text.UARTConfigSetExpClk - 0x00007598 0x1bc THUMB Debug/../../obj/uart.o - 0x00007598 UARTConfigSetExpClk + 0x00009560 0x1bc THUMB Debug/../../obj/uart.o + 0x00009560 UARTConfigSetExpClk .text.UARTEnable - 0x00007754 0x68 THUMB Debug/../../obj/uart.o - 0x00007754 UARTEnable + 0x0000971c 0x68 THUMB Debug/../../obj/uart.o + 0x0000971c UARTEnable .text.UARTDisable - 0x000077bc 0x78 THUMB Debug/../../obj/uart.o - 0x000077bc UARTDisable + 0x00009784 0x78 THUMB Debug/../../obj/uart.o + 0x00009784 UARTDisable .text.UARTCharGetNonBlocking - 0x00007834 0x54 THUMB Debug/../../obj/uart.o - 0x00007834 UARTCharGetNonBlocking + 0x000097fc 0x54 THUMB Debug/../../obj/uart.o + 0x000097fc UARTCharGetNonBlocking .text.libc.__vfprintf_int_nwp - 0x00007888 0x420 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - 0x00007888 __vfprintf_int_nwp + 0x00009850 0x460 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + 0x00009850 __vfprintf_int_nwp .text.libc.__ungetc - 0x00007ca8 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + 0x00009cb0 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .text.libc.rd_int - 0x00007cc8 0x150 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + 0x00009cd0 0x1d8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .text.libc.__vfscanf_int - 0x00007e18 0x3c8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - 0x00007e18 __vfscanf_int + 0x00009ea8 0x504 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + 0x00009ea8 __vfscanf_int .text.libc.__getc - 0x000081e0 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000081e0 __getc + 0x0000a3ac 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a3ac __getc .text.libc.__putc - 0x00008208 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008208 __putc + 0x0000a3d0 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a3d0 __putc .text.libc.isupper - 0x00008240 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008240 isupper + 0x0000a408 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a408 isupper .text.libc.islower - 0x00008250 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008250 islower + 0x0000a418 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a418 islower .text.libc.isdigit - 0x00008260 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008260 isdigit + 0x0000a428 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a428 isdigit .text.libc.__digit - 0x00008270 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008270 __digit + 0x0000a438 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a438 __digit .text.libc.isspace - 0x000082ac 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000082ac isspace + 0x0000a474 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a474 isspace .text.libdebugio.__do_debug_operation_mempoll - 0x000082c4 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - 0x000082c4 __do_debug_operation_mempoll + 0x0000a48c 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + 0x0000a48c __do_debug_operation_mempoll .text.libc.__debug_io_lock - 0x000082fc 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - 0x000082fc __debug_io_lock + 0x0000a4c8 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + 0x0000a4c8 __debug_io_lock .text.libc.__debug_io_unlock - 0x00008300 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - 0x00008300 __debug_io_unlock - 0x00008304 __text_end__ = (__text_start__ + SIZEOF (.text)) - 0x00008304 __text_load_end__ = __text_end__ + 0x0000a4cc 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + 0x0000a4cc __debug_io_unlock + 0x0000a4d0 __text_end__ = (__text_start__ + SIZEOF (.text)) + 0x0000a4d0 __text_load_end__ = __text_end__ .vfp11_veneer 0x00000000 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs .v4_bx 0x00000000 0x0 .v4_bx 0x00000000 0x0 linker stubs - 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .text is too large to fit in FLASH memory segment) - 0x00008304 __dtors_load_start__ = ALIGN (__text_end__, 0x4) -.dtors 0x00008304 0x0 - 0x00008304 __dtors_start__ = . +.iplt 0x00000000 0x0 + .iplt 0x00000000 0x0 THUMB Debug/../../obj/boot.o + 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .text is too large to fit in FLASH memory segment) + 0x0000a4d0 __dtors_load_start__ = ALIGN (__text_end__, 0x4) + +.dtors 0x0000a4d0 0x0 + 0x0000a4d0 __dtors_start__ = . *(SORT(.dtors.*)) *(.dtors) *(.fini_array .fini_array.*) - 0x00008304 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) - 0x00008304 __dtors_load_end__ = __dtors_end__ + 0x0000a4d0 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) + 0x0000a4d0 __dtors_load_end__ = __dtors_end__ 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .dtors is too large to fit in FLASH memory segment) - 0x00008304 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) + 0x0000a4d0 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) -.ctors 0x00008304 0x0 - 0x00008304 __ctors_start__ = . +.ctors 0x0000a4d0 0x0 + 0x0000a4d0 __ctors_start__ = . *(SORT(.ctors.*)) *(.ctors) *(.init_array .init_array.*) - 0x00008304 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) - 0x00008304 __ctors_load_end__ = __ctors_end__ + 0x0000a4d0 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) + 0x0000a4d0 __ctors_load_end__ = __ctors_end__ 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .ctors is too large to fit in FLASH memory segment) - 0x00008304 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) + 0x0000a4d0 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) -.rodata 0x00008304 0x240 - 0x00008304 __rodata_start__ = . +.rodata 0x0000a4d0 0x240 + 0x0000a4d0 __rodata_start__ = . *(.rodata .rodata.* .gnu.linkonce.r.*) - .rodata 0x00008304 0x6c THUMB Debug/../../obj/gpio.o + .rodata 0x0000a4d0 0x6c THUMB Debug/../../obj/gpio.o .rodata.g_pulRCGCRegs - 0x00008370 0xc THUMB Debug/../../obj/sysctl.o + 0x0000a53c 0xc THUMB Debug/../../obj/sysctl.o .rodata.g_pulXtals - 0x0000837c 0x5c THUMB Debug/../../obj/sysctl.o - .rodata 0x000083d8 0x6c THUMB Debug/../../obj/sysctl.o - .rodata 0x00008444 0x6c THUMB Debug/../../obj/systick.o - .rodata 0x000084b0 0x6c THUMB Debug/../../obj/uart.o + 0x0000a548 0x5c THUMB Debug/../../obj/sysctl.o + .rodata 0x0000a5a4 0x6c THUMB Debug/../../obj/sysctl.o + .rodata 0x0000a610 0x6c THUMB Debug/../../obj/systick.o + .rodata 0x0000a67c 0x6c THUMB Debug/../../obj/uart.o .rodata.libc.str1.4 - 0x0000851c 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) + 0x0000a6e8 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .rodata.libc.__hex_lc - 0x00008524 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008524 __hex_lc + 0x0000a6f0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a6f0 __hex_lc .rodata.libc.__hex_uc - 0x00008534 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00008534 __hex_uc - 0x00008544 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) - 0x00008544 __rodata_load_end__ = __rodata_end__ + 0x0000a700 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000a700 __hex_uc + 0x0000a710 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) + 0x0000a710 __rodata_load_end__ = __rodata_end__ + +.rel.dyn 0x00008000 0x0 + .rel.iplt 0x00000000 0x0 THUMB Debug/../../obj/boot.o 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .rodata is too large to fit in FLASH memory segment) - 0x00008544 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) + 0x0000a710 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) -.ARM.exidx 0x00008544 0x0 - 0x00008544 __ARM.exidx_start__ = . - 0x00008544 __exidx_start = __ARM.exidx_start__ +.ARM.exidx 0x0000a710 0x0 + 0x0000a710 __ARM.exidx_start__ = . + 0x0000a710 __exidx_start = __ARM.exidx_start__ *(.ARM.exidx .ARM.exidx.*) - 0x00008544 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) - 0x00008544 __exidx_end = __ARM.exidx_end__ - 0x00008544 __ARM.exidx_load_end__ = __ARM.exidx_end__ + 0x0000a710 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) + 0x0000a710 __exidx_end = __ARM.exidx_end__ + 0x0000a710 __ARM.exidx_load_end__ = __ARM.exidx_end__ 0x00000001 . = ASSERT (((__ARM.exidx_end__ >= __FLASH_segment_start__) && (__ARM.exidx_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .ARM.exidx is too large to fit in FLASH memory segment) - 0x00008544 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) + 0x0000a710 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) -.fast 0x20000000 0x0 load address 0x00008544 +.fast 0x20000000 0x0 load address 0x0000a710 0x20000000 __fast_start__ = . *(.fast .fast.*) 0x20000000 __fast_end__ = (__fast_start__ + SIZEOF (.fast)) - 0x00008544 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) + 0x0000a710 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) 0x00000001 . = ASSERT ((((__fast_load_start__ + SIZEOF (.fast)) >= __FLASH_segment_start__) && ((__fast_load_start__ + SIZEOF (.fast)) <= (__FLASH_segment_start__ + 0x40000))), error: .fast is too large to fit in FLASH memory segment) .fast_run 0x20000000 0x0 @@ -2217,13 +2424,16 @@ Linker script and memory map 0x20000000 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run)) 0x20000000 __fast_run_load_end__ = __fast_run_end__ 0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .fast_run is too large to fit in SRAM memory segment) - 0x00008544 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) + 0x0000a710 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) -.data 0x20000000 0x0 load address 0x00008544 +.data 0x20000000 0x0 load address 0x0000a710 0x20000000 __data_start__ = . *(.data .data.* .gnu.linkonce.d.*) 0x20000000 __data_end__ = (__data_start__ + SIZEOF (.data)) - 0x00008544 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + 0x0000a710 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + +.igot.plt 0x00000000 0x0 + .igot.plt 0x00000000 0x0 THUMB Debug/../../obj/boot.o 0x00000001 . = ASSERT ((((__data_load_start__ + SIZEOF (.data)) >= __FLASH_segment_start__) && ((__data_load_start__ + SIZEOF (.data)) <= (__FLASH_segment_start__ + 0x40000))), error: .data is too large to fit in FLASH memory segment) .data_run 0x20000000 0x0 @@ -2237,33 +2447,33 @@ Linker script and memory map .bss 0x20000000 0x6c 0x20000000 __bss_start__ = . *(.bss .bss.* .gnu.linkonce.b.*) - .bss.xcpCtoRxInProgress.1165 + .bss.xcpCtoRxInProgress.3991 0x20000000 0x1 THUMB Debug/../../obj/boot.o *fill* 0x20000001 0x3 00 - .bss.xcpCtoReqPacket.1163 + .bss.xcpCtoReqPacket.3989 0x20000004 0x44 THUMB Debug/../../obj/boot.o - .bss.xcpCtoRxLength.1164 + .bss.xcpCtoRxLength.3990 0x20000048 0x1 THUMB Debug/../../obj/boot.o *fill* 0x20000049 0x3 00 - .bss.timer_counter_last.1159 + .bss.timer_counter_last.3985 0x2000004c 0x4 THUMB Debug/../../obj/led.o - .bss.led_toggle_state.1158 + .bss.led_toggle_state.3984 0x20000050 0x1 THUMB Debug/../../obj/led.o *fill* 0x20000051 0x3 00 - .bss.assert_failure_file.1165 + .bss.assert_failure_file.3991 0x20000054 0x4 THUMB Debug/../../obj/main.o - .bss.assert_failure_line.1166 + .bss.assert_failure_line.3992 0x20000058 0x4 THUMB Debug/../../obj/main.o .bss.millisecond_counter 0x2000005c 0x4 THUMB Debug/../../obj/time.o .bss.libc.__format_extender - 0x20000060 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x20000060 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) 0x20000060 __format_extender .bss.libdebugio.dbgCommWord - 0x20000064 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x20000064 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x20000064 dbgCommWord .bss.libdebugio.dbgCntrlWord_mempoll - 0x20000068 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x20000068 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x20000068 dbgCntrlWord_mempoll *(COMMON) 0x2000006c __bss_end__ = (__bss_start__ + SIZEOF (.bss)) @@ -2314,14 +2524,14 @@ Linker script and memory map 0x200001ec __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) 0x200001ec __tbss_load_end__ = __tbss_end__ 0x00000001 . = ASSERT (((__tbss_end__ >= __SRAM_segment_start__) && (__tbss_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .tbss is too large to fit in SRAM memory segment) - 0x00008544 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + 0x0000a710 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) -.tdata 0x200001ec 0x0 load address 0x00008544 +.tdata 0x200001ec 0x0 load address 0x0000a710 0x200001ec __tdata_start__ = . *(.tdata .tdata.*) 0x200001ec __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) - 0x00008544 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) - 0x00008544 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) + 0x0000a710 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) + 0x0000a710 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) 0x00000001 . = ASSERT ((((__tdata_load_start__ + SIZEOF (.tdata)) >= __FLASH_segment_start__) && ((__tdata_load_start__ + SIZEOF (.tdata)) <= (__FLASH_segment_start__ + 0x40000))), error: .tdata is too large to fit in FLASH memory segment) .tdata_run 0x200001ec 0x0 @@ -2361,160 +2571,93 @@ LOAD THUMB Debug/../../obj/uart.o LOAD THUMB Debug/../../obj/udma.o LOAD THUMB Debug/../../obj/usb.o LOAD THUMB Debug/../../obj/watchdog.o -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a END GROUP OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/../bin/demoprog_ek_lm3s6965.elf elf32-littlearm) -.debug_frame 0x00000000 0x8364 - .debug_frame 0x00000000 0xa8 THUMB Debug/../../obj/boot.o - .debug_frame 0x000000a8 0x7c THUMB Debug/../../obj/irq.o - .debug_frame 0x00000124 0x60 THUMB Debug/../../obj/led.o - .debug_frame 0x00000184 0x80 THUMB Debug/../../obj/main.o - .debug_frame 0x00000204 0x30 THUMB Debug/../../obj/vectors.o - .debug_frame 0x00000234 0xc0 THUMB Debug/../../obj/time.o - .debug_frame 0x000002f4 0x564 THUMB Debug/../../obj/adc.o - .debug_frame 0x00000858 0x19c THUMB Debug/../../obj/comp.o - .debug_frame 0x000009f4 0x70 THUMB Debug/../../obj/cpu.o - .debug_frame 0x00000a64 0x430 THUMB Debug/../../obj/epi.o - .debug_frame 0x00000e94 0x454 THUMB Debug/../../obj/ethernet.o - .debug_frame 0x000012e8 0x294 THUMB Debug/../../obj/flash.o - .debug_frame 0x0000157c 0x5e0 THUMB Debug/../../obj/gpio.o - .debug_frame 0x00001b5c 0x440 THUMB Debug/../../obj/hibernate.o - .debug_frame 0x00001f9c 0x538 THUMB Debug/../../obj/i2c.o - .debug_frame 0x000024d4 0x488 THUMB Debug/../../obj/i2s.o - .debug_frame 0x0000295c 0x27c THUMB Debug/../../obj/interrupt.o - .debug_frame 0x00002bd8 0x17c THUMB Debug/../../obj/mpu.o - .debug_frame 0x00002d54 0x60c THUMB Debug/../../obj/pwm.o - .debug_frame 0x00003360 0x2fc THUMB Debug/../../obj/qei.o - .debug_frame 0x0000365c 0x2d0 THUMB Debug/../../obj/ssi.o - .debug_frame 0x0000392c 0x6d0 THUMB Debug/../../obj/sysctl.o - .debug_frame 0x00003ffc 0x14c THUMB Debug/../../obj/systick.o - .debug_frame 0x00004148 0x4b0 THUMB Debug/../../obj/timer.o - .debug_frame 0x000045f8 0x718 THUMB Debug/../../obj/uart.o - .debug_frame 0x00004d10 0x3b4 THUMB Debug/../../obj/udma.o - .debug_frame 0x000050c4 0xaa4 THUMB Debug/../../obj/usb.o - .debug_frame 0x00005b68 0x2fc THUMB Debug/../../obj/watchdog.o - .debug_frame 0x00005e64 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_frame 0x00005ea4 0x88 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_frame 0x00005f2c 0x128c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_frame 0x000071b8 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .debug_frame 0x000072d8 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .debug_frame 0x00007538 0x78c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_frame 0x00007cc4 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .debug_frame 0x00007d64 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) +.debug_frame 0x00000000 0x36d4 + .debug_frame 0x00000000 0xac THUMB Debug/../../obj/boot.o + .debug_frame 0x000000ac 0x7c THUMB Debug/../../obj/irq.o + .debug_frame 0x00000128 0x60 THUMB Debug/../../obj/led.o + .debug_frame 0x00000188 0x80 THUMB Debug/../../obj/main.o + .debug_frame 0x00000208 0x30 THUMB Debug/../../obj/vectors.o + .debug_frame 0x00000238 0xc0 THUMB Debug/../../obj/time.o + .debug_frame 0x000002f8 0x70 THUMB Debug/../../obj/cpu.o + .debug_frame 0x00000368 0x5e0 THUMB Debug/../../obj/gpio.o + .debug_frame 0x00000948 0x27c THUMB Debug/../../obj/interrupt.o + .debug_frame 0x00000bc4 0x6d0 THUMB Debug/../../obj/sysctl.o + .debug_frame 0x00001294 0x14c THUMB Debug/../../obj/systick.o + .debug_frame 0x000013e0 0x718 THUMB Debug/../../obj/uart.o + .debug_frame 0x00001af8 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_frame 0x00001b38 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_frame 0x00001bc4 0x12e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_frame 0x00002ea4 0x790 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_frame 0x00003634 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_info 0x00000000 0x984f - .debug_info 0x00000000 0x100 THUMB Debug/../../obj/boot.o - .debug_info 0x00000100 0xd6 THUMB Debug/../../obj/cstart.o - .debug_info 0x000001d6 0x7d THUMB Debug/../../obj/irq.o - .debug_info 0x00000253 0x93 THUMB Debug/../../obj/led.o - .debug_info 0x000002e6 0xdd THUMB Debug/../../obj/main.o - .debug_info 0x000003c3 0xbc THUMB Debug/../../obj/vectors.o - .debug_info 0x0000047f 0xc5 THUMB Debug/../../obj/time.o - .debug_info 0x00000544 0x8cc THUMB Debug/../../obj/adc.o - .debug_info 0x00000e10 0x26b THUMB Debug/../../obj/comp.o - .debug_info 0x0000107b 0x110 THUMB Debug/../../obj/cpu.o - .debug_info 0x0000118b 0x698 THUMB Debug/../../obj/epi.o - .debug_info 0x00001823 0x6ba THUMB Debug/../../obj/ethernet.o - .debug_info 0x00001edd 0x3f4 THUMB Debug/../../obj/flash.o - .debug_info 0x000022d1 0x901 THUMB Debug/../../obj/gpio.o - .debug_info 0x00002bd2 0x44b THUMB Debug/../../obj/hibernate.o - .debug_info 0x0000301d 0x67d THUMB Debug/../../obj/i2c.o - .debug_info 0x0000369a 0x593 THUMB Debug/../../obj/i2s.o - .debug_info 0x00003c2d 0x344 THUMB Debug/../../obj/interrupt.o - .debug_info 0x00003f71 0x1b8 THUMB Debug/../../obj/mpu.o - .debug_info 0x00004129 0x9a2 THUMB Debug/../../obj/pwm.o - .debug_info 0x00004acb 0x3cb THUMB Debug/../../obj/qei.o - .debug_info 0x00004e96 0x445 THUMB Debug/../../obj/ssi.o - .debug_info 0x000052db 0x811 THUMB Debug/../../obj/sysctl.o - .debug_info 0x00005aec 0x127 THUMB Debug/../../obj/systick.o - .debug_info 0x00005c13 0x6ac THUMB Debug/../../obj/timer.o - .debug_info 0x000062bf 0x93e THUMB Debug/../../obj/uart.o - .debug_info 0x00006bfd 0x560 THUMB Debug/../../obj/udma.o - .debug_info 0x0000715d 0x10c8 THUMB Debug/../../obj/usb.o - .debug_info 0x00008225 0x340 THUMB Debug/../../obj/watchdog.o - .debug_info 0x00008565 0x36 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_info 0x0000859b 0x65 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_info 0x00008600 0xc63 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_info 0x00009263 0x51f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_info 0x00009782 0xcd C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) +.debug_info 0x00000000 0x399b + .debug_info 0x00000000 0x104 THUMB Debug/../../obj/boot.o + .debug_info 0x00000104 0xd6 THUMB Debug/../../obj/cstart.o + .debug_info 0x000001da 0x80 THUMB Debug/../../obj/irq.o + .debug_info 0x0000025a 0x95 THUMB Debug/../../obj/led.o + .debug_info 0x000002ef 0xe0 THUMB Debug/../../obj/main.o + .debug_info 0x000003cf 0xb7 THUMB Debug/../../obj/vectors.o + .debug_info 0x00000486 0xca THUMB Debug/../../obj/time.o + .debug_info 0x00000550 0x116 THUMB Debug/../../obj/cpu.o + .debug_info 0x00000666 0x92a THUMB Debug/../../obj/gpio.o + .debug_info 0x00000f90 0x35a THUMB Debug/../../obj/interrupt.o + .debug_info 0x000012ea 0x844 THUMB Debug/../../obj/sysctl.o + .debug_info 0x00001b2e 0x130 THUMB Debug/../../obj/systick.o + .debug_info 0x00001c5e 0x967 THUMB Debug/../../obj/uart.o + .debug_info 0x000025c5 0x37 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_info 0x000025fc 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_info 0x00002664 0xd02 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_info 0x00003366 0x55f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_info 0x000038c5 0xd6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_abbrev 0x00000000 0x18d0 - .debug_abbrev 0x00000000 0xae THUMB Debug/../../obj/boot.o - .debug_abbrev 0x000000ae 0x14 THUMB Debug/../../obj/cstart.o - .debug_abbrev 0x000000c2 0x43 THUMB Debug/../../obj/irq.o - .debug_abbrev 0x00000105 0x5a THUMB Debug/../../obj/led.o - .debug_abbrev 0x0000015f 0x99 THUMB Debug/../../obj/main.o - .debug_abbrev 0x000001f8 0xb3 THUMB Debug/../../obj/vectors.o - .debug_abbrev 0x000002ab 0x80 THUMB Debug/../../obj/time.o - .debug_abbrev 0x0000032b 0xea THUMB Debug/../../obj/adc.o - .debug_abbrev 0x00000415 0xcf THUMB Debug/../../obj/comp.o - .debug_abbrev 0x000004e4 0xa8 THUMB Debug/../../obj/cpu.o - .debug_abbrev 0x0000058c 0xc5 THUMB Debug/../../obj/epi.o - .debug_abbrev 0x00000651 0x113 THUMB Debug/../../obj/ethernet.o - .debug_abbrev 0x00000764 0x155 THUMB Debug/../../obj/flash.o - .debug_abbrev 0x000008b9 0xef THUMB Debug/../../obj/gpio.o - .debug_abbrev 0x000009a8 0x100 THUMB Debug/../../obj/hibernate.o - .debug_abbrev 0x00000aa8 0xd6 THUMB Debug/../../obj/i2c.o - .debug_abbrev 0x00000b7e 0xde THUMB Debug/../../obj/i2s.o - .debug_abbrev 0x00000c5c 0x119 THUMB Debug/../../obj/interrupt.o - .debug_abbrev 0x00000d75 0xbc THUMB Debug/../../obj/mpu.o - .debug_abbrev 0x00000e31 0xdc THUMB Debug/../../obj/pwm.o - .debug_abbrev 0x00000f0d 0xde THUMB Debug/../../obj/qei.o - .debug_abbrev 0x00000feb 0xd6 THUMB Debug/../../obj/ssi.o - .debug_abbrev 0x000010c1 0x139 THUMB Debug/../../obj/sysctl.o - .debug_abbrev 0x000011fa 0x81 THUMB Debug/../../obj/systick.o - .debug_abbrev 0x0000127b 0xcd THUMB Debug/../../obj/timer.o - .debug_abbrev 0x00001348 0x104 THUMB Debug/../../obj/uart.o - .debug_abbrev 0x0000144c 0x150 THUMB Debug/../../obj/udma.o - .debug_abbrev 0x0000159c 0x100 THUMB Debug/../../obj/usb.o - .debug_abbrev 0x0000169c 0xcf THUMB Debug/../../obj/watchdog.o - .debug_abbrev 0x0000176b 0x25 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_abbrev 0x00001790 0x43 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_abbrev 0x000017d3 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_abbrev 0x00001873 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_abbrev 0x000018ab 0x25 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) +.debug_abbrev 0x00000000 0xb73 + .debug_abbrev 0x00000000 0xba THUMB Debug/../../obj/boot.o + .debug_abbrev 0x000000ba 0x14 THUMB Debug/../../obj/cstart.o + .debug_abbrev 0x000000ce 0x46 THUMB Debug/../../obj/irq.o + .debug_abbrev 0x00000114 0x60 THUMB Debug/../../obj/led.o + .debug_abbrev 0x00000174 0xa2 THUMB Debug/../../obj/main.o + .debug_abbrev 0x00000216 0xb6 THUMB Debug/../../obj/vectors.o + .debug_abbrev 0x000002cc 0xa1 THUMB Debug/../../obj/time.o + .debug_abbrev 0x0000036d 0xb4 THUMB Debug/../../obj/cpu.o + .debug_abbrev 0x00000421 0xfb THUMB Debug/../../obj/gpio.o + .debug_abbrev 0x0000051c 0x147 THUMB Debug/../../obj/interrupt.o + .debug_abbrev 0x00000663 0x1b6 THUMB Debug/../../obj/sysctl.o + .debug_abbrev 0x00000819 0xa2 THUMB Debug/../../obj/systick.o + .debug_abbrev 0x000008bb 0x116 THUMB Debug/../../obj/uart.o + .debug_abbrev 0x000009d1 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_abbrev 0x000009f9 0x49 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_abbrev 0x00000a42 0xcb C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_abbrev 0x00000b0d 0x3e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_abbrev 0x00000b4b 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_loc 0x00000000 0x8f59 +.debug_loc 0x00000000 0x3a64 .debug_loc 0x00000000 0xbc THUMB Debug/../../obj/boot.o .debug_loc 0x000000bc 0x84 THUMB Debug/../../obj/irq.o .debug_loc 0x00000140 0x64 THUMB Debug/../../obj/led.o .debug_loc 0x000001a4 0x90 THUMB Debug/../../obj/main.o .debug_loc 0x00000234 0x2c THUMB Debug/../../obj/vectors.o .debug_loc 0x00000260 0xe8 THUMB Debug/../../obj/time.o - .debug_loc 0x00000348 0x6c8 THUMB Debug/../../obj/adc.o - .debug_loc 0x00000a10 0x1f8 THUMB Debug/../../obj/comp.o - .debug_loc 0x00000c08 0x540 THUMB Debug/../../obj/epi.o - .debug_loc 0x00001148 0x578 THUMB Debug/../../obj/ethernet.o - .debug_loc 0x000016c0 0x35c THUMB Debug/../../obj/flash.o - .debug_loc 0x00001a1c 0x770 THUMB Debug/../../obj/gpio.o - .debug_loc 0x0000218c 0x584 THUMB Debug/../../obj/hibernate.o - .debug_loc 0x00002710 0x690 THUMB Debug/../../obj/i2c.o - .debug_loc 0x00002da0 0x5b0 THUMB Debug/../../obj/i2s.o - .debug_loc 0x00003350 0x318 THUMB Debug/../../obj/interrupt.o - .debug_loc 0x00003668 0x1d4 THUMB Debug/../../obj/mpu.o - .debug_loc 0x0000383c 0x7a8 THUMB Debug/../../obj/pwm.o - .debug_loc 0x00003fe4 0x3b8 THUMB Debug/../../obj/qei.o - .debug_loc 0x0000439c 0x380 THUMB Debug/../../obj/ssi.o - .debug_loc 0x0000471c 0x8cc THUMB Debug/../../obj/sysctl.o - .debug_loc 0x00004fe8 0x1a4 THUMB Debug/../../obj/systick.o - .debug_loc 0x0000518c 0x5e8 THUMB Debug/../../obj/timer.o - .debug_loc 0x00005774 0x8f8 THUMB Debug/../../obj/uart.o - .debug_loc 0x0000606c 0x4c0 THUMB Debug/../../obj/udma.o - .debug_loc 0x0000652c 0xd90 THUMB Debug/../../obj/usb.o - .debug_loc 0x000072bc 0x3b8 THUMB Debug/../../obj/watchdog.o - .debug_loc 0x00007674 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_loc 0x000076a0 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_loc 0x0000770c 0x1059 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_loc 0x00008765 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + .debug_loc 0x00000348 0x770 THUMB Debug/../../obj/gpio.o + .debug_loc 0x00000ab8 0x318 THUMB Debug/../../obj/interrupt.o + .debug_loc 0x00000dd0 0x8cc THUMB Debug/../../obj/sysctl.o + .debug_loc 0x0000169c 0x1a4 THUMB Debug/../../obj/systick.o + .debug_loc 0x00001840 0x8f8 THUMB Debug/../../obj/uart.o + .debug_loc 0x00002138 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_loc 0x00002165 0x79 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_loc 0x000021de 0x1092 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_loc 0x00003270 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) -.debug_aranges 0x00000000 0x1c20 +.debug_aranges 0x00000000 0xe48 .debug_aranges 0x00000000 0x38 THUMB Debug/../../obj/boot.o .debug_aranges @@ -2530,196 +2673,100 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/P .debug_aranges 0x00000100 0x40 THUMB Debug/../../obj/time.o .debug_aranges - 0x00000140 0x110 THUMB Debug/../../obj/adc.o + 0x00000140 0x48 THUMB Debug/../../obj/cpu.o .debug_aranges - 0x00000250 0x60 THUMB Debug/../../obj/comp.o + 0x00000188 0x128 THUMB Debug/../../obj/gpio.o .debug_aranges - 0x000002b0 0x48 THUMB Debug/../../obj/cpu.o + 0x000002b0 0x90 THUMB Debug/../../obj/interrupt.o .debug_aranges - 0x000002f8 0xd8 THUMB Debug/../../obj/epi.o + 0x00000340 0x178 THUMB Debug/../../obj/sysctl.o .debug_aranges - 0x000003d0 0xe0 THUMB Debug/../../obj/ethernet.o + 0x000004b8 0x60 THUMB Debug/../../obj/systick.o .debug_aranges - 0x000004b0 0x98 THUMB Debug/../../obj/flash.o + 0x00000518 0x160 THUMB Debug/../../obj/uart.o .debug_aranges - 0x00000548 0x128 THUMB Debug/../../obj/gpio.o + 0x00000678 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .debug_aranges - 0x00000670 0xf8 THUMB Debug/../../obj/hibernate.o + 0x00000698 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .debug_aranges - 0x00000768 0x108 THUMB Debug/../../obj/i2c.o + 0x000006c8 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .debug_aranges - 0x00000870 0xe8 THUMB Debug/../../obj/i2s.o + 0x00000bd0 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .debug_aranges - 0x00000958 0x90 THUMB Debug/../../obj/interrupt.o - .debug_aranges - 0x000009e8 0x60 THUMB Debug/../../obj/mpu.o - .debug_aranges - 0x00000a48 0x130 THUMB Debug/../../obj/pwm.o - .debug_aranges - 0x00000b78 0xa0 THUMB Debug/../../obj/qei.o - .debug_aranges - 0x00000c18 0x98 THUMB Debug/../../obj/ssi.o - .debug_aranges - 0x00000cb0 0x178 THUMB Debug/../../obj/sysctl.o - .debug_aranges - 0x00000e28 0x60 THUMB Debug/../../obj/systick.o - .debug_aranges - 0x00000e88 0xf0 THUMB Debug/../../obj/timer.o - .debug_aranges - 0x00000f78 0x160 THUMB Debug/../../obj/uart.o - .debug_aranges - 0x000010d8 0xd0 THUMB Debug/../../obj/udma.o - .debug_aranges - 0x000011a8 0x208 THUMB Debug/../../obj/usb.o - .debug_aranges - 0x000013b0 0xa0 THUMB Debug/../../obj/watchdog.o - .debug_aranges - 0x00001450 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_aranges - 0x00001470 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_aranges - 0x000014a0 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_aranges - 0x000019a8 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_aranges - 0x00001bc0 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000de8 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_ranges 0x00000000 0x19f0 +.debug_ranges 0x00000000 0xd18 .debug_ranges 0x00000000 0x28 THUMB Debug/../../obj/boot.o .debug_ranges 0x00000028 0x20 THUMB Debug/../../obj/irq.o .debug_ranges 0x00000048 0x18 THUMB Debug/../../obj/led.o .debug_ranges 0x00000060 0x20 THUMB Debug/../../obj/main.o .debug_ranges 0x00000080 0x10 THUMB Debug/../../obj/vectors.o .debug_ranges 0x00000090 0x30 THUMB Debug/../../obj/time.o - .debug_ranges 0x000000c0 0x100 THUMB Debug/../../obj/adc.o - .debug_ranges 0x000001c0 0x50 THUMB Debug/../../obj/comp.o - .debug_ranges 0x00000210 0x38 THUMB Debug/../../obj/cpu.o - .debug_ranges 0x00000248 0xc8 THUMB Debug/../../obj/epi.o - .debug_ranges 0x00000310 0xd0 THUMB Debug/../../obj/ethernet.o - .debug_ranges 0x000003e0 0x88 THUMB Debug/../../obj/flash.o - .debug_ranges 0x00000468 0x118 THUMB Debug/../../obj/gpio.o - .debug_ranges 0x00000580 0xe8 THUMB Debug/../../obj/hibernate.o - .debug_ranges 0x00000668 0xf8 THUMB Debug/../../obj/i2c.o - .debug_ranges 0x00000760 0xd8 THUMB Debug/../../obj/i2s.o - .debug_ranges 0x00000838 0x80 THUMB Debug/../../obj/interrupt.o - .debug_ranges 0x000008b8 0x50 THUMB Debug/../../obj/mpu.o - .debug_ranges 0x00000908 0x120 THUMB Debug/../../obj/pwm.o - .debug_ranges 0x00000a28 0x90 THUMB Debug/../../obj/qei.o - .debug_ranges 0x00000ab8 0x88 THUMB Debug/../../obj/ssi.o - .debug_ranges 0x00000b40 0x168 THUMB Debug/../../obj/sysctl.o - .debug_ranges 0x00000ca8 0x50 THUMB Debug/../../obj/systick.o - .debug_ranges 0x00000cf8 0xe0 THUMB Debug/../../obj/timer.o - .debug_ranges 0x00000dd8 0x150 THUMB Debug/../../obj/uart.o - .debug_ranges 0x00000f28 0xc0 THUMB Debug/../../obj/udma.o - .debug_ranges 0x00000fe8 0x1f8 THUMB Debug/../../obj/usb.o - .debug_ranges 0x000011e0 0x90 THUMB Debug/../../obj/watchdog.o - .debug_ranges 0x00001270 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_ranges 0x00001280 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_ranges 0x000012a0 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_ranges 0x00001798 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_ranges 0x000019a0 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_ranges 0x000000c0 0x38 THUMB Debug/../../obj/cpu.o + .debug_ranges 0x000000f8 0x118 THUMB Debug/../../obj/gpio.o + .debug_ranges 0x00000210 0x80 THUMB Debug/../../obj/interrupt.o + .debug_ranges 0x00000290 0x168 THUMB Debug/../../obj/sysctl.o + .debug_ranges 0x000003f8 0x50 THUMB Debug/../../obj/systick.o + .debug_ranges 0x00000448 0x150 THUMB Debug/../../obj/uart.o + .debug_ranges 0x00000598 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_ranges 0x000005a8 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_ranges 0x000005c8 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_ranges 0x00000ac0 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_ranges 0x00000cc8 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_line 0x00000000 0x804d +.debug_line 0x00000000 0x2d7c .debug_line 0x00000000 0xdb THUMB Debug/../../obj/boot.o - .debug_line 0x000000db 0xe5 THUMB Debug/../../obj/cstart.o - .debug_line 0x000001c0 0xb3 THUMB Debug/../../obj/irq.o - .debug_line 0x00000273 0xab THUMB Debug/../../obj/led.o - .debug_line 0x0000031e 0xc7 THUMB Debug/../../obj/main.o - .debug_line 0x000003e5 0x92 THUMB Debug/../../obj/vectors.o - .debug_line 0x00000477 0xd9 THUMB Debug/../../obj/time.o - .debug_line 0x00000550 0x79b THUMB Debug/../../obj/adc.o - .debug_line 0x00000ceb 0x225 THUMB Debug/../../obj/comp.o - .debug_line 0x00000f10 0x103 THUMB Debug/../../obj/cpu.o - .debug_line 0x00001013 0x50c THUMB Debug/../../obj/epi.o - .debug_line 0x0000151f 0x4a7 THUMB Debug/../../obj/ethernet.o - .debug_line 0x000019c6 0x38a THUMB Debug/../../obj/flash.o - .debug_line 0x00001d50 0x777 THUMB Debug/../../obj/gpio.o - .debug_line 0x000024c7 0x394 THUMB Debug/../../obj/hibernate.o - .debug_line 0x0000285b 0x53e THUMB Debug/../../obj/i2c.o - .debug_line 0x00002d99 0x419 THUMB Debug/../../obj/i2s.o - .debug_line 0x000031b2 0x2cc THUMB Debug/../../obj/interrupt.o - .debug_line 0x0000347e 0x17c THUMB Debug/../../obj/mpu.o - .debug_line 0x000035fa 0x6e3 THUMB Debug/../../obj/pwm.o - .debug_line 0x00003cdd 0x366 THUMB Debug/../../obj/qei.o - .debug_line 0x00004043 0x3f3 THUMB Debug/../../obj/ssi.o - .debug_line 0x00004436 0x7e7 THUMB Debug/../../obj/sysctl.o - .debug_line 0x00004c1d 0x13c THUMB Debug/../../obj/systick.o - .debug_line 0x00004d59 0x6c0 THUMB Debug/../../obj/timer.o - .debug_line 0x00005419 0x73e THUMB Debug/../../obj/uart.o - .debug_line 0x00005b57 0x415 THUMB Debug/../../obj/udma.o - .debug_line 0x00005f6c 0x1178 THUMB Debug/../../obj/usb.o - .debug_line 0x000070e4 0x309 THUMB Debug/../../obj/watchdog.o - .debug_line 0x000073ed 0x75 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_line 0x00007462 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_line 0x000074d6 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_line 0x00007a89 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_line 0x00007fd9 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_line 0x000000db 0x10f THUMB Debug/../../obj/cstart.o + .debug_line 0x000001ea 0xb3 THUMB Debug/../../obj/irq.o + .debug_line 0x0000029d 0xab THUMB Debug/../../obj/led.o + .debug_line 0x00000348 0xc7 THUMB Debug/../../obj/main.o + .debug_line 0x0000040f 0x92 THUMB Debug/../../obj/vectors.o + .debug_line 0x000004a1 0xd9 THUMB Debug/../../obj/time.o + .debug_line 0x0000057a 0x103 THUMB Debug/../../obj/cpu.o + .debug_line 0x0000067d 0x773 THUMB Debug/../../obj/gpio.o + .debug_line 0x00000df0 0x2cc THUMB Debug/../../obj/interrupt.o + .debug_line 0x000010bc 0x7e1 THUMB Debug/../../obj/sysctl.o + .debug_line 0x0000189d 0x13c THUMB Debug/../../obj/systick.o + .debug_line 0x000019d9 0x743 THUMB Debug/../../obj/uart.o + .debug_line 0x0000211c 0x75 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_line 0x00002191 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_line 0x00002205 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_line 0x000027b8 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_line 0x00002d08 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_str 0x00000000 0x46dd - .debug_str 0x00000000 0x152 THUMB Debug/../../obj/boot.o - .debug_str 0x00000152 0xa6 THUMB Debug/../../obj/irq.o +.debug_str 0x00000000 0x1ece + .debug_str 0x00000000 0x149 THUMB Debug/../../obj/boot.o + .debug_str 0x00000149 0xa6 THUMB Debug/../../obj/irq.o 0xfd (size before relaxing) - .debug_str 0x000001f8 0xa2 THUMB Debug/../../obj/led.o + .debug_str 0x000001ef 0xb4 THUMB Debug/../../obj/led.o 0x10b (size before relaxing) - .debug_str 0x0000029a 0xa4 THUMB Debug/../../obj/main.o + .debug_str 0x000002a3 0xa4 THUMB Debug/../../obj/main.o 0x117 (size before relaxing) - .debug_str 0x0000033e 0x8d THUMB Debug/../../obj/vectors.o - 0xf6 (size before relaxing) - .debug_str 0x000003cb 0xae THUMB Debug/../../obj/time.o + .debug_str 0x00000347 0x8d THUMB Debug/../../obj/vectors.o + 0xff (size before relaxing) + .debug_str 0x000003d4 0xae THUMB Debug/../../obj/time.o 0x117 (size before relaxing) - .debug_str 0x00000479 0x3ca THUMB Debug/../../obj/adc.o - 0x450 (size before relaxing) - .debug_str 0x00000843 0xbb THUMB Debug/../../obj/comp.o - 0x1c1 (size before relaxing) - .debug_str 0x000008fe 0xbb THUMB Debug/../../obj/cpu.o + .debug_str 0x00000482 0xbb THUMB Debug/../../obj/cpu.o 0x116 (size before relaxing) - .debug_str 0x000009b9 0x2d2 THUMB Debug/../../obj/epi.o - 0x36f (size before relaxing) - .debug_str 0x00000c8b 0x2a3 THUMB Debug/../../obj/ethernet.o - 0x36a (size before relaxing) - .debug_str 0x00000f2e 0x215 THUMB Debug/../../obj/flash.o - 0x2d7 (size before relaxing) - .debug_str 0x00001143 0x369 THUMB Debug/../../obj/gpio.o - 0x41b (size before relaxing) - .debug_str 0x000014ac 0x2eb THUMB Debug/../../obj/hibernate.o - 0x398 (size before relaxing) - .debug_str 0x00001797 0x2b1 THUMB Debug/../../obj/i2c.o - 0x35d (size before relaxing) - .debug_str 0x00001a48 0x216 THUMB Debug/../../obj/i2s.o - 0x2ce (size before relaxing) - .debug_str 0x00001c5e 0x187 THUMB Debug/../../obj/interrupt.o - 0x251 (size before relaxing) - .debug_str 0x00001de5 0x110 THUMB Debug/../../obj/mpu.o - 0x193 (size before relaxing) - .debug_str 0x00001ef5 0x3a0 THUMB Debug/../../obj/pwm.o - 0x451 (size before relaxing) - .debug_str 0x00002295 0x183 THUMB Debug/../../obj/qei.o - 0x23b (size before relaxing) - .debug_str 0x00002418 0x1a4 THUMB Debug/../../obj/ssi.o - 0x269 (size before relaxing) - .debug_str 0x000025bc 0x4b8 THUMB Debug/../../obj/sysctl.o - 0x55d (size before relaxing) - .debug_str 0x00002a74 0x106 THUMB Debug/../../obj/systick.o + .debug_str 0x0000053d 0x387 THUMB Debug/../../obj/gpio.o + 0x424 (size before relaxing) + .debug_str 0x000008c4 0x1a7 THUMB Debug/../../obj/interrupt.o + 0x25a (size before relaxing) + .debug_str 0x00000a6b 0x4cf THUMB Debug/../../obj/sysctl.o + 0x566 (size before relaxing) + .debug_str 0x00000f3a 0x10f THUMB Debug/../../obj/systick.o 0x183 (size before relaxing) - .debug_str 0x00002b7a 0x240 THUMB Debug/../../obj/timer.o - 0x2f8 (size before relaxing) - .debug_str 0x00002dba 0x373 THUMB Debug/../../obj/uart.o + .debug_str 0x00001049 0x39d THUMB Debug/../../obj/uart.o 0x463 (size before relaxing) - .debug_str 0x0000312d 0x347 THUMB Debug/../../obj/udma.o - 0x3e2 (size before relaxing) - .debug_str 0x00003474 0x5d7 THUMB Debug/../../obj/usb.o - 0x6d1 (size before relaxing) - .debug_str 0x00003a4b 0x1aa THUMB Debug/../../obj/watchdog.o - 0x236 (size before relaxing) - .debug_str 0x00003bf5 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) + .debug_str 0x000013e6 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) 0xb1 (size before relaxing) - .debug_str 0x00003c5d 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + .debug_str 0x0000144e 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) 0xc5 (size before relaxing) - .debug_str 0x00003cd9 0x57f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + .debug_str 0x000014ca 0x57f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) 0x655 (size before relaxing) - .debug_str 0x00004258 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + .debug_str 0x00001a49 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x3fc (size before relaxing) - .debug_str 0x0000460b 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_str 0x00001dfc 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) 0x11b (size before relaxing) .comment 0x00000000 0x4e @@ -2730,107 +2777,53 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/P .comment 0x00000000 0x4f THUMB Debug/../../obj/main.o .comment 0x00000000 0x4f THUMB Debug/../../obj/vectors.o .comment 0x00000000 0x4f THUMB Debug/../../obj/time.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/adc.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/comp.o .comment 0x00000000 0x4f THUMB Debug/../../obj/cpu.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/epi.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/ethernet.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/flash.o .comment 0x00000000 0x4f THUMB Debug/../../obj/gpio.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/hibernate.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/i2c.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/i2s.o .comment 0x00000000 0x4f THUMB Debug/../../obj/interrupt.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/mpu.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/pwm.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/qei.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/ssi.o .comment 0x00000000 0x4f THUMB Debug/../../obj/sysctl.o .comment 0x00000000 0x4f THUMB Debug/../../obj/systick.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/timer.o .comment 0x00000000 0x4f THUMB Debug/../../obj/uart.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/udma.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/usb.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/watchdog.o - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .ARM.attributes - 0x00000000 0x10 + 0x00000000 0x33 .ARM.attributes - 0x00000000 0x10 THUMB Debug/../../obj/boot.o + 0x00000000 0x33 THUMB Debug/../../obj/boot.o .ARM.attributes - 0x00000010 0x10 THUMB Debug/../../obj/cstart.o + 0x00000033 0x23 THUMB Debug/../../obj/cstart.o .ARM.attributes - 0x00000020 0x10 THUMB Debug/../../obj/irq.o + 0x00000056 0x33 THUMB Debug/../../obj/irq.o .ARM.attributes - 0x00000030 0x10 THUMB Debug/../../obj/led.o + 0x00000089 0x33 THUMB Debug/../../obj/led.o .ARM.attributes - 0x00000040 0x10 THUMB Debug/../../obj/main.o + 0x000000bc 0x33 THUMB Debug/../../obj/main.o .ARM.attributes - 0x00000050 0x10 THUMB Debug/../../obj/vectors.o + 0x000000ef 0x33 THUMB Debug/../../obj/vectors.o .ARM.attributes - 0x00000060 0x10 THUMB Debug/../../obj/time.o + 0x00000122 0x33 THUMB Debug/../../obj/time.o .ARM.attributes - 0x00000070 0x10 THUMB Debug/../../obj/adc.o + 0x00000155 0x33 THUMB Debug/../../obj/cpu.o .ARM.attributes - 0x00000080 0x10 THUMB Debug/../../obj/comp.o + 0x00000188 0x33 THUMB Debug/../../obj/gpio.o .ARM.attributes - 0x00000090 0x10 THUMB Debug/../../obj/cpu.o + 0x000001bb 0x33 THUMB Debug/../../obj/interrupt.o .ARM.attributes - 0x000000a0 0x10 THUMB Debug/../../obj/epi.o + 0x000001ee 0x33 THUMB Debug/../../obj/sysctl.o .ARM.attributes - 0x000000b0 0x10 THUMB Debug/../../obj/ethernet.o + 0x00000221 0x33 THUMB Debug/../../obj/systick.o .ARM.attributes - 0x000000c0 0x10 THUMB Debug/../../obj/flash.o + 0x00000254 0x33 THUMB Debug/../../obj/uart.o .ARM.attributes - 0x000000d0 0x10 THUMB Debug/../../obj/gpio.o + 0x00000287 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .ARM.attributes - 0x000000e0 0x10 THUMB Debug/../../obj/hibernate.o + 0x000002b4 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .ARM.attributes - 0x000000f0 0x10 THUMB Debug/../../obj/i2c.o + 0x000002e1 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .ARM.attributes - 0x00000100 0x10 THUMB Debug/../../obj/i2s.o + 0x0000030e 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .ARM.attributes - 0x00000110 0x10 THUMB Debug/../../obj/interrupt.o - .ARM.attributes - 0x00000120 0x10 THUMB Debug/../../obj/mpu.o - .ARM.attributes - 0x00000130 0x10 THUMB Debug/../../obj/pwm.o - .ARM.attributes - 0x00000140 0x10 THUMB Debug/../../obj/qei.o - .ARM.attributes - 0x00000150 0x10 THUMB Debug/../../obj/ssi.o - .ARM.attributes - 0x00000160 0x10 THUMB Debug/../../obj/sysctl.o - .ARM.attributes - 0x00000170 0x10 THUMB Debug/../../obj/systick.o - .ARM.attributes - 0x00000180 0x10 THUMB Debug/../../obj/timer.o - .ARM.attributes - 0x00000190 0x10 THUMB Debug/../../obj/uart.o - .ARM.attributes - 0x000001a0 0x10 THUMB Debug/../../obj/udma.o - .ARM.attributes - 0x000001b0 0x10 THUMB Debug/../../obj/usb.o - .ARM.attributes - 0x000001c0 0x10 THUMB Debug/../../obj/watchdog.o - .ARM.attributes - 0x000001d0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .ARM.attributes - 0x000001e0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .ARM.attributes - 0x000001f0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .ARM.attributes - 0x00000200 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .ARM.attributes - 0x00000210 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .ARM.attributes - 0x00000220 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .ARM.attributes - 0x00000230 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .ARM.attributes - 0x00000240 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x0000033b 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.srec index 08d25e87..8bf32898 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/bin/demoprog_ek_lm3s6965.srec @@ -1,600 +1,629 @@ S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF -S1136000EC01002097610000256500002565000073 -S11360102565000025650000256500002565000054 -S11360202565000025650000256500002565000044 -S1136030256500002565000025650000B5650000A4 -S11360402565000025650000256500002565000024 -S11360502565000025650000256500002565000014 -S11360602565000025650000256500002565000004 -S113607025650000256500002565000025650000F4 -S113608025650000256500002565000025650000E4 -S113609025650000256500002565000025650000D4 -S11360A025650000256500002565000025650000C4 -S11360B025650000256500002565000025650000B4 -S11360C025650000256500002565000025650000A4 -S11360D02565000025650000256500002565000094 -S11360E02565000025650000256500002565000084 -S10760F0EE11AA55AA -S11360F42A498D462A482B492B4A00F039F82B4863 -S11361042B492C4A00F034F82B482C492C4A00F033 -S11361142FF82C482C492D4A00F02AF82C482D49F4 -S11361242D4A00F025F82D482D492E4A00F020F878 -S11361342D482E49002200F026F82D482D49091A2D -S1136144082903DB00220260043001601E481F4951 -S1136154884205D00268043003B4904703BCF7E7CF -S113616400208646EC4600200021234A9047FEE79F -S1136174884207D0521A05D0037801300B700131DC -S1136184013AF9D17047884202D002700130FAE72B -S113619470471A481A490160AAE70000EC0100207C -S11361A44485000000000020000000200862000074 -S11361B408620000048300004485000000000020FD -S11361C40000002004830000048300000483000012 -S11361D4048300000483000004830000048300009B -S11361E40483000044850000000000206C000020AB -S11361F46C000020EC0000209964000008ED00E02D -S10762040060000032 -S113620880B500AF46F6A563C0F20003984780BD89 -S113621890B500AF4FF00100C1F2000046F62963C3 -S1136228C0F2000398474FF00100C2F2000046F69E -S11362382963C0F2000398474FF040204FF0030150 -S113624846F62133C0F20003984747F25113C0F2CF -S11362580003984703464FF44040C4F2000019462F -S11362684FF461424FF0600347F29954C0F20004BE -S1136278A04790BD80B500AF40F20003C2F200030E -S11362881B78002B1AD140F20400C2F2000046F237 -S11362985933C0F2000398470346012B56D140F204 -S11362A80003C2F200034FF001021A7040F24803DF -S11362B8C2F200034FF000021A7047E040F24803AC -S11362C8C2F200031B7803F1010240F20403C2F294 -S11362D80003D318184646F25933C0F2000398470E -S11362E80346012B32D140F24803C2F200031B7863 -S11362F803F10103DAB240F24803C2F200031A7050 -S113630840F20403C2F200031A7840F24803C2F2CE -S113631800031B789A4219D140F20003C2F2000329 -S11363284FF000021A7040F20403C2F200035B78D3 -S1136338FF2B0BD140F20403C2F200039B78002B1D -S113634804D146F20923C0F20003984780BD00BF78 -S113635880B582B000AF38604FF44040C4F200000A -S113636847F63503C0F20003984703467B607B6811 -S1136378B3F1FF3F06D07B68DAB23B681A704FF07E -S1136388010301E04FF00003184607F10807BD4672 -S113639880BD00BF80B500AF46F68933C0F2000364 -S11363A8984780BD80B500AF4FF02000C2F20000CE -S11363B846F62963C0F2000398474FF4A040C4F29C -S11363C802004FF0010146F6B923C0F200039847D2 -S11363D84FF4A040C4F202004FF001014FF0000254 -S11363E846F66923C0F20003984780BD80B581B0A2 -S11363F800AF46F29D53C0F20003984703463B6042 -S113640840F24C03C2F200031B683A68D21A40F205 -S1136418F3139A4236D940F25003C2F200031B78B0 -S1136428002B14D140F25003C2F200034FF00102D2 -S11364381A704FF4A040C4F202004FF001014FF06B -S1136448010246F66923C0F20003984713E040F2BC -S11364585003C2F200034FF000021A704FF4A04038 -S1136468C4F202004FF001014FF0000246F669231E -S1136478C0F20003984740F24C03C2F200033A68A2 -S11364881A6000E000BF07F10407BD4680BD00BFE5 -S113649880B500AF46F2C943C0F20003984746F2FC -S11364A81923C0F20003984746F2F533C0F20003FB -S11364B8984746F27D23C0F200039847F4E700BFEB -S11364C880B500AF4FF46070C0F2C01046F6C563E3 -S11364D8C0F20003984746F2AD33C0F20003984770 -S11364E846F22D53C0F20003984746F29D33C0F29A -S11364F80003984780BD00BF80B482B000AF7860C5 -S1136508396040F25403C2F200037A681A6040F218 -S11365185803C2F200033A681A60FEE780B400AF79 -S1136528FEE700BF80B500AF47F25113C0F2000385 -S11365389847024644F6D353C1F26203A3FB0213FD -S11365484FEA9313184647F20953C0F200039847D9 -S113655847F2C143C0F20003984747F2E543C0F24B -S1136568000398474FF0000046F27D53C0F2000341 -S1136578984780BD80B481B000AF386040F25C03B6 -S1136588C2F200033A681A6007F10407BD4680BCEA -S1136598704700BF80B400AF40F25C03C2F200034E -S11365A81B681846BD4680BC704700BF80B400AF66 -S11365B840F25C03C2F200031B6803F1010240F2DB -S11365C85C03C2F200031A60BD4680BC704700BF7A -S11365D8EFF3108062B670472346184680B481B042 -S11365E800AF38603B68B3F1402F76D03A684FF477 -S11365F80043C4F205039A426FD03A684FF4A043AB -S1136608C4F200039A4268D03A684FF41043C4F2C3 -S113661805039A4261D03A684FF4C043C4F20003B8 -S11366289A425AD03A684FF42043C4F205039A4276 -S113663853D03A684FF4E043C4F200039A424CD072 -S11366483A684FF43043C4F205039A4245D03A6895 -S11366584FF48043C4F202039A423ED03A684FF49E -S11366684043C4F205039A4237D03A684FF4A04332 -S1136678C4F202039A4230D03A684FF45043C4F249 -S113668805039A4229D03A684FF4C043C4F202037E -S11366989A4222D03A684FF46043C4F205039A42FE -S11366A81BD03A684FF4E043C4F202039A4214D070 -S11366B83A684FF47043C4F205039A420DD03A681D -S11366C84FF45043C4F203039A4206D03A684FF099 -S11366D80003C4F206039A4202D14FF0010301E019 -S11366E84FF00003DBB2184607F10407BD4680BC2F -S11366F8704700BF80B583B000AFB8600B463A60FE -S11367083B71B86846F2E553C0F200039847034664 -S1136718002B0AD148F20430C0F200004FF0E40123 -S113672846F20153C0F2000398473B68002B10D08F -S11367383B68012B0DD03B68022B0AD048F2043089 -S1136748C0F200004FF0E60146F20153C0F2000324 -S11367589847BB6803F580631A463B6803F0010356 -S1136768DBB2002B06D0BB6803F5806319683B795C -S11367780B4307E0BB6803F5806319683B796FEA4C -S113678803030B401360BB6803F584631A463B6834 -S113679803F00203002B06D0BB6803F58463196871 -S11367A83B790B4307E0BB6803F5846319683B79BD -S11367B86FEA03030B40136007F10C07BD4680BD65 -S11367C880B584B000AFF8607A603B600B463B72DA -S11367D8F86846F2E553C0F2000398470346002BD5 -S11367E80AD148F20430C0F200004FF4DD7146F2D9 -S11367F80153C0F2000398477B68012B13D07B68D0 -S1136808022B10D07B68042B0DD07B680C2B0AD08C -S113681848F20430C0F200004FF4DF7146F201532D -S1136828C0F2000398473B68082B1CD03B680A2B2E -S113683819D03B680C2B16D03B68092B13D03B6846 -S11368480B2B10D03B680D2B0DD03B68002B0AD0C6 -S113685848F20430C0F2000040F2C51146F2015378 -S1136868C0F200039847FB6803F5A0631A467B68E7 -S113687803F00103DBB2002B06D0FB6803F5A06329 -S113688819683B7A0B4307E0FB6803F5A0631968B2 -S11368983B7A6FEA03030B401360FB6803F5A063BC -S11368A803F104031A467B6803F00203002B08D0A3 -S11368B8FB6803F5A06303F1040319683B7A0B43EF -S11368C809E0FB6803F5A06303F1040319683B7A44 -S11368D86FEA03030B401360FB6803F5A1631A46D0 -S11368E87B6803F00403002B06D0FB6803F5A1635F -S11368F819683B7A0B4307E0FB6803F5A163196841 -S11369083B7A6FEA03030B401360FB6803F5A36348 -S11369181A467B6803F00803002B06D0FB6803F5CE -S1136928A36319683B7A0B4307E0FB6803F5A36389 -S113693819683B7A6FEA03030B401360FB6803F59D -S1136948A06303F10C031A463B6803F00103DBB2AE -S1136958002B08D0FB6803F5A06303F10C03196846 -S11369683B7A0B4309E0FB6803F5A06303F10C03CE -S113697819683B7A6FEA03030B401360FB6803F55D -S1136988A2631A463B6803F00203002B06D0FB6897 -S113699803F5A26319683B7A0B4307E0FB6803F528 -S11369A8A26319683B7A6FEA03030B401360FB6820 -S11369B803F5A26303F104031A463B6803F00403D6 -S11369C8002B08D0FB6803F5A26303F104031968DC -S11369D83B7A0B4309E0FB6803F5A26303F1040364 -S11369E819683B7A6FEA03030B401360FB6803F5ED -S11369F8A26303F10C031A463B6803F00803002B57 -S1136A0808D0FB6803F5A26303F10C0319683B7A09 -S1136A180B4309E0FB6803F5A26303F10C0319684F -S1136A283B7A6FEA03030B401360FB6803F5A56325 -S1136A381A463B68002B06D1FB6803F5A563196861 -S1136A483B7A0B4307E0FB6803F5A56319683B7AB7 -S1136A586FEA03030B40136007F11007BD4680BDBE -S1136A6880B583B000AFB86013460A463A713B70EC -S1136A78B86846F2E553C0F2000398470346002B72 -S1136A880AD148F20430C0F200004FF4517146F2C2 -S1136A980153C0F2000398473B794FEA83031A462F -S1136AA8BB68D3183A781A6007F10C07BD4680BD55 -S1136AB890B582B000AF78600B463B70786846F2B8 -S1136AC8E553C0F2000398470346002B0AD148F265 -S1136AD80430C0F2000040F2044146F20153C0F20F -S1136AE8000398473B78786819464FF0010246F24C -S1136AF8FD63C0F2000398473B78786819464FF065 -S1136B0801024FF0080346F2C974C0F20004A0471A -S1136B1807F10807BD4690BD90B582B000AF786014 -S1136B280B463B70786846F2E553C0F20003984779 -S1136B380346002B0AD148F20430C0F2000040F2A8 -S1136B481F5146F20153C0F2000398473B78786816 -S1136B5819464FF0020246F2FD63C0F2000398475B -S1136B683B78786819464FF001024FF0080346F263 -S1136B78C974C0F20004A04707F10807BD4690BDD8 -S1136B8880B500AF46F2D953C0F2000398470346D4 -S1136B98DBB2184680BD00BF80B481B000AF386056 -S1136BA83A684FF00103C0F210039A4200F02B81B7 -S1136BB83A684FF00203C0F210039A4200F02381AE -S1136BC83A684FF48073C0F210039A4200F01B81B4 -S1136BD83A684FF40073C0F210039A4200F013812C -S1136BE83A684FF48063C0F210039A4200F00B81B4 -S1136BF83A684FF48073C1F210039A4200F003819B -S1136C083A684FF40073C1F210039A4200F0FB8013 -S1136C183A684FF48063C1F210039A4200F0F3809B -S1136C283A684FF48043C1F210039A4200F0EB80B3 -S1136C383A684FF4A043C2F210039A4200F0E3808A -S1136C483A684FF00103C2F200039A4200F0DB8075 -S1136C583A684FF00203C2F200039A4200F0D3806C -S1136C683A684FF00403C2F200039A4200F0CB8062 -S1136C783A684FF00803C2F200039A4200F0C38056 -S1136C883A684FF01003C2F200039A4200F0BB8046 -S1136C983A684FF02003C2F200039A4200F0B3802E -S1136CA83A684FF04003C2F200039A4200F0AB8006 -S1136CB83A684FF08003C2F200039A4200F0A380BE -S1136CC83A684FF48073C2F200039A4200F09B8042 -S1136CD83B68402B00F097803B68B3F1102F00F01D -S1136CE892803A684FF48043C1F200039A4200F05C -S1136CF88A803A684FF48053C1F210039A4200F034 -S1136D0882803A684FF48073C2F210039A427AD0B0 -S1136D183A684FF08003C3F200039A4273D03A688A -S1136D284FF01003C3F200039A426CD03B68B3F1EE -S1136D38101F68D03A684FF48073C1F200039A4276 -S1136D4861D03A684FF40073C1F200039A425AD0F2 -S1136D583A684FF01003C1F200039A4253D03A68DC -S1136D684FF02003C1F200039A424CD03A684FF026 -S1136D782003C3F200039A4245D03A684FF0010356 -S1136D88C1F210039A423ED03A684FF00203C1F2AE -S1136D9810039A4237D03A684FF00403C1F2100343 -S1136DA89A4230D03A684FF00803C1F210039A426D -S1136DB829D03A684FF00103C1F200039A4222D065 -S1136DC83A684FF00203C1F200039A421BD03A68B2 -S1136DD84FF00403C1F200039A4214D03B68B3F1A4 -S1136DE8202F10D03A684FF00103C2F210039A42E0 -S1136DF809D03B68082B06D03A684FF48053C0F298 -S1136E0810039A4202D14FF0010301E04FF000034E -S1136E18DBB2184607F10407BD4680BC704700BFC3 -S1136E2880B581B000AF3860386846F6A133C0F247 -S1136E38000398470346002B0AD148F2D830C0F221 -S1136E4800004FF4FC7146F20153C0F20003984766 -S1136E583B684FEA137248F27033C0F2000353F8E8 -S1136E6822301A463B684FEA137148F27033C0F275 -S1136E78000353F8213019683B684FEA03434FEA8B -S1136E881343386800F4F8104FEA104003FA00F38B -S1136E980B43136007F10407BD4680BD80B400AFFF -S1136EA84EF60C53CEF200034FF00402C0F2FA522D -S1136EB81A60FEE70138FDD1704700BF80B584B081 -S1136EC800AF38604FF46043C4F20F031B6803F04B -S1136ED8E043002B0CD04FF46043C4F20F031A684C -S1136EE84FF00003C7F2FF031340B3F1805F03D1EF -S1136EF83B68002BC0F223814EF26003C4F20F03F7 -S1136F081B68BB604EF27003C4F20F031B687B60FE -S1136F18BB6843F40063BB60BB6823F48003BB60B5 -S1136F287B6843F400637B604EF26003C4F20F0392 -S1136F38BA681A604EF27003C4F20F037A681A60D2 -S1136F48BB6803F00203002B04D03B6803F0020380 -S1136F58002B0AD0BB6803F00103DBB2002B34D04A -S1136F683B6803F00103002B2FD13B6863F0030354 -S1136F78BA681340BB604EF26003C4F20F03BA68E8 -S1136F881A607B68002B09DA7B6803F07003302BE6 -S1136F980CD07B6803F07003702B07D07B68002B40 -S1136FA80CDBBB6803F03003302B07D14FF480505F -S1136FB846F6BD63C0F20003984706E04FF400208C -S1136FC846F6BD63C0F200039847BB6823F45E53DA -S1136FD823F07003BB603A6843F2F0731340BA6855 -S1136FE81343BB607A684DF68F73C7F6FF7313407B -S1136FF87B603A6842F23003C8F2000313407A68AF -S113700813437B603B6803F008034FEAC3037A68C1 -S113701813437B604EF25803C4F20F034FF040024F -S11370281A607B68002B0CDA4EF27003C4F20F036B -S11370387A681A604EF26003C4F20F03BA681A60E1 -S11370480BE04EF26003C4F20F03BA681A604EF202 -S11370587003C4F20F037A681A604FF0100046F602 -S1137068BD63C0F200039847BB6823F0F86323F0BC -S11370780303BB603A684FF00303C0F2C0731340C4 -S1137088BA681343BB607B6823F0FC537B603B689E -S113709803F0FC537A6813437B603B6803F0804336 -S11370A8002B11D0BB6843F48003BB607B6823F4D6 -S11370B880037B603A684FF00003C4F24003134036 -S11370C87A6813437B6003E07B6823F080437B602A -S11370D83B6803F40063002B1DD14FF40043FB60AD -S11370E80CE04EF25003C4F20F031B6803F0400394 -S11370F8002B07D1FB6803F1FF33FB60FB68002B0F -S1137108EFD100E000BFBB6823F40063BB607B6879 -S113711823F400637B604EF26003C4F20F03BA6881 -S11371281A604EF27003C4F20F037A681A604FF0C3 -S1137138100046F6BD63C0F20003984700E000BFA4 -S113714807F11007BD4680BD80B484B000AF4EF28D -S11371586003C4F20F031B68FB604EF27003C4F2B1 -S11371680F031B687B607B68002B03DA7B6803F0E2 -S1137178700302E0FB6803F03003202B7CD0202B43 -S113718804D8002B0CD0102B17D0E0E0602B00F0B3 -S1137198D680702B00F0D780302B00F0CC80D6E05E -S11371A8FB6803F4F8634FEA931248F27C33C0F2A5 -S11371B8000353F82230BB60CCE04FF46043C4F2C0 -S11371C80F031B6803F0E043002B0CD04FF460431B -S11371D8C4F20F031A684FF00003C7F2FF03134009 -S11371E8B3F1805F05D14EF2C013C0F2E403BB6073 -S11371F841E04FF46043C4F20F031A684FF00003F0 -S1137208C7F2FF0313404FF00002C1F20102934298 -S11372180AD14FF46043C4F20F031B684FEA0343D7 -S11372284FEA1343022B1AD04FF46043C4F20F03FE -S11372381A684FF00003C7F2FF0313404FF000022F -S1137248C1F20302934210D14FF46043C4F20F0316 -S11372581B684FEA03434FEA1343002B05D14FF44D -S1137268D853C0F2B703BB6005E04FF41053C0F223 -S1137278F403BB606EE06DE04FF46043C4F20F03A7 -S11372881B6803F0E043002B0CD04FF46043C4F2B6 -S11372980F031A684FF00003C7F2FF031340B3F15A -S11372A8805F05D143F67003C0F23903BB6041E047 -S11372B84FF46043C4F20F031A684FF00003C7F297 -S11372C8FF0313404FF00002C1F2010293420AD1B6 -S11372D84FF46043C4F20F031B684FEA03434FEAB9 -S11372E81343022B1AD04FF46043C4F20F031A68F5 -S11372F84FF00003C7F2FF0313404FF00002C1F23E -S11373080302934210D14FF46043C4F20F031B6885 -S11373184FEA03434FEA1343002B05D14CF2C063F1 -S1137328C0F22D03BB6005E04FF41063C0F23D03C7 -S1137338BB600FE00EE047F23053BB600AE04FF445 -S11373488003BB6006E04FF40043BB6002E04FF0EB -S11373580003ABE07B68002B04DA7B6803F400636A -S1137368002B07D07B68002B5DDBFB6803F400630C -S1137378002B58D14EF26403C4F20F031B683B6020 -S11373884FF46043C4F20F031B6803F0E043002B7F -S11373980CD04FF46043C4F20F031A684FF0000393 -S11373A8C7F2FF031340B3F1805F13D13A6843F681 -S11373B8E07313404FEA531303F10203BA6802FB64 -S11373C803F23B6803F01F0303F10203B2FBF3F378 -S11373D8BB6012E03A6843F6E07313404FEA531374 -S11373E8BA6802FB03F23B6803F01F0303F10103CD -S11373F84FEA4303B2FBF3F3BB603B6803F48043F7 -S1137408002B03D0BB684FEA5303BB603B6803F40B -S11374180043002B03D0BB684FEA9303BB60FB68AF -S113742843F48003FB60FB6803F48003002B3CD027 -S11374387B68002B2EDA7B6803F08043002B1DD079 -S11374487B68002B04DA7B6803F40063002B07D005 -S11374587B68002B12DBFB6803F40063002B0DD15F -S1137468BB684FEA43027B6803F0FE534FEA935329 -S113747803F10103B2FBF3F3BB6016E07B6803F08E -S1137488FC534FEAD35303F10103BA68B2FBF3F395 -S1137498BB600AE0FB6803F0F0634FEAD35303F1DF -S11374A80103BA68B2FBF3F3BB60BB68184607F183 -S11374B81007BD4680BC704780B400AF4EF210037D -S11374C8CEF200034EF21002CEF20002126842F02D -S11374D805021A60BD4680BC704700BF80B400AF87 -S11374E84EF21003CEF200034EF21002CEF2000266 -S11374F8126842F002021A60BD4680BC704700BFA1 -S113750880B581B000AF38603B68002B03D03B687E -S1137518B3F1807F0AD948F24440C0F200004FF02A -S1137528D00146F20153C0F2000398474EF2140307 -S1137538CEF200033A6802F1FF321A6007F1040739 -S1137548BD4680BD80B481B000AF38603A684FF45E -S11375584043C4F200039A420DD03A684FF45043B2 -S1137568C4F200039A4206D03A684FF46043C4F266 -S113757800039A4202D14FF0010301E04FF00003E7 -S1137588DBB2184607F10407BD4680BC704700BF4C -S113759880B585B000AFF860B9607A603B60F86880 -S11375A847F24D53C0F2000398470346002B0AD113 -S11375B848F2B040C0F2000040F20D1146F2015307 -S11375C8C0F2000398477B68002B0AD148F2B04008 -S11375D8C0F200004FF4877146F20153C0F2000371 -S11375E898474FF46043C4F20F031B6803F0E04369 -S11375F8002B42D04FF46043C4F20F031A684FF0D3 -S11376080003C7F2FF031340B3F1805F35D04FF492 -S11376186043C4F20F031A684FF00003C7F2FF0374 -S113762813404FF00002C1F2010293420AD14FF411 -S11376386043C4F20F031B684FEA03434FEA134342 -S1137648022B1AD04FF46043C4F20F031A684FF0A8 -S11376580003C7F2FF0313404FF00002C1F2030214 -S113766893420DD14FF46043C4F20F031B684FEAF1 -S113767803434FEA1343002B02D14FF0100301E0F8 -S11376884FF008037A6802FB03F2BB689A420AD9EE -S113769848F2B040C0F2000040F20F1146F2015324 -S11376A8C0F200039847F86847F2BD73C0F20003BC -S11376B898477B684FEA0312BB689A420ED9FB6865 -S11376C803F13003FA6802F13002126842F0200232 -S11376D81A607B684FEA53037B6009E0FB6803F197 -S11376E83003FA6802F13002126822F020021A60AC -S11376F8BB684FEAC3027B68B2FBF3F303F10103EF -S11377084FEA53033B61FB6803F124033A694FEAE8 -S113771892121A60FB6803F128033A6902F03F02E7 -S11377281A60FB6803F12C033A681A60FB6803F1DA -S113773818034FF000021A60F86847F25573C0F254 -S11377480003984707F11407BD4680BD80B581B092 -S113775800AF3860386847F24D53C0F200039847C9 -S11377680346002B0AD148F2B040C0F200004FF49F -S1137778CF7146F20153C0F2000398473B6803F106 -S11377882C033A6802F12C02126842F010021A60C3 -S11377983B6803F130031A463B6803F130031B6866 -S11377A843F4407343F00103136007F10407BD4633 -S11377B880BD00BF80B581B000AF3860386847F23B -S11377C84D53C0F2000398470346002B0AD148F2F0 -S11377D8B040C0F200004FF4DF7146F20153C0F22A -S11377E80003984700BF3B6803F118031B6803F0C4 -S11377F80803002BF7D13B6803F12C033A6802F124 -S11378082C02126822F010021A603B6803F130035C -S11378181A463B6803F130031B6823F4407323F0D2 -S11378280103136007F10407BD4680BD80B581B02C -S113783800AF3860386847F24D53C0F200039847E8 -S11378480346002B0AD148F2B040C0F2000040F2CF -S1137858094146F20153C0F2000398473B6803F11B -S113786818031B6803F01003002B02D13B681B6844 -S113787801E04FF0FF33184607F10407BD4680BD09 -S11378882DE9F04F86B006460D4602924FF00003EC -S1137898036048F22458C0F2000848F23459C0F290 -S11378A80009E9E105F10105252903D12B464FF02B -S11378B8000203E0304600F0A3FCDDE11C4613F8A7 -S11378C8010B1D46A0F120010B2913D8DFE801F0B4 -S11378D8061212091212120C1212120F42F040026E -S11378E8ECE742F08002E9E742F40042E6E742F0BE -S11378F82002E3E768280CD16078682805D142F0B3 -S11379080802A07804F1030503E004F1020542F03B -S1137918040278287AD8DFE810F0BD0179007900EC -S11379287900790079007900790079007900790083 -S11379387900790079007900790079007900790073 -S11379487900790079007900790079007900790063 -S11379587900790079007900790079007900790053 -S11379687900790089007900790079007900790033 -S11379787900790079007900790079007900790033 -S11379887900790079007900790079007900790023 -S11379987900790079007900790079007900790013 -S11379A87900790079007900790079007900790003 -S11379B879007900790079007900790079007900F3 -S11379C879007900790079007900C8007900790094 -S11379D879007900790079007900790079007900D3 -S11379E88F00DC007900790079007900DC007900E7 -S11379F87900790079009800D500BA0079007900F7 -S1137A08A4007900E10079007900CA0040F260031B -S1137A18C2F200031C68002C00F02E814FF0FF33E3 -S1137A28009302A901913146A04725E130464FF061 -S1137A38250100F0E5FB1FE1029B03F10402029219 -S1137A481978304600F0DCFB16E112F0080F029BAF -S1137A5803F1040202921B68326814BF1A701A6098 -S1137A680AE1029B03F1040202921C681CB948F261 -S1137A781C54C0F200042178002900F0FD8030462F -S1137A8800F0BEFB14F8011F0029F8D1F4E0029BB2 -S1137A9803F1040102911B6802F08007002F14BF50 -S1137AA82327002742F4807266E042F4005212F061 -S1137AB8800F16D043F2780343F25807782808BF9A -S1137AC81F4610E002F08007002F14BF302700275C -S1137AD809E042F480424FF0000704E04FF0000749 -S1137AE801E04FF0000712F4804F1DD0029B03F110 -S1137AF8040102911B6812F0040F01D01BB203E0C9 -S1137B0812F0080F18BFDBB2002B04DAC3F100032C -S1137B184FF02D0719E012F0200F14D102F04001A4 -S1137B28002918BF202710E0029B03F104010291E9 -S1137B381B6812F0040F01D09BB206E012F0080F84 -S1137B4803D0DBB201E04FF02B07A0F15800202846 -S1137B5879D8DFE800F011787878787878787878C8 -S1137B68787845787878784578787878783011789E -S1137B78787878457878110033B94FF030038DF868 -S1137B880C304FF0010460E04FF0000402F400529E -S1137B9832B103F00F0119F8010003A9605405E09C -S1137BA803F00F0118F8010003A9605404F101045B -S1137BB81B09EDD149E033B94FF030038DF80C308F -S1137BC84FF0010441E04FF0000403F0070101F114 -S1137BD8300103AAA15404F10104DB08F5D134E00F -S1137BE833B94FF030038DF80C304FF001042CE01A -S1137BF84FF0000402F400424FF02C0B4CF6CD4A2F -S1137C08CCF6CC4A5AB104F00301032907D10DF18B -S1137C18180C0CEB040101F80CBC04F1010406A9CE -S1137C280819AAFB03C14FEAD10101EB810CA3EBAC -S1137C384C0303F1300300F80C3C04F101040B4637 -S1137C480029DFD101E04FF00004FF2F04D9C7F366 -S1137C580721304600F0D4FA1FB1F9B2304600F0DB -S1137C68CFFA012C08D403AF3C1914F8011D30468F -S1137C7800F0C6FABC42F8D1297800297FF412AE84 -S1137C88B3682BB1326871688A423CBF00219954A9 -S1137C98306801E04FF0FF3006B0BDE8F08F00BF58 -S1137CA810B504460B783BB1B0F1FF3F06D04B68E2 -S1137CB803F1FF334B6001E08B689847204610BD01 -S1137CC82DE9F04F82468B4690469946099F4FF01E -S1137CD8FF3500E0354605F10106504600F07CFA10 -S1137CE8044600F0DFFA0028F4D1B4F1FF3F00F0B5 -S1137CF8848028F4C068002F3DDD18F0800F0FD071 -S1137D082B2C03D02D2C09D148F4806805F10206E8 -S1137D18504600F061FA044607F1FF37002F2ADDC8 -S1137D28302C28D148F4007807F1FF3706F1010513 -S1137D38504600F051FA0446002F16DD782801D089 -S1137D48582812D1B9F1000F02D0B9F1100F5CD143 -S1137D5828F4007807F1FF3706F10205504600F0D1 -S1137D683BFA04464FF010094FE0B9F1000F08BF81 -S1137D784FF0080949E0B9F1000F08BF4FF00A09AC -S1137D88002F10DC4FF0000515E048F4007807F1E7 -S1137D98FF3709FB050506F10106504600F01CFAF9 -S1137DA8044617B907E04FF000052046494600F09D -S1137DB85BFA0028E9DA20465146FFF771FF18F408 -S1137DC8007F1DD018F0010F1CD1DBF8003003F13F -S1137DD80402CBF800201B6808F49062B2F5906F97 -S1137DE808BF6D4218F0100F01D01D700AE018F09A -S1137DF8080F14BF1D801D6004E04FF0FF3601E03A -S1137E086FF001063046BDE8F08F2E46B8E700BF94 -S1137E182DE9F04F85B00190894604924FF0000B8C -S1137E28CDF808B04CF6CC4AC0F6CC4A4C4614F807 -S1137E38016B002E00F0CB81252E35D0304600F0A2 -S1137E4831FA08B918E02C4604F10105207800F04D -S1137E5829FA0028F7D101E00BF1010B019800F091 -S1137E68BBF9054600F01EFA0028F5D12846019909 -S1137E78FFF716FFA146D9E7019800F0ADF90546CA -S1137E88B04203D10BF1010BA146CFE70199FFF7EB -S1137E9807FFB5F1FF3F40F09A81029A002A08BF14 -S1137EA84FF0FF32029292E199F801302A2B06BF73 -S1137EB809F102044FF001084FF000084FF00005E3 -S1137EC80CE0554500F3838105EB8505A6F13006E2 -S1137ED816EB450500F17B8148F02008274604F19C -S1137EE801043E78A146304600F0B6F90028E8D1EE -S1137EF808F02002002A08BF6FF000454C2E05D177 -S1137F087E7807F1020948F044080EE0682E0CD187 -S1137F187E78682E05D148F01008BE7807F1030969 -S1137F2803E007F1020948F00808A6F12506532ED4 -S1137F3800F24D81DFE816F054004B014B014B0170 -S1137F484B014B014B014B014B014B014B014B01C5 -S1137F584B014B014B014B014B014B014B014B01B5 -S1137F684B014B014B014B014B014B014B014B01A5 -S1137F784B014B014B014B014B014B014B014B0195 -S1137F884B014B014B014B014B014B014B014B0185 -S1137F984B014B014B014B014B014B014B012C0194 -S1137FA84B014B014B014B014B014B014B014B0165 -S1137FB84B014B016B009C004B014B014B014B01E6 -S1137FC8A7004B014B014B014B01B200C900D4007F -S1137FD84B014B01DF004B0121014B014B012C01EB -S1137FE8019800F0F9F80446252802D10BF1010B99 -S1137FF81CE70199FFF754FEB4F1FF3F40F0E78016 -S1138008029B002B08BF4FF0FF330293DFE008F018 -S11380182003002B08BF012518F0010405D1049B97 -S113802803F1040204921E6801E04FF00006002DDB -S113803800F0CD80002D13DD019800F0CDF8B0F1EB -S1138048FF3F06D1029B002B08BF4FF0FF3302937A -S1138058BDE00CB906F8010B0BF1010B013DEBD1A6 -S1138068002C7FF4E3AE029B03F101030293DDE6E7 -S113807848F080020095019804A94FF00A03FFF71D -S11380881FFE04468EE048F080020095019804A97A -S11380984FF00003FFF714FE044683E018F0010FC5 -S11380A87FF4C4AE049B03F1040204921B6818F025 -S11380B8100F02D083F800B0B8E618F0080F14BF08 -S11380C8A3F800B0C3F800B0B0E648F08002009509 -S11380D8019804A94FF00803FFF7F2FD044661E094 -S11380E828F01E020095019804A94FF01003FFF729 -S11380F8E7FD044656E04FF0FF3404F1010401980B -S113810800F06AF8064600F0CDF80028F5D1B6F17B -S1138118FF3F2FD018F0010706D1049B03F1040296 -S113812804921B68039302E04FF000020392002DAF -S113813811DC15E005F1FF351FB9039B03F8016B4A -S1138148039304F10104019800F046F806463DB192 -S1138158B0F1FF3F04D0304600F0A4F80028E9D07D -S113816830460199FFF79CFDE7B94FF00002039BE5 -S11381781A7017E04FF0FF3414E048F080020095BD -S1138188019804A94FF00A03FFF79AFD044609E091 -S113819848F080020095019804A94FF01003FFF7F6 -S11381A88FFD0446002C09DAB4F1FF3F0FD1029A7F -S11381B8002A08BF4FF0FF32029208E018F0010FBE -S11381C803D1029A02F101020292A3442EE6029814 -S11381D805B0BDE8F08F00BF00B5034602783AB198 -S11381E84268107840B102F101025A605DF804FB5C -S11381F8436898475DF804FB4FF0FF305DF804FBD3 -S113820830B50446C8B2A16849B12368626803F16D -S11382180105954208BF0020934238BFC854E3685B -S11382282BB121686268914201D22146984723689C -S113823803F10103236030BDA0F1410019288CBF6C -S113824800200120704700BFA0F1610019288CBFED -S113825800200120704700BFA0F1300009288CBF1E -S113826800200120704700BF30B504460D46FFF7D3 -S1138278F3FF10B1A4F130000FE02046FFF7E4FF4C -S113828810B1A4F1570008E02046FFF7D5FF10B15C -S1138298A4F1370001E04FF0FF30A842A8BF4FF027 -S11382A8FF3030BDA0F10903042B04D9202814BFE2 -S11382B80020012070474FF00100704730B5044694 -S11382C80D4600F017F840F26403C2F200031D6083 -S11382D840F26803C2F200031C601A461368002BBC -S11382E8FCD100F009F840F26403C2F200031868F4 -S10F82F830BD00BF704700BF704700BFDE -S1138304433A2F576F726B2F736F6674776172657C -S11383142F4F70656E424C542F5461726765742FED -S113832444656D6F2F41524D434D335F4C4D335370 -S11383345F454B5F4C4D3353363936355F43726F6B -S11383447373776F726B732F50726F672F696465E1 -S11383542F2E2E2F6C69622F6472697665726C6994 -S1138364622F6770696F2E630000000000E10F4004 -S113837404E10F4008E10F4040420F0000201C00BC -S113838480841E0000802500999E36000040380039 -S113839400093D0000803E0000004B00404B4C00AF -S11383A400204E00808D5B0000C05D0000807000E2 -S11383B400127A0000007D0080969800001BB7002C -S11383C40080BB00C0E8CE00647ADA000024F40024 -S11383D40000FA00433A2F576F726B2F736F667461 -S11383E4776172652F4F70656E424C542F546172DD -S11383F46765742F44656D6F2F41524D434D335F50 -S11384044C4D33535F454B5F4C4D335336393635FE -S11384145F43726F7373776F726B732F50726F67EE -S11384242F6964652F2E2E2F6C69622F647269760E -S113843465726C69622F73797363746C2E630000C4 -S1138444433A2F576F726B2F736F6674776172653B -S11384542F4F70656E424C542F5461726765742FAC -S113846444656D6F2F41524D434D335F4C4D33532F -S11384745F454B5F4C4D3353363936355F43726F2A -S11384847373776F726B732F50726F672F696465A0 -S11384942F2E2E2F6C69622F6472697665726C6953 -S11384A4622F7379737469636B2E6300433A2F5795 -S11384B46F726B2F736F6674776172652F4F70657B -S11384C46E424C542F5461726765742F44656D6F0A -S11384D42F41524D434D335F4C4D33535F454B5FF6 -S11384E44C4D3353363936355F43726F7373776F3C -S11384F4726B732F50726F672F6964652F2E2E2F42 -S11385046C69622F6472697665726C69622F756135 -S113851472742E6300000000286E756C6C290000D0 -S113852430313233343536373839616263646566E1 -S11385343031323334353637383941424344454691 -S903619704 +S1138000EC0100209B8100002185000021850000F7 +S113801021850000218500002185000021850000C4 +S113802021850000218500002185000021850000B4 +S1138030218500002185000021850000B185000014 +S11380402185000021850000218500002185000094 +S11380502185000021850000218500002185000084 +S11380602185000021850000218500002185000074 +S11380702185000021850000218500002185000064 +S11380802185000021850000218500002185000054 +S11380902185000021850000218500002185000044 +S11380A02185000021850000218500002185000034 +S11380B02185000021850000218500002185000024 +S11380C02185000021850000218500002185000014 +S11380D02185000021850000218500002185000004 +S11380E021850000218500002185000021850000F4 +S10780F0EE11AA558A +S11380F42B49072291438D462A482B492B4A00F0E9 +S113810439F82B482B492C4A00F034F82B482C49D5 +S11381142C4A00F02FF82C482C492D4A00F02AF858 +S11381242C482D492D4A00F025F82D482D492E4A76 +S113813400F020F82D482E49002200F026F82D489E +S11381442D49091A082903DB002202600430016066 +S11381541E481F49884205D00268043003B490477E +S113816403BCF7E700208646EC4600200021234A9E +S11381749047FEE7884207D0521A05D003780130AD +S11381840B700131013AF9D17047884202D0027070 +S11381940130FAE770471A481A490160A8E7000059 +S11381A4EC01002010A700000000002000000020C3 +S11381B40C8200000C820000D0A4000010A7000070 +S11381C40000002000000020D0A40000D0A400007F +S11381D4D0A40000D0A40000D0A40000D0A40000C7 +S11381E4D0A40000D0A4000010A7000000000020C8 +S11381F46C0000206C000020EC000020958400003A +S10B820408ED00E00080000019 +S113820C80B500AF48F66D63C0F20003984780BD9B +S113821C98B500AF4FF00100C1F2000048F6F153DD +S113822CC0F2000398474FF00100C2F2000048F678 +S113823CF153C0F2000398474FF040204FF0030174 +S113824C48F6E923C0F20003984749F21913C0F227 +S113825C0003984703464FF44040C4F2000019460B +S113826C4FF461424FF0600349F26154C0F20004D0 +S113827CA04798BD80B500AF40F20003C2F20003E2 +S113828C1B78002B1AD140F20400C2F2000048F211 +S113829C5D33C0F2000398470346012B56D140F2DC +S11382AC0003C2F200034FF001021A7040F24803BB +S11382BCC2F200034FF000021A7047E040F2480388 +S11382CCC2F200031B7803F1010240F20403C2F270 +S11382DC0003D318184648F25D33C0F200039847E4 +S11382EC0346012B32D140F24803C2F200031B783F +S11382FC03F10103DAB240F24803C2F200031A702C +S113830C40F20403C2F200031A7840F24803C2F2AA +S113831C00031B789A4219D140F20003C2F2000305 +S113832C4FF000021A7040F20403C2F200035B78AF +S113833CFF2B0BD140F20403C2F200039B78002BF9 +S113834C04D148F20D23C0F20003984780BD00BF4E +S113835C80B584B000AF78604FF44040C4F20000A4 +S113836C49F2FD73C0F200039847F860FB68B3F15F +S113837CFF3F06D0FB68DAB27B681A704FF001033A +S113838C01E04FF00003184607F11007BD4680BD0D +S113839C80B500AF48F65133C0F20003984780BD56 +S11383AC80B500AF4FF02000C2F2000048F6F15344 +S11383BCC0F2000398474FF4A040C4F202004FF0FF +S11383CC010148F68123C0F2000398474FF4A04002 +S11383DCC4F202004FF001014FF0000248F63123C1 +S11383ECC0F20003984780BD80B582B000AF48F25C +S11383FC9953C0F200039847786040F24C03C2F2E0 +S113840C00031B687A68D21A40F2F3139A4236D9E5 +S113841C40F25003C2F200031B78002B14D140F23B +S113842C5003C2F200034FF001021A704FF4A04043 +S113843CC4F202004FF001014FF0010248F631235F +S113844CC0F20003984713E040F25003C2F2000359 +S113845C4FF000021A704FF4A040C4F202004FF027 +S113846C01014FF0000248F63123C0F20003984793 +S113847C40F24C03C2F200037A681A6000E000BFB9 +S113848C07F10807BD4680BD80B500AF48F2C5436F +S113849CC0F20003984748F21D23C0F2000398472A +S11384AC48F2F533C0F20003984748F28123C0F236 +S11384BC00039847F4E700BF80B500AF4FF4607039 +S11384CCC0F2C01048F68D63C0F20003984748F21E +S11384DCAD33C0F20003984748F22953C0F20003AD +S11384EC984748F29D33C0F20003984780BD00BF03 +S11384FC80B483B000AF7860396040F25403C2F2A8 +S113850C00037A681A6040F25803C2F200033A6816 +S113851C1A60FEE780B400AFFEE700BF80B500AF81 +S113852C49F21913C0F200039847024644F6D35398 +S113853CC1F26203A3FB02134FEA9313184649F2E8 +S113854CD143C0F20003984749F28943C0F20003B7 +S113855C984749F2AD43C0F2000398474FF000002E +S113856C48F27953C0F20003984780BD80B483B0BD +S113857C00AF786040F25C03C2F200037A681A60C0 +S113858C07F10C07BD4680BC704700BF80B400AF38 +S113859C40F25C03C2F200031B681846BD4680BC63 +S11385AC704700BF80B400AF40F25C03C2F200031A +S11385BC1B6803F1010240F25C03C2F200031A606F +S11385CCBD4680BC704700BFEFF3108062B67047A5 +S11385DC2346184680B483B000AF78607B68B3F14F +S11385EC402F76D07A684FF40043C4F205039A42C4 +S11385FC6FD07A684FF4A043C4F200039A4268D057 +S113860C7A684FF41043C4F205039A4261D07A6835 +S113861C4FF4C043C4F200039A425AD07A684FF420 +S113862C2043C4F205039A4253D07A684FF4E043D2 +S113863CC4F200039A424CD07A684FF43043C4F22B +S113864C05039A4245D07A684FF48043C4F202037E +S113865C9A423ED07A684FF44043C4F205039A42DE +S113866C37D07A684FF4A043C4F202039A4230D054 +S113867C7A684FF45043C4F205039A4229D07A68BD +S113868C4FF4C043C4F202039A4222D07A684FF4E6 +S113869C6043C4F205039A421BD07A684FF4E0435A +S11386ACC4F202039A4214D07A684FF47043C4F2B1 +S11386BC05039A420DD07A684FF45043C4F2030375 +S11386CC9A4206D07A684FF00003C4F206039A4229 +S11386DC02D14FF0010301E04FF00003DBB2184666 +S11386EC07F10C07BD4680BC704700BF80B584B051 +S11386FC00AFF8600B467A60FB72F86848F2E153FD +S113870CC0F2000398470346002B0AD14AF2D0402A +S113871CC0F200004FF0E40148F2FD43C0F2000344 +S113872C98477B68002B10D07B68012B0DD07B689D +S113873C022B0AD04AF2D040C0F200004FF0E601FE +S113874C48F2FD43C0F200039847FB6803F58063CD +S113875C1A467B6803F00103002B06D0FB6803F573 +S113876C80631968FB7A0B4307E0FB6803F58063AD +S113877C1968FB7A6FEA03030B401360FB6803F57B +S113878C84631A467B6803F00203002B06D0FB6853 +S113879C03F584631968FB7A0B4307E0FB6803F564 +S11387AC84631968FB7A6FEA03030B40136007F1C7 +S11387BC1007BD4680BD00BF80B584B000AFF86023 +S11387CC7A603B600B46FB72F86848F2E153C0F2E6 +S11387DC000398470346002B0AD14AF2D040C0F25A +S11387EC00004FF4DD7148F2FD43C0F200039847DA +S11387FC7B68012B13D07B68022B10D07B68042B75 +S113880C0DD07B680C2B0AD04AF2D040C0F2000089 +S113881C4FF4DF7148F2FD43C0F2000398473B6804 +S113882C082B1CD03B680A2B19D03B680C2B16D098 +S113883C3B68092B13D03B680B2B10D03B680D2BDA +S113884C0DD03B68002B0AD04AF2D040C0F2000095 +S113885C40F2C51148F2FD43C0F200039847FB688F +S113886C03F5A0631A467B6803F00103002B06D0C2 +S113887CFB6803F5A0631968FB7A0B4307E0FB68FC +S113888C03F5A0631968FB7A6FEA03030B401360CA +S113889CFB6803F204531A467B6803F00203002BB3 +S11388AC06D0FB6803F204531968FB7A0B4307E008 +S11388BCFB6803F204531968FB7A6FEA03030B4059 +S11388CC1360FB6803F5A1631A467B6803F0040389 +S11388DC002B06D0FB6803F5A1631968FB7A0B43E4 +S11388EC07E0FB6803F5A1631968FB7A6FEA0303DD +S11388FC0B401360FB6803F5A3631A467B6803F013 +S113890C0803002B06D0FB6803F5A3631968FB7AF4 +S113891C0B4307E0FB6803F5A3631968FB7A6FEA62 +S113892C03030B401360FB6803F20C531A463B68B9 +S113893C03F00103002B06D0FB6803F20C531968F7 +S113894CFB7A0B4307E0FB6803F20C531968FB7AC0 +S113895C6FEA03030B401360FB6803F5A2631A462A +S113896C3B6803F00203002B06D0FB6803F5A263FB +S113897C1968FB7A0B4307E0FB6803F5A2631968DB +S113898CFB7A6FEA03030B401360FB6803F2145386 +S113899C1A463B6803F00403002B06D0FB6803F271 +S11389AC14531968FB7A0B4307E0FB6803F2145366 +S11389BC1968FB7A6FEA03030B401360FB6803F23C +S11389CC1C531A463B6803F00803002B06D0FB68C3 +S11389DC03F21C531968FB7A0B4307E0FB6803F2A0 +S11389EC1C531968FB7A6FEA03030B401360FB6892 +S11389FC03F5A5631A463B68002B06D1FB6803F507 +S1138A0CA5631968FB7A0B4307E0FB6803F5A563C0 +S1138A1C1968FB7A6FEA03030B40136007F1100724 +S1138A2CBD4680BD80B582B000AF786013460A465F +S1138A3CFA70BB70786848F2E153C0F200039847AF +S1138A4C0346002B0AD14AF2D040C0F200004FF486 +S1138A5C517148F2FD43C0F200039847FB784FEA8A +S1138A6C83031A467B68D318BA781A6007F108078F +S1138A7CBD4680BD90B583B000AF78600B46FB70EB +S1138A8C786848F2E153C0F2000398470346002B80 +S1138A9C0AD14AF2D040C0F2000040F2044148F23C +S1138AACFD43C0F200039847FB78786819464FF0F1 +S1138ABC010248F2F963C0F200039847FB78786826 +S1138ACC19464FF001024FF0080348F2C574C0F286 +S1138ADC0004A04707F10C07BD4690BD90B583B0C8 +S1138AEC00AF78600B46FB70786848F2E153C0F233 +S1138AFC000398470346002B0AD14AF2D040C0F237 +S1138B0C000040F21F5148F2FD43C0F200039847A5 +S1138B1CFB78786819464FF0020248F2F963C0F208 +S1138B2C00039847FB78786819464FF001024FF020 +S1138B3C080348F2C574C0F20004A04707F10C07FF +S1138B4CBD4690BD80B500AF48F2D553C0F20003CA +S1138B5C98470346DBB2184680BD00BF80B483B08F +S1138B6C00AF78607A684FF00103C0F210039A42A8 +S1138B7C00F02B817A684FF00203C0F210039A4282 +S1138B8C00F023817A684FF48073C0F210039A4288 +S1138B9C00F01B817A684FF40073C0F210039A4200 +S1138BAC00F013817A684FF48063C0F210039A4288 +S1138BBC00F00B817A684FF48073C1F210039A426F +S1138BCC00F003817A684FF40073C1F210039A42E7 +S1138BDC00F0FB807A684FF48063C1F210039A4270 +S1138BEC00F0F3807A684FF48043C1F210039A4288 +S1138BFC00F0EB807A684FF4A043C2F210039A425F +S1138C0C00F0E3807A684FF00103C2F200039A4249 +S1138C1C00F0DB807A684FF00203C2F200039A4240 +S1138C2C00F0D3807A684FF00403C2F200039A4236 +S1138C3C00F0CB807A684FF00803C2F200039A422A +S1138C4C00F0C3807A684FF01003C2F200039A421A +S1138C5C00F0BB807A684FF02003C2F200039A4202 +S1138C6C00F0B3807A684FF04003C2F200039A42DA +S1138C7C00F0AB807A684FF08003C2F200039A4292 +S1138C8C00F0A3807A684FF48073C2F200039A4216 +S1138C9C00F09B807B68402B00F097807B68B3F1DD +S1138CAC102F00F092807A684FF48043C1F20003D5 +S1138CBC9A4200F08A807A684FF48053C1F2100310 +S1138CCC9A4200F082807A684FF48073C2F21003E7 +S1138CDC9A427AD07A684FF08003C3F200039A4226 +S1138CEC73D07A684FF01003C3F200039A426CD02D +S1138CFC7B68B3F1101F68D07A684FF48073C1F2AB +S1138D0C00039A4261D07A684FF40073C1F20003F5 +S1138D1C9A425AD07A684FF01003C1F200039A4277 +S1138D2C53D07A684FF02003C1F200039A424CD01E +S1138D3C7A684FF02003C3F200039A4245D07A6854 +S1138D4C4FF00103C1F210039A423ED07A684FF0FF +S1138D5C0203C1F210039A4237D07A684FF004032D +S1138D6CC1F210039A4230D07A684FF00803C1F272 +S1138D7C10039A4229D07A684FF00103C1F2000320 +S1138D8C9A4222D07A684FF00203C1F200039A424D +S1138D9C1BD07A684FF00403C1F200039A4214D03A +S1138DAC7B68B3F1202F10D07A684FF00103C2F224 +S1138DBC10039A4209D07B68082B06D07A684FF4CA +S1138DCC8053C0F210039A4202D14FF0010301E028 +S1138DDC4FF00003DBB2184607F10C07BD4680BC0C +S1138DEC704700BF80B582B000AF7860786848F6F1 +S1138DFC6933C0F2000398470346002B0AD14AF2A8 +S1138E0CA450C0F200004FF4FC7148F2FD43C0F2D0 +S1138E1C000398477B684FEA13724AF23C53C0F242 +S1138E2C000353F822301A467B684FEA13714AF256 +S1138E3C3C53C0F2000353F8213019687B684FEAA5 +S1138E4C03434FEA1343786800F4F8104FEA1040D8 +S1138E5C03FA00F30B43136007F10807BD4680BD0A +S1138E6C80B400AF4EF60C53CEF200034FF0040264 +S1138E7CC0F2FA521A60FEE701387FF4FDAF704776 +S1138E8C80B586B000AF78604FF46043C4F20F0332 +S1138E9C1B6803F0E043002B0CD04FF46043C4F286 +S1138EAC0F031A684FF00003C7F2FF031340B3F12A +S1138EBC805F03D17B68002BC0F222814EF26003E9 +S1138ECCC4F20F031B683B614EF27003C4F20F0330 +S1138EDC1B68FB603B6943F400633B613B6923F40F +S1138EEC80033B61FB6843F40063FB604EF2600358 +S1138EFCC4F20F033A691A604EF27003C4F20F0302 +S1138F0CFA681A603B6903F00203002B04D07B68F7 +S1138F1C03F00203002B09D03B6903F00103002B7F +S1138F2C34D07B6803F00103002B2FD17B6863F0F2 +S1138F3C03033A6913403B614EF26003C4F20F031E +S1138F4C3A691A60FB68002B09DAFB6803F07003BA +S1138F5C302B0CD0FB6803F07003702B07D0FB682C +S1138F6C002B0CDB3B6903F03003302B07D14FF49F +S1138F7C805048F68563C0F20003984706E04FF42E +S1138F8C002048F68563C0F2000398473B6923F43C +S1138F9C5F5323F030033B617A6843F2F073134060 +S1138FAC3A6913433B61FA684DF68F73C7F6FF7346 +S1138FBC1340FB607A6842F23003C8F2000313409A +S1138FCCFA681343FB607B6803F008034FEAC3039E +S1138FDCFA681343FB604EF25803C4F20F034FF0CC +S1138FEC40021A60FB68002B0CDA4EF27003C4F2D8 +S1138FFC0F03FA681A604EF26003C4F20F033A6965 +S113900C1A600BE04EF26003C4F20F033A691A6063 +S113901C4EF27003C4F20F03FA681A604FF010009A +S113902C48F68563C0F2000398473B6923F0F86364 +S113903C23F003033B617A684FF00303C0F2C0735F +S113904C13403A6913433B61FB6823F0FC53FB6008 +S113905C7B6803F0FC53FA681343FB607B6803F0F2 +S113906C8043002B11D03B6943F480033B61FB68C4 +S113907C23F48003FB607A684FF00003C4F24003CE +S113908C1340FA681343FB6003E0FB6823F080434E +S113909CFB607B6803F40063002B1DD14FF4004389 +S11390AC7B610CE04EF25003C4F20F031B6803F017 +S11390BC4003002B07D17B6903F1FF337B617B6990 +S11390CC002BEFD100E000BF3B6923F400633B614C +S11390DCFB6823F40063FB604EF26003C4F20F03DD +S11390EC3A691A604EF27003C4F20F03FA681A60FC +S11390FC4FF0100048F68563C0F20003984700E077 +S113910C00BF07F11807BD4680BD00BF80B485B011 +S113911C00AF4EF26003C4F20F031B68FB604EF207 +S113912C7003C4F20F031B687B607B68002B03DAAB +S113913C7B6803F0700302E0FB6803F03003202B20 +S113914C7CD0202B04D8002B0CD0102B17D0E0E0B3 +S113915C602B00F0D680702B00F0D780302B00F001 +S113916CCC80D6E0FB6803F4F8634FEA93124AF21E +S113917C4853C0F2000353F82230BB60CCE04FF4E8 +S113918C6043C4F20F031B6803F0E043002B0CD0C4 +S113919C4FF46043C4F20F031A684FF00003C7F294 +S11391ACFF031340B3F1805F05D14EF2C013C0F23C +S11391BCE403BB6041E04FF46043C4F20F031A684C +S11391CC4FF00003C7F2FF0313404FF00002C1F24B +S11391DC010293420AD14FF46043C4F20F031B689B +S11391EC4FEA03434FEA1343022B1AD04FF4604364 +S11391FCC4F20F031A684FF00003C7F2FF031340C5 +S113920C4FF00002C1F20302934210D14FF46043B9 +S113921CC4F20F031B684FEA03434FEA1343002BBA +S113922C05D14FF4D853C0F2B703BB6005E04FF43B +S113923C1053C0F2F403BB606EE06DE04FF4604376 +S113924CC4F20F031B6803F0E043002B0CD04FF463 +S113925C6043C4F20F031A684FF00003C7F2FF0314 +S113926C1340B3F1805F05D143F67003C0F23903A8 +S113927CBB6041E04FF46043C4F20F031A684FF033 +S113928C0003C7F2FF0313404FF00002C1F20102C6 +S113929C93420AD14FF46043C4F20F031B684FEAA4 +S11392AC03434FEA1343022B1AD04FF46043C4F226 +S11392BC0F031A684FF00003C7F2FF0313404FF07B +S11392CC0002C1F20302934210D14FF46043C4F282 +S11392DC0F031B684FEA03434FEA1343002B05D1DA +S11392EC4CF2C063C0F22D03BB6005E04FF4106375 +S11392FCC0F23D03BB600FE00EE047F23053BB609D +S113930C0AE04FF48003BB6006E04FF40043BB60FB +S113931C02E04FF00003ABE07B68002B04DA7B68BF +S113932C03F40063002B07D07B68002B5DDBFB6828 +S113933C03F40063002B58D14EF26403C4F20F0300 +S113934C1B683B604FF46043C4F20F031B6803F0CB +S113935CE043002B0CD04FF46043C4F20F031A68A3 +S113936C4FF00003C7F2FF031340B3F1805F13D136 +S113937C3A6843F6E07313404FEA531303F10203C4 +S113938CBA6802FB03F23B6803F01F0303F1020308 +S113939CB2FBF3F3BB6012E03A6843F6E07313409C +S11393AC4FEA5313BA6802FB03F23B6803F01F0342 +S11393BC03F101034FEA4303B2FBF3F3BB603B68D5 +S11393CC03F48043002B03D0BB684FEA5303BB6008 +S11393DC3B6803F40043002B03D0BB684FEA9303B0 +S11393ECBB60FB6843F48003FB60FB6803F48003FD +S11393FC002B3CD07B68002B2EDA7B6803F0804377 +S113940C002B1DD07B68002B04DA7B6803F400630B +S113941C002B07D07B68002B12DBFB6803F4006382 +S113942C002B0DD1BB684FEA43027B6803F0FE535B +S113943C4FEA935303F10103B2FBF3F3BB6016E061 +S113944C7B6803F0FC534FEAD35303F10103BA686E +S113945CB2FBF3F3BB600AE0FB6803F0F0634FEA82 +S113946CD35303F10103BA68B2FBF3F3BB60BB68DB +S113947C184607F11407BD4680BC704780B400AF92 +S113948C4EF21003CEF200034EF21002CEF20002A2 +S113949C126842F005021A60BD4680BC704700BFDA +S11394AC80B400AF4EF21003CEF200034EF2100261 +S11394BCCEF20002126842F002021A60BD4680BC71 +S11394CC704700BF80B582B000AF78607B68002B1A +S11394DC03D07B68B3F1807F0AD94AF21060C0F2E2 +S11394EC00004FF0D00148F2FD43C0F2000398474E +S11394FC4EF21403CEF200037A6802F1FF321A60C2 +S113950C07F10807BD4680BD80B483B000AF786016 +S113951C7A684FF44043C4F200039A420DD07A683F +S113952C4FF45043C4F200039A4206D07A684FF4C5 +S113953C6043C4F200039A4202D14FF0010301E0EC +S113954C4FF00003DBB2184607F10C07BD4680BC94 +S113955C704700BF80B586B000AFF860B9607A6020 +S113956C3B60F86849F21553C0F200039847034670 +S113957C002B0AD14AF27C60C0F2000040F20D11BB +S113958C48F2FD43C0F2000398477B68002B0AD1D4 +S113959C4AF27C60C0F200004FF4877148F2FD433C +S11395ACC0F2000398474FF46043C4F20F031B68E6 +S11395BC03F0E043002B42D04FF46043C4F20F039A +S11395CC1A684FF00003C7F2FF031340B3F1805F36 +S11395DC35D04FF46043C4F20F031A684FF0000304 +S11395ECC7F2FF0313404FF00002C1F20102934291 +S11395FC0AD14FF46043C4F20F031B684FEA0343D0 +S113960C4FEA1343022B1AD04FF46043C4F20F03F6 +S113961C1A684FF00003C7F2FF0313404FF0000227 +S113962CC1F2030293420DD14FF46043C4F20F0311 +S113963C1B684FEA03434FEA1343002B02D14FF04C +S113964C100301E04FF008037A6802FB03F2BB68D5 +S113965C9A420AD94AF27C60C0F2000040F20F111F +S113966C48F2FD43C0F200039847F86849F2857349 +S113967CC0F2000398477B684FEA0312BB689A4216 +S113968C0ED9FB6803F13003FA6802F13002126858 +S113969C42F020021A607B684FEA53037B6009E0B6 +S11396ACFB6803F13003FA6802F13002126822F00D +S11396BC20021A60BB684FEAC3027B68B2FBF3F367 +S11396CC03F101034FEA53037B61FB6803F12403A9 +S11396DC7A694FEA92121A60FB6803F128037A69DB +S11396EC02F03F021A60FB6803F12C033A681A601B +S11396FCFB6803F118034FF000021A60F86849F292 +S113970C1D73C0F20003984707F11807BD4680BDCE +S113971C80B582B000AF7860786849F21553C0F216 +S113972C000398470346002B0AD14AF27C60C0F22E +S113973C00004FF4CF7148F2FD43C0F20003984788 +S113974C7B6803F12C037A6802F12C02126842F054 +S113975C10021A607B6803F130031A467B6803F12C +S113976C30031B6843F4407343F00103136007F1A7 +S113977C0807BD4680BD00BF80B582B000AF7860DD +S113978C786849F21553C0F2000398470346002B3E +S113979C0AD14AF27C60C0F200004FF4DF7148F247 +S11397ACFD43C0F20003984700BF7B6803F1180324 +S11397BC1B6803F00803002BF7D17B6803F12C031F +S11397CC7A6802F12C02126822F010021A607B688B +S11397DC03F130031A467B6803F130031B6823F44E +S11397EC407323F00103136007F10807BD4680BDE5 +S11397FC80B582B000AF7860786849F21553C0F236 +S113980C000398470346002B0AD14AF27C60C0F24D +S113981C000040F2094148F2FD43C0F200039847AE +S113982C7B6803F118031B6803F01003002B02D1AF +S113983C7B681B6801E04FF0FF33184607F10807FB +S113984CBD4680BD2DE9F04F89B006460D46039206 +S113985C4FF00003036098464AF2F06BC0F2000B21 +S113986C4AF20070C0F2000002904CF6CD49CCF6DE +S113987CCC49F8E1252902D12B46424603E0304677 +S113988C00F0A0FDEFE1194613F8010B1D46A0F101 +S113989C20040B2C13D8DFE804F006121209121260 +S11398AC120C1212120F42F04002ECE742F080024A +S11398BCE9E742F40042E6E742F02002E3E76828D5 +S11398CC0CD14878682805D142F00802887801F157 +S11398DC030503E001F1020542F0040278287AD86A +S11398ECDFE810F0D0017900790079007900790073 +S11398FC7900790079007900790079007900790090 +S113990C790079007900790079007900790079007F +S113991C790079007900790079007900790079006F +S113992C790079007900790079007900790089004F +S113993C790079007900790079007900790079004F +S113994C790079007900790079007900790079003F +S113995C790079007900790079007900790079002F +S113996C790079007900790079007900790079001F +S113997C790079007900790079007900790079000F +S113998C79007900790079007900790079007900FF +S113999C79007900C80079007900790079007900A0 +S11399AC790079007900790079008F00E30079005F +S11399BC790079007900E300790079007900790065 +S11399CC9800DC00BA0079007900A4007900E70063 +S11399DC79007900D30040F26001C2F200010C68F6 +S11399EC002C00F040814FF0FF33009303A9019148 +S11399FC3146A04737E130464FF0250100F0E2FC38 +S1139A0C31E1039901F1040003903046097800F028 +S1139A1CD9FC28E112F0080F039800F10402039218 +S1139A2C0168336814BF0B700B601CE1039800F1E0 +S1139A3C0402039204681CB94AF2E864C0F20004FC +S1139A4C2178002900F00F81304600F0BBFC14F89B +S1139A5C011F0029F8D106E1039B03F104010391D2 +S1139A6C1C6802F08007002F14BF2327002742F440 +S1139A7C807268E002F0800742F4005243F258040A +S1139A8C002F14BF2746002714E002F0800743F28E +S1139A9C7804002F14BF274600270BE002F0800443 +S1139AAC002C14BF3027002704E042F480424746C0 +S1139ABC00E0474612F4804F1DD0039B03F10401D0 +S1139ACC03911C6812F0040F01D024B203E012F0CD +S1139ADC080F18BFE4B2002C04DAC4F100044FF0F0 +S1139AEC2D0719E012F0200F14D102F04003002BC3 +S1139AFC18BF202710E0039B03F1040103911C6899 +S1139B0C12F0040F01D0A4B206E012F0080F03D037 +S1139B1CE4B201E04FF02B07A0F15800202877D8CD +S1139B2CDFE800F01176767676767676767676764B +S1139B3C47767676764776767676763211767676BC +S1139B4C764776761100234634B94FF030048DF8FD +S1139B5C14404FF001045CE0444602F40052DDF87A +S1139B6C08C032B103F00F001CF8000005A96054C2 +S1139B7C05E003F00F001BF8000005A9605404F184 +S1139B8C01041B09EDD144E0214634B94FF03004F3 +S1139B9C8DF814404FF001043BE0444601F00700FB +S1139BAC00F1300005AAA05404F10104C908F5D150 +S1139BBC2FE0214634B94FF030048DF814404FF0A7 +S1139BCC010426E0444602F400424FF02C0C5AB136 +S1139BDC04F00303032B07D10DF1200A0AEB040054 +S1139BEC00F80CCC04F1010408AB1819A9FB01A36F +S1139BFC4FEAD30303EB830AA1EB4A0101F13001D1 +S1139C0C00F80C1C04F101041946002BDFD100E010 +S1139C1C4446FF2F04D93046C7F3072100F0D2FB8A +S1139C2C1FB13046F9B200F0CDFB012C1BD405AFAB +S1139C3C3C19C4EB070E6FEA0E0A0AF0010A30460F +S1139C4C14F8011D00F0BEFBBC4220D10BE014F84B +S1139C5C011D304600F0B6FB304614F8011D00F02F +S1139C6CB1FBBC42F3D115F8011B00297FF402AE01 +S1139C7CB3682BB1326871688A423CBF0021995495 +S1139C8C306801E04FF0FF3009B0BDE8F08FBAF155 +S1139C9C000FDCD0304614F8011D00F093FBBC42DD +S1139CACD5D1E0E710B504460B783BB1B0F1FF3FDA +S1139CBC06D0486800F1FF324A6001E089688847A1 +S1139CCC204610BD2DE9F04F83B081460191924698 +S1139CDC1F46DDF830B04FF0FF3800E0A04608F125 +S1139CEC0104484600F05CFB054600F0BDFB00286F +S1139CFCF4D1B5F1FF3F00F095802AF4C066BBF1B6 +S1139D0C000F3ADD1AF0800F10D02B2D03D02D2D1F +S1139D1C09D146F4806608F10204484600F040FB81 +S1139D2C05460BF1FF3BBBF1000F26DD302D24D192 +S1139D3C46F4007A0BF1FF3B04F10108484600F0AD +S1139D4C2FFB0546BBF1000F13DD782801D05828F2 +S1139D5C0FD10FB1102F6BD126F4007A0BF1FF3B0E +S1139D6C04F10208484600F01BFB05464FF01007AF +S1139D7C5EE0002F08BF08275AE0002F08BF0A270F +S1139D8CBBF1000F27DDA3444FF000086FEA040A6F +S1139D9C0AEB0B0000F0010A2846394600F046FB9A +S1139DAC00284CDA19E046F4007607FB080804F1A5 +S1139DBC010A5446484600F0F3FA0546394600F0C9 +S1139DCC35FB00285CDA08E02846394600F02EFB07 +S1139DDC0028E8DA01E04FF0000828464946FFF76E +S1139DEC61FF16F4007F20D016F0010F23D10199E6 +S1139DFC0B6803F104020A60186806F49061B1F56B +S1139E0C906F08BFC8F1000816F0100F02D080F84C +S1139E1C008010E016F0080F14BFA0F80080C0F802 +S1139E2C008008E04FF0FF3405E06FF0010402E01D +S1139E3C44465646A4E7204603B0BDE8F08F46F4EA +S1139E4C007607FB080804F10104484600F0A8FA60 +S1139E5C05465C45C1D0BAF1000FB5D0394600F0C7 +S1139E6CE5FA0028B9DB46F4007607FB080804F190 +S1139E7C0104484600F094FA05465C45A4D1ACE7CD +S1139E8C46F4007607FB08080AF10104484600F082 +S1139E9C87FA05465C4597D19FE700BF2DE9F04F43 +S1139EAC8DB005908A460CAB43F8042D04934FF007 +S1139EBC000503954CF6CC46C0F6CC46D04618F8B3 +S1139ECC014B002C00F01B82252C34D0204600F0D2 +S1139EDCCBFAC0B118F8010B00F0C6FA0028F9D17E +S1139EEC08F1FF3A059F01E005F10105384600F041 +S1139EFC57FA044600F0B8FA0028F5D12046059923 +S1139F0CFFF7D0FEDAE7059800F04AFAA04203D135 +S1139F1C05F10105C246D1E707460599FFF7C2FED4 +S1139F2CB7F1FF3F40F0EB81039A002A08BF4FF0D2 +S1139F3CFF320392E3E19AF801102A2906BF0AF1D1 +S1139F4C02084FF0010B4FF0000B4FF000070CE030 +S1139F5CB74200F3D48107EB8707A4F1300414EB68 +S1139F6C470700F1CC814BF0200B18F8014BA146AC +S1139F7CC246204600F052FA0028E9D10BF0200228 +S1139F8C002A08BF6FF000474C2C06D198F80090BB +S1139F9C08F1010A4BF0440B11E0682C0FD198F82E +S1139FAC0090B9F1680F06D14BF0100B98F80190A2 +S1139FBC08F1020A03E008F1010A4BF0080BA9F1BD +S1139FCC2509B9F1530F00F29A81DFE819F0540016 +S1139FDC98019801980198019801980198019801A9 +S1139FEC9801980198019801980198019801980199 +S1139FFC9801980198019801980198019801980189 +S113A00C9801980198019801980198019801980178 +S113A01C9801980198019801980198019801980168 +S113A02C9801980198019801980198019801980158 +S113A03C980198016B019801980198019801980175 +S113A04C980198019801980198016B00BC00980143 +S113A05C980198019801C7009801980198019801FA +S113A06CD200E600F10098019801FC00980160010F +S113A07C980198016B01059800F092F9252802D1FA +S113A08C05F101051AE704460599FFF70BFEB4F137 +S113A09CFF3F40F03481039B002B08BF4FF0FF338C +S113A0AC03932CE10BF02002002A14BF3B4601233E +S113A0BC1BF0010705D10B9C04F104010B912468DE +S113A0CC01E04FF00004002B00F01981002B32DD6D +S113A0DC03EB05086FEA050909EB080000F0010918 +S113A0EC05F10105059800F05BF9B0F1FF3F40F074 +S113A0FC0A810CE0DDF8149001E0DDF8149005F110 +S113A10C0105484600F04CF9B0F1FF3F06D1039B22 +S113A11C002B08BF4FF0FF330393F0E00FB904F8A2 +S113A12C010B05F10105484600F03AF9B0F1FF3F87 +S113A13C40F00381EBE7002F7FF4C0AE039A02F1E9 +S113A14C01020392BAE60097059804994BF0800239 +S113A15C4FF00A03FFF7B6FD8146ADE00097059872 +S113A16C04994BF080024FF00003FFF7ABFD8146DE +S113A17CA2E01BF0010F7FF4A1AE0B9C04F10401CF +S113A18C0B9120681BF0100F01D0057096E61BF0A4 +S113A19C080F14BF0580056090E600970598049994 +S113A1AC4BF080024FF00803FFF78CFD814683E0EF +S113A1BC0097059804992BF01E024FF01003FFF73B +S113A1CC81FD814678E04FF0FF39DDF8148009F108 +S113A1DC0109404600F0E4F8044600F045F9002873 +S113A1ECF5D14B46B4F1FF3F4ED01BF00101069163 +S113A1FC78D10B9800F104020B92D0F8008073E034 +S113A20C0FB908F8014B09F10105A946584600F0AD +S113A21CC7F80446B54223D0B0F1FF3F40F0A88004 +S113A22CDDF81CB0089D099E23E0CDF81CB0089500 +S113A23C069FDDF814B009960A9E07E0CDF81CB011 +S113A24C0895069FDDF814B009960A9E204600F086 +S113A25C0BF90028D4D0DDF81CB0089D099E08E049 +S113A26CDDF81CB0089D099E03E0DDF81CB0089DC8 +S113A27C099E20460599FFF715FD069AE2B94FF0A1 +S113A28C000388F8003017E04FF0FF3914E0009712 +S113A29C059804994BF080024FF00A03FFF712FD66 +S113A2AC814609E00097059804994BF080024FF021 +S113A2BC1003FFF707FD8146B9F1000F09DAB9F174 +S113A2CCFF3F1CD10398002808BF4FF0FF300390C8 +S113A2DC15E01BF0010F03D1039C04F1010403945A +S113A2EC4D44EBE54FF00008002FC2DDFF180A9730 +S113A2FC6FEA0903D91911F0010F96D024E00398E1 +S113A30C0DB0BDE8F08F0FB904F8010B45453FF4CF +S113A31C12AFB9F1000F3FF4EDAE05F1010505984C +S113A32C00F03EF8B0F1FF3F3FF4F1AE0FB904F882 +S113A33C010B45457FF4E1AEFDE60FB904F8010BC2 +S113A34C45457FF4DCAEF6E6204600F08DF8002897 +S113A35C8FD1069808B908F8014B09F10109059841 +S113A36C00F01EF80446B0F1FF3F7FF467AF80E7BE +S113A37C00F07AF800287FF478AF0FB908F8014B95 +S113A38C05F10109584600F00BF80446B0F1FF3F03 +S113A39C7FF45CAFDDF81CB0089D099E69E700BF33 +S113A3AC08B50346027832B14168087830B101F13E +S113A3BC0101596008BD4068804708BD4FF0FF306B +S113A3CC08BD00BF38B50446806848B1236862688C +S113A3DC03F10105954208BF0021934238BFC154D3 +S113A3ECE36833B120686268904202D20846214681 +S113A3FC9847216801F10101216038BDA0F14100A9 +S113A40C19288CBF00200120704700BFA0F1610007 +S113A41C19288CBF00200120704700BFA0F1300028 +S113A42C09288CBF00200120704700BF38B50446B2 +S113A43C0D46FFF7F3FF10B1A4F130000FE02046F6 +S113A44CFFF7E4FF10B1A4F1570008E02046FFF732 +S113A45CD5FF10B1A4F1370001E04FF0FF30A84252 +S113A46CA8BF4FF0FF3038BDA0F10903042B04D969 +S113A47C202814BF0020012070474FF001007047C2 +S113A48C38B504460D4600F019F840F26403C2F2E4 +S113A49C00031D6044F0800440F26800C2F2000026 +S113A4AC0460024611680029FCD100F009F840F25E +S113A4BC6403C2F20003186838BD00BF704700BFC4 +S107A4CC704700BF12 +S113A4D0433A2F576F726B2F736F6674776172658F +S113A4E02F4F70656E424C542F5461726765742F00 +S113A4F044656D6F2F41524D434D335F4C4D335383 +S113A5005F454B5F4C4D3353363936355F43726F7D +S113A5107373776F726B732F50726F672F696465F3 +S113A5202F2E2E2F6C69622F6472697665726C69A6 +S113A530622F6770696F2E630000000000E10F4016 +S113A54004E10F4008E10F4040420F0000201C00CE +S113A55080841E0000802500999E3600004038004B +S113A56000093D0000803E0000004B00404B4C00C1 +S113A57000204E00808D5B0000C05D0000807000F4 +S113A58000127A0000007D0080969800001BB7003E +S113A5900080BB00C0E8CE00647ADA000024F40036 +S113A5A00000FA00433A2F576F726B2F736F667473 +S113A5B0776172652F4F70656E424C542F546172EF +S113A5C06765742F44656D6F2F41524D434D335F62 +S113A5D04C4D33535F454B5F4C4D33533639363511 +S113A5E05F43726F7373776F726B732F50726F6701 +S113A5F02F6964652F2E2E2F6C69622F6472697621 +S113A60065726C69622F73797363746C2E630000D6 +S113A610433A2F576F726B2F736F6674776172654D +S113A6202F4F70656E424C542F5461726765742FBE +S113A63044656D6F2F41524D434D335F4C4D335341 +S113A6405F454B5F4C4D3353363936355F43726F3C +S113A6507373776F726B732F50726F672F696465B2 +S113A6602F2E2E2F6C69622F6472697665726C6965 +S113A670622F7379737469636B2E6300433A2F57A7 +S113A6806F726B2F736F6674776172652F4F70658D +S113A6906E424C542F5461726765742F44656D6F1C +S113A6A02F41524D434D335F4C4D33535F454B5F08 +S113A6B04C4D3353363936355F43726F7373776F4E +S113A6C0726B732F50726F672F6964652F2E2E2F54 +S113A6D06C69622F6472697665726C69622F756148 +S113A6E072742E6300000000286E756C6C290000E3 +S113A6F030313233343536373839616263646566F4 +S113A70030313233343536373839414243444546A3 +S903819BE0 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzp b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzp index a3a16e8a..180f9210 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzp +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzp @@ -1,7 +1,7 @@ - + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzs b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzs index 93804f9d..0f6ad152 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzs +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/ide/lm3s6965_crossworks.hzs @@ -51,8 +51,8 @@ - - + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/memory.x index 15473912..199a5e5e 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_Crossworks/Prog/memory.x @@ -5,7 +5,7 @@ MEMORY Peripherals (wx) : ORIGIN = 0x40020000, LENGTH = 0x00100000 FiRM_Peripherals (wx) : ORIGIN = 0x40000000, LENGTH = 0x00010000 SRAM (wx) : ORIGIN = 0x20000000, LENGTH = 0x00010000 - FLASH (rx) : ORIGIN = 0x00006000, LENGTH = 0x00040000 - 0x6000 + FLASH (rx) : ORIGIN = 0x00008000, LENGTH = 0x00040000 - 0x8000 } @@ -19,7 +19,7 @@ SECTIONS __FiRM_Peripherals_segment_end__ = 0x40010000; __SRAM_segment_start__ = 0x20000000; __SRAM_segment_end__ = 0x20010000; - __FLASH_segment_start__ = 0x00006000; + __FLASH_segment_start__ = 0x00008000; __FLASH_segment_end__ = 0x00040000; __STACKSIZE__ = 256; diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.bin b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.bin index 154163f7..a167cdb1 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.bin and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.bin differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.elf index ddb6f10c..c555effa 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.map index 5a15bab2..59fc6e66 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/bin/openbtl_ek_lm3s6965.map @@ -7,38 +7,38 @@ start address 0x00000000 Program Header: LOAD off 0x00008000 vaddr 0x00000000 paddr 0x00000000 align 2**15 - filesz 0x00004954 memsz 0x00004954 flags r-x - LOAD off 0x00010000 vaddr 0x20000000 paddr 0x00004954 align 2**15 - filesz 0x00000008 memsz 0x00001154 flags rw- + filesz 0x00006074 memsz 0x00006074 flags r-x + LOAD off 0x00010000 vaddr 0x20000000 paddr 0x00006074 align 2**15 + filesz 0x00000008 memsz 0x000018ac flags rw- private flags = 5000200: [Version5 EABI] [soft-float ABI] Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00004954 00000000 00000000 00008000 2**2 + 0 .text 00006074 00000000 00000000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000008 20000000 00004954 00010000 2**2 + 1 .data 00000008 20000000 00006074 00010000 2**2 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 0000114c 20000008 0000495c 00010008 2**2 + 2 .bss 000018a4 20000008 0000607c 00010008 2**2 ALLOC - 3 .debug_info 0000cf4d 00000000 00000000 00010008 2**0 + 3 .debug_info 0000f913 00000000 00000000 00010008 2**0 CONTENTS, READONLY, DEBUGGING - 4 .debug_abbrev 000024d8 00000000 00000000 0001cf55 2**0 + 4 .debug_abbrev 0000300e 00000000 00000000 0001f91b 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_loc 0000a0cf 00000000 00000000 0001f42d 2**0 + 5 .debug_loc 0000b63e 00000000 00000000 00022929 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_aranges 00000bc8 00000000 00000000 000294fc 2**0 + 6 .debug_aranges 00000e00 00000000 00000000 0002df67 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_ranges 00000c80 00000000 00000000 0002a0c4 2**0 + 7 .debug_ranges 00000e98 00000000 00000000 0002ed67 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00003e89 00000000 00000000 0002ad44 2**0 + 8 .debug_line 00004dee 00000000 00000000 0002fbff 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_str 0000259e 00000000 00000000 0002ebcd 2**0 + 9 .debug_str 00002e30 00000000 00000000 000349ed 2**0 CONTENTS, READONLY, DEBUGGING - 10 .comment 00000030 00000000 00000000 0003116b 2**0 + 10 .comment 00000030 00000000 00000000 0003781d 2**0 CONTENTS, READONLY - 11 .ARM.attributes 00000033 00000000 00000000 0003119b 2**0 + 11 .ARM.attributes 00000033 00000000 00000000 0003784d 2**0 CONTENTS, READONLY - 12 .debug_frame 00002414 00000000 00000000 000311d0 2**2 + 12 .debug_frame 00002b2c 00000000 00000000 00037880 2**2 CONTENTS, READONLY, DEBUGGING SYMBOL TABLE: 00000000 l d .text 00000000 .text @@ -57,223 +57,299 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 vectors.c 00000000 l df *ABS* 00000000 cstart.c 0000011c l F .text 00000000 zero_loop2 -00003e4e l F .text 00000000 zero_loop +000054a2 l F .text 00000000 zero_loop 00000000 l df *ABS* 00000000 hooks.c -00003f14 l O .text 0000001b firmwareFilename +00005610 l O .text 0000001b firmwareFilename 20000008 l O .bss 00000228 logfile 00000000 l df *ABS* 00000000 main.c +00000000 l df *ABS* 00000000 ethernet.c +00000274 l F .text 00000084 EthernetPacketGetInternal +000002f8 l F .text 00000066 EthernetPacketPutInternal.part.0 00000000 l df *ABS* 00000000 flashlib.c 00000000 l df *ABS* 00000000 sysctl.c -000003a8 l F .text 00000154 SysCtlPeripheralValid -00003f58 l O .text 0000006c g_pulXtals -00003fe0 l O .text 0000000c g_pulRCGCRegs +0000079c l F .text 00000154 SysCtlPeripheralValid +00005670 l O .text 0000006c g_pulXtals +000056f8 l O .text 0000000c g_pulRCGCRegs +00005704 l O .text 0000000c g_pulSRCRRegs 00000000 l df *ABS* 00000000 gpio.c -00000864 l F .text 00000054 GPIOBaseValid +00000ce8 l F .text 00000054 GPIOBaseValid 00000000 l df *ABS* 00000000 uartlib.c -00000ad4 l F .text 00000020 UARTBaseValid +00000f8c l F .text 00000020 UARTBaseValid 00000000 l df *ABS* 00000000 ssi.c -00000cc0 l F .text 00000014 SSIBaseValid +00001178 l F .text 00000014 SSIBaseValid 00000000 l df *ABS* 00000000 mmc.c -00000e4c l F .text 00000020 xchg_spi -00000e6c l F .text 00000028 wait_ready -00000e94 l F .text 0000001c deselect -00000eb0 l F .text 0000002c select -00000edc l F .text 0000007e send_cmd -00000f5a l F .text 0000003a xmit_datablock.part.1 -00000f94 l F .text 00000058 rcvr_datablock +00001304 l F .text 00000020 xchg_spi +00001324 l F .text 00000028 wait_ready +0000134c l F .text 0000001c deselect +00001368 l F .text 0000002c select +00001394 l F .text 0000007e send_cmd +00001412 l F .text 0000003a xmit_datablock.part.1 +0000144c l F .text 00000058 rcvr_datablock 20000230 l O .bss 00000004 CardType 20000000 l O .data 00000001 Stat +00000000 l df *ABS* 00000000 netdev.c 00000000 l df *ABS* 00000000 boot.c 00000000 l df *ABS* 00000000 com.c 20000234 l O .bss 00000001 comEntryStateConnect -20000235 l O .bss 00000040 xcpCtoReqPacket.4396 20000001 l O .data 00000001 comActiveInterface +20000235 l O .bss 00000040 xcpCtoReqPacket.4412 00000000 l df *ABS* 00000000 xcp.c -00001648 l F .text 00000014 XcpSetCtoError -00004033 l O .text 00000008 xcpStationId +00001c9c l F .text 00000014 XcpSetCtoError +00005757 l O .text 00000008 xcpStationId 20000278 l O .bss 0000004c xcpInfo 00000000 l df *ABS* 00000000 backdoor.c 200002c4 l O .bss 00000001 backdoorOpen 200002c8 l O .bss 00000004 backdoorOpenTime 00000000 l df *ABS* 00000000 cop.c 00000000 l df *ABS* 00000000 file.c -00001914 l F .text 0000002c FileLibByteNibbleToChar -00001940 l F .text 0000001e FileLibByteToHexString -00001960 l F .text 00000058 FileLibHexStringToByte -000019b8 l F .text 00000038 FileLibLongToIntString.constprop.0 +00001f68 l F .text 0000002c FileLibByteNibbleToChar +00001f94 l F .text 0000001e FileLibByteToHexString +00001fb4 l F .text 00000058 FileLibHexStringToByte +0000200c l F .text 00000038 FileLibLongToIntString.constprop.0 200002cc l O .bss 00000040 loggingStr 2000030c l O .bss 00000001 firmwareUpdateState 20000310 l O .bss 00000008 eraseInfo 20000318 l O .bss 00000458 fatFsObjects 20000770 l O .bss 00000184 lineParseObject +00000000 l df *ABS* 00000000 net.c +200008f4 l O .bss 00000004 ARPTimerTimeOut +200008f8 l O .bss 00000004 periodicTimerTimeOut 00000000 l df *ABS* 00000000 assert.c -200008f4 l O .bss 00000004 assert_failure_file -200008f8 l O .bss 00000004 assert_failure_line +200008fc l O .bss 00000004 assert_failure_file +20000900 l O .bss 00000004 assert_failure_line 00000000 l df *ABS* 00000000 ff.c -00001f54 l F .text 00000012 mem_cpy -00001f66 l F .text 0000001e sum_sfn -00001f84 l F .text 0000002a validate -00001fae l F .text 000000ea get_fileinfo -00002098 l F .text 0000001c ld_clust.isra.0 -000020b4 l F .text 00000088 check_fs -0000213c l F .text 0000030c chk_mounted -00002448 l F .text 0000004a sync_window.part.2 -00002492 l F .text 0000000c sync_window -0000249e l F .text 0000002e move_window -000024cc l F .text 000000b6 sync_fs -00002666 l F .text 00000084 dir_sdi -000027dc l F .text 0000009a create_chain -00002876 l F .text 000000f2 dir_next -00002968 l F .text 0000012c dir_find.part.6 -00002a94 l F .text 0000026c follow_path -00002d00 l F .text 0000004e dir_remove -00002d50 l F .text 000000fc dir_read.constprop.8 -00002e4c l F .text 00000054 remove_chain -00002f20 l F .text 000001b0 dir_register -200008fc l O .bss 00000200 LfnBuf -20000afc l O .bss 00000002 Fsid -000041e6 l O .text 00000080 ExCvt -00004266 l O .text 0000000d LfnOfs -20000b00 l O .bss 00000004 FatFs +00002758 l F .text 00000012 mem_cpy +0000276a l F .text 0000001e sum_sfn +00002788 l F .text 0000002a validate +000027b2 l F .text 000000ea get_fileinfo +0000289c l F .text 0000001c ld_clust.isra.0 +000028b8 l F .text 00000088 check_fs +00002940 l F .text 0000030c chk_mounted +00002c4c l F .text 0000004a sync_window.part.2 +00002c96 l F .text 0000000c sync_window +00002ca2 l F .text 0000002e move_window +00002cd0 l F .text 000000b6 sync_fs +00002e6a l F .text 00000084 dir_sdi +00002fe0 l F .text 0000009a create_chain +0000307a l F .text 000000f2 dir_next +0000316c l F .text 0000012c dir_find.part.6 +00003298 l F .text 0000026c follow_path +00003504 l F .text 0000004e dir_remove +00003554 l F .text 000000fc dir_read.constprop.8 +00003650 l F .text 00000054 remove_chain +00003724 l F .text 000001b0 dir_register +20000904 l O .bss 00000200 LfnBuf +20000b04 l O .bss 00000002 Fsid +0000590a l O .text 00000080 ExCvt +0000598a l O .text 0000000d LfnOfs +20000b08 l O .bss 00000004 FatFs 00000000 l df *ABS* 00000000 unicode.c -00004274 l O .text 000001e0 tbl_lower.4259 -00004454 l O .text 00000100 Tbl -00004554 l O .text 000001e0 tbl_upper.4260 +00005998 l O .text 000001e0 tbl_lower.4259 +00005b78 l O .text 00000100 Tbl +00005c78 l O .text 000001e0 tbl_upper.4260 +00000000 l df *ABS* 00000000 uip.c +0000411c l F .text 00000038 chksum +00004154 l F .text 0000003c upper_layer_chksum +000041e4 l F .text 0000002c uip_add_rcv_nxt +20000b0c l O .bss 00000002 tmp16 +20000b0e l O .bss 00000002 ipid +20000b10 l O .bss 00000004 iss +20000b14 l O .bss 00000002 lastport +20000b1c l O .bss 00000001 c +20000b1d l O .bss 00000001 opt +00000000 l df *ABS* 00000000 uip_arp.c +00004c2c l F .text 000000e4 uip_arp_update.constprop.0 +20000b1e l O .bss 00000001 i +20000b1f l O .bss 00000001 tmpage +20000b20 l O .bss 00000060 arp_table +00005e58 l O .text 00000006 broadcast_ethaddr +20000b80 l O .bss 00000001 c +20000b81 l O .bss 00000001 arptime +20000b82 l O .bss 00000004 ipaddr 00000000 l df *ABS* 00000000 cpu.c 00000000 l df *ABS* 00000000 uart.c -20000b04 l O .bss 00000041 xcpCtoReqPacket.4626 -20000b45 l O .bss 00000001 xcpCtoRxLength.4627 -20000b46 l O .bss 00000001 xcpCtoRxInProgress.4628 +20000b86 l O .bss 00000041 xcpCtoReqPacket.4628 +20000bc7 l O .bss 00000001 xcpCtoRxInProgress.4630 +20000bc8 l O .bss 00000001 xcpCtoRxLength.4629 00000000 l df *ABS* 00000000 nvm.c 00000000 l df *ABS* 00000000 timer.c -20000b48 l O .bss 00000004 millisecond_counter +20000bcc l O .bss 00000004 millisecond_counter 00000000 l df *ABS* 00000000 flash.c -00003ae0 l F .text 00000034 FlashGetSector -00003b14 l F .text 0000004c FlashWriteBlock -00003b60 l F .text 00000050 FlashSwitchBlock -00003bb0 l F .text 00000080 FlashAddToBlock -00004758 l O .text 000000cc flashLayout -20000b4c l O .bss 00000204 bootBlockInfo -20000d50 l O .bss 00000204 blockInfo +0000512c l F .text 00000034 FlashGetSector +00005160 l F .text 0000004c FlashWriteBlock +000051ac l F .text 00000050 FlashSwitchBlock +000051fc l F .text 00000080 FlashAddToBlock +00005e84 l O .text 000000c0 flashLayout +20000bd0 l O .bss 00000204 bootBlockInfo +20000dd4 l O .bss 00000204 blockInfo +00000000 l df *ABS* 00000000 memcpy-stub.c 00000000 l df *ABS* 00000000 memset.c 00000000 l df *ABS* 00000000 ctype_.c 00000000 l df *ABS* 00000000 00000200 l *ABS* 00000000 __STACKSIZE__ -0000158c g F .text 00000034 ComInit -00003c48 g F .text 00000048 FlashWrite -00003818 g F .text 0000004e f_gets -00001f3c g F .text 00000018 AssertFailure -0000259a g F .text 000000cc get_fat -00000a6c g F .text 00000034 GPIOPinTypeSSI -00003e2c g F .text 00000040 reset_handler -00000e24 g F .text 00000028 SSIDataGet -00003ab4 g F .text 0000001c TimerUpdate -00001688 g F .text 00000010 XcpPacketTransmitted -000015c0 g F .text 00000028 ComTask -00000d9c g F .text 00000024 SSIEnable -00000560 g F .text 00000008 SysCtlDelay -00001638 g F .text 0000000c ComSetConnectEntryState -00001554 g F .text 0000001e BootInit -00001a9c g F .text 0000003e FileSrecVerifyChecksum -000018f0 g F .text 00000020 BackDoorInit -00000cd4 g F .text 000000c8 SSIConfigSetExpClk -00001912 g F .text 00000002 CopService -00004954 g .text 00000000 _etext -000038f4 g F .text 00000024 ff_wtoupper -00000a14 g F .text 00000024 GPIOPinWrite -00001c18 g F .text 00000324 FileTask -00000c28 g F .text 00000024 UARTSpaceAvail -00003aa8 g F .text 0000000c TimerReset -00000fec g F .text 00000228 disk_initialize -00000c74 g F .text 0000002c UARTCharPutNonBlocking -00001572 g F .text 0000001a BootTask -00003d60 g F .text 00000044 FlashWriteChecksum -000015ec g F .text 0000001c ComTransmitPacket -00001214 g F .text 00000014 disk_status -00001adc g F .text 0000013c FileSrecParseLine -0000136c g F .text 000001e0 disk_ioctl -00001a30 g F .text 00000028 FileHandleFirmwareUpdateRequest -000004fc g F .text 00000064 SysCtlPeripheralEnable -00002ea0 g F .text 0000007e gen_numname +00001bb8 g F .text 0000003c ComInit +00005294 g F .text 00000048 FlashWrite +0000401c g F .text 0000004e f_gets +00002740 g F .text 00000018 AssertFailure +00002d9e g F .text 000000cc get_fat +00000f24 g F .text 00000034 GPIOPinTypeSSI +00005480 g F .text 00000040 reset_handler +000012dc g F .text 00000028 SSIDataGet +00005100 g F .text 0000001c TimerUpdate +00001cdc g F .text 00000010 XcpPacketTransmitted +00001bf4 g F .text 0000003c ComTask +00001254 g F .text 00000024 SSIEnable +000009e4 g F .text 00000008 SysCtlDelay +00001c8c g F .text 0000000c ComSetConnectEntryState +20000fd8 g O .bss 00000002 uip_len +20000b16 g O .bss 00000006 uip_ethaddr +00004190 g F .text 00000054 uip_add32 +00001b80 g F .text 0000001e BootInit +000020f0 g F .text 0000003e FileSrecVerifyChecksum +00001f44 g F .text 00000020 BackDoorInit +0000118c g F .text 000000c8 SSIConfigSetExpClk +00001f66 g F .text 00000002 CopService +00006074 g .text 00000000 _etext +000008f0 g F .text 00000090 SysCtlPeripheralReset +000040f8 g F .text 00000024 ff_wtoupper +00000e98 g F .text 00000024 GPIOPinWrite +00001b34 g F .text 00000034 netdev_read +00004280 g F .text 00000980 uip_process +0000546c g F .text 00000006 FlashGetUserProgBaseAddress +000054c8 g F .text 000000a6 memcpy +0000226c g F .text 00000324 FileTask +000010e0 g F .text 00000024 UARTSpaceAvail +000050f4 g F .text 0000000c TimerReset +000014a4 g F .text 00000228 disk_initialize +20000fdc g O .bss 00000004 uip_sappdata +00001a0c g F .text 00000090 netdev_init +20000fe0 g O .bss 00000004 uip_acc32 +00004210 g F .text 00000020 uip_ipchksum +0000112c g F .text 0000002c UARTCharPutNonBlocking +00001b9e g F .text 0000001a BootTask +000053ac g F .text 00000044 FlashWriteChecksum +00001c34 g F .text 00000030 ComTransmitPacket +00000360 g F .text 0000002c EthernetInitExpClk +000016cc g F .text 00000014 disk_status +00002130 g F .text 0000013c FileSrecParseLine +00004264 g F .text 0000001c uip_listen +00001b68 g F .text 00000018 netdev_send +00001824 g F .text 000001e0 disk_ioctl +00002084 g F .text 00000028 FileHandleFirmwareUpdateRequest +000004d8 g F .text 0000005c EthernetPacketPut +00000980 g F .text 00000064 SysCtlPeripheralEnable +000036a4 g F .text 0000007e gen_numname +20000fe4 g O .bss 00000001 uip_flags 000001bc g F .text 00000030 FileFirmwareUpdateCompletedHook -00001678 g F .text 00000010 XcpIsConnected -0000375c g F .text 000000bc f_unlink -00003a64 g F .text 00000004 NvmInit -00003c30 g F .text 00000018 FlashInit -20000f54 g .bss 00000000 _ebss -00003866 g F .text 00000032 f_putc -00003898 g F .text 0000001e f_puts -00003e20 g F .text 0000000c UnusedISR -000015e8 g F .text 00000002 ComFree -00003964 g F .text 00000028 UartInit -00003a6c g F .text 00000004 NvmErase -00000c4c g F .text 00000028 UARTCharGetNonBlocking -00000de4 g F .text 00000040 SSIDataPut +00001ccc g F .text 00000010 XcpIsConnected +00003f60 g F .text 000000bc f_unlink +000050b0 g F .text 00000004 NvmInit +0000527c g F .text 00000018 FlashInit +200016aa g .bss 00000000 _ebss +0000406a g F .text 00000032 f_putc +0000409c g F .text 0000001e f_puts +00005474 g F .text 0000000c UnusedISR +00000484 g F .text 00000054 EthernetPacketGetNonBlocking +00001c30 g F .text 00000002 ComFree +00000ebc g F .text 00000034 GPIOPinTypeEthernetLED +00004fb0 g F .text 00000028 UartInit +00001a9c g F .text 00000098 netdev_setmacaddr +000050b8 g F .text 00000004 NvmErase +00001104 g F .text 00000028 UARTCharGetNonBlocking +0000129c g F .text 00000040 SSIDataPut 20000008 g .bss 00000000 _bss -000035cc g F .text 0000000e f_close -00001698 g F .text 00000214 XcpPacketReceived -00003230 g F .text 00000160 f_read -00003dec g F .text 00000034 FlashDone +00003dd0 g F .text 0000000e f_close +00001cec g F .text 00000214 XcpPacketReceived +00004230 g F .text 00000006 uip_tcpchksum +00003a34 g F .text 00000160 f_read +00005438 g F .text 00000034 FlashDone 000000f0 g F .text 00000050 EntryFromProg -000002c4 g F .text 000000e4 FlashProgram -0000154c g F .text 00000008 get_fattime -0000165c g F .text 0000001c XcpInit -000019f0 g F .text 0000002c FileInit -00003c90 g F .text 000000d0 FlashErase -00003e74 g F .text 0000009e memset +20000fe8 g O .bss 00000004 uip_appdata +20000fec g O .bss 00000004 uip_conn +20000ff0 g O .bss 00000068 uip_conns +00000658 g F .text 000000e4 FlashProgram +00001a04 g F .text 00000008 get_fattime +00001cb0 g F .text 0000001c XcpInit +00002044 g F .text 0000002c FileInit +0000056c g F .text 00000028 EthernetIntStatus +00004e18 g F .text 00000144 uip_arp_out +000052dc g F .text 000000d0 FlashErase +00005570 g F .text 0000009e memset 000001ec g F .text 00000014 FileFirmwareUpdateErrorHook 00000248 g F .text 0000002c main -00003522 g F .text 000000aa f_sync -000006b8 g F .text 000001ac SysCtlClockGet -00001a58 g F .text 00000044 FileSrecGetLineType -00000b24 g F .text 00000034 UARTDisable -00003a74 g F .text 00000012 NvmDone -000030d0 g F .text 00000020 f_mount -0000398c g F .text 0000006c UartTransmitPacket -00003a70 g F .text 00000004 NvmVerifyChecksum -00003940 g F .text 0000001e CpuMemCopy -000026ea g F .text 000000f2 put_fat -000035da g F .text 00000138 f_lseek -00001620 g F .text 00000018 ComGetActiveInterfaceMaxTxLen -000039f8 g F .text 0000006c UartReceivePacket +00003d26 g F .text 000000aa f_sync +00000b3c g F .text 000001ac SysCtlClockGet +000020ac g F .text 00000044 FileSrecGetLineType +00000fdc g F .text 00000034 UARTDisable +000050c0 g F .text 00000012 NvmDone +00000444 g F .text 00000040 EthernetEnable +000038d4 g F .text 00000020 f_mount +00004fd8 g F .text 0000006c UartTransmitPacket +000050bc g F .text 00000004 NvmVerifyChecksum +00004f8c g F .text 0000001e CpuMemCopy +00002eee g F .text 000000f2 put_fat +00003dde g F .text 00000138 f_lseek +00004d68 g F .text 000000b0 uip_arp_arpin +00001c78 g F .text 00000014 ComGetActiveInterfaceMaxTxLen +00005044 g F .text 0000006c UartReceivePacket 0000018c g F .text 00000008 FileGetFirmwareFilenameHook +000003e4 g F .text 00000060 EthernetMACAddrSet +00004d10 g F .text 00000058 uip_arp_timer +20001058 g O .bss 00000002 uip_listenports +2000105a g O .bss 00000004 uip_draddr 20000000 g .data 00000000 _data -00003714 g F .text 00000048 f_stat -00001910 g F .text 00000002 CopInit -0000395e g F .text 00000004 CpuReset -00000dc0 g F .text 00000024 SSIDisable -00003a68 g F .text 00000004 NvmWrite -00003918 g F .text 00000028 CpuStartUserProgram -00002582 g F .text 00000018 clust2sect -20001154 g .bss 00000000 _estack -00003da4 g F .text 00000048 FlashVerifyChecksum +000005c8 g F .text 00000040 EthernetPHYRead +00003f18 g F .text 00000048 f_stat +00001f64 g F .text 00000002 CopInit +00004faa g F .text 00000004 CpuReset +00001278 g F .text 00000024 SSIDisable +000050b4 g F .text 00000004 NvmWrite +00004f5c g F .text 00000030 CpuStartUserProgram +00002d86 g F .text 00000018 clust2sect +200018ac g .bss 00000000 _estack +0000038c g F .text 00000058 EthernetConfigSet +000053f0 g F .text 00000048 FlashVerifyChecksum +000025f0 g F .text 0000003c NetTransmitPacket 20000008 g .data 00000000 _edata -00001a1c g F .text 00000014 FileIsIdle -00003390 g F .text 00000192 f_write +00002070 g F .text 00000014 FileIsIdle +00004c00 g F .text 00000006 htons +00003b94 g F .text 00000192 f_write 00000000 g O .text 000000f0 _vectab -00000aa0 g F .text 00000034 GPIOPinTypeUART -000030f0 g F .text 00000140 f_open -000012ac g F .text 000000c0 disk_write -00000a38 g F .text 00000034 GPIOPinTypeGPIOOutput +0000073c g F .text 00000060 FlashUserGet +00000f58 g F .text 00000034 GPIOPinTypeUART +000038f4 g F .text 00000140 f_open +00001764 g F .text 000000c0 disk_write +00000ef0 g F .text 00000034 GPIOPinTypeGPIOOutput 00000200 g F .text 00000048 FileFirmwareUpdateLogHook 20000004 g O .data 00000004 __ctype_ptr__ -00001644 g F .text 00000004 ComIsConnected -00004850 g O .text 00000101 _ctype_ +00001c98 g F .text 00000004 ComIsConnected +00000534 g F .text 00000038 EthernetIntDisable +00005f70 g O .text 00000101 _ctype_ +00000594 g F .text 00000034 EthernetIntClear 00000154 g F .text 00000038 FileIsFirmwareUpdateRequestedHook -00000ca0 g F .text 00000020 UARTBusy -00001608 g F .text 00000018 ComGetActiveInterfaceMaxRxLen -000008b8 g F .text 00000058 GPIODirModeSet -00001228 g F .text 00000084 disk_read -000018ac g F .text 00000044 BackDoorCheck -20000f54 g .bss 00000000 _stack -000038b8 g F .text 0000003c ff_convert -00003ad0 g F .text 00000010 TimerGet -00000b58 g F .text 000000d0 UARTConfigSetExpClk -00000568 g F .text 00000150 SysCtlClockSet -00000910 g F .text 00000104 GPIOPadConfigSet -00003a88 g F .text 00000020 TimerInit -00000274 g F .text 00000050 FlashClear +00001158 g F .text 00000020 UARTBusy +00004238 g F .text 0000002c uip_init +00001c64 g F .text 00000014 ComGetActiveInterfaceMaxRxLen +0000262c g F .text 000000b0 NetReceivePacket +00000d3c g F .text 00000058 GPIODirModeSet +000016e0 g F .text 00000084 disk_read +00001f00 g F .text 00000044 BackDoorCheck +200016aa g .bss 00000000 _stack +2000105e g O .bss 00000004 uip_netmask +20001062 g O .bss 00000004 uip_hostaddr +000040bc g F .text 0000003c ff_convert +0000511c g F .text 00000010 TimerGet +000026dc g F .text 00000064 NetApp +00001010 g F .text 000000d0 UARTConfigSetExpClk +00002590 g F .text 00000060 NetInit +000009ec g F .text 00000150 SysCtlClockSet +00000d94 g F .text 00000104 GPIOPadConfigSet +000050d4 g F .text 00000020 TimerInit +20001066 g O .bss 00000642 uip_buf +00000608 g F .text 00000050 FlashClear +00004c08 g F .text 00000024 uip_send +200016a8 g O .bss 00000002 uip_slen 00000194 g F .text 00000028 FileFirmwareUpdateStartedHook -00000af4 g F .text 00000030 UARTEnable +00000fac g F .text 00000030 UARTEnable diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/blt_conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/blt_conf.h index 209f8fe5..c4a483b2 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/blt_conf.h +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/blt_conf.h @@ -81,6 +81,48 @@ #define BOOT_COM_UART_CHANNEL_INDEX (0) +/* The NET communication interface for firmware updates via TCP/IP is selected by setting + * the BOOT_COM_NET_ENABLE configurable to 1. The maximum amount of data bytes in a + * message for data transmission and reception is set through BOOT_COM_NET_TX_MAX_DATA + * and BOOT_COM_NET_RX_MAX_DATA, respectively. The default IP address is configured + * with the macros BOOT_COM_NET_IPADDRx. The default netmask is configued with the macros + * BOOT_COM_NET_NETMASKx. The bootloader acts and a TCP/IP server. The port the server + * listen on for connections is configured with BOOT_COM_NET_PORT. + */ +/** \brief Enable/disable the NET transport layer. */ +#define BOOT_COM_NET_ENABLE (1) +/** \brief Configure number of bytes in the target->host data packet. */ +#define BOOT_COM_NET_TX_MAX_DATA (64) +/** \brief Configure number of bytes in the host->target data packet. */ +#define BOOT_COM_NET_RX_MAX_DATA (64) +/** \brief Configure the port that the TCP/IP server listens on */ +#define BOOT_COM_NET_PORT (1000) +/** \brief Configure the 1st byte of the IP address */ +#define BOOT_COM_NET_IPADDR0 (169) +/** \brief Configure the 2nd byte of the IP address */ +#define BOOT_COM_NET_IPADDR1 (254) +/** \brief Configure the 3rd byte of the IP address */ +#define BOOT_COM_NET_IPADDR2 (19) +/** \brief Configure the 4th byte of the IP address */ +#define BOOT_COM_NET_IPADDR3 (63) +/** \brief Configure the 1st byte of the network mask */ +#define BOOT_COM_NET_NETMASK0 (255) +/** \brief Configure the 2nd byte of the network mask */ +#define BOOT_COM_NET_NETMASK1 (255) +/** \brief Configure the 3rd byte of the network mask */ +#define BOOT_COM_NET_NETMASK2 (0) +/** \brief Configure the 4th byte of the network mask */ +#define BOOT_COM_NET_NETMASK3 (0) +/** \brief Enable/disable a hook function that is called when the IP address is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_IPADDRx values. + */ +#define BOOT_COM_NET_IPADDR_HOOK_ENABLE (0) +/** \brief Enable/disable a hook function that is called when the netmask is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_NETMASKx values. + */ +#define BOOT_COM_NET_NETMASK_HOOK_ENABLE (0) + + /**************************************************************************************** * F I L E S Y S T E M I N T E R F A C E C O N F I G U R A T I O N ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/hooks.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/hooks.c index 30aa8bac..9941476c 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/hooks.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/hooks.c @@ -187,6 +187,55 @@ blt_bool NvmWriteChecksumHook(void) #endif /* BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0 */ +/**************************************************************************************** +* N E T W O R K I N T E R F A C E H O O K F U N C T I O N S +****************************************************************************************/ +#if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the IP address is about to be configured. +** \param ipAddrArray 4-byte array where the IP address should be stored. +** \return none. +** +****************************************************************************************/ +void NetIpAddressHook(blt_int8u *ipAddrArray) +{ + /* This hook function allows a dynamic configuration of the IP address. This could for + * example be used if the bootloader is activated from a running user program and + * should have the same IP address as the user program. This IP address could be stored + * at a fixed location in RAM which can be read here. For now the example implemen- + * tation simply configures the bootloader's default IP address. + */ + ipAddrArray[0] = BOOT_COM_NET_IPADDR0; + ipAddrArray[1] = BOOT_COM_NET_IPADDR1; + ipAddrArray[2] = BOOT_COM_NET_IPADDR2; + ipAddrArray[3] = BOOT_COM_NET_IPADDR3; +} /*** end of NetIpAddressHook ***/ +#endif /* BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0 */ + + +#if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the network mask is about to be configured. +** \param netMaskArray 4-byte array where the network mask should be stored. +** \return none. +** +****************************************************************************************/ +void NetNetworkMaskHook(blt_int8u *netMaskArray) +{ + /* This hook function allows a dynamic configuration of the network mask. This could + * for example be used if the bootloader is activated from a running user program and + * should have the same network mask as the user program. This network mask could be + * stored at a fixed location in RAM which can be read here. For now the example + * implementation simply configures the bootloader's default network mask. + */ + netMaskArray[0] = BOOT_COM_NET_NETMASK0; + netMaskArray[1] = BOOT_COM_NET_NETMASK1; + netMaskArray[2] = BOOT_COM_NET_NETMASK2; + netMaskArray[3] = BOOT_COM_NET_NETMASK3; +} /*** end of NetNetworkMaskHook ***/ +#endif /* BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0 */ + + /**************************************************************************************** * W A T C H D O G D R I V E R H O O K F U N C T I O N S ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.c new file mode 100644 index 00000000..c085ce0d --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.c @@ -0,0 +1,1381 @@ +//***************************************************************************** +// +// ethernet.c - Driver for the Integrated Ethernet Controller +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +//***************************************************************************** +// +//! \addtogroup ethernet_api +//! @{ +// +//***************************************************************************** + +#include "inc/hw_ethernet.h" +#include "inc/hw_ints.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "driverlib/debug.h" +#include "driverlib/ethernet.h" +#include "driverlib/interrupt.h" + +//***************************************************************************** +// +//! Initializes the Ethernet controller for operation. +//! +//! \param ulBase is the base address of the controller. +//! \param ulEthClk is the rate of the clock supplied to the Ethernet module. +//! +//! This function prepares the Ethernet controller for first-time use in +//! a given hardware/software configuration. This function should be called +//! before any other Ethernet API functions are called. +//! +//! The peripheral clock is the same as the processor clock. This value is +//! returned by SysCtlClockGet(), or it can be explicitly hard-coded if it is +//! constant and known (to save the code/execution overhead of a call to +//! SysCtlClockGet()). +//! +//! This function replaces the original EthernetInit() API and performs the +//! same actions. A macro is provided in ethernet.h to map the +//! original API to this API. +//! +//! \note If the device configuration is changed (for example, the system clock +//! is reprogrammed to a different speed), then the Ethernet controller must be +//! disabled by calling the EthernetDisable() function and the controller must +//! be reinitialized by calling the EthernetInitExpClk() function again. After +//! the controller has been reinitialized, the controller should be +//! reconfigured using the appropriate Ethernet API calls. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk) +{ + unsigned long ulDiv; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Set the Management Clock Divider register for access to the PHY + // register set (via EthernetPHYRead/Write). + // + // The MDC clock divided down from the system clock using the following + // formula. A maximum of 2.5MHz is allowed for F(mdc). + // + // F(mdc) = F(sys) / (2 * (div + 1)) + // div = (F(sys) / (2 * F(mdc))) - 1 + // div = (F(sys) / 2 / F(mdc)) - 1 + // + // Note: Because we should round up, to ensure we don't violate the + // maximum clock speed, we can simplify this as follows: + // + // div = F(sys) / 2 / F(mdc) + // + // For example, given a system clock of 6.0MHz, and a div value of 1, + // the mdc clock would be programmed as 1.5 MHz. + // + ulDiv = (ulEthClk / 2) / 2500000; + HWREG(ulBase + MAC_O_MDV) = (ulDiv & MAC_MDV_DIV_M); +} + +//***************************************************************************** +// +//! Sets the configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param ulConfig is the configuration for the controller. +//! +//! After the EthernetInitExpClk() function has been called, this API function +//! can be used to configure the various features of the Ethernet controller. +//! +//! The Ethernet controller provides three control registers that are used +//! to configure the controller's operation. The transmit control register +//! provides settings to enable full-duplex operation, to auto-generate the +//! frame check sequence, and to pad the transmit packets to the minimum +//! length as required by the IEEE standard. The receive control register +//! provides settings to enable reception of packets with bad frame check +//! sequence values and to enable multi-cast or promiscuous modes. The +//! timestamp control register provides settings that enable support logic in +//! the controller that allow the use of the General Purpose Timer 3 to capture +//! timestamps for the transmitted and received packets. Note that not all +//! devices support this functionality; see the data sheet to determine if +//! this feature is supported. +//! +//! The \e ulConfig parameter is the logical OR of the following values: +//! +//! - \b ETH_CFG_TS_TSEN - Enable TX and RX interrupt status as CCP timer +//! inputs +//! - \b ETH_CFG_RX_BADCRCDIS - Disable reception of packets with a bad CRC +//! - \b ETH_CFG_RX_PRMSEN - Enable promiscuous mode reception (all packets) +//! - \b ETH_CFG_RX_AMULEN - Enable reception of multicast packets +//! - \b ETH_CFG_TX_DPLXEN - Enable full duplex transmit mode +//! - \b ETH_CFG_TX_CRCEN - Enable transmit with auto CRC generation +//! - \b ETH_CFG_TX_PADEN - Enable padding of transmit data to minimum size +//! +//! These bit-mapped values are programmed into the transmit, receive, and/or +//! timestamp control register. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig) +{ + unsigned long ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT((ulConfig & ~(ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN | ETH_CFG_RX_BADCRCDIS | + ETH_CFG_RX_PRMSEN | ETH_CFG_RX_AMULEN | + ETH_CFG_TS_TSEN)) == 0); + + // + // Setup the Transmit Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_TCTL); + ulTemp &= ~(MAC_TCTL_DUPLEX | MAC_TCTL_CRC | MAC_TCTL_PADEN); + ulTemp |= ulConfig & 0x0FF; + HWREG(ulBase + MAC_O_TCTL) = ulTemp; + + // + // Setup the Receive Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_RCTL); + ulTemp &= ~(MAC_RCTL_BADCRC | MAC_RCTL_PRMS | MAC_RCTL_AMUL); + ulTemp |= (ulConfig >> 8) & 0x0FF; + HWREG(ulBase + MAC_O_RCTL) = ulTemp; + + // + // Setup the Time Stamp Configuration register. + // + ulTemp = HWREG(ulBase + MAC_O_TS); + ulTemp &= ~(MAC_TS_TSEN); + ulTemp |= (ulConfig >> 16) & 0x0FF; + HWREG(ulBase + MAC_O_TS) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the current configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function queries the control registers of the Ethernet controller +//! and returns a bit-mapped configuration value. +//! +//! \sa The description of the EthernetConfigSet() function provides detailed +//! information for the bit-mapped configuration values that are returned. +//! +//! \return Returns the bit-mapped Ethernet controller configuration value. +// +//***************************************************************************** +unsigned long +EthernetConfigGet(unsigned long ulBase) +{ + unsigned long ulConfig; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read and return the Ethernet controller configuration parameters, + // properly shifted into the appropriate bit field positions. + // + ulConfig = HWREG(ulBase + MAC_O_TS) << 16; + ulConfig |= (HWREG(ulBase + MAC_O_RCTL) & ~(MAC_RCTL_RXEN)) << 8; + ulConfig |= HWREG(ulBase + MAC_O_TCTL) & ~(MAC_TCTL_TXEN); + return(ulConfig); +} + +//***************************************************************************** +// +//! Sets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the array of MAC-48 address octets. +//! +//! This function programs the IEEE-defined MAC-48 address specified in +//! \e pucMACAddr into the Ethernet controller. This address is used by the +//! Ethernet controller for hardware-level filtering of incoming Ethernet +//! packets (when promiscuous mode is not enabled). +//! +//! The MAC-48 address is defined as 6 octets, illustrated by the following +//! example address. The numbers are shown in hexadecimal format. +//! +//! AC-DE-48-00-00-80 +//! +//! In this representation, the first three octets (AC-DE-48) are the +//! Organizationally Unique Identifier (OUI). This is a number assigned by +//! the IEEE to an organization that requests a block of MAC addresses. The +//! last three octets (00-00-80) are a 24-bit number managed by the OUI owner +//! to uniquely identify a piece of hardware within that organization that is +//! to be connected to the Ethernet. +//! +//! In this representation, the octets are transmitted from left to right, +//! with the ``AC'' octet being transmitted first and the ``80'' octet being +//! transmitted last. Within an octet, the bits are transmitted LSB to MSB. +//! For this address, the first bit to be transmitted would be ``0'', the LSB +//! of ``AC'', and the last bit to be transmitted would be ``1'', the MSB of +//! ``80''. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrSet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Program the MAC Address into the device. The first four bytes of the + // MAC Address are placed into the IA0 register. The remaining two bytes + // of the MAC address are placed into the IA1 register. + // + pucTemp[0] = pucMACAddr[0]; + pucTemp[1] = pucMACAddr[1]; + pucTemp[2] = pucMACAddr[2]; + pucTemp[3] = pucMACAddr[3]; + HWREG(ulBase + MAC_O_IA0) = ulTemp; + ulTemp = 0; + pucTemp[0] = pucMACAddr[4]; + pucTemp[1] = pucMACAddr[5]; + HWREG(ulBase + MAC_O_IA1) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the location in which to store the +//! array of MAC-48 address octets. +//! +//! This function reads the currently programmed MAC address into the +//! \e pucMACAddr buffer. +//! +//! \sa Refer to EthernetMACAddrSet() API description for more details about +//! the MAC address format. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrGet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Read the MAC address from the device. The first four bytes of the + // MAC address are read from the IA0 register. The remaining two bytes + // of the MAC addres + // + ulTemp = HWREG(ulBase + MAC_O_IA0); + pucMACAddr[0] = pucTemp[0]; + pucMACAddr[1] = pucTemp[1]; + pucMACAddr[2] = pucTemp[2]; + pucMACAddr[3] = pucTemp[3]; + ulTemp = HWREG(ulBase + MAC_O_IA1); + pucMACAddr[4] = pucTemp[0]; + pucMACAddr[5] = pucTemp[1]; +} + +//***************************************************************************** +// +//! Enables the Ethernet controller for normal operation. +//! +//! \param ulBase is the base address of the controller. +//! +//! Once the Ethernet controller has been configured using the +//! EthernetConfigSet() function and the MAC address has been programmed using +//! the EthernetMACAddrSet() function, this API function can be called to +//! enable the controller for normal operation. +//! +//! This function enables the controller's transmitter and receiver, and +//! resets the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetEnable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Enable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RXEN; + + // + // Enable Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) |= MAC_TCTL_TXEN; + + // + // Reset the receive FIFO again, after the receiver has been enabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Disables the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! When terminating operations on the Ethernet interface, this function should +//! be called. This function disables the transmitter and receiver, and +//! clears out the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetDisable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Disable the Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) &= ~(MAC_TCTL_TXEN); + + // + // Disable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) &= ~(MAC_RCTL_RXEN); + + // + // Reset the receive FIFO again, after the receiver has been disabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Check for packet available from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller provides a register that contains the number of +//! packets available in the receive FIFO. When the last bytes of a packet are +//! successfully received (that is, the frame check sequence bytes), the packet +//! count is incremented. Once the packet has been fully read (including the +//! frame check sequence bytes) from the FIFO, the packet count is decremented. +//! +//! \return Returns \b true if there are one or more packets available in the +//! receive FIFO, including the current packet being read, and \b false +//! otherwise. +// +//***************************************************************************** +tBoolean +EthernetPacketAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of packets. + // + return((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) ? true : false); +} + +//***************************************************************************** +// +//! Checks for packet space available in the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller's transmit FIFO is designed to support a single +//! packet at a time. After the packet has been written into the FIFO, the +//! transmit request bit must be set to enable the transmission of the packet. +//! Only after the packet has been transmitted can a new packet be written +//! into the FIFO. This function simply checks to see if a packet is +//! in progress. If so, there is no space available in the transmit FIFO. +//! +//! \return Returns \b true if a space is available in the transmit FIFO, and +//! \b false otherwise. +// +//***************************************************************************** +tBoolean +EthernetSpaceAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of space. + // + return((HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) ? false : true); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for reading a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! Based on the following table of how the receive frame is stored in the +//! receive FIFO, this function will extract a packet from the FIFO and store +//! it in the packet buffer that was passed in. +//! +//! Format of the data in the RX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | FL MSB | FL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! | Word Y | FCS 4 | FCS 3 | FCS 2 | FCS 1 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where FL is Frame Length, (FL + DA + SA + FT + DATA + FCS) Bytes. +//! Where DA is Destination (MAC) Address. +//! Where SA is Source (MAC) Address. +//! Where FT is Frame Type (or Frame Length for Ethernet). +//! Where DATA is Payload Data for the Ethernet Frame. +//! Where FCS is the Frame Check Sequence. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +static long +EthernetPacketGetInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long lFrameLen, lTempLen; + long i = 0; + + // + // Read WORD 0 (see format above) from the FIFO, set the receive + // Frame Length and store the first two bytes of the destination + // address in the receive buffer. + // + ulTemp = HWREG(ulBase + MAC_O_DATA); + lFrameLen = (long)(ulTemp & 0xFFFF); + pucBuf[i++] = (unsigned char) ((ulTemp >> 16) & 0xff); + pucBuf[i++] = (unsigned char) ((ulTemp >> 24) & 0xff); + + // + // Read all but the last WORD into the receive buffer. + // + lTempLen = (lBufLen < (lFrameLen - 6)) ? lBufLen : (lFrameLen - 6); + while(i <= (lTempLen - 4)) + { + *(unsigned long *)&pucBuf[i] = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // Read the last 1, 2, or 3 BYTES into the buffer + // + if(i < lTempLen) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + if(i == lTempLen - 3) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + pucBuf[i++] = ((ulTemp >> 16) & 0xff); + i += 1; + } + else if(i == lTempLen - 2) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + i += 2; + } + else if(i == lTempLen - 1) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + i += 3; + } + } + + // + // Read any remaining WORDS (that did not fit into the buffer). + // + while(i < (lFrameLen - 2)) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // If frame was larger than the buffer, return the "negative" frame length + // + lFrameLen -= 6; + if(lFrameLen > lBufLen) + { + return(-lFrameLen); + } + + // + // Return the Frame Length + // + return(lFrameLen); +} + +//***************************************************************************** +// +//! Receives a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. If no packet is available the function +//! returns immediately. Otherwise, the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can fit +//! into \e pucBuf (as specified by \e lBufLen), the function returns the +//! negated length of the packet and the buffer contains \e lBufLen bytes +//! of the packet. Otherwise, the function returns the length of the +//! packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! This function replaces the original EthernetPacketNonBlockingGet() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function returns immediately if no packet is available. +//! +//! \return Returns \b 0 if no packet is available, the negated packet length +//! \b -n if the packet is too large for \e pucBuf, and the packet length \b n +//! otherwise. +// +//***************************************************************************** +long +EthernetPacketGetNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check to see if any packets are available. + // + if((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + return(0); + } + + // + // Read the packet, and return. + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits for a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. The function waits until a packet is +//! available in the FIFO. Then the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can +//! fit into \e pucBuf (as specified by \e lBufLen), the function returns +//! the negated length of the packet and the buffer contains \e lBufLen +//! bytes of the packet. Otherwise, the function returns the length of +//! the packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! \note This function is blocking and does not return until a packet arrives. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +long +EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for a packet to become available + // + while((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + } + + // + // Read the packet + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for sending a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! Puts a packet into the transmit FIFO of the controller. +//! +//! Format of the data in the TX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | PL MSB | PL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where PL is Payload Length, (DATA) only +//! Where DA is Destination (MAC) Address +//! Where SA is Source (MAC) Address +//! Where FT is Frame Type (or Frame Length for Ethernet) +//! Where DATA is Payload Data for the Ethernet Frame +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +static long +EthernetPacketPutInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long i = 0; + + // + // If the packet is too large, return the negative packet length as + // an error code. + // + if(lBufLen > (2048 - 2)) + { + return(-lBufLen); + } + + // + // Build and write WORD 0 (see format above) to the transmit FIFO. + // + ulTemp = (unsigned long)(lBufLen - 14); + ulTemp |= (pucBuf[i++] << 16); + ulTemp |= (pucBuf[i++] << 24); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + + // + // Write each subsequent WORD n to the transmit FIFO, except for the last + // WORD (if the word does not contain 4 bytes). + // + while(i <= (lBufLen - 4)) + { + HWREG(ulBase + MAC_O_DATA) = *(unsigned long *)&pucBuf[i]; + i += 4; + } + + // + // Build the last word of the remaining 1, 2, or 3 bytes, and store + // the WORD into the transmit FIFO. + // + if(i != lBufLen) + { + if(i == (lBufLen - 3)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + ulTemp |= (pucBuf[i++] << 16); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 2)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 1)) + { + ulTemp = (pucBuf[i++] << 0); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + } + + // + // Activate the transmitter + // + HWREG(ulBase + MAC_O_TR) = MAC_TR_NEWTX; + + // + // Return the Buffer Length transmitted. + // + return(lBufLen); +} + +//***************************************************************************** +// +//! Sends a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the +//! transmitter for this packet. If no space is available in the FIFO, the +//! function returns immediately. If space is available, the +//! function returns once \e lBufLen bytes of the packet have been placed +//! into the FIFO and the transmitter has been started. The function does not +//! wait for the transmission to complete. The function returns the +//! negated \e lBufLen if the length is larger than the space available in +//! the transmit FIFO. +//! +//! This function replaces the original EthernetPacketNonBlockingPut() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function does not block and returns immediately if no space +//! is available for the transmit packet. +//! +//! \return Returns \b 0 if no space is available in the transmit FIFO, the +//! negated packet length \b -lBufLen if the packet is too large for FIFO, and +//! the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPutNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check if the transmit FIFO is in use and return the appropriate code. + // + if(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + return(0); + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits to send a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the transmitter +//! for this packet. This function waits until the transmit FIFO is empty. +//! Once space is available, the function returns once \e lBufLen bytes of +//! the packet have been placed into the FIFO and the transmitter has been +//! started. The function does not wait for the transmission to complete. The +//! function returns the negated \e lBufLen if the length is larger than +//! the space available in the transmit FIFO. +//! +//! \note This function blocks and waits until space is available for the +//! transmit packet before returning. +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for current packet (if any) to complete. + // + while(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Registers an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! \param pfnHandler is a pointer to the function to be called when the +//! enabled Ethernet interrupts occur. +//! +//! This function sets the handler to be called when the Ethernet interrupt +//! occurs. This function enables the global interrupt in the interrupt +//! controller; specific Ethernet interrupts must be enabled via +//! EthernetIntEnable(). It is the interrupt handler's responsibility to clear +//! the interrupt source. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntRegister(unsigned long ulBase, void (*pfnHandler)(void)) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pfnHandler != 0); + + // + // Register the interrupt handler. + // + IntRegister(INT_ETH, pfnHandler); + + // + // Enable the Ethernet interrupt. + // + IntEnable(INT_ETH); +} + +//***************************************************************************** +// +//! Unregisters an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function unregisters the interrupt handler. This function disables +//! the global interrupt in the interrupt controller so that the interrupt +//! handler no longer is called. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntUnregister(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Disable the interrupt. + // + IntDisable(INT_ETH); + + // + // Unregister the interrupt handler. + // + IntUnregister(INT_ETH); +} + +//***************************************************************************** +// +//! Enables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be enabled. +//! +//! This function enables the indicated Ethernet interrupt sources. Only the +//! sources that are enabled can be reflected to the processor interrupt; +//! disabled sources have no effect on the processor. +//! +//! The \e ulIntFlags parameter is the logical OR of any of the following: +//! +//! - \b ETH_INT_PHY - An interrupt from the PHY has occurred. The integrated +//! PHY supports a number of interrupt conditions. The appropriate PHY +//! register, PHY_MR17 or PHY_MR29 depending on the device class, must be read +//! to determine which PHY interrupt has occurred. This register can be read +//! using the EthernetPHYRead() API function. +//! - \b ETH_INT_MDIO - This interrupt indicates that a transaction on the +//! management interface has completed successfully. +//! - \b ETH_INT_RXER - This interrupt indicates that an error has occurred +//! during reception of a frame. This error can indicate a length mismatch, a +//! CRC failure, or an error indication from the PHY. +//! - \b ETH_INT_RXOF - This interrupt indicates that a frame has been received +//! that exceeds the available space in the RX FIFO. +//! - \b ETH_INT_TX - This interrupt indicates that the packet stored in the TX +//! FIFO has been successfully transmitted. +//! - \b ETH_INT_TXER - This interrupt indicates that an error has occurred +//! during the transmission of a packet. This error can be either a retry +//! failure during the back-off process, or an invalid length stored in the TX +//! FIFO. +//! - \b ETH_INT_RX - This interrupt indicates that one (or more) packets are +//! available in the RX FIFO for processing. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Enable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) |= ulIntFlags; +} + +//***************************************************************************** +// +//! Disables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be disabled. +//! +//! Disables the indicated Ethernet interrupt sources. Only the sources that +//! are enabled can be reflected to the processor interrupt; disabled sources +//! have no effect on the processor. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Disable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) &= ~ulIntFlags; +} + +//***************************************************************************** +// +//! Gets the current Ethernet interrupt status. +//! +//! \param ulBase is the base address of the controller. +//! \param bMasked is false if the raw interrupt status is required and true +//! if the masked interrupt status is required. +//! +//! This function returns the interrupt status for the Ethernet controller. +//! Either the raw interrupt status or the status of interrupts that are +//! allowed to reflect to the processor can be returned. +//! +//! \return Returns the current interrupt status, enumerated as a bit field of +//! values described in EthernetIntEnable(). +// +//***************************************************************************** +unsigned long +EthernetIntStatus(unsigned long ulBase, tBoolean bMasked) +{ + unsigned long ulStatus; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read the unmasked status. + // + ulStatus = HWREG(ulBase + MAC_O_RIS); + + // + // If masked status is requested, mask it off. + // + if(bMasked) + { + ulStatus &= HWREG(ulBase + MAC_O_IM); + } + + // + // Return the interrupt status value. + // + return(ulStatus); +} + +//***************************************************************************** +// +//! Clears Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is a bit mask of the interrupt sources to be cleared. +//! +//! The specified Ethernet interrupt sources are cleared so that they no longer +//! assert. This function must be called in the interrupt handler to keep the +//! interrupt from being triggered again immediately upon exit. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \note Because there is a write buffer in the Cortex-M processor, it may +//! take several clock cycles before the interrupt source is actually cleared. +//! Therefore, it is recommended that the interrupt source be cleared early in +//! the interrupt handler (as opposed to the very last action) to avoid +//! returning from the interrupt handler before the interrupt source is +//! actually cleared. Failure to do so may result in the interrupt handler +//! being immediately reentered (because the interrupt controller still sees +//! the interrupt source asserted). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Clear the requested interrupt sources. + // + HWREG(ulBase + MAC_O_IACK) = ulIntFlags; +} + +//***************************************************************************** +// +//! Sets the PHY address. +//! +//! \param ulBase is the base address of the controller. +//! \param ucAddr is the address of the PHY. +//! +//! This function sets the address of the PHY that is accessed via +//! EthernetPHYRead() and EthernePHYWrite(). This configuration is only needed +//! when connecting to an external PHY via MII, and should not be used on +//! devices that have integrated PHYs. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Set the PHY address. + // + HWREG(ulBase + MAC_O_MADD) = ucAddr; +} + +//***************************************************************************** +// +//! Writes to the PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! \param ulData is the data to be written to the PHY register. +//! +//! This function writes the \e ulData to the PHY register specified by +//! \e ucRegAddr. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the DATA to be written. + // + HWREG(ulBase + MAC_O_MTXD) = ulData & MAC_MTXD_MDTX_M; + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_WRITE | MAC_MCTL_START); + + // + // Wait for the write transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } +} + +//***************************************************************************** +// +//! Reads from a PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! +//! This function returns the contents of the PHY register specified by +//! \e ucRegAddr. +//! +//! \return Returns the 16-bit value read from the PHY. +// +//***************************************************************************** +unsigned long +EthernetPHYRead(unsigned long ulBase, unsigned char ucRegAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_START); + + // + // Wait for the transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Return the PHY data that was read. + // + return(HWREG(ulBase + MAC_O_MRXD) & MAC_MRXD_MDRX_M); +} + +//***************************************************************************** +// +//! Powers off the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers off the Ethernet PHY, reducing the current +//! consumption of the device. While in the powered off state, the Ethernet +//! controller is unable to connect to the Ethernet. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOff(unsigned long ulBase) +{ + // + // Set the PWRDN bit and clear the ANEGEN bit in the PHY, putting it into + // its low power mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_ANEGEN) | + PHY_MR0_PWRDN); +} + +//***************************************************************************** +// +//! Powers on the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers on the Ethernet PHY, enabling it return to normal +//! operation. By default, the PHY is powered on, so this function is only +//! called if EthernetPHYPowerOff() has previously been called. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOn(unsigned long ulBase) +{ + // + // Clear the PWRDN bit and set the ANEGEN bit in the PHY, putting it into + // normal operating mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_PWRDN) | + PHY_MR0_ANEGEN); +} + +//***************************************************************************** +// +// Close the Doxygen group. +//! @} +// +//***************************************************************************** diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.h new file mode 100644 index 00000000..6e6c3fc3 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/driverlib/ethernet.h @@ -0,0 +1,187 @@ +//***************************************************************************** +// +// ethernet.h - Defines and Macros for the ethernet module. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +#ifndef __ETHERNET_H__ +#define __ETHERNET_H__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// Values that can be passed to EthernetConfigSet as the ulConfig value, and +// returned from EthernetConfigGet. +// +//***************************************************************************** +#define ETH_CFG_TS_TSEN 0x010000 // Enable Timestamp (CCP) +#define ETH_CFG_RX_BADCRCDIS 0x000800 // Disable RX BAD CRC Packets +#define ETH_CFG_RX_PRMSEN 0x000400 // Enable RX Promiscuous +#define ETH_CFG_RX_AMULEN 0x000200 // Enable RX Multicast +#define ETH_CFG_TX_DPLXEN 0x000010 // Enable TX Duplex Mode +#define ETH_CFG_TX_CRCEN 0x000004 // Enable TX CRC Generation +#define ETH_CFG_TX_PADEN 0x000002 // Enable TX Padding + +//***************************************************************************** +// +// Values that can be passed to EthernetIntEnable, EthernetIntDisable, and +// EthernetIntClear as the ulIntFlags parameter, and returned from +// EthernetIntStatus. +// +//***************************************************************************** +#define ETH_INT_PHY 0x040 // PHY Event/Interrupt +#define ETH_INT_MDIO 0x020 // Management Transaction +#define ETH_INT_RXER 0x010 // RX Error +#define ETH_INT_RXOF 0x008 // RX FIFO Overrun +#define ETH_INT_TX 0x004 // TX Complete +#define ETH_INT_TXER 0x002 // TX Error +#define ETH_INT_RX 0x001 // RX Complete + +//***************************************************************************** +// +// Helper Macros for Ethernet Processing +// +//***************************************************************************** +// +// htonl/ntohl - big endian/little endian byte swapping macros for +// 32-bit (long) values +// +//***************************************************************************** +#ifndef htonl + #define htonl(a) \ + ((((a) >> 24) & 0x000000ff) | \ + (((a) >> 8) & 0x0000ff00) | \ + (((a) << 8) & 0x00ff0000) | \ + (((a) << 24) & 0xff000000)) +#endif + +#ifndef ntohl + #define ntohl(a) htonl((a)) +#endif + +//***************************************************************************** +// +// htons/ntohs - big endian/little endian byte swapping macros for +// 16-bit (short) values +// +//***************************************************************************** +#ifndef htons + #define htons(a) \ + ((((a) >> 8) & 0x00ff) | \ + (((a) << 8) & 0xff00)) +#endif + +#ifndef ntohs + #define ntohs(a) htons((a)) +#endif + +//***************************************************************************** +// +// API Function prototypes +// +//***************************************************************************** +extern void EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk); +extern void EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig); +extern unsigned long EthernetConfigGet(unsigned long ulBase); +extern void EthernetMACAddrSet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetMACAddrGet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetEnable(unsigned long ulBase); +extern void EthernetDisable(unsigned long ulBase); +extern tBoolean EthernetPacketAvail(unsigned long ulBase); +extern tBoolean EthernetSpaceAvail(unsigned long ulBase); +extern long EthernetPacketGetNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPutNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern void EthernetIntRegister(unsigned long ulBase, + void (*pfnHandler)(void)); +extern void EthernetIntUnregister(unsigned long ulBase); +extern void EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags); +extern unsigned long EthernetIntStatus(unsigned long ulBase, tBoolean bMasked); +extern void EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr); +extern void EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData); +extern unsigned long EthernetPHYRead(unsigned long ulBase, + unsigned char ucRegAddr); +extern void EthernetPHYPowerOff(unsigned long ulBase); +extern void EthernetPHYPowerOn(unsigned long ulBase); + +//***************************************************************************** +// +// Several Ethernet APIs have been renamed, with the original function name +// being deprecated. These defines provide backward compatibility. +// +//***************************************************************************** +#ifndef DEPRECATED +#include "driverlib/sysctl.h" +#define EthernetInit(a) \ + EthernetInitExpClk(a, SysCtlClockGet()) +#define EthernetPacketNonBlockingGet(a, b, c) \ + EthernetPacketGetNonBlocking(a, b, c) +#define EthernetPacketNonBlockingPut(a, b, c) \ + EthernetPacketPutNonBlocking(a, b, c) +#endif + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/inc/hw_ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/inc/hw_ethernet.h new file mode 100644 index 00000000..61ae8a76 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/inc/hw_ethernet.h @@ -0,0 +1,703 @@ +//***************************************************************************** +// +// hw_ethernet.h - Macros used when accessing the Ethernet hardware. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Firmware Development Package. +// +//***************************************************************************** + +#ifndef __HW_ETHERNET_H__ +#define __HW_ETHERNET_H__ + +//***************************************************************************** +// +// The following are defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_RIS 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IACK 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IM 0x00000004 // Ethernet MAC Interrupt Mask +#define MAC_O_RCTL 0x00000008 // Ethernet MAC Receive Control +#define MAC_O_TCTL 0x0000000C // Ethernet MAC Transmit Control +#define MAC_O_DATA 0x00000010 // Ethernet MAC Data +#define MAC_O_IA0 0x00000014 // Ethernet MAC Individual Address + // 0 +#define MAC_O_IA1 0x00000018 // Ethernet MAC Individual Address + // 1 +#define MAC_O_THR 0x0000001C // Ethernet MAC Threshold +#define MAC_O_MCTL 0x00000020 // Ethernet MAC Management Control +#define MAC_O_MDV 0x00000024 // Ethernet MAC Management Divider +#define MAC_O_MADD 0x00000028 // Ethernet MAC Management Address +#define MAC_O_MTXD 0x0000002C // Ethernet MAC Management Transmit + // Data +#define MAC_O_MRXD 0x00000030 // Ethernet MAC Management Receive + // Data +#define MAC_O_NP 0x00000034 // Ethernet MAC Number of Packets +#define MAC_O_TR 0x00000038 // Ethernet MAC Transmission + // Request +#define MAC_O_TS 0x0000003C // Ethernet MAC Timer Support +#define MAC_O_LED 0x00000040 // Ethernet MAC LED Encoding +#define MAC_O_MDIX 0x00000044 // Ethernet PHY MDIX + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RIS register. +// +//***************************************************************************** +#define MAC_RIS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_RIS_MDINT 0x00000020 // MII Transaction Complete +#define MAC_RIS_RXER 0x00000010 // Receive Error +#define MAC_RIS_FOV 0x00000008 // FIFO Overrun +#define MAC_RIS_TXEMP 0x00000004 // Transmit FIFO Empty +#define MAC_RIS_TXER 0x00000002 // Transmit Error +#define MAC_RIS_RXINT 0x00000001 // Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IACK register. +// +//***************************************************************************** +#define MAC_IACK_PHYINT 0x00000040 // Clear PHY Interrupt +#define MAC_IACK_MDINT 0x00000020 // Clear MII Transaction Complete +#define MAC_IACK_RXER 0x00000010 // Clear Receive Error +#define MAC_IACK_FOV 0x00000008 // Clear FIFO Overrun +#define MAC_IACK_TXEMP 0x00000004 // Clear Transmit FIFO Empty +#define MAC_IACK_TXER 0x00000002 // Clear Transmit Error +#define MAC_IACK_RXINT 0x00000001 // Clear Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IM register. +// +//***************************************************************************** +#define MAC_IM_PHYINTM 0x00000040 // Mask PHY Interrupt +#define MAC_IM_MDINTM 0x00000020 // Mask MII Transaction Complete +#define MAC_IM_RXERM 0x00000010 // Mask Receive Error +#define MAC_IM_FOVM 0x00000008 // Mask FIFO Overrun +#define MAC_IM_TXEMPM 0x00000004 // Mask Transmit FIFO Empty +#define MAC_IM_TXERM 0x00000002 // Mask Transmit Error +#define MAC_IM_RXINTM 0x00000001 // Mask Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RCTL register. +// +//***************************************************************************** +#define MAC_RCTL_RSTFIFO 0x00000010 // Clear Receive FIFO +#define MAC_RCTL_BADCRC 0x00000008 // Enable Reject Bad CRC +#define MAC_RCTL_PRMS 0x00000004 // Enable Promiscuous Mode +#define MAC_RCTL_AMUL 0x00000002 // Enable Multicast Frames +#define MAC_RCTL_RXEN 0x00000001 // Enable Receiver + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TCTL register. +// +//***************************************************************************** +#define MAC_TCTL_DUPLEX 0x00000010 // Enable Duplex Mode +#define MAC_TCTL_CRC 0x00000004 // Enable CRC Generation +#define MAC_TCTL_PADEN 0x00000002 // Enable Packet Padding +#define MAC_TCTL_TXEN 0x00000001 // Enable Transmitter + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_DATA register. +// +//***************************************************************************** +#define MAC_DATA_TXDATA_M 0xFFFFFFFF // Transmit FIFO Data +#define MAC_DATA_RXDATA_M 0xFFFFFFFF // Receive FIFO Data +#define MAC_DATA_RXDATA_S 0 +#define MAC_DATA_TXDATA_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA0 register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4_M 0xFF000000 // MAC Address Octet 4 +#define MAC_IA0_MACOCT3_M 0x00FF0000 // MAC Address Octet 3 +#define MAC_IA0_MACOCT2_M 0x0000FF00 // MAC Address Octet 2 +#define MAC_IA0_MACOCT1_M 0x000000FF // MAC Address Octet 1 +#define MAC_IA0_MACOCT4_S 24 +#define MAC_IA0_MACOCT3_S 16 +#define MAC_IA0_MACOCT2_S 8 +#define MAC_IA0_MACOCT1_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA1 register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6_M 0x0000FF00 // MAC Address Octet 6 +#define MAC_IA1_MACOCT5_M 0x000000FF // MAC Address Octet 5 +#define MAC_IA1_MACOCT6_S 8 +#define MAC_IA1_MACOCT5_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_THR register. +// +//***************************************************************************** +#define MAC_THR_THRESH_M 0x0000003F // Threshold Value +#define MAC_THR_THRESH_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MCTL register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR_M 0x000000F8 // MII Register Address +#define MAC_MCTL_WRITE 0x00000002 // MII Register Transaction Type +#define MAC_MCTL_START 0x00000001 // MII Register Transaction Enable +#define MAC_MCTL_REGADR_S 3 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDV register. +// +//***************************************************************************** +#define MAC_MDV_DIV_M 0x000000FF // Clock Divider +#define MAC_MDV_DIV_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MADD register. +// +//***************************************************************************** +#define MAC_MADD_PHYADR_M 0x0000001F // PHY Address +#define MAC_MADD_PHYADR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MTXD register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX_M 0x0000FFFF // MII Register Transmit Data +#define MAC_MTXD_MDTX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MRXD register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX_M 0x0000FFFF // MII Register Receive Data +#define MAC_MRXD_MDRX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_NP register. +// +//***************************************************************************** +#define MAC_NP_NPR_M 0x0000003F // Number of Packets in Receive + // FIFO +#define MAC_NP_NPR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TR register. +// +//***************************************************************************** +#define MAC_TR_NEWTX 0x00000001 // New Transmission + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TS register. +// +//***************************************************************************** +#define MAC_TS_TSEN 0x00000001 // Time Stamp Enable + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_LED register. +// +//***************************************************************************** +#define MAC_LED_LED1_M 0x00000F00 // LED1 Source +#define MAC_LED_LED1_LINK 0x00000000 // Link OK +#define MAC_LED_LED1_RXTX 0x00000100 // RX or TX Activity (Default LED1) +#define MAC_LED_LED1_100 0x00000500 // 100BASE-TX mode +#define MAC_LED_LED1_10 0x00000600 // 10BASE-T mode +#define MAC_LED_LED1_DUPLEX 0x00000700 // Full-Duplex +#define MAC_LED_LED1_LINKACT 0x00000800 // Link OK & Blink=RX or TX + // Activity +#define MAC_LED_LED0_M 0x0000000F // LED0 Source +#define MAC_LED_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define MAC_LED_LED0_RXTX 0x00000001 // RX or TX Activity +#define MAC_LED_LED0_100 0x00000005 // 100BASE-TX mode +#define MAC_LED_LED0_10 0x00000006 // 10BASE-T mode +#define MAC_LED_LED0_DUPLEX 0x00000007 // Full-Duplex +#define MAC_LED_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDIX register. +// +//***************************************************************************** +#define MAC_MDIX_EN 0x00000001 // MDI/MDI-X Enable + +//***************************************************************************** +// +// The following are defines for the Ethernet Controller PHY registers. +// +//***************************************************************************** +#define PHY_MR0 0x00000000 // Ethernet PHY Management Register + // 0 - Control +#define PHY_MR1 0x00000001 // Ethernet PHY Management Register + // 1 - Status +#define PHY_MR2 0x00000002 // Ethernet PHY Management Register + // 2 - PHY Identifier 1 +#define PHY_MR3 0x00000003 // Ethernet PHY Management Register + // 3 - PHY Identifier 2 +#define PHY_MR4 0x00000004 // Ethernet PHY Management Register + // 4 - Auto-Negotiation + // Advertisement +#define PHY_MR5 0x00000005 // Ethernet PHY Management Register + // 5 - Auto-Negotiation Link + // Partner Base Page Ability +#define PHY_MR6 0x00000006 // Ethernet PHY Management Register + // 6 - Auto-Negotiation Expansion +#define PHY_MR16 0x00000010 // Ethernet PHY Management Register + // 16 - Vendor-Specific +#define PHY_MR17 0x00000011 // Ethernet PHY Management Register + // 17 - Mode Control/Status +#define PHY_MR18 0x00000012 // Ethernet PHY Management Register + // 18 - Diagnostic +#define PHY_MR19 0x00000013 // Ethernet PHY Management Register + // 19 - Transceiver Control +#define PHY_MR23 0x00000017 // Ethernet PHY Management Register + // 23 - LED Configuration +#define PHY_MR24 0x00000018 // Ethernet PHY Management Register + // 24 -MDI/MDIX Control +#define PHY_MR27 0x0000001B // Ethernet PHY Management Register + // 27 - Special Control/Status +#define PHY_MR29 0x0000001D // Ethernet PHY Management Register + // 29 - Interrupt Status +#define PHY_MR30 0x0000001E // Ethernet PHY Management Register + // 30 - Interrupt Mask +#define PHY_MR31 0x0000001F // Ethernet PHY Management Register + // 31 - PHY Special Control/Status + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR0 register. +// +//***************************************************************************** +#define PHY_MR0_RESET 0x00008000 // Reset Registers +#define PHY_MR0_LOOPBK 0x00004000 // Loopback Mode +#define PHY_MR0_SPEEDSL 0x00002000 // Speed Select +#define PHY_MR0_ANEGEN 0x00001000 // Auto-Negotiation Enable +#define PHY_MR0_PWRDN 0x00000800 // Power Down +#define PHY_MR0_ISO 0x00000400 // Isolate +#define PHY_MR0_RANEG 0x00000200 // Restart Auto-Negotiation +#define PHY_MR0_DUPLEX 0x00000100 // Set Duplex Mode +#define PHY_MR0_COLT 0x00000080 // Collision Test + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR1 register. +// +//***************************************************************************** +#define PHY_MR1_100X_F 0x00004000 // 100BASE-TX Full-Duplex Mode +#define PHY_MR1_100X_H 0x00002000 // 100BASE-TX Half-Duplex Mode +#define PHY_MR1_10T_F 0x00001000 // 10BASE-T Full-Duplex Mode +#define PHY_MR1_10T_H 0x00000800 // 10BASE-T Half-Duplex Mode +#define PHY_MR1_MFPS 0x00000040 // Management Frames with Preamble + // Suppressed +#define PHY_MR1_ANEGC 0x00000020 // Auto-Negotiation Complete +#define PHY_MR1_RFAULT 0x00000010 // Remote Fault +#define PHY_MR1_ANEGA 0x00000008 // Auto-Negotiation +#define PHY_MR1_LINK 0x00000004 // Link Made +#define PHY_MR1_JAB 0x00000002 // Jabber Condition +#define PHY_MR1_EXTD 0x00000001 // Extended Capabilities + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR2 register. +// +//***************************************************************************** +#define PHY_MR2_OUI_M 0x0000FFFF // Organizationally Unique + // Identifier[21:6] +#define PHY_MR2_OUI_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR3 register. +// +//***************************************************************************** +#define PHY_MR3_OUI_M 0x0000FC00 // Organizationally Unique + // Identifier[5:0] +#define PHY_MR3_MN_M 0x000003F0 // Model Number +#define PHY_MR3_RN_M 0x0000000F // Revision Number +#define PHY_MR3_OUI_S 10 +#define PHY_MR3_MN_S 4 +#define PHY_MR3_RN_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR4 register. +// +//***************************************************************************** +#define PHY_MR4_NP 0x00008000 // Next Page +#define PHY_MR4_RF 0x00002000 // Remote Fault +#define PHY_MR4_A3 0x00000100 // Technology Ability Field [3] +#define PHY_MR4_A2 0x00000080 // Technology Ability Field [2] +#define PHY_MR4_A1 0x00000040 // Technology Ability Field [1] +#define PHY_MR4_A0 0x00000020 // Technology Ability Field [0] +#define PHY_MR4_S_M 0x0000001F // Selector Field +#define PHY_MR4_S_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR5 register. +// +//***************************************************************************** +#define PHY_MR5_NP 0x00008000 // Next Page +#define PHY_MR5_ACK 0x00004000 // Acknowledge +#define PHY_MR5_RF 0x00002000 // Remote Fault +#define PHY_MR5_A_M 0x00001FE0 // Technology Ability Field +#define PHY_MR5_S_M 0x0000001F // Selector Field +#define PHY_MR5_S_8023 0x00000001 // IEEE Std 802.3 +#define PHY_MR5_S_8029 0x00000002 // IEEE Std 802.9 ISLAN-16T +#define PHY_MR5_S_8025 0x00000003 // IEEE Std 802.5 +#define PHY_MR5_S_1394 0x00000004 // IEEE Std 1394 +#define PHY_MR5_A_S 5 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR6 register. +// +//***************************************************************************** +#define PHY_MR6_PDF 0x00000010 // Parallel Detection Fault +#define PHY_MR6_LPNPA 0x00000008 // Link Partner is Next Page Able +#define PHY_MR6_PRX 0x00000002 // New Page Received +#define PHY_MR6_LPANEGA 0x00000001 // Link Partner is Auto-Negotiation + // Able + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR16 register. +// +//***************************************************************************** +#define PHY_MR16_RPTR 0x00008000 // Repeater Mode +#define PHY_MR16_INPOL 0x00004000 // Interrupt Polarity +#define PHY_MR16_TXHIM 0x00001000 // Transmit High Impedance Mode +#define PHY_MR16_SQEI 0x00000800 // SQE Inhibit Testing +#define PHY_MR16_NL10 0x00000400 // Natural Loopback Mode +#define PHY_MR16_SR_M 0x000003C0 // Silicon Revision Identifier +#define PHY_MR16_APOL 0x00000020 // Auto-Polarity Disable +#define PHY_MR16_RVSPOL 0x00000010 // Receive Data Polarity +#define PHY_MR16_PCSBP 0x00000002 // PCS Bypass +#define PHY_MR16_RXCC 0x00000001 // Receive Clock Control +#define PHY_MR16_SR_S 6 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR17 register. +// +//***************************************************************************** +#define PHY_MR17_JABBER_IE 0x00008000 // Jabber Interrupt Enable +#define PHY_MR17_FASTRIP 0x00004000 // 10-BASE-T Fast Mode Enable +#define PHY_MR17_RXER_IE 0x00004000 // Receive Error Interrupt Enable +#define PHY_MR17_EDPD 0x00002000 // Enable Energy Detect Power Down +#define PHY_MR17_PRX_IE 0x00002000 // Page Received Interrupt Enable +#define PHY_MR17_PDF_IE 0x00001000 // Parallel Detection Fault + // Interrupt Enable +#define PHY_MR17_LSQE 0x00000800 // Low Squelch Enable +#define PHY_MR17_LPACK_IE 0x00000800 // LP Acknowledge Interrupt Enable +#define PHY_MR17_LSCHG_IE 0x00000400 // Link Status Change Interrupt + // Enable +#define PHY_MR17_RFAULT_IE 0x00000200 // Remote Fault Interrupt Enable +#define PHY_MR17_ANEGCOMP_IE 0x00000100 // Auto-Negotiation Complete + // Interrupt Enable +#define PHY_MR17_FASTEST 0x00000100 // Auto-Negotiation Test Mode +#define PHY_MR17_JABBER_INT 0x00000080 // Jabber Event Interrupt +#define PHY_MR17_RXER_INT 0x00000040 // Receive Error Interrupt +#define PHY_MR17_PRX_INT 0x00000020 // Page Receive Interrupt +#define PHY_MR17_PDF_INT 0x00000010 // Parallel Detection Fault + // Interrupt +#define PHY_MR17_LPACK_INT 0x00000008 // LP Acknowledge Interrupt +#define PHY_MR17_LSCHG_INT 0x00000004 // Link Status Change Interrupt +#define PHY_MR17_FGLS 0x00000004 // Force Good Link Status +#define PHY_MR17_RFAULT_INT 0x00000002 // Remote Fault Interrupt +#define PHY_MR17_ENON 0x00000002 // Energy On +#define PHY_MR17_ANEGCOMP_INT 0x00000001 // Auto-Negotiation Complete + // Interrupt + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR18 register. +// +//***************************************************************************** +#define PHY_MR18_ANEGF 0x00001000 // Auto-Negotiation Failure +#define PHY_MR18_DPLX 0x00000800 // Duplex Mode +#define PHY_MR18_RATE 0x00000400 // Rate +#define PHY_MR18_RXSD 0x00000200 // Receive Detection +#define PHY_MR18_RX_LOCK 0x00000100 // Receive PLL Lock + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR19 register. +// +//***************************************************************************** +#define PHY_MR19_TXO_M 0x0000C000 // Transmit Amplitude Selection +#define PHY_MR19_TXO_00DB 0x00000000 // Gain set for 0.0dB of insertion + // loss +#define PHY_MR19_TXO_04DB 0x00004000 // Gain set for 0.4dB of insertion + // loss +#define PHY_MR19_TXO_08DB 0x00008000 // Gain set for 0.8dB of insertion + // loss +#define PHY_MR19_TXO_12DB 0x0000C000 // Gain set for 1.2dB of insertion + // loss + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR23 register. +// +//***************************************************************************** +#define PHY_MR23_LED1_M 0x000000F0 // LED1 Source +#define PHY_MR23_LED1_LINK 0x00000000 // Link OK +#define PHY_MR23_LED1_RXTX 0x00000010 // RX or TX Activity (Default LED1) +#define PHY_MR23_LED1_100 0x00000050 // 100BASE-TX mode +#define PHY_MR23_LED1_10 0x00000060 // 10BASE-T mode +#define PHY_MR23_LED1_DUPLEX 0x00000070 // Full-Duplex +#define PHY_MR23_LED1_LINKACT 0x00000080 // Link OK & Blink=RX or TX + // Activity +#define PHY_MR23_LED0_M 0x0000000F // LED0 Source +#define PHY_MR23_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define PHY_MR23_LED0_RXTX 0x00000001 // RX or TX Activity +#define PHY_MR23_LED0_100 0x00000005 // 100BASE-TX mode +#define PHY_MR23_LED0_10 0x00000006 // 10BASE-T mode +#define PHY_MR23_LED0_DUPLEX 0x00000007 // Full-Duplex +#define PHY_MR23_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR24 register. +// +//***************************************************************************** +#define PHY_MR24_PD_MODE 0x00000080 // Parallel Detection Mode +#define PHY_MR24_AUTO_SW 0x00000040 // Auto-Switching Enable +#define PHY_MR24_MDIX 0x00000020 // Auto-Switching Configuration +#define PHY_MR24_MDIX_CM 0x00000010 // Auto-Switching Complete +#define PHY_MR24_MDIX_SD_M 0x0000000F // Auto-Switching Seed +#define PHY_MR24_MDIX_SD_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR27 register. +// +//***************************************************************************** +#define PHY_MR27_XPOL 0x00000010 // Polarity State of 10 BASE-T + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR29 register. +// +//***************************************************************************** +#define PHY_MR29_EONIS 0x00000080 // ENERGYON Interrupt +#define PHY_MR29_ANCOMPIS 0x00000040 // Auto-Negotiation Complete + // Interrupt +#define PHY_MR29_RFLTIS 0x00000020 // Remote Fault Interrupt +#define PHY_MR29_LDIS 0x00000010 // Link Down Interrupt +#define PHY_MR29_LPACKIS 0x00000008 // Auto-Negotiation LP Acknowledge +#define PHY_MR29_PDFIS 0x00000004 // Parallel Detection Fault +#define PHY_MR29_PRXIS 0x00000002 // Auto Negotiation Page Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR30 register. +// +//***************************************************************************** +#define PHY_MR30_EONIM 0x00000080 // ENERGYON Interrupt Enabled +#define PHY_MR30_ANCOMPIM 0x00000040 // Auto-Negotiation Complete + // Interrupt Enabled +#define PHY_MR30_RFLTIM 0x00000020 // Remote Fault Interrupt Enabled +#define PHY_MR30_LDIM 0x00000010 // Link Down Interrupt Enabled +#define PHY_MR30_LPACKIM 0x00000008 // Auto-Negotiation LP Acknowledge + // Enabled +#define PHY_MR30_PDFIM 0x00000004 // Parallel Detection Fault Enabled +#define PHY_MR30_PRXIM 0x00000002 // Auto Negotiation Page Received + // Enabled + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR31 register. +// +//***************************************************************************** +#define PHY_MR31_AUTODONE 0x00001000 // Auto Negotiation Done +#define PHY_MR31_SPEED_M 0x0000001C // HCD Speed Value +#define PHY_MR31_SPEED_10HD 0x00000004 // 10BASE-T half duplex +#define PHY_MR31_SPEED_100HD 0x00000008 // 100BASE-T half duplex +#define PHY_MR31_SPEED_10FD 0x00000014 // 10BASE-T full duplex +#define PHY_MR31_SPEED_100FD 0x00000018 // 100BASE-T full duplex +#define PHY_MR31_SCRDIS 0x00000001 // Scramble Disable + +//***************************************************************************** +// +// The following definitions are deprecated. +// +//***************************************************************************** +#ifndef DEPRECATED + +//***************************************************************************** +// +// The following are deprecated defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_IS 0x00000000 // Interrupt Status Register + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IS +// register. +// +//***************************************************************************** +#define MAC_IS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_IS_MDINT 0x00000020 // MDI Transaction Complete +#define MAC_IS_RXER 0x00000010 // RX Error +#define MAC_IS_FOV 0x00000008 // RX FIFO Overrun +#define MAC_IS_TXEMP 0x00000004 // TX FIFO Empy +#define MAC_IS_TXER 0x00000002 // TX Error +#define MAC_IS_RXINT 0x00000001 // RX Packet Available + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA0 +// register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4 0xFF000000 // 4th Octet of MAC address +#define MAC_IA0_MACOCT3 0x00FF0000 // 3rd Octet of MAC address +#define MAC_IA0_MACOCT2 0x0000FF00 // 2nd Octet of MAC address +#define MAC_IA0_MACOCT1 0x000000FF // 1st Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA1 +// register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6 0x0000FF00 // 6th Octet of MAC address +#define MAC_IA1_MACOCT5 0x000000FF // 5th Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_THR +// register. +// +//***************************************************************************** +#define MAC_THR_THRESH 0x0000003F // Transmit Threshold Value + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MCTL +// register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR 0x000000F8 // Address for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MDV +// register. +// +//***************************************************************************** +#define MAC_MDV_DIV 0x000000FF // Clock Divider for MDC for TX + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MTXD +// register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX 0x0000FFFF // Data for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MRXD +// register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX 0x0000FFFF // Data Read from Last MII Trans + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_NP +// register. +// +//***************************************************************************** +#define MAC_NP_NPR 0x0000003F // Number of RX Frames in FIFO + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the PHY_MR23 +// register. +// +//***************************************************************************** +#define PHY_MR23_LED1_TX 0x00000020 // TX Activity +#define PHY_MR23_LED1_RX 0x00000030 // RX Activity +#define PHY_MR23_LED1_COL 0x00000040 // Collision +#define PHY_MR23_LED0_TX 0x00000002 // TX Activity +#define PHY_MR23_LED0_RX 0x00000003 // RX Activity +#define PHY_MR23_LED0_COL 0x00000004 // Collision + +//***************************************************************************** +// +// The following are deprecated defines for the reset values of the MAC +// registers. +// +//***************************************************************************** +#define MAC_RV_MDV 0x00000080 +#define MAC_RV_IM 0x0000007F +#define MAC_RV_THR 0x0000003F +#define MAC_RV_RCTL 0x00000008 +#define MAC_RV_IA0 0x00000000 +#define MAC_RV_TCTL 0x00000000 +#define MAC_RV_DATA 0x00000000 +#define MAC_RV_MRXD 0x00000000 +#define MAC_RV_TR 0x00000000 +#define MAC_RV_IS 0x00000000 +#define MAC_RV_NP 0x00000000 +#define MAC_RV_MCTL 0x00000000 +#define MAC_RV_MTXD 0x00000000 +#define MAC_RV_IA1 0x00000000 +#define MAC_RV_IACK 0x00000000 +#define MAC_RV_MADD 0x00000000 + +#endif + +#endif // __HW_ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.c new file mode 100644 index 00000000..1e213136 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * Implementation of architecture-specific clock functionality + * \author + * Adam Dunkels + */ + +#include "clock-arch.h" +#include "boot.h" + +/*---------------------------------------------------------------------------*/ +clock_time_t +clock_time(void) +{ + return (clock_time_t)TimerGet(); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.h new file mode 100644 index 00000000..aa97f0e7 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/clock-arch.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +#ifndef __CLOCK_ARCH_H__ +#define __CLOCK_ARCH_H__ + +typedef int clock_time_t; +#define CLOCK_CONF_SECOND 1000 + +#endif /* __CLOCK_ARCH_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.c new file mode 100644 index 00000000..a5228bfa --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Author: Adam Dunkels + * + * $Id: netdev.c,v 1.8 2006/06/07 08:39:58 adam Exp $ + */ + + +/*---------------------------------------------------------------------------*/ +#include "uip.h" +#include "uip_arp.h" +#include "boot.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "inc/hw_ethernet.h" +#include "driverlib/sysctl.h" +#include "driverlib/gpio.h" +#include "driverlib/ethernet.h" +#include "driverlib/flashlib.h" + + +/*---------------------------------------------------------------------------*/ +#define NETDEV_LINKUP_TIMEOUT_MS (5000) + +#define NETDEV_DEFAULT_MACADDR0 (0x08) +#define NETDEV_DEFAULT_MACADDR1 (0x00) +#define NETDEV_DEFAULT_MACADDR2 (0x27) +#define NETDEV_DEFAULT_MACADDR3 (0x69) +#define NETDEV_DEFAULT_MACADDR4 (0x5B) +#define NETDEV_DEFAULT_MACADDR5 (0x45) + + +/*---------------------------------------------------------------------------*/ +void netdev_init(void) +{ + blt_int32u ulTemp; + blt_int32u ulLinkTimeOut; + + /* enable and reset the ethernet controller. */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH); + SysCtlPeripheralReset(SYSCTL_PERIPH_ETH); + /* enable port F for ethernet LEDs. + * LED0 Bit 3 Output + * LED1 Bit 2 Output + */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); + GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3); + /* intialize the ethernet controller and disable all ethernet controller + * interrupt sources. + */ + EthernetIntDisable(ETH_BASE, (ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* initialize the ethernet controller for operation. */ + EthernetInitExpClk(ETH_BASE, SysCtlClockGet()); + /* configure the ethernet controller for normal operation. + * - Full Duplex + * - TX CRC Auto Generation + * - TX Padding Enabled + */ + EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN)); + /* wait for the link to become active. */ + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + ulLinkTimeOut = TimerGet() + NETDEV_LINKUP_TIMEOUT_MS; + + while ((ulTemp & 0x0004) == 0) + { + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + /* check for timeout so that the software program can still start if the + * ethernet cable is not connected. + */ + if (TimerGet() >= ulLinkTimeOut) + { + break; + } + } + /* enable the ethernet controller. */ + EthernetEnable(ETH_BASE); +} + + +/*---------------------------------------------------------------------------*/ +void netdev_setmacaddr(void) +{ + struct uip_eth_addr macAddress; + unsigned long ulUser0, ulUser1; + + /* set the default MAC address */ + macAddress.addr[0] = NETDEV_DEFAULT_MACADDR0; + macAddress.addr[1] = NETDEV_DEFAULT_MACADDR1; + macAddress.addr[2] = NETDEV_DEFAULT_MACADDR2; + macAddress.addr[3] = NETDEV_DEFAULT_MACADDR3; + macAddress.addr[4] = NETDEV_DEFAULT_MACADDR4; + macAddress.addr[5] = NETDEV_DEFAULT_MACADDR5; + /* the LM3S eval kit should have a MAC address pre-propgrammed in flash by the + * manufacturer. try to use this one, otherwise use the default values. + */ + FlashUserGet(&ulUser0, &ulUser1); + if ( (ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff) ) + { + macAddress.addr[0] = ((ulUser0 >> 0) & 0xff); + macAddress.addr[1] = ((ulUser0 >> 8) & 0xff); + macAddress.addr[2] = ((ulUser0 >> 16) & 0xff); + macAddress.addr[3] = ((ulUser1 >> 0) & 0xff); + macAddress.addr[4] = ((ulUser1 >> 8) & 0xff); + macAddress.addr[5] = ((ulUser1 >> 16) & 0xff); + } + EthernetMACAddrSet(ETH_BASE, &macAddress.addr[0]); + uip_setethaddr(macAddress); +} + + +/*---------------------------------------------------------------------------*/ +unsigned int netdev_read(void) +{ + blt_int32u ulTemp; + + /* read and Clear the interrupt flag. */ + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* check to see if an RX Interrupt has occured. */ + if(ulTemp & ETH_INT_RX) + { + return EthernetPacketGetNonBlocking(ETH_BASE, uip_buf, sizeof(uip_buf)); + } + return 0; +} + + +/*---------------------------------------------------------------------------*/ +void netdev_send(void) +{ + EthernetPacketPut(ETH_BASE, uip_buf, uip_len); +} + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.h new file mode 100644 index 00000000..d02efb3c --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/netdev.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Adam Dunkels. + * 4. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: netdev.h,v 1.1 2002/01/10 06:22:56 adam Exp $ + * + */ + +#ifndef __NETDEV_H__ +#define __NETDEV_H__ + +void netdev_init(void); +unsigned int netdev_read(void); +void netdev_send(void); +void netdev_setmacaddr(void); + +#endif /* __NETDEV_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/uip-conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/uip-conf.h new file mode 100644 index 00000000..fd9ba0dd --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/lib/uip/uip-conf.h @@ -0,0 +1,151 @@ +/** + * \addtogroup uipopt + * @{ + */ + +/** + * \name Project-specific configuration options + * @{ + * + * uIP has a number of configuration options that can be overridden + * for each project. These are kept in a project-specific uip-conf.h + * file and all configuration names have the prefix UIP_CONF. + */ + +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * An example uIP configuration file + * \author + * Adam Dunkels + */ + +#ifndef __UIP_CONF_H__ +#define __UIP_CONF_H__ + + +/** + * 8 bit datatype + * + * This typedef defines the 8-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned char u8_t; + +/** + * 16 bit datatype + * + * This typedef defines the 16-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned short u16_t; + +/** + * Statistics datatype + * + * This typedef defines the dataype used for keeping statistics in + * uIP. + * + * \hideinitializer + */ +typedef unsigned short uip_stats_t; + +/** + * Maximum number of TCP connections. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_CONNECTIONS 1 + +/** + * Maximum number of listening TCP ports. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_LISTENPORTS 1 + +/** + * uIP buffer size. + * + * \hideinitializer + */ +#define UIP_CONF_BUFFER_SIZE 1600 + +/** + * CPU byte order. + * + * \hideinitializer + */ +#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN + +/** + * Logging on or off + * + * \hideinitializer + */ +#define UIP_CONF_LOGGING 0 + +/** + * UDP support on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP 0 + +/** + * UDP checksums on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP_CHECKSUMS 1 + +/** + * uIP statistics on or off + * + * \hideinitializer + */ +#define UIP_CONF_STATISTICS 0 + +/* Here we include the header file for the application(s) we use in + our project. */ +#include "boot.h" +#include "net.h" + +#endif /* __UIP_CONF_H__ */ + +/** @} */ +/** @} */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/makefile b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/makefile index 40a7865c..a5b79996 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/makefile +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Boot/makefile @@ -38,6 +38,7 @@ PROJ_FILES= \ blt_conf.h \ hooks.c \ main.c \ +./lib/inc/hw_ethernet.h \ ./lib/inc/hw_flash.h \ ./lib/inc/hw_gpio.h \ ./lib/inc/hw_ints.h \ @@ -47,6 +48,8 @@ main.c \ ./lib/inc/hw_types.h \ ./lib/inc/hw_uart.h \ ./lib/inc/hw_ssi.h \ +./lib/driverlib/ethernet.c \ +./lib/driverlib/ethernet.h \ ./lib/driverlib/cpulib.c \ ./lib/driverlib/flashlib.c \ ./lib/driverlib/gpio.h \ @@ -65,6 +68,11 @@ main.c \ ./lib/driverlib/ssi.h \ ./lib/fatfs/ffconf.h \ ./lib/fatfs/mmc.c \ +./lib/uip/clock-arch.c \ +./lib/uip/clock-arch.h \ +./lib/uip/netdev.c \ +./lib/uip/netdev.h \ +./lib/uip/uip-conf.h \ ../../../Source/boot.c \ ../../../Source/boot.h \ ../../../Source/com.c \ @@ -77,6 +85,8 @@ main.c \ ../../../Source/cop.h \ ../../../Source/file.c \ ../../../Source/file.h \ +../../../Source/net.c \ +../../../Source/net.h \ ../../../Source/assert.c \ ../../../Source/assert.h \ ../../../Source/plausibility.h \ @@ -85,6 +95,24 @@ main.c \ ../../../Source/third_party/fatfs/src/ff.h \ ../../../Source/third_party/fatfs/src/integer.h \ ../../../Source/third_party/fatfs/src/option/unicode.c \ +../../../Source/third_party/uip/uip/clock.h \ +../../../Source/third_party/uip/uip/lc-addrlabels.h \ +../../../Source/third_party/uip/uip/lc-switch.h \ +../../../Source/third_party/uip/uip/lc.h \ +../../../Source/third_party/uip/uip/pt.h \ +../../../Source/third_party/uip/uip/uip-fw.h \ +../../../Source/third_party/uip/uip/uip-neighbor.h \ +../../../Source/third_party/uip/uip/uip-split.h \ +../../../Source/third_party/uip/uip/uip.c \ +../../../Source/third_party/uip/uip/uip.h \ +../../../Source/third_party/uip/uip/uip_arch.h \ +../../../Source/third_party/uip/uip/uip_arp.c \ +../../../Source/third_party/uip/uip/uip_arp.h \ +../../../Source/third_party/uip/uip/uip_timer.c \ +../../../Source/third_party/uip/uip/uip_timer.h \ +../../../Source/third_party/uip/uip/uiplib.c \ +../../../Source/third_party/uip/uip/uiplib.h \ +../../../Source/third_party/uip/uip/uipopt.h \ ../../../Source/ARMCM3_LM3S/types.h \ ../../../Source/ARMCM3_LM3S/cpu.c \ ../../../Source/ARMCM3_LM3S/cpu.h \ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.elf index 060315d1..c510c034 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.map index 6c6fcfb5..467e35a3 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.map @@ -3,43 +3,43 @@ bin/demoprog_ek_lm3s6965.elf: file format elf32-littlearm bin/demoprog_ek_lm3s6965.elf architecture: arm, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED -start address 0x00006000 +start address 0x00008000 Program Header: - LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**15 - filesz 0x00007078 memsz 0x00007078 flags r-x - LOAD off 0x00008000 vaddr 0x20000000 paddr 0x20000000 align 2**15 + LOAD off 0x00008000 vaddr 0x00008000 paddr 0x00008000 align 2**15 + filesz 0x00001078 memsz 0x00001078 flags r-x + LOAD off 0x00010000 vaddr 0x20000000 paddr 0x20000000 align 2**15 filesz 0x00000000 memsz 0x0000015c flags rw- private flags = 5000202: [Version5 EABI] [soft-float ABI] [has entry point] Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00001078 00006000 00006000 00006000 2**2 + 0 .text 00001078 00008000 00008000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .bss 0000015c 20000000 20000000 00008000 2**2 + 1 .bss 0000015c 20000000 20000000 00010000 2**2 ALLOC - 2 .debug_info 00003cc0 00000000 00000000 00007078 2**0 + 2 .debug_info 00003cc0 00000000 00000000 00009078 2**0 CONTENTS, READONLY, DEBUGGING - 3 .debug_abbrev 00000b94 00000000 00000000 0000ad38 2**0 + 3 .debug_abbrev 00000b94 00000000 00000000 0000cd38 2**0 CONTENTS, READONLY, DEBUGGING - 4 .debug_loc 00001fb9 00000000 00000000 0000b8cc 2**0 + 4 .debug_loc 00001fb9 00000000 00000000 0000d8cc 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000660 00000000 00000000 0000d885 2**0 + 5 .debug_aranges 00000660 00000000 00000000 0000f885 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_ranges 00000590 00000000 00000000 0000dee5 2**0 + 6 .debug_ranges 00000590 00000000 00000000 0000fee5 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 00001611 00000000 00000000 0000e475 2**0 + 7 .debug_line 00001611 00000000 00000000 00010475 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_str 00001079 00000000 00000000 0000fa86 2**0 + 8 .debug_str 00001079 00000000 00000000 00011a86 2**0 CONTENTS, READONLY, DEBUGGING - 9 .comment 00000030 00000000 00000000 00010aff 2**0 + 9 .comment 00000030 00000000 00000000 00012aff 2**0 CONTENTS, READONLY - 10 .ARM.attributes 00000033 00000000 00000000 00010b2f 2**0 + 10 .ARM.attributes 00000033 00000000 00000000 00012b2f 2**0 CONTENTS, READONLY - 11 .debug_frame 00001000 00000000 00000000 00010b64 2**2 + 11 .debug_frame 00001000 00000000 00000000 00012b64 2**2 CONTENTS, READONLY, DEBUGGING SYMBOL TABLE: -00006000 l d .text 00000000 .text +00008000 l d .text 00000000 .text 20000000 l d .bss 00000000 .bss 00000000 l d .debug_info 00000000 .debug_info 00000000 l d .debug_abbrev 00000000 .debug_abbrev @@ -57,7 +57,7 @@ SYMBOL TABLE: 20000004 l O .bss 00000041 xcpCtoReqPacket.4439 20000048 l O .bss 00000001 xcpCtoRxInProgress.4441 00000000 l df *ABS* 00000000 cstart.c -00006248 l F .text 00000000 zero_loop +00008248 l F .text 00000000 zero_loop 00000000 l df *ABS* 00000000 irq.c 00000000 l df *ABS* 00000000 led.c 2000004c l O .bss 00000004 timer_counter_last.4435 @@ -68,55 +68,55 @@ SYMBOL TABLE: 20000058 l O .bss 00000004 millisecond_counter 00000000 l df *ABS* 00000000 cpu.c 00000000 l df *ABS* 00000000 gpio.c -00006408 l F .text 0000008a GPIOBaseValid +00008408 l F .text 0000008a GPIOBaseValid 00000000 l df *ABS* 00000000 interrupt.c 00000000 l df *ABS* 00000000 sysctl.c -00006708 l F .text 00000154 SysCtlPeripheralValid -00006fc8 l O .text 0000005c g_pulXtals -0000703c l O .text 0000000c g_pulRCGCRegs +00008708 l F .text 00000154 SysCtlPeripheralValid +00008fc8 l O .text 0000005c g_pulXtals +0000903c l O .text 0000000c g_pulRCGCRegs 00000000 l df *ABS* 00000000 systick.c 00000000 l df *ABS* 00000000 uart.c -00006d8c l F .text 00000026 UARTBaseValid +00008d8c l F .text 00000026 UARTBaseValid 00000000 l df *ABS* 00000000 00000100 l *ABS* 00000000 __STACKSIZE__ -0000638c g F .text 0000000c __error__ -00006204 g F .text 00000060 reset_handler -000068b8 g F .text 00000008 SysCtlDelay -00006270 g F .text 0000000e IrqInterruptEnable -00007078 g .text 00000000 _etext -00006630 g F .text 00000030 GPIOPinWrite -0000685c g F .text 00000046 SysCtlPeripheralEnable -000068a4 g F .text 00000012 SysCtlReset +0000838c g F .text 0000000c __error__ +00008204 g F .text 00000060 reset_handler +000088b8 g F .text 00000008 SysCtlDelay +00008270 g F .text 0000000e IrqInterruptEnable +00009078 g .text 00000000 _etext +00008630 g F .text 00000030 GPIOPinWrite +0000885c g F .text 00000046 SysCtlPeripheralEnable +000088a4 g F .text 00000012 SysCtlReset 2000005c g .bss 00000000 _ebss -000063fc g F .text 00000002 UnusedISR -00006280 g F .text 0000003a LedInit -000063ec g F .text 00000010 TimeISRHandler -00006f78 g F .text 00000036 UARTCharGetNonBlocking +000083fc g F .text 00000002 UnusedISR +00008280 g F .text 0000003a LedInit +000083ec g F .text 00000010 TimeISRHandler +00008f78 g F .text 00000036 UARTCharGetNonBlocking 20000000 g .bss 00000000 _bss -00006d60 g F .text 0000002a SysTickPeriodSet -00006338 g F .text 00000052 main -00006a7c g F .text 000002ba SysCtlClockGet -00006df0 g F .text 00000044 UARTDisable -000060f4 g F .text 00000050 BootComInit -000066f8 g F .text 00000010 IntMasterEnable -00006398 g F .text 00000046 TimeInit +00008d60 g F .text 0000002a SysTickPeriodSet +00008338 g F .text 00000052 main +00008a7c g F .text 000002ba SysCtlClockGet +00008df0 g F .text 00000044 UARTDisable +000080f4 g F .text 00000050 BootComInit +000086f8 g F .text 00000010 IntMasterEnable +00008398 g F .text 00000046 TimeInit 20000000 g .text 00000000 _data -000062bc g F .text 0000007a LedToggle +000082bc g F .text 0000007a LedToggle 2000015c g .bss 00000000 _estack 20000000 g .text 00000000 _edata -00006000 g O .text 000000f4 _vectab -000066ac g F .text 0000004c GPIOPinTypeUART -00006660 g F .text 0000004c GPIOPinTypeGPIOOutput -00006144 g F .text 000000c0 BootComCheckActivationRequest -000063e0 g F .text 0000000c TimeGet -00006400 g F .text 00000008 CPUcpsie -00006494 g F .text 0000006c GPIODirModeSet +00008000 g O .text 000000f4 _vectab +000086ac g F .text 0000004c GPIOPinTypeUART +00008660 g F .text 0000004c GPIOPinTypeGPIOOutput +00008144 g F .text 000000c0 BootComCheckActivationRequest +000083e0 g F .text 0000000c TimeGet +00008400 g F .text 00000008 CPUcpsie +00008494 g F .text 0000006c GPIODirModeSet 2000005c g .bss 00000000 _stack -00006d38 g F .text 00000012 SysTickEnable -00006d4c g F .text 00000012 SysTickIntEnable -00006e34 g F .text 00000142 UARTConfigSetExpClk -000068c0 g F .text 000001ba SysCtlClockSet -00006500 g F .text 0000012e GPIOPadConfigSet -00006db4 g F .text 0000003c UARTEnable +00008d38 g F .text 00000012 SysTickEnable +00008d4c g F .text 00000012 SysTickIntEnable +00008e34 g F .text 00000142 UARTConfigSetExpClk +000088c0 g F .text 000001ba SysCtlClockSet +00008500 g F .text 0000012e GPIOPadConfigSet +00008db4 g F .text 0000003c UARTEnable diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.srec index 4cd2a6c7..3650ab19 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/bin/demoprog_ek_lm3s6965.srec @@ -1,266 +1,266 @@ S020000062696E2F64656D6F70726F675F656B5F6C6D3373363936352E7372656358 -S11360005C01002005620000FD630000FD630000E8 -S1136010FD630000FD630000FD630000FD630000FC -S1136020FD630000FD630000FD630000FD630000EC -S1136030FD630000FD630000FD630000ED630000EC -S1136040FD630000FD630000FD630000FD630000CC -S1136050FD630000FD630000FD630000FD630000BC -S1136060FD630000FD630000FD630000FD630000AC -S1136070FD630000FD630000FD630000FD6300009C -S1136080FD630000FD630000FD630000FD6300008C -S1136090FD630000FD630000FD630000FD6300007C -S11360A0FD630000FD630000FD630000FD6300006C -S11360B0FD630000FD630000FD630000FD6300005C -S11360C0FD630000FD630000FD630000FD6300004C -S11360D0FD630000FD630000FD630000FD6300003C -S11360E0FD630000FD630000FD630000FD6300002C -S11360F0EE11AA5510B50120C1F2000046F65D0468 -S1136100C0F20004A0470120C2F20000A0474FF0F3 -S11361104020032146F2AD63C0F20003984746F6DF -S11361207D23C0F20003984701464FF44040C4F277 -S113613000004FF46142602346F63564C0F2000467 -S1136140A04710BD10B540F24803C2F200031B780B -S1136150EBB94FF44040C4F2000046F67973C0F244 -S113616000039847B0F1FF3F4BD040F20403C2F262 -S11361700003187040F24803C2F2000301221A70AF -S113618040F20003C2F2000300221A7010BD40F274 -S11361900003C2F200031B785C1C4FF44040C4F2BD -S11361A0000046F67973C0F200039847B0F1FF3F50 -S11361B027D040F20403C2F20003185540F2000253 -S11361C0C2F2000211780131C9B211701B788B42FE -S11361D017D140F24803C2F2000300221A7040F2C1 -S11361E00403C2F200035B78FF2B0AD140F20403DC -S11361F0C2F200039B7823B946F6A503C0F200035C -S1136200984710BD10B517498D4640F20002C2F2FE -S1136210000240F20003C2F200039A4210D2131D9E -S11362200F4CE41A24F0030404340023104647F20C -S11362307801C0F200015A581A500433A342FAD12B -S113624009480A494FF000028842B8BF40F8042BBD -S1136250FADB46F23933C0F20003984710BD00BFA1 -S1136260030000205C010020000000205C000020EE -S113627008B546F2F963C0F20003984708BD00BFB1 -S113628010B52020C2F2000046F65D03C0F2000300 -S113629098474FF4A044C4F202042046012146F278 -S11362A06163C0F20003984720460121002246F2B0 -S11362B03163C0F20003984710BD00BF10B546F229 -S11362C0E133C0F200039847044640F24C03C2F2A3 -S11362D000031B68C31AB3F5FA7F2BD340F25003B3 -S11362E0C2F200031B7883B940F25003C2F20003E8 -S11362F001221A704FF4A040C4F20200114646F283 -S11363003163C0F2000398470FE040F25003C2F239 -S1136310000300221A704FF4A040C4F202000121CD -S113632046F23163C0F20003984740F24C03C2F2D4 -S113633000031C6010BD00BF08B54FF46070C0F2CC -S1136340C01046F6C103C0F20003984746F2812309 -S1136350C0F20003984746F29933C0F2000398470D -S113636046F27123C0F20003984746F2F503C0F2E7 -S11363700003984746F2BD25C0F2000546F24514D5 -S1136380C0F20004A847A047FCE700BF40F2540352 -S1136390C2F200031960FEE708B546F67D23C0F299 -S11363A00003984744F6D353C1F26203A3FB0020D1 -S11363B0800946F66153C0F20003984746F6395304 -S11363C0C0F20003984746F64D53C0F200039847C5 -S11363D040F25803C2F2000300221A6008BD00BF55 -S11363E040F25803C2F200031868704740F25803A1 -S11363F0C2F200031A6801321A607047FEE700BF58 -S1136400EFF3108062B6704720F480534FF40042DB -S1136410C4F20502934218BFB3F1402F31D04FF4B8 -S1136420C041C4F200014FF42042C4F20502934279 -S113643018BF8B4227D04FF48041C4F202014FF4BD -S11364404042C4F20502934218BF8B421DD04FF460 -S1136450C041C4F202014FF46042C4F20502934207 -S113646018BF8B4213D04FF45042C4F203020023EE -S1136470C4F20603984218BF904214BF00200120C2 -S113648070470120704701207047012070470120A8 -S1136490704700BF70B504460E46154646F20943E0 -S11364A0C0F20003984748B946F6B070C0F2000045 -S11364B0E42146F28D33C0F200039847022D09D936 -S11364C046F6B070C0F20000E62146F28D33C0F209 -S11364D00003984715F0010F04F58063D4F80024F5 -S11364E014BF3243B2431A6015F0020F04F58463FB -S11364F0D4F8202414BF164322EA06061E6070BD99 -S1136500F8B504460D4617461E4646F20943C0F246 -S11365100003984750B946F6B070C0F200004FF43B -S1136520DD7146F28D33C0F20003984727F008026C -S11365307B1E042A18BF012B0AD946F6B070C0F29C -S113654000004FF4DF7146F28D33C0F20003984728 -S1136550A6F10803052B0BD956B146F6B070C0F26C -S1136560000040F2C51146F28D33C0F20003984793 -S113657017F0010F04F5A063D4F8002514BF2A43D3 -S1136580AA431A6017F0020F04F20453D4F8042546 -S113659014BF2A43AA431A6017F0040F04F5A16339 -S11365A0D4F8082514BF2A43AA431A6017F0080F29 -S11365B004F5A363D4F8182514BF2A43AA431A6028 -S11365C016F0010F04F20C53D4F80C2514BF2A431F -S11365D0AA431A6016F0020F04F5A263D4F810253A -S11365E014BF2A43AA431A6016F0040F04F214538A -S11365F0D4F8142514BF2A43AA431A6016F0080FCE -S113660004F21C53D4F81C2514BF2A43AA431A606D -S11366102EB904F5A563D4F82825154305E004F53F -S1136620A563D4F8282522EA05051D60F8BD00BF3E -S113663070B504460D46164646F20943C0F20003FF -S1136640984750B946F6B070C0F200004FF451714B -S113665046F28D33C0F20003984744F8256070BDBC -S113666038B505460C4646F20943C0F20003984784 -S113667050B946F6B070C0F2000040F2044146F250 -S11366808D33C0F20003984728462146012246F282 -S11366909543C0F200039847284621460122082367 -S11366A046F20154C0F20004A04738BD38B505468F -S11366B00C4646F20943C0F20003984750B946F627 -S11366C0B070C0F2000040F21F5146F28D33C0F2A8 -S11366D00003984728462146022246F29543C0F219 -S11366E000039847284621460122082346F2015414 -S11366F0C0F20004A04738BD08B546F20143C0F219 -S113670000039847C0B208BD30B420F08053A3F50D -S11367108012013A4FF48071C0F210018B4218BF0D -S1136720012A98BF012040F297804FF40071C0F213 -S113673010014FF48062C0F21002934218BF8B42E2 -S113674008BF012000F088804FF4A041C2F210017C -S113675000F16042013A884218BF012A98BF012023 -S11367607AD90422C2F20002904208BF012073D0F9 -S11367701022C2F20002904208BF01206CD02022F5 -S1136780C2F20002904208BF012065D020F48014B8 -S11367908021C2F200014FF48072C2F200029442DE -S11367A018BF8B4208BF012056D020F00052B0F130 -S11367B0102F18BF402A08BF01204DD04FF480414C -S11367C0C1F200018C4208BF012045D0B0F1101F76 -S11367D008BF012040D04FF48075C1F200054FF48A -S11367E00071C1F20001884218BFA84208BF01200D -S11367F032D01025C1F200052021C1F200018A42E5 -S113680018BFAA4208BF012026D00821C1F21001F6 -S113681088421CD000F170410139012917D90421A3 -S1136820C1F200018C4214D0B0F1202F13D0012109 -S1136830C2F2100188420ED04FF48050C0F2100012 -S1136840834218BF082A14BF0020012004E001205D -S113685002E0012000E0012030BC704710B504467E -S113686046F20973C0F20003984750B947F2240076 -S1136870C0F200004FF4FC7146F28D33C0F2000305 -S1136880984747F23C03C0F20003220F53F822302A -S11368901A68A1B2C4F3044401FA04F414431C605A -S11368A010BD00BF4EF60C53CEF200030422C0F21A -S11368B0FA521A60FEE700BF01387FF4FDAF70475B -S11368C070B504464FF46043C4F20F031B6813F021 -S11368D0E04F0BD04FF46043C4F20F031A68002357 -S11368E0C7F2FF031340B3F1805F02D1002CC0F262 -S11368F0C3804EF26002C4F20F0211684EF27003BC -S1136900C4F20F031E6821F4800545F4006546F4C3 -S113691000601560186011F0020F02D014F0020F2D -S113692005D011F0010F24D014F0010F21D164F02F -S113693003031D404EF26003C4F20F031D600028E0 -S113694004DA06F03003302B04D00BE005F03003FA -S1136950302B07D14FF4805046F6B903C0F2000340 -S1136960984706E04FF4002046F6B903C0F200034E -S1136970984725F45F5525F0300543F2F073234022 -S11369801D434DF68F73C7F6FF73334043F4006223 -S113699042F23003C8F200032340134304F0080218 -S11369A04EF25801C4F20F014020086053EAC206B7 -S11369B00AD54EF27003C4F20F031E604EF2600358 -S11369C0C4F20F031D6009E04EF26003C4F20F032A -S11369D01D604EF27003C4F20F031E60102046F6D1 -S11369E0B902C0F20002904725F0F86020F00300DD -S11369F00323C0F2C0732340184326F0FC5604F06E -S1136A00FC510E4314F0804F1FBF40F4800026F465 -S1136A1080050023C4F240031ABF23401D4326F01F -S1136A20804514F4006F17D14EF25003C4F20F03E3 -S1136A301B6813F0400F0BD147F6FF734EF2500161 -S1136A40C4F20F010A6812F0400F01D1013BF9D1E1 -S1136A5020F4006025F400654EF26003C4F20F03D5 -S1136A6018604EF27003C4F20F031D60102046F646 -S1136A70B903C0F20003984770BD00BF30B44EF2B2 -S1136A806003C4F20F0319684EF27003C4F20F03DB -S1136A901A68002AB4BF02F0700301F03003202BFF -S1136AA071D003D87BB1102B16D037E1602B00F0E6 -S1136AB0C180702B00F0BB80302B08BF03F5EA4384 -S1136AC000F0CF802AE146F6C873C0F20003C1F398 -S1136AD0841053F82030C4E04FF46043C4F20F0331 -S1136AE01B6813F0E04F04BF4EF2C013C0F2E4037E -S1136AF000F0B7804FF46043C4F20F03186800231A -S1136B00C7F2FF030340B3F1805F00F096804FF4B7 -S1136B106043C4F20F0318680023C7F2FF03034065 -S1136B200020C1F20100834208D14FF46043C4F253 -S1136B300F031B689BB2022B00F084804FF4604368 -S1136B40C4F20F0318680023C7F2FF0303400020B8 -S1136B50C1F2030083421CBF4FF41053C0F2F4038C -S1136B607FD14FF46043C4F20F031C68A4B24FF406 -S1136B70D853C0F2B7034FF41050C0F2F400002C05 -S1136B8018BF03466DE04FF46043C4F20F031B6863 -S1136B9013F0E04F04BF43F67003C0F2390360D032 -S1136BA04FF46043C4F20F0318680023C7F2FF03D5 -S1136BB00340B3F1805F4AD04FF46043C4F20F0343 -S1136BC018680023C7F2FF0303400020C1F201004C -S1136BD0834207D14FF46043C4F20F031B689BB296 -S1136BE0022B39D04FF46043C4F20F03186800231A -S1136BF0C7F2FF0303400020C1F2030083421CBF1D -S1136C004FF41063C0F23D032BD14FF46043C4F240 -S1136C100F031C68A4B24CF2C063C0F22D034FF4FE -S1136C201060C0F23D00002C18BF034619E04FF479 -S1136C30004316E04FF4800313E04EF2C013C0F299 -S1136C40E4030EE04FF4D853C0F2B70309E043F66F -S1136C507003C0F2390304E04CF2C063C0F22D03A8 -S1136C60FFE7002A03DA12F4006F03D058E011F4AE -S1136C70006F5AD14EF26400C4F20F0000684FF462 -S1136C806044C4F20F04246814F0E04F0BD04FF4B6 -S1136C906044C4F20F0425680024C7F2FF042C40AA -S1136CA0B4F1805F0AD1C0F34814023404FB03F347 -S1136CB000F01F040234B3FBF4F309E0C0F34814FA -S1136CC004FB03F300F01F0401346400B3FBF4F38A -S1136CD010F4804F18BF5B0810F4004F18BF9B08D6 -S1136CE0002AA8BF41F4800112DA12F0804F09D0C3 -S1136CF012F4006F06D15B00C2F386520132B3FB7B -S1136D00F2F016E0C2F3C5500130B3FBF0F010E02E -S1136D10C1F3C3500130B3FBF0F00AE0002008E0F7 -S1136D2011F4800FE1D1184603E011F4800FEFD184 -S1136D30184630BC704700BF4EF21003CEF2000379 -S1136D401A6842F005021A60704700BF4EF2100341 -S1136D50CEF200031A6842F002021A60704700BFC4 -S1136D6010B5441EB4F1807F09D347F24800C0F245 -S1136D700000D02146F28D33C0F2000398474EF252 -S1136D801403CEF200031C6010BD00BF20F4805237 -S1136D904FF44043C4F200039A4208D04FF46043D6 -S1136DA0C4F20003984214BF002001207047012060 -S1136DB0704700BF10B5044646F68D53C0F2000379 -S1136DC0984750B947F26000C0F200004FF4CF7109 -S1136DD046F28D33C0F200039847E36A43F0100390 -S1136DE0E362236B43F4407343F00103236310BD58 -S1136DF010B5044646F68D53C0F20003984750B9C7 -S1136E0047F26000C0F200004FF4DF7146F28D33A8 -S1136E10C0F200039847A36913F0080FFBD1E36A9B -S1136E2023F01003E362236B23F4407323F0010384 -S1136E30236310BDF8B504460E4615461F4646F6B4 -S1136E408D52C0F20002904750B947F26000C0F280 -S1136E50000040F20D1146F28D33C0F20003984752 -S1136E6055B947F26000C0F200004FF4877146F252 -S1136E708D33C0F2000398474FF46042C4F20F020E -S1136E80136813F0E04F08BF102340D04FF4604361 -S1136E90C4F20F031A680023C7F2FF031340B3F1CF -S1136EA0805F08BF102332D04FF46043C4F20F0355 -S1136EB01A680023C7F2FF0313400022C1F2010243 -S1136EC0934209D14FF46043C4F20F031B689BB291 -S1136ED0022B08BF10231AD04FF46043C4F20F03EF -S1136EE01A680023C7F2FF0313400022C1F2030211 -S1136EF0934218BF08230AD14FF46043C4F20F032E -S1136F001B689BB2002B0CBF10230823FFE705FB73 -S1136F1003F3B3420AD947F26000C0F2000040F222 -S1136F200F1146F28D33C0F200039847204646F60F -S1136F30F152C0F200029047B6EB051F236B3DBF30 -S1136F4043F0200323636D0823F0200328BF236349 -S1136F50F600B6FBF5F50135EB096362C5F34505AB -S1136F60A562E7620023A361204646F6B553C0F24A -S1136F7000039847F8BD00BF10B5044646F68D538C -S1136F80C0F20003984750B947F26000C0F2000015 -S1136F9040F2094146F28D33C0F200039847A369D9 -S1136FA013F0100F0CBF20684FF0FF3010BD00BF6E -S1136FB06C69622F6472697665726C69622F67709E -S1136FC0696F2E630000000040420F0000201C0087 -S1136FD080841E0000802500999E36000040380001 -S1136FE000093D0000803E0000004B00404B4C0077 -S1136FF000204E00808D5B0000C05D0000807000AA -S113700000127A0000007D0080969800001BB700F3 -S11370100080BB00C0E8CE00647ADA000024F400EB -S11370200000FA006C69622F6472697665726C699B -S1137030622F73797363746C2E63000000E10F4058 -S113704004E10F4008E10F406C69622F64726976B5 -S113705065726C69622F7379737469636B2E630054 -S11370606C69622F6472697665726C69622F7561EE -S10B707072742E63000000009D -S90360009C +S11380005C01002005820000FD830000FD83000068 +S1138010FD830000FD830000FD830000FD8300005C +S1138020FD830000FD830000FD830000FD8300004C +S1138030FD830000FD830000FD830000ED8300004C +S1138040FD830000FD830000FD830000FD8300002C +S1138050FD830000FD830000FD830000FD8300001C +S1138060FD830000FD830000FD830000FD8300000C +S1138070FD830000FD830000FD830000FD830000FC +S1138080FD830000FD830000FD830000FD830000EC +S1138090FD830000FD830000FD830000FD830000DC +S11380A0FD830000FD830000FD830000FD830000CC +S11380B0FD830000FD830000FD830000FD830000BC +S11380C0FD830000FD830000FD830000FD830000AC +S11380D0FD830000FD830000FD830000FD8300009C +S11380E0FD830000FD830000FD830000FD8300008C +S11380F0EE11AA5510B50120C1F2000048F65D0446 +S1138100C0F20004A0470120C2F20000A0474FF0D3 +S11381104020032148F2AD63C0F20003984748F6BB +S11381207D23C0F20003984701464FF44040C4F257 +S113813000004FF46142602348F63564C0F2000445 +S1138140A04710BD10B540F24803C2F200031B78EB +S1138150EBB94FF44040C4F2000048F67973C0F222 +S113816000039847B0F1FF3F4BD040F20403C2F242 +S11381700003187040F24803C2F2000301221A708F +S113818040F20003C2F2000300221A7010BD40F254 +S11381900003C2F200031B785C1C4FF44040C4F29D +S11381A0000048F67973C0F200039847B0F1FF3F2E +S11381B027D040F20403C2F20003185540F2000233 +S11381C0C2F2000211780131C9B211701B788B42DE +S11381D017D140F24803C2F2000300221A7040F2A1 +S11381E00403C2F200035B78FF2B0AD140F20403BC +S11381F0C2F200039B7823B948F6A503C0F200033A +S1138200984710BD10B517498D4640F20002C2F2DE +S1138210000240F20003C2F200039A4210D2131D7E +S11382200F4CE41A24F0030404340023104649F2EA +S11382307801C0F200015A581A500433A342FAD10B +S113824009480A494FF000028842B8BF40F8042B9D +S1138250FADB48F23933C0F20003984710BD00BF7F +S1138260030000205C010020000000205C000020CE +S113827008B548F2F963C0F20003984708BD00BF8F +S113828010B52020C2F2000048F65D03C0F20003DE +S113829098474FF4A044C4F202042046012148F256 +S11382A06163C0F20003984720460121002248F28E +S11382B03163C0F20003984710BD00BF10B548F207 +S11382C0E133C0F200039847044640F24C03C2F283 +S11382D000031B68C31AB3F5FA7F2BD340F2500393 +S11382E0C2F200031B7883B940F25003C2F20003C8 +S11382F001221A704FF4A040C4F20200114648F261 +S11383003163C0F2000398470FE040F25003C2F219 +S1138310000300221A704FF4A040C4F202000121AD +S113832048F23163C0F20003984740F24C03C2F2B2 +S113833000031C6010BD00BF08B54FF46070C0F2AC +S1138340C01048F6C103C0F20003984748F28123E5 +S1138350C0F20003984748F29933C0F200039847EB +S113836048F27123C0F20003984748F2F503C0F2C3 +S11383700003984748F2BD25C0F2000548F24514B1 +S1138380C0F20004A847A047FCE700BF40F2540332 +S1138390C2F200031960FEE708B548F67D23C0F277 +S11383A00003984744F6D353C1F26203A3FB0020B1 +S11383B0800948F66153C0F20003984748F63953E0 +S11383C0C0F20003984748F64D53C0F200039847A3 +S11383D040F25803C2F2000300221A6008BD00BF35 +S11383E040F25803C2F200031868704740F2580381 +S11383F0C2F200031A6801321A607047FEE700BF38 +S1138400EFF3108062B6704720F480534FF40042BB +S1138410C4F20502934218BFB3F1402F31D04FF498 +S1138420C041C4F200014FF42042C4F20502934259 +S113843018BF8B4227D04FF48041C4F202014FF49D +S11384404042C4F20502934218BF8B421DD04FF440 +S1138450C041C4F202014FF46042C4F205029342E7 +S113846018BF8B4213D04FF45042C4F203020023CE +S1138470C4F20603984218BF904214BF00200120A2 +S11384807047012070470120704701207047012088 +S1138490704700BF70B504460E46154648F20943BE +S11384A0C0F20003984748B948F6B070C0F2000023 +S11384B0E42148F28D33C0F200039847022D09D914 +S11384C048F6B070C0F20000E62148F28D33C0F2E5 +S11384D00003984715F0010F04F58063D4F80024D5 +S11384E014BF3243B2431A6015F0020F04F58463DB +S11384F0D4F8202414BF164322EA06061E6070BD79 +S1138500F8B504460D4617461E4648F20943C0F224 +S11385100003984750B948F6B070C0F200004FF419 +S1138520DD7148F28D33C0F20003984727F008024A +S11385307B1E042A18BF012B0AD948F6B070C0F27A +S113854000004FF4DF7148F28D33C0F20003984706 +S1138550A6F10803052B0BD956B148F6B070C0F24A +S1138560000040F2C51148F28D33C0F20003984771 +S113857017F0010F04F5A063D4F8002514BF2A43B3 +S1138580AA431A6017F0020F04F20453D4F8042526 +S113859014BF2A43AA431A6017F0040F04F5A16319 +S11385A0D4F8082514BF2A43AA431A6017F0080F09 +S11385B004F5A363D4F8182514BF2A43AA431A6008 +S11385C016F0010F04F20C53D4F80C2514BF2A43FF +S11385D0AA431A6016F0020F04F5A263D4F810251A +S11385E014BF2A43AA431A6016F0040F04F214536A +S11385F0D4F8142514BF2A43AA431A6016F0080FAE +S113860004F21C53D4F81C2514BF2A43AA431A604D +S11386102EB904F5A563D4F82825154305E004F51F +S1138620A563D4F8282522EA05051D60F8BD00BF1E +S113863070B504460D46164648F20943C0F20003DD +S1138640984750B948F6B070C0F200004FF4517129 +S113865048F28D33C0F20003984744F8256070BD9A +S113866038B505460C4648F20943C0F20003984762 +S113867050B948F6B070C0F2000040F2044148F22C +S11386808D33C0F20003984728462146012248F260 +S11386909543C0F200039847284621460122082347 +S11386A048F20154C0F20004A04738BD38B505466D +S11386B00C4648F20943C0F20003984750B948F603 +S11386C0B070C0F2000040F21F5148F28D33C0F286 +S11386D00003984728462146022248F29543C0F2F7 +S11386E000039847284621460122082348F20154F2 +S11386F0C0F20004A04738BD08B548F20143C0F2F7 +S113870000039847C0B208BD30B420F08053A3F5ED +S11387108012013A4FF48071C0F210018B4218BFED +S1138720012A98BF012040F297804FF40071C0F2F3 +S113873010014FF48062C0F21002934218BF8B42C2 +S113874008BF012000F088804FF4A041C2F210015C +S113875000F16042013A884218BF012A98BF012003 +S11387607AD90422C2F20002904208BF012073D0D9 +S11387701022C2F20002904208BF01206CD02022D5 +S1138780C2F20002904208BF012065D020F4801498 +S11387908021C2F200014FF48072C2F200029442BE +S11387A018BF8B4208BF012056D020F00052B0F110 +S11387B0102F18BF402A08BF01204DD04FF480412C +S11387C0C1F200018C4208BF012045D0B0F1101F56 +S11387D008BF012040D04FF48075C1F200054FF46A +S11387E00071C1F20001884218BFA84208BF0120ED +S11387F032D01025C1F200052021C1F200018A42C5 +S113880018BFAA4208BF012026D00821C1F21001D6 +S113881088421CD000F170410139012917D9042183 +S1138820C1F200018C4214D0B0F1202F13D00121E9 +S1138830C2F2100188420ED04FF48050C0F21000F2 +S1138840834218BF082A14BF0020012004E001203D +S113885002E0012000E0012030BC704710B504465E +S113886048F20973C0F20003984750B949F2240052 +S1138870C0F200004FF4FC7148F28D33C0F20003E3 +S1138880984749F23C03C0F20003220F53F8223008 +S11388901A68A1B2C4F3044401FA04F414431C603A +S11388A010BD00BF4EF60C53CEF200030422C0F2FA +S11388B0FA521A60FEE700BF01387FF4FDAF70473B +S11388C070B504464FF46043C4F20F031B6813F001 +S11388D0E04F0BD04FF46043C4F20F031A68002337 +S11388E0C7F2FF031340B3F1805F02D1002CC0F242 +S11388F0C3804EF26002C4F20F0211684EF270039C +S1138900C4F20F031E6821F4800545F4006546F4A3 +S113891000601560186011F0020F02D014F0020F0D +S113892005D011F0010F24D014F0010F21D164F00F +S113893003031D404EF26003C4F20F031D600028C0 +S113894004DA06F03003302B04D00BE005F03003DA +S1138950302B07D14FF4805048F6B903C0F200031E +S1138960984706E04FF4002048F6B903C0F200032C +S1138970984725F45F5525F0300543F2F073234002 +S11389801D434DF68F73C7F6FF73334043F4006203 +S113899042F23003C8F200032340134304F00802F8 +S11389A04EF25801C4F20F014020086053EAC20697 +S11389B00AD54EF27003C4F20F031E604EF2600338 +S11389C0C4F20F031D6009E04EF26003C4F20F030A +S11389D01D604EF27003C4F20F031E60102048F6AF +S11389E0B902C0F20002904725F0F86020F00300BD +S11389F00323C0F2C0732340184326F0FC5604F04E +S1138A00FC510E4314F0804F1FBF40F4800026F445 +S1138A1080050023C4F240031ABF23401D4326F0FF +S1138A20804514F4006F17D14EF25003C4F20F03C3 +S1138A301B6813F0400F0BD147F6FF734EF2500141 +S1138A40C4F20F010A6812F0400F01D1013BF9D1C1 +S1138A5020F4006025F400654EF26003C4F20F03B5 +S1138A6018604EF27003C4F20F031D60102048F624 +S1138A70B903C0F20003984770BD00BF30B44EF292 +S1138A806003C4F20F0319684EF27003C4F20F03BB +S1138A901A68002AB4BF02F0700301F03003202BDF +S1138AA071D003D87BB1102B16D037E1602B00F0C6 +S1138AB0C180702B00F0BB80302B08BF03F5EA4364 +S1138AC000F0CF802AE148F6C873C0F20003C1F376 +S1138AD0841053F82030C4E04FF46043C4F20F0311 +S1138AE01B6813F0E04F04BF4EF2C013C0F2E4035E +S1138AF000F0B7804FF46043C4F20F0318680023FA +S1138B00C7F2FF030340B3F1805F00F096804FF497 +S1138B106043C4F20F0318680023C7F2FF03034045 +S1138B200020C1F20100834208D14FF46043C4F233 +S1138B300F031B689BB2022B00F084804FF4604348 +S1138B40C4F20F0318680023C7F2FF030340002098 +S1138B50C1F2030083421CBF4FF41053C0F2F4036C +S1138B607FD14FF46043C4F20F031C68A4B24FF4E6 +S1138B70D853C0F2B7034FF41050C0F2F400002CE5 +S1138B8018BF03466DE04FF46043C4F20F031B6843 +S1138B9013F0E04F04BF43F67003C0F2390360D012 +S1138BA04FF46043C4F20F0318680023C7F2FF03B5 +S1138BB00340B3F1805F4AD04FF46043C4F20F0323 +S1138BC018680023C7F2FF0303400020C1F201002C +S1138BD0834207D14FF46043C4F20F031B689BB276 +S1138BE0022B39D04FF46043C4F20F0318680023FA +S1138BF0C7F2FF0303400020C1F2030083421CBFFD +S1138C004FF41063C0F23D032BD14FF46043C4F220 +S1138C100F031C68A4B24CF2C063C0F22D034FF4DE +S1138C201060C0F23D00002C18BF034619E04FF459 +S1138C30004316E04FF4800313E04EF2C013C0F279 +S1138C40E4030EE04FF4D853C0F2B70309E043F64F +S1138C507003C0F2390304E04CF2C063C0F22D0388 +S1138C60FFE7002A03DA12F4006F03D058E011F48E +S1138C70006F5AD14EF26400C4F20F0000684FF442 +S1138C806044C4F20F04246814F0E04F0BD04FF496 +S1138C906044C4F20F0425680024C7F2FF042C408A +S1138CA0B4F1805F0AD1C0F34814023404FB03F327 +S1138CB000F01F040234B3FBF4F309E0C0F34814DA +S1138CC004FB03F300F01F0401346400B3FBF4F36A +S1138CD010F4804F18BF5B0810F4004F18BF9B08B6 +S1138CE0002AA8BF41F4800112DA12F0804F09D0A3 +S1138CF012F4006F06D15B00C2F386520132B3FB5B +S1138D00F2F016E0C2F3C5500130B3FBF0F010E00E +S1138D10C1F3C3500130B3FBF0F00AE0002008E0D7 +S1138D2011F4800FE1D1184603E011F4800FEFD164 +S1138D30184630BC704700BF4EF21003CEF2000359 +S1138D401A6842F005021A60704700BF4EF2100321 +S1138D50CEF200031A6842F002021A60704700BFA4 +S1138D6010B5441EB4F1807F09D349F24800C0F223 +S1138D700000D02148F28D33C0F2000398474EF230 +S1138D801403CEF200031C6010BD00BF20F4805217 +S1138D904FF44043C4F200039A4208D04FF46043B6 +S1138DA0C4F20003984214BF002001207047012040 +S1138DB0704700BF10B5044648F68D53C0F2000357 +S1138DC0984750B949F26000C0F200004FF4CF71E7 +S1138DD048F28D33C0F200039847E36A43F010036E +S1138DE0E362236B43F4407343F00103236310BD38 +S1138DF010B5044648F68D53C0F20003984750B9A5 +S1138E0049F26000C0F200004FF4DF7148F28D3384 +S1138E10C0F200039847A36913F0080FFBD1E36A7B +S1138E2023F01003E362236B23F4407323F0010364 +S1138E30236310BDF8B504460E4615461F4648F692 +S1138E408D52C0F20002904750B949F26000C0F25E +S1138E50000040F20D1148F28D33C0F20003984730 +S1138E6055B949F26000C0F200004FF4877148F22E +S1138E708D33C0F2000398474FF46042C4F20F02EE +S1138E80136813F0E04F08BF102340D04FF4604341 +S1138E90C4F20F031A680023C7F2FF031340B3F1AF +S1138EA0805F08BF102332D04FF46043C4F20F0335 +S1138EB01A680023C7F2FF0313400022C1F2010223 +S1138EC0934209D14FF46043C4F20F031B689BB271 +S1138ED0022B08BF10231AD04FF46043C4F20F03CF +S1138EE01A680023C7F2FF0313400022C1F20302F1 +S1138EF0934218BF08230AD14FF46043C4F20F030E +S1138F001B689BB2002B0CBF10230823FFE705FB53 +S1138F1003F3B3420AD949F26000C0F2000040F200 +S1138F200F1148F28D33C0F200039847204648F6EB +S1138F30F152C0F200029047B6EB051F236B3DBF10 +S1138F4043F0200323636D0823F0200328BF236329 +S1138F50F600B6FBF5F50135EB096362C5F345058B +S1138F60A562E7620023A361204648F6B553C0F228 +S1138F7000039847F8BD00BF10B5044648F68D536A +S1138F80C0F20003984750B949F26000C0F20000F3 +S1138F9040F2094148F28D33C0F200039847A369B7 +S1138FA013F0100F0CBF20684FF0FF3010BD00BF4E +S1138FB06C69622F6472697665726C69622F67707E +S1138FC0696F2E630000000040420F0000201C0067 +S1138FD080841E0000802500999E360000403800E1 +S1138FE000093D0000803E0000004B00404B4C0057 +S1138FF000204E00808D5B0000C05D00008070008A +S113900000127A0000007D0080969800001BB700D3 +S11390100080BB00C0E8CE00647ADA000024F400CB +S11390200000FA006C69622F6472697665726C697B +S1139030622F73797363746C2E63000000E10F4038 +S113904004E10F4008E10F406C69622F6472697695 +S113905065726C69622F7379737469636B2E630034 +S11390606C69622F6472697665726C69622F7561CE +S10B907072742E63000000007D +S90380007C diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/memory.x index 63f44604..9bb1ade9 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_GCC/Prog/memory.x @@ -1,6 +1,6 @@ MEMORY { - FLASH (rx) : ORIGIN = 0x00006000, LENGTH = 232K + FLASH (rx) : ORIGIN = 0x00008000, LENGTH = 224K SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K } diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.out b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.out index 9d741b23..6492dcb2 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.out and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.out differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.sim b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.sim index c6ba7126..83d81cd6 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.sim and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.sim differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.srec index 81371163..391ca3e0 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/bin/openbtl_ek_lm3s6965.srec @@ -1,21 +1,21 @@ S01B00006F70656E62746C5F656B5F6C6D3373363936352E737265632E -S113000050110020DD4D0000B55B0000B55B000021 -S1130010B55B0000B55B0000B55B0000B55B00009C -S1130020B55B0000B55B0000B55B0000B55B00008C -S1130030B55B0000B55B0000B55B0000B55B00007C -S1130040B55B0000B55B0000B55B0000B55B00006C -S1130050B55B0000B55B0000B55B0000B55B00005C -S1130060B55B0000B55B0000B55B0000B55B00004C -S1130070B55B0000B55B0000B55B0000B55B00003C -S1130080B55B0000B55B0000B55B0000B55B00002C -S1130090B55B0000B55B0000B55B0000B55B00001C -S11300A0B55B0000B55B0000B55B0000B55B00000C -S11300B0B55B0000B55B0000B55B0000B55B0000FC -S11300C0B55B0000B55B0000B55B0000B55B0000EC -S11300D0B55B0000B55B0000B55B0000B55B0000DC -S11300E0B55B0000B55B0000B55B0000B55B0000CC -S11300F0044B9D46C046C046C046C04603F041FF7F -S113010004F044FF5011002003E00B780370491CF5 +S1130000A0180020296C0000ED7B0000ED7B0000AF +S1130010ED7B0000ED7B0000ED7B0000ED7B00003C +S1130020ED7B0000ED7B0000ED7B0000ED7B00002C +S1130030ED7B0000ED7B0000ED7B0000ED7B00001C +S1130040ED7B0000ED7B0000ED7B0000ED7B00000C +S1130050ED7B0000ED7B0000ED7B0000ED7B0000FC +S1130060ED7B0000ED7B0000ED7B0000ED7B0000EC +S1130070ED7B0000ED7B0000ED7B0000ED7B0000DC +S1130080ED7B0000ED7B0000ED7B0000ED7B0000CC +S1130090ED7B0000ED7B0000ED7B0000ED7B0000BC +S11300A0ED7B0000ED7B0000ED7B0000ED7B0000AC +S11300B0ED7B0000ED7B0000ED7B0000ED7B00009C +S11300C0ED7B0000ED7B0000ED7B0000ED7B00008C +S11300D0ED7B0000ED7B0000ED7B0000ED7B00007C +S11300E0ED7B0000ED7B0000ED7B0000ED7B00006C +S11300F0044B9D46C046C046C046C04605F01EFEA1 +S113010006F01CFFA018002003E00B780370491CC4 S1130110401C13005A1E002BF7D1704701E00170F8 S1130120401C13005A1E002BF9D1704710B4002351 S11301301400621E002C06D003780C781B1B491C8B @@ -345,7 +345,7 @@ S113156020120843E06094F81F0294F81E12090444 S113157051EA006094F81D1250EA012094F81C12FC S1131580084320612670DFF8D8090088401CDFF882 S1131590D0190880E0800020206300202071002002 -S11315A0F2BD0000845B000080B500280BD0016808 +S11315A0F2BD0000BC7B000080B500280BD00168B0 S11315B0002908D001680978002904D00168C98885 S11315C08288914201D0092008E00068407800F048 S11315D061FFC00701D5032000E0002002BDC0B2B6 @@ -376,7 +376,7 @@ S113175019D1A57139000098FFF76BF82061F87F63 S1131760B97F090451EA0060797F50EA0120397F8A S11317700843E0600020A0600020A0610098206081 S11317800098C088A0803000C0B20DB0BDE8F083DE -S1131790C45B000054560000F45B00002DE9F047E0 +S1131790FC7B00002C760000387C00002DE9F0472B S11317A0050016001F000C00002038602800FFF719 S11317B0FBFEC0B2002801D0C0B2E7E0A879000661 S11317C001D50220E2E0A879C00701D40720DDE0BA @@ -487,7 +487,7 @@ S1131E4003A90CA8FFF7F9F90500EDB2002D15D18F S1131E5000A80990DFF80C010A900C9903A8FFF779 S1131E6073F90500EDB2002D08D10898002804D0BC S1131E70210003A8FFF7EBF800E006252800C0B214 -S1131E800DB030BD46415400340F002071B595B0FB +S1131E800DB030BD464154004816002071B595B0E0 S1131E90012200A915A8FFF7D0F90400E4B2002C30 S1131EA056D109A806902F480790159900A8FFF766 S1131EB04BF90400E4B2002C4AD1059D002D01D158 @@ -501,7 +501,7 @@ S1131F20E4B2002C14D100A8FEF742FF0400E4B28E S1131F30002C0DD1002E04D031000098FEF7D5FA04 S1131F400400E4B2002C03D10098FEF74FF904001A S1131F502000C0B216B070BD52526141727241612C -S1131F60400F00208C0A00202DE9FC4104000F00E2 +S1131F6080160020D01000202DE9FC4104000F0051 S1131F70904600252600FFE7781E854213DA00AB61 S1131F80012201A94046FFF709FC009801280AD163 S1131F909DF80400C0B20D28EED03070761C6D1C84 @@ -517,35 +517,35 @@ S113202081B102681218001D50F8043BDC0744BF5C S1132030A9F10104E31852F8044B43F8044B091FB7 S1132040F9D1EBE710BC704710B582B00122012131 S1132050DFF8F80700F0A9FD20215FF0402000F030 -S1132060B8FD202220215FF0402000F09EFD0024D6 -S11320700AE0FF21DFF8D80700F0E0FE00A9DFF84E -S1132080D00700F0FAFE641C0A2CF2D320215FF082 -S1132090402000F0CBFD13BD00B583B0DFF8B407DA -S11320A001F05CF8DFF8B00701F058F8DFF8AC078E -S11320B001F054F834215FF0402000F0B7FD012115 -S11320C0DFF8880700F085FD0A23022234215FF03F +S1132060D4FD202220215FF0402000F09EFD0024BA +S11320700AE0FF21DFF8D80700F0FCFE00A9DFF832 +S1132080D00700F016FF641C0A2CF2D320215FF065 +S1132090402000F0E7FD13BD00B583B0DFF8B407BE +S11320A001F0DDF8DFF8B00701F0D9F8DFF8AC078C +S11320B001F0D5F834215FF0402000F0D3FD012178 +S11320C0DFF8880700F0A1FD0A23022234215FF023 S11320D0402000F0B7FC0A2302220121DFF86C073C S11320E000F0B0FC01220121DFF8600700F05DFD83 -S11320F001F0B2F908210191DFF86417009100237F -S113210000220100DFF8480700F0FDFDDFF840077A -S113211000F072FEFFF798FF07BD1CB5DFF830072B -S113212000F07BFE01F098F94408DFF83807844298 -S113213001D3DFF8344701F08FF9082101910094AD -S1132140002300220100DFF8080700F0DCFDDFF8BF -S1132150000700F051FE13BDDFF81007007850F0BF +S11320F001F032FA08210191DFF8641700910023FE +S113210000220100DFF8480700F019FEDFF840075D +S113211000F08EFEFFF798FF07BD1CB5DFF830070F +S113212000F097FE01F018FA4408DFF838078442FB +S113213001D3DFF8344701F00FFA0821019100942C +S1132140002300220100DFF8080700F0F8FDDFF8A3 +S1132150000700F06DFE13BDDFF81007007850F0A3 S11321600100DFF808170870704780B5C0B201009D -S1132170DFF8DC0600F062FE00A9DFF8D40600F008 -S11321807CFE0098C0B202BD10B50400FF20FFF72A -S1132190ECFF207010BD38B501F0ADFA10F5FA75FA +S1132170DFF8DC0600F07EFE00A9DFF8D40600F0EC +S113218098FE0098C0B202BD10B50400FF20FFF70E +S1132190ECFF207010BD38B501F031FB10F5FA7575 S11321A0FF20FFF7E2FF0400E4B2FF2C03D001F0AC -S11321B0A2FAA842F4D3E4B2FF2C01D1012000E03A +S11321B026FBA842F4D3E4B2FF2C01D1012000E0B5 S11321C0002032BD80B501220121DFF8800600F035 S11321D0ECFCFF20FFF7C9FF01BD80B500220121FF S11321E0DFF8680600F0E1FCFF20FFF7BEFFFFF711 S11321F0D2FF002801D0012002E0FFF7E3FF002016 -S113220002BDF8B504000D0001F075FA10F1640781 +S113220002BDF8B504000D0001F0F9FA10F16407FD S1132210FF20FFF7AAFF0600F6B2FF2E03D101F05C -S11322206AFAB842F4D3F6B2FE2E01D0002011E0CF +S1132220EEFAB842F4D3F6B2FE2E01D0002011E04B S11322302000FFF7A9FF641C2000FFF7A5FF641C22 S1132240AD1E002DF4D1FF20FFF78FFFFF20FFF715 S11322508CFF0120F2BD38B504000D00FFF79BFF91 @@ -567,19 +567,19 @@ S11323406D1E2900C9B20029F5D1C0B232BD70B5E5 S113235082B0C0B2002801D001209AE0DFF80C0559 S11323600078800703D5DFF80405007891E0FFF7D3 S113237093FE00220121DFF8D40400F016FC0025AE -S113238000210020FFF796FF012869D101F0B3F97D +S113238000210020FFF796FF012869D101F037FAF8 S113239010F57A764FF4D5710820FFF78BFF0128EA S11323A03CD1002406E0FF20FFF7DFFEE4B200A9E1 S11323B06054641CE4B2042CF5DB9DF8020001288F -S11323C04ED19DF80300AA284AD101F094F9B042F5 +S11323C04ED19DF80300AA284AD101F018FAB04270 S11323D006D25FF08041A920FFF76CFF0028F4D1FA -S11323E001F089F9B0423BD200213A20FFF762FFA5 +S11323E001F00DFAB0423BD200213A20FFF762FF20 S11323F0002835D1002406E0FF20FFF7B6FEE4B242 S113240000A96054641CE4B2042CF5DB9DF80000C0 S1132410400601D50C2500E0042521E00021A92077 S1132420FFF748FF022802DA0225A92401E001256A -S1132430012401F060F9B04206D200212000C0B2AC -S1132440FFF738FF0028F4D101F055F9B04206D265 +S1132430012401F0E4F9B04206D200212000C0B228 +S1132440FFF738FF0028F4D101F0D9F9B04206D2E1 S11324504FF400711020FFF72DFF002800D0002555 S1132460DFF80C04EDB20560FFF7ACFEEDB2002D11 S11324700AD0DFF8F803007810F0FE00DFF8EC1360 @@ -646,7 +646,7 @@ S1132830002800D0002500E00425FFF7C3FC280091 S1132840C0B205B030BD0B487047000000700040B6 S1132850008000401000001001000020080000204B S1132860801A060021BCBE0020BCBE00010000206E -S1132870380F00200000AA4280B2802801DA01004B +S11328704C1600200000AA4280B2802801DA010030 S11328801EE000290CD080B2FF2801DD002106E003 S113289080B2194911EB4000B0F5807001880FE057 S11328A0002100E0491C89B2802906DA89B2124A63 @@ -654,33 +654,33 @@ S11328B032F8112080B29042F4D111F18000C1B2FB S11328C0080080B27047002100E0491C0B4A32F82E S11328D01120002A05D0094A32F8112080B2904212 S11328E0F3D1064A32F81120002A03D0044830F804 -S11328F01100FFE780B2704788540000C850000000 -S1132900A8520000B0F1402F5BD0DFF800138842DA -S113291057D0DFF8FC12884253D0DFF8F81288420F -S11329204FD0DFF8F41288424BD0DFF8F01288421F -S113293047D0DFF8EC12884243D0DFF8E81288422F -S11329403FD0DFF8E41288423BD0DFF81813884206 -S113295037D0DFF81413884233D0DFF810138842DD -S11329602FD0DFF80C1388422BD0DFF808138842ED -S113297027D0DFF80413884223D0DFF800138842FD -S11329801FD0DFF8FC1288421BD0DFF830138842D6 -S113299017D0DFF82C13884213D0DFF828138842AD -S11329A00FD0DFF8241388420BD0DFF820138842BD -S11329B007D0DFF81C13884203D0DFF818138842CD +S11328F01100FFE780B270476C740000AC700000F8 +S11329008C720000B0F1402F5BD0DFF8381388429E +S113291057D0DFF83413884253D0DFF8301388429D +S11329204FD0DFF82C1388424BD0DFF828138842AD +S113293047D0DFF82413884243D0DFF820138842BD +S11329403FD0DFF81C1388423BD0DFF85013884295 +S113295037D0DFF84C13884233D0DFF8481388426D +S11329602FD0DFF8441388422BD0DFF8401388427D +S113297027D0DFF83C13884223D0DFF8381388428D +S11329801FD0DFF8341388421BD0DFF86813884265 +S113299017D0DFF86413884213D0DFF8601388423D +S11329A00FD0DFF85C1388420BD0DFF8581388424D +S11329B007D0DFF85413884203D0DFF8501388425D S11329C001D1012000E00020C0B2704770B50400BE S11329D00D0016002000FFF795FF002805D14FF4E5 -S11329E09071DFF8F40200F095FE002E09D0012E5C -S11329F007D0022E05D04FF49171DFF8DC0200F00D -S1132A0089FEF00705D514F580600068EDB228430F +S11329E09071DFF82C0300F019FF002E09D0012E9E +S11329F007D0022E05D04FF49171DFF8140300F0D4 +S1132A000DFFF00705D514F580600068EDB228438A S1132A1004E014F580600068EDB2A84314F5806109 S1132A200860B00705D514F584600068EDB228434A S1132A3004E014F584600068EDB2A84314F58461E1 S1132A40086070BDF8B504000D0017001E002000DA -S1132A50FFF758FF002805D140F2FF11DFF8780294 -S1132A6000F058FE012F0BD0022F09D0042F07D0FD -S1132A700C2F05D040F20321DFF85C0200F04AFE7F +S1132A50FFF758FF002805D140F2FF11DFF8B0025C +S1132A6000F0DCFE012F0BD0022F09D0042F07D079 +S1132A700C2F05D040F20321DFF8940200F0CEFEC3 S1132A80082E0DD00A2E0BD00C2E09D0092E07D0FB -S1132A90002E05D04FF40271DFF83C0200F03AFE3C +S1132A90002E05D04FF40271DFF8740200F0BEFE80 S1132AA0F80705D514F5A0600068EDB2284304E0EA S1132AB014F5A0600068EDB2A84314F5A0610860A5 S1132AC0B80704D5D4F80405EDB2284303E0D4F8DC @@ -699,778 +699,1295 @@ S1132B80EDB2A843C4F81C05002E05D114F5A560C8 S1132B900068EDB2284304E014F5A5600068EDB2C6 S1132BA0A84314F5A5610860F1BD70B504000D00DB S1132BB016002000FFF7A6FE002805D140F285315B -S1132BC0DFF8140100F0A6FDEDB2F6B244F825607A +S1132BC0DFF84C0100F02AFEEDB2F6B244F82560BD S1132BD070BD38B504000D002000FFF793FE0028F7 -S1132BE005D140F2F141DFF8F00000F093FD082335 -S1132BF001222900C9B22000FFF724FF0122290085 -S1132C00C9B22000FFF7E2FE31BD0000008005409C -S1132C1000500040009005400060004000A00540C6 -S1132C200070004000B005400040024038B5040088 -S1132C300D002000FFF766FE002804D140F29661E3 -S1132C40254800F067FD02222900C9B22000FFF7E1 -S1132C50BDFE082301222900C9B22000FFF7F2FEBD -S1132C6031BD000000C005400050024000D00540C6 -S1132C700060024000E005400070024000F00540A2 -S1132C8000D0034038B504000D002000FFF73AFEE1 -S1132C90002804D140F2EA610F4800F03BFD022213 -S1132CA02900C9B22000FFF791FE08230122290060 -S1132CB0C9B22000FFF7C6FE31BD00000000064087 -S1132CC00010064000200640003006400040064048 -S1132CD0005006400060064060580000DFF8C01154 -S1132CE088420BD0DFF8BC11884207D0DFF8B81156 -S1132CF0884203D0DFF8B411884201D1012000E0FA -S1132D000020C0B270472DE9F84304000F001500FD -S1132D1099462000FFF7E2FF002804D1CC21DFF818 -S1132D20900100F0F7FC002D0ED0022D0CD0012DE7 -S1132D300AD0032D08D0102D06D0202D04D0D22186 -S1132D40DFF86C0100F0E6FCB9F1000F0AD0B9F12C -S1132D50010F07D0B9F1020F04D0D521DFF85001DB -S1132D6000F0D8FCDDF82080B9F1000F02D178081A -S1132D7040450BD2B9F1000F04D00C20B7FBF0F0A2 -S1132D80404503D2D7214A4800F0C4FCB7FBF8F011 -S1132D90B0F57E4F03D9D821454800F0BBFC099E0D -S1132DA0301F0D2803D3D921414800F0B3FCB9F1F9 -S1132DB0020F01D1082000E00020B9F1000F01D179 -S1132DC0002100E0042108436060B7FBF8F0002113 -S1132DD0891CB0FBF1F2521EFF2AF9D8216115F0CB -S1132DE00300800115F0300550EA02202843711ECB -S1132DF008432060BDE8F18310B504002000FFF70C -S1132E006DFF002804D14FF48571294800F082FC3D -S1132E10606850F00200606010BD10B5040020002E -S1132E20FFF75CFF002804D140F22311204800F092 -S1132E3071FC606830F00200606010BD38B50400B9 -S1132E400D002000FFF74AFF002804D140F223219F -S1132E50174800F05FFC7FF00100216811F00F01BA -S1132E608840054204D040F22521114800F052FC6C -S1132E70E0688007FCD5A56031BD38B504000D00BD -S1132E802000FFF72BFF002804D140F27F210848DF -S1132E9000F040FCE0684007FCD5A068286031BD24 -S1132EA0008000400090004000A0004000B00040BE -S1132EB0BC580000DFF81413884200F04A81DFF8A0 -S1132EC01013884200F04581DFF80813884200F0AF -S1132ED04081DFF80413884200F03B81DFF8FC12E4 -S1132EE0884200F03681DFF8F812884200F0318120 -S1132EF0DFF8F012884200F02C81DFF8EC128842EF -S1132F0000F02781DFF8E412884200F02281DFF824 -S1132F10E012884200F01D81DFF8D812884200F0E8 -S1132F201881DFF8D412884200F01381DFF8CC1244 -S1132F30884200F00E81DFF8C812884200F009814F -S1132F40DFF8C012884200F00481DFF8BC12884226 -S1132F5000F0FF80DFF8B412884200F0FA80DFF856 -S1132F60B012884200F0F580DFF8A812884200F021 -S1132F70F080DFF8A412884200F0EB80DFF89C12A6 -S1132F80884200F0E680DFF89812884200F0E18081 -S1132F90DFF89012884200F0DC80DFF88C1288425F -S1132FA000F0D780DFF88412884200F0D280DFF886 -S1132FB08012884200F0CD80DFF87812884200F059 -S1132FC0C880DFF87412884200F0C380DFF86C1206 -S1132FD0884200F0BE80402800F0BB80B0F1102F82 -S1132FE000F0B780DFF85812884200F0B280DFF8B2 -S1132FF05412884200F0AD80DFF84C12884200F091 -S1133000A880DFF84812884200F0A380DFF8B813E4 -S1133010884200F09E80DFF8B413884200F0998063 -S1133020DFF8AC13884200F09480DFF8A8138842DC -S113303000F08F80DFF8A013884200F08A80DFF868 -S11330409C13884200F08580DFF89413884200F0D6 -S11330508080B0F1101F7CD0DFF88813884278D0CC -S1133060DFF88413884274D0DFF88013884270D06C -S1133070DFF87C1388426CD0DFF87813884268D07C -S1133080DFF87413884264D0DFF87013884260D08C -S1133090DFF86C1388425CD0DFF86813884258D09C -S11330A0DFF86413884254D0DFF86013884250D0AC -S11330B0DFF85C1388424CD0DFF85813884248D0BC -S11330C0DFF85413884244D0DFF85013884240D0CC -S11330D0DFF84C1388423CD0DFF84813884238D0DC -S11330E0DFF84413884234D0DFF84013884230D0EC -S11330F0DFF83C1388422CD0DFF83813884228D0FC -S1133100DFF83413884224D0B0F1202F21D0DFF827 -S11331102C1388421DD008281BD0DFF824138842C2 -S113312017D0DFF82013884213D0DFF81C1388422D -S11331300FD0DFF8181388420BD0DFF8141388423D -S113314007D0DFF81013884203D0DFF8081588424F -S113315001D1012000E00020C0B2704710B5040086 -S11331602000FFF7A7FE002805D140F29631DFF8D2 -S1133170E00400F0CFFA14F0704010F1805F0DD13C -S1133180C4F30720DFF8D0140818E1B2890051EA2B -S1133190401050F084400121016011E0200FDFF85D -S11331A0BC1451F820000068A1B2220C12F01F02D6 -S11331B091400843210FDFF8A42452F8211008603D -S11331C010BD00000138FDD17047704701001000A8 -S11331D002001000000110000002100000041000A2 -S11331E0000110100002101000041010005800F02C -S11331F00040101000501020005400F00100002086 -S1133200020000200400002008000020100000201C -S11332102000002040000020800000200001002049 -S1133220090800F00A0800F00B0800F00C0800F090 -S11332300D0800F00E0800F00F0800F0100800F070 -S113324000400010022000F0032000F0042000F0F1 -S113325070B50400DFF81404006810F0E04F08D0E3 -S1133260DFF808040068DFF808140840B0F1805F54 -S113327002D1002C00F1A780DFF8E4030568DFF831 -S1133280F403066855F4006535F4800556F40066C9 -S1133290DFF8CC030560DFF8DC030660A80701D57E -S11332A0A00708D515F0010014F0010191F0010107 -S11332B0C0B208421ED074F003000540DFF8A0033A -S11332C00560002E07D516F07000302809D016F0DE -S11332D07000702805D0002E08D415F03000302876 -S11332E004D14FF48050FFF76DFF03E05FF400203A -S11332F0FFF768FF35F4FE6514F4FE600543DFF85C -S113330078030640DFF874032040064314F00800F5 -S113331056EAC006DFF848030560DFF85803066084 -S11333201020FFF74FFF35F4405514F44050054387 -S113333036F4005614F400500643DFF82803402105 -S11333400160002E06D5DFF82C030660DFF81003B9 -S1133350056005E0DFF808030560DFF81803066080 -S1133360DFF81C030540DFF81C032040054336F05A -S1133370FC5614F0FC500643600008D555F4800553 -S113338036F48006DFF800032040064301E036F0FF -S1133390804620050ED44FF4004000E0401E002873 -S11333A004D0DFF8C41209684906F7D535F400657E -S11333B036F40066DFF8A8020560DFF8B80206609C -S11333C01020FFF7FFFE70BD052000F00010101064 -S11333D000011020004800F080000030005000F090 -S11333E010000030014000F0000100100002001045 -S11333F01000001020000010021C00F0031C00F05C -S11334002000003001001010020010100400101001 -S113341008001010040400F0050400F0010000107E -S11334200200001004000010031800F0041800F05B -S1133430051800F0061800F0071800F0010010202D -S113344000101000005C00F0015C00F0025C00F071 -S1133450035C00F0045C00F030B4DFF8040201689F -S1133460DFF810020268002A02D512F0700001E0B1 -S113347011F0300000280DD010283AD020286FD049 -S1133480302800F0A480602800F0A480702800F0A8 -S1133490A480A5E0C1F38410DFF8F03153F82000D4 -S11334A0DFF8EC31134013F1004F05D0002A00F18E -S11334B0AA800B0500F1A780DFF8D8311B68DFF87C -S11334C0AC41246814F0E04F09D0DFF8A04124682F -S11334D0DFF89C512C40B4F1805F40F08380C3F34B -S11334E04814A41C604313F01F04A41CB0FBF4F0A4 -S11334F081E0DFF87801006810F0E04F08D0DFF8D1 -S11335006C010068DFF868311840B0F1805F02D1C7 -S1133510DFF8840123E0DFF854010068DFF850315C -S11335201840DFF87831984205D1DFF8400100688F -S113353080B202280ED0DFF834010068DFF83031A1 -S11335401840DFF85C31984207D1DFF820010068A9 -S1133550000402D1DFF84C0101E0DFF84C019FE7E1 -S1133560DFF80801006810F0E04F08D0DFF8FC0035 -S11335700068DFF8FC301840B0F1805F02D1DFF85A -S11335802C0123E0DFF8E4000068DFF8E4301840A1 -S1133590DFF80831984205D1DFF8D000006880B226 -S11335A002280ED0DFF8C4000068DFF8C4301840E9 -S11335B0DFF8EC30984207D1DFF8B000006800046F -S11335C002D1DFF8EC0001E0DFF8E80068E747F239 -S11335D0305065E75FF4800062E74FF400405FE736 -S11335E0002032E0C3F34814604313F01F04641C4A -S11335F06400B0FBF4F05C0400D540081B0400D563 -S1133600800851F480014B021FD5002A18D55300BD -S113361010D5DFF87C30134013F1004F03D0002A9B -S113362008D4090506D44000C2F38651491CB0FBF6 -S1133630F1F00AE0C2F3C551491CB0FBF1F004E01B -S1133640C1F3C351491CB0FBF1F030BC704700001A -S1133650A0570000055C00F000E60F40DC5B0000B2 -S113366060E00F4058E00F4050E00F4000E00F4092 -S11336700000FF7070E00F408FFFFF7F300000807C -S1133680FCFF3FF80300C00700004040D456000090 -S11336900008008064E00F40C0E1E4000000011075 -S11336A000000310001BB7000024F4007038390038 -S11336B0C0C62D0000093D0080B500F00EF8114889 -S11336C04CF24F3101601048002101600F48052180 -S11336D001600F480021016001BD0C480021016018 -S11336E070470A480068C00304D509480068401CB4 -S11336F007490860704780B5FFF7F3FF0448006886 -S113370002BD000014E000E018E000E010E000E07A -S11337103C0F002080B5034A10600348016000F0AC -S113372006F8FCE7280F00202C0F00207047704794 -S113373080B5DFF8780600210170DFF874160020E8 -S1133740FDF74DFFC0B2002804D07C21DFF86406E9 -S1133750FFF7E0FF01BDDFF854060078002801D12F -S1133760012000E00020704780B500F01BFC012818 -S113377001D1002011E0DFF834060078002801D0E0 -S113378000200AE000F012FC012805D1DFF81C0635 -S113379001210170012000E0002002BD10B5DFF816 -S11337A00C060078002800F0FF81DFF8000600789E -S11337B0012834D100F014FCDFF8FC0500F03DFCD6 -S11337C0DFF8F80500F039FC00F008FC01220100E4 -S11337D0DFF8EC05FDF71CFF002807D0DFF8E4054F -S11337E000F02BFC012000F01EFCDDE1DFF8D80521 -S11337F000F023FCDFF8D40500F01FFCDFF8D0054F -S113380000F01BFCDFF8CC0500210160DFF8C405E3 -S113381000214160DFF8940502210170C4E1DFF862 -S11338208C050078022840F0F780DFF894254FF4E7 -S11338308071DFF8A405FEF797FBDFF8741591F8A3 -S11338403A12C1F3C01111F0010101290FDBDFF8B5 -S1133850740500F0F2FB022000F0E5FBDFF86005E0 -S1133860FEF701FADFF84405002101709CE100280D -S11338701BD00022DFF86415DFF85C0500F0D6F9F0 -S1133880040024B214F1010F0FD1DFF8380500F061 -S1133890D4FB032000F0C7FBDFF82405FEF7E3F9AF -S11338A0DFF80805002101707EE124B2012C28DB39 -S11338B0DFF82005406800280BD1DFF81C05D0F89C -S11338C08001DFF810150860DFF8080524B24460B1 -S11338D017E0DFF80405D0F88001DFF8F814096870 -S11338E0884206D2DFF8F004D0F88001DFF8E4144F -S11338F00860DFF8E004406824B22018DFF8D4142C -S11339004860DFF8AC04D0F83C02DFF8A414D1F826 -S11339104012884201D1012000E000200128C0F2B9 -S113392043810021DFF89804FEF7A9F900280FD09D -S1133930DFF8900400F081FB042000F074FBDFF852 -S11339408004FEF790F9DFF86404002101702BE194 -S1133950DFF8740400F071FBDFF8840400F06DFB01 -S1133960DFF88014DFF86C04406800F075FADFF8C3 -S1133970740400F062FBDFF8700400F05EFBDFF813 -S11339806414DFF850040068000EC0B200F053FA6B -S1133990DFF85814DFF83C040068000CC0B200F0F3 -S11339A04AFADFF84C14DFF82C040068000AC0B2AD -S11339B000F041FADFF83C14DFF818040068C0B2E4 -S11339C000F039FADFF81C0400F037FB77A000F0B0 -S11339D034FBDFF800044168DFF8F803006800F006 -S11339E05FFB00280FD1DFF8DC0300F026FB052085 -S11339F000F019FBDFF8C803FEF735F9DFF8AC0374 -S1133A0000210170D0E0DFF8C00300F016FBDFF8FE -S1133A109C0303210170C7E0DFF8900300780328BA -S1133A2040F0C280DFF898234FF48071DFF8A803D8 -S1133A30FEF79AFADFF8781391F83A12C1F3C0113D -S1133A4011F0010101290EDBDFF8AC0300F0F5FAF7 -S1133A50022000F0E8FADFF86803FEF704F9D3481F -S1133A6000210170A0E000281AD0DFF89023DFF8CD -S1133A706C13DFF8640300F0D9F8040024B214F1E5 -S1133A80010F0DD1DFF8780300F0D7FA032000F01E -S1133A90CAFACB48FEF7E7F8C4480021017083E076 -S1133AA024B2012C4CDBD74800F0C7FACD4924B22C -S1133AB0200000F0D1F9CB4800F0BFFAD24800F062 -S1133AC0BCFAC849C448D0F88001000EC0B200F066 -S1133AD0B2F9C649C048D0F88001000CC0B200F069 -S1133AE0AAF9C349BC48D0F88001000AC0B200F06A -S1133AF0A2F9C049B848D0F88001C0B200F09BF9DF -S1133B00B84800F09AFA29A000F097FABB4A24B208 -S1133B102100B148D0F8800100F0BEFA00280CD191 -S1133B20A84800F08AFA062000F07DFAA448FEF7BF -S1133B309AF89E480021017036E0A34800F07DFA0F -S1133B409B48D0F83C029A49D1F84012884201D1EE -S1133B50012000E00020012826DBAC4800F06DFACB -S1133B6000F0A6FA00280CD1964800F066FA072067 -S1133B7000F059FA9248FEF776F88C48002101705B -S1133B8012E0914800F059FAA14800F056FA8C4826 -S1133B90FEF769F89F4800F050FA8448002101704C -S1133BA000F02FFA00F08EFA10BD00002E2E2E0029 -S1133BB010B50400207800F0AEFA532804D16078E0 -S1133BC000F0ADFA002801D103200FE0607831281D -S1133BD001D100200AE06078322801D1012005E0FB -S1133BE06078332801D1022000E0032010BD70B5B5 -S1133BF004000026A41C200000F047F90500AE19BB -S1133C00A41C200000F041F986196D1EA41CADB25D -S1133C10022DF6DAF6B2F643200000F036F9F6B2D9 -S1133C20864201D0002000E0012070BD2DE9F04162 -S1133C3005000E0014005FF00008002E01D0002DD6 -S1133C4004D140F236215B48FFF764FD2800FFF7FA -S1133C50AFFF0700FFB2032F01D10020A3E028002B -S1133C60FFF7C5FF002802D15FF0FF309BE0FFB2F1 -S1133C70002F03D0022F5AD028D392E0AD1C280085 -S1133C8000F003F90700AD1C280000F0FEF8000264 -S1133C903060AD1CD6F80080280000F0F6F810EB78 -S1133CA008003060AD1CB7F10308002C0DD00026CD -S1133CB006E0280000F0E9F8B6B23055AD1C761CD9 -S1133CC0B6B20FFA88F84645F3DB6AE0AD1C28006B -S1133CD000F0DBF80700AD1C280000F0D6F8000463 -S1133CE03060AD1CD6F80080280000F0CEF818EB48 -S1133CF000203060AD1CD6F80080280000F0C5F824 -S1133D0010EB08003060AD1CB7F10408002C0DD096 -S1133D10002606E0280000F0B8F8B6B23055AD1C15 -S1133D20761CB6B20FFA88F84645F3DB39E0AD1CD1 -S1133D30280000F0AAF80700AD1C280000F0A5F840 -S1133D4000063060AD1CD6F80080280000F09DF815 -S1133D5018EB00403060AD1CD6F80080280000F05D -S1133D6094F818EB00203060AD1CD6F800802800D1 -S1133D7000F08BF810EB08003060AD1CB7F10508BB -S1133D80002C0DD0002606E0280000F07EF8B6B224 -S1133D903055AD1C761CB6B20FFA88F84645F3DBF5 -S1133DA0FFE7404600B2BDE8F0810000430F002069 -S1133DB004000020985900004C5A0000245A0000C6 -S1133DC038020020FC5B0000045C0000705A000014 -S1133DD0C8590000200F00208C0C00200C0E00207D -S1133DE0D05B0000E00E0020005B0000E20E00202B -S1133DF0E40E0020E60E0020945A00008C0D0020F2 -S1133E00B85A0000945B0000545B00001C5B000087 -S1133E106C5B0000F859000080B5010011F00F0040 -S1133E203030C9B20A2901DBC01D02E0C0B200F083 -S1133E3072F9C0B202BD38B504000D00E4B2200925 -S1133E40FFF7EAFF287014F00F00FFF7E5FF687032 -S1133E500020A870280032BD0200491C0A23B2FBCE -S1133E60F3F2002AF9D100220A700200491E0A2046 -S1133E70B2FBF0F300FB1320303008700A20B2FBD1 -S1133E80F0F2002AF2D10800704770B50400002552 -S1133E90002609E03038C0B20A2800DBC01FEDB2AA -S1133EA0C0B210EB0515761CF6B2022E0FDAF6B28C -S1133EB0305D00F030F9C0B2B0F13001172904D2FE -S1133EC0C0B2B0F13A010729E4D2002001E0280091 -S1133ED0C0B270BD80B52F480088ADF8000000F076 -S1133EE037F900F07FFB2C48002101702B48007843 -S1133EF0012802D100A800F055F901BD80B5284879 -S1133F0000F0AAFB012805D12348002101702448B0 -S1133F1000F048F901BD704780B51F4A1278002AA5 -S1133F2002D1C9B200F06CFB00F036F901BD1A48A9 -S1133F300078002805D0022807D004D3032806D02F -S1133F4007E0402006E0002004E0002002E000201A -S1133F5000E0402080B270470F480078002805D068 -S1133F60022807D004D3032806D007E0402006E047 -S1133F70002004E0002002E0002000E0402080B2A5 -S1133F807047064801210170704704480021017000 -S1133F9070470000E245000000000020480F0020A8 -S1133FA0A00E002080B500F0EEF802BD00B589B087 -S1133FB000A8202100F0B2FB00A93148FDF73CFF26 -S1133FC0002808D10098002805D09DF80800C006F4 -S1133FD001D4012000E0002009B000BD284870474A -S1133FE080B52848002180F824120A222649254851 -S1133FF0FDF70EFB002803D12248012180F824128A -S113400001BD80B51F4890F82402012802D11D4843 -S1134010FDF729FE1D4800F093FC0128FAD018484A -S1134020FDF734FF01BD80B5164890F8240201283D -S113403002D11448FDF717FE01BD10B50400114864 -S113404090F82402012817D10E492000FDF7CFFF74 -S1134050002811D50B48002180F824120948FDF7E7 -S113406002FE09E02178094800F054FC074800F0FA -S113407026FC0028FAD0641C20780028F2D110BD58 -S1134080385B00005C040020A45B000000C000401A -S113409080B500F083FC01BD80B500F08AFC02BD50 -S11340A080B500F0B0FC02BD80B500F009FD02BD92 -S11340B080B500F0C2FC002801D1002001E000F02E -S11340C027FD02BD80B5FFF7EFFF00280BD0FFF7F7 -S11340D022FFFFF702FB04484FF4C041016046F29F -S11340E004000068804701BD08ED00E070B50400DD -S11340F00D00160005E0287820706D1C641CFFF785 -S113410016FB3000461E80B20028F4D170BD80B585 -S113411000F064FE01BD80B500F06CFE02BD3038D5 -S11341200A2801D2012000E00020C0B2704750F8F4 -S1134130041B61B150F8042BD30744BFA9F1010358 -S11341409A18002342F8043B091FFAD1EFE770479D -S1134150DFF8700400210170DFF868040021816435 -S1134160DFF86004002180F84310DFF858040021D0 -S1134170A0F84410DFF84C0400218170DFF84404F7 -S1134180002141707047DFF83C040078002801D119 -S1134190002000E001207047DFF82804002180F8A7 -S11341A04310704780B50178FF291ED100F091F8C3 -S11341B0DFF8100490F84300012802D1102000F029 -S11341C07EF8DFF80004B0F9440001280CDBDFF8C6 -S11341D0F403012180F84310DFF8E803B0F9441038 -S11341E0DFF8E40300F053F801BDDFF8D8130978D1 -S11341F001294BD10178C92932D0CC293FD0CF290C -S11342003AD0D0292FD0D12933D0D2292ED0F32996 -S113421017D0F4290FD0F5290AD0F6290ED0FA299F -S113422012D0FC2913D0FD2914D0FE2915D029E081 -S113423000F0DAF8BCE700F0F9F8B9E700F0C9F8E3 -S1134240B6E700F018F9B3E700F0ABF8B0E700F018 -S1134250A2F8ADE700F087F8AAE700F075F8A7E741 -S113426000F03DF9A4E700F05CF9A1E700F01AF9C9 -S11342709EE700F087F99BE700F098F998E700F0D3 -S1134280ABF995E7202000F01AF891E7ACE780B588 -S113429089B2FFF741FE01BD10B4002302E00478A7 -S11342A0E318401C0C00611E002CF8D1DBB2136033 -S11342B0012010BC7047C348002141707047C149B8 -S11342C0FE22CA70BF490871BE480221A0F84410FA -S11342D0704710B50400FFF73EFA002803D1102000 -S11342E0FFF7EDFF2FE0FFF7E6FFB648012101706D -S11342F0B448FF21C170B34800210171B14800796D -S113430050F01000AF490871AE4800214171AD482A -S1134310AC4949794171FFF70AFEAA498871FFF750 -S11343201BFEA849C871FFF717FE80B2000AA54911 -S11343300872A44801214172A24801218172A14856 -S11343400821A0F8441010BD10B504009D480021B8 -S11343500170FFF7B0FF9B48FF21C170994801210C -S1134360A0F8441010BD9749FF22CA709549002255 -S11343700A719449934A52784A71924900228A7187 -S113438090490022CA718F4900220A728D4906227F -S1134390A1F84420704710B504000020FFF78FFFF8 -S11343A010BD8849FF22CA708649884A8A648549B3 -S11343B000220A71834900224A71824900228A71CB -S11343C080490722C1F807207E490822A1F8442029 -S11343D070477C49FF22CA707A49406888647948EA -S11343E00121A0F84410704710B50400FFF79FFDA9 -S11343F0401E6178884203DA2220FFF760FF14E050 -S1134400627892B26F48816C7148FFF76FFE6D4815 -S1134410FF21C1706B48806C617808186949886411 -S11344206078401C6749A1F8440010BD10B5040031 -S1134430FFF77DFD401E6178884203DA2220FFF7F2 -S11344403EFF17E05F4861688164627892B25D481C -S1134450816C5F48FFF74AFE5A48FF21C1705948F2 -S1134460806C61780818574988646078401C554905 -S1134470A1F8440010BD80B55249FF22CA70554AC4 -S113448041685048806CFFF707FF4E4908714D485A -S1134490002141714B48002181714A480821A0F84C -S11344A0441001BD10B504004648FF21C1704548C1 -S11344B000210171434800214171FFF738FD414952 -S11344C0887140480021C1713E48002101723D4875 -S11344D0002141723B480721A0F8441010BD10B5DB -S11344E00400FFF724FD621C80B2411E3548806C35 -S11344F0FFF7D2FD002803D13120FFF7E0FE0FE0E3 -S11345003048FF21C170FFF712FD2E49896C80B23B -S1134510401E40182B4988642A480121A0F8441001 -S113452010BD10B50400FFF702FD801E61788842BB -S113453003DA2220FFF7C3FE23E02248FF21C170E3 -S113454020480121A0F844106078002807D1FFF723 -S1134550AFFD002802D13120FFF7B1FE11E0A21C0B -S113456061781848806CFFF797FD002803D131204B -S1134570FFF7A5FE05E01348806C6178081811491F -S1134580886410BD80B541680E48806CFFF788FDD3 -S1134590002803D13120FFF792FE06E00948FF21ED -S11345A0C17008480121A0F8441001BD10B50400F1 -S11345B0FFF7ADFD0348FF21C17002480121A0F8B7 -S11345C0441010BD100E0020130E00200C5C0000DF -S11345D0140E0020170E002080B53120FFF76FFE67 -S11345E001BDFF0080B54648FEF7B8FDFEF734FF75 -S11345F060234FF461420100424800F0B8F801BD65 -S113460070B504000D00EDB2412D03DB57213E4887 -S1134610FFF780F82800C0B200F05EF8C0B20128AD -S113462003D05B213848FFF775F800260DE0FFF74B -S11346307EF8B6B2305D00F04FF8C0B2012803D066 -S113464064213148FFF766F8761C2800C0B2B6B280 -S113465080B28642EBD370BD10B504002B480078BD -S113466000280CD12A4800F02AF8012805D127484F -S113467001210170274800210170002010BD254848 -S1134680007823494018401C00F019F80128F4D19F -S113469020480078401C1F4908701E4800781C49B7 -S11346A009788842E9D11B48027892B21A4920005D -S11346B0FFF71CFD1548002101700120DEE710B54D -S11346C00400104800F011F910F1010F02D020701D -S11346D0012000E0002010BD80B50100C9B20948E6 -S11346E000F018F9002803D1002007E0FFF71FF8B5 -S11346F0044800F0E4F80028F8D0012002BD0000CE -S11347000100001000C000405C590000450F00206B -S11347105C0E0020440F00205D0E0020002200F0FB -S113472075BB0000DFF83C1288421BD0DFF838125A -S1134730884217D0DFF83412884213D0DFF83012E1 -S113474088420FD0DFF82C1288420BD0DFF82812F1 -S1134750884207D0DFF82412884203D0DFF8201201 -S1134760884201D1012000E00020C0B27047F8B5B2 -S113477004000E0017001D002000FFF7D3FF0028DF -S113478005D14FF4B071DFF8FC01FEF7C3FF002F31 -S113479005D140F26111DFF8EC01FEF7BBFFDFF851 -S11347A0E801006810F0E04F27D0DFF8DC01006872 -S11347B0DFF8D8110840B0F1805F1ED0DFF8C801DF -S11347C00068DFF8C8110840DFF8C411884205D139 -S11347D0DFF8B401006880B202280ED0DFF8A80127 -S11347E00068DFF8A8110840DFF8A811884206D154 -S11347F0DFF894010068000401D1102000E00820D3 -S113480000FB07F0864205D24FF4B171DFF8740162 -S1134810FEF780FF200000F038F8B6EB071F05D242 -S1134820206B50F0200020637F0803E0206B30F001 -S113483020002063F000B0FBF7F0401C4008810921 -S113484061624021B0FBF1F202FB1102A262E56257 -S11348500020A061200000F001F8F1BD10B50400B3 -S11348602000FFF75FFF002805D14FF4FB71DFF84C -S11348701401FEF74FFFE06A50F01000E062206B75 -S113488040F201310843206310BD10B5040020003C -S1134890FFF748FF002805D140F21621DFF8E400B5 -S11348A0FEF738FFA0690007FCD4E06A30F010007E -S11348B0E062206BDFF8E0100840206310BD10B503 -S11348C004002000FFF72EFF002805D140F25541D7 -S11348D0DFF8B000FEF71EFFA069C0F3401010F02F -S11348E0010090F00100C0B210BD10B5040020001A -S11348F0FFF718FF002805D140F27641DFF8840065 -S1134900FEF708FFA069C00601D4206801E05FF04B -S1134910FF3010BD38B504000D002000FFF702FF82 -S1134920002804D140F2C9411648FEF7F3FEA069FD -S1134930800603D4EDB22560012000E0002032BDE2 -S113494010B504002000FFF7EDFE002804D140F26A -S11349503B510C48FEF7DEFEA069C0F3C00010F026 -S1134960010010BD00C0004000D0004000E0004045 -S113497000F0004000000140001001400020014010 -S1134980003001400058000000E00F400000FF70BC -S11349900000011000000310FEFCFFFFDFF83004EC -S11349A05FF0FF310160DFF82C045FF0FF3101603C -S11349B0704770B504000D001600200000F0A5F942 -S11349C0FF2805D02819401E00F09FF9FF2801D1C7 -S11349D0002017E0600A4FF400714843DFF8F81331 -S11349E00968884207D12B0032002100DFF8E40374 -S11349F000F0E1F806E02B0032002100DFF8D003DC -S1134A0000F0D9F870BD70B504000D00200000F06E -S1134A107CF906002819401E00F077F9F6B2FF2E43 -S1134A2002D0C0B2FF2801D1002005E00100C9B2C4 -S1134A303000C0B200F02CF970BD80B500200090A9 -S1134A40DFF89003006810F1010F01D1012036E076 -S1134A500098DFF880134968081800900098DFF880 -S1134A6074138968081800900098DFF86813C968FF -S1134A70081800900098DFF85C1309690818009082 -S1134A800098DFF850134969081800900098DFF87F -S1134A9044138969081800900098DFF83813C9692D -S1134AA0081800900098C04300900098401C0090A3 -S1134AB000AA0421C8480068F030FFF77AFF02BD5D -S1134AC00020C549096809680818C3490968496884 -S1134AD00818C149096889680818BF490968C9687C -S1134AE00818BD49096809690818BB490968496972 -S1134AF00818B949096889690818B7490968D1F8D3 -S1134B00F0100818002801D1012000E000207047AF -S1134B1080B5B048006810F1010F06D0AD4800F030 -S1134B208DF8002801D100200CE0A948006810F19C -S1134B30010F06D0A64800F081F8002801D100201A -S1134B4000E0012002BD80B54FF40072B1FBF2F326 -S1134B5003FB1213002B01D000200BE002688A42F1 -S1134B6001D1012006E001604FF40072001DFFF73F -S1134B70BDFA012002BD38B504000D0095488442F9 -S1134B8008D1934C29002000FFF7DDFF002810D145 -S1134B9000200FE090480068854203D18D4C8E4878 -S1134BA00568EFE7200000F049F80028EAD100206A -S1134BB000E0200032BD2DE9F04104000F00150093 -S1134BC01E00780A4FF4007101FB00F8206810F110 -S1134BD0010F07D141462000FFF7B5FF002801D19E -S1134BE0002029E02068404508D041462000FFF716 -S1134BF0C2FF0400002C01D100201DE02068381AF7 -S1134C000019071DFEF793FD201D381AB0F5007F2B -S1134C100AD318F500712000FFF7ADFF0400002C43 -S1134C2001D1002008E0271D287838707F1C6D1CF6 -S1134C30761E002EE6D10120BDE8F081F8B505000E -S1134C400124286800F061F8C0B2FF2801D10020D7 -S1134C501DE0002600E0761C802E16D2286810EB9A -S1134C60860715EB860040680090FEF760FD04227D -S1134C70390000A800F00BF9002801D0002404E05A -S1134C80386800998842E6D000242000C0B2F2BD02 -S1134C9070B50D00EDB2C0B2854201D2002033E000 -S1134CA04D49097AC0B2884205D34B4991F8C810DE -S1134CB0EDB2A94201D2002026E0C0B200F04FF8C4 -S1134CC004002800C0B200F04AF806002800C0B270 -S1134CD000F062F88019401E001B401C850A002663 -S1134CE000E0761CB6B2ADB2AE420CD2FEF71FFDA8 -S1134CF0B6B24FF4806000FB064000F0A1F8002833 -S1134D00EFD0002000E0012070BD38B5040000257C -S1134D1000E06D1CEDB2112D1FD2FEF708FDEDB2BF -S1134D200C202D4900FB051000688442F1D3EDB23C -S1134D300C20294900FB05100068EDB20C21264A1D -S1134D4001FB0521496808188442E2D2EDB20C2027 -S1134D50214900FB0510007A00E0FF2032BD38B580 -S1134D600400002500E06D1CEDB2112D11D2FEF7F8 -S1134D70DEFCEDB20C20184900FB0510007AE4B209 -S1134D80A042F0D1EDB20C20134900FB05100068DD -S1134D9001E05FF0FF3032BD38B50400002500E0CB -S1134DA06D1CEDB2112D11D2FEF7C1FCEDB20C2039 -S1134DB0094900FB0510007AE4B2A042F0D1EDB23B -S1134DC00C20054900FB0510406800E0002032BDBE -S1134DD0840600208808002088550000044B9D4666 -S1134DE0C046C046C046C046FFF7CFF800F0CEF834 -S1134DF05011002010B50400200000F0D2F8002863 -S1134E0001D0203CFFE7200010BD000000B500BF2A -S1134E10130096469446103928BFA0E80C50FAD8DF -S1134E205FEA417C28BF0CC048BF40F8042BC90787 -S1134E3028BF20F8022B48BF00F8012B00BD00005A -S1134E4010B50400A00504D09C21DFF81001FEF782 -S1134E5061FCDFF80C0140F601210160DFF8040178 -S1134E600460DFF80401DFF804110160DFF8F800E2 -S1134E7000688007FAD4DFF8F800006840F60121E2 -S1134E80084202D05FF0FF3000E0002010BD70B592 -S1134E9004000D00160015F0030F04D0DF21DFF825 -S1134EA0BC00FEF737FC16F0030F04D0E021DFF856 -S1134EB0AC00FEF72FFCDFF8A80042F201610160AC -S1134EC0DFF8B0000068C00739D5002E39D0E809F2 -S1134ED0C001DFF89010086008E015F07C00DFF8EE -S1134EE0981022680A50241D2D1D361F15F07C0FC2 -S1134EF004D1DFF888000068002801D1002EECD12D -S1134F00DFF87C00DFF87C100160DFF874000068D3 -S1134F10C007FAD4D9E7DFF84C000560DFF8680071 -S1134F2021680160DFF84000DFF858100160DFF805 -S1134F3038000068C007FAD4241D2D1D361F002E2A -S1134F40E9D1DFF82C00006842F20161084202D086 -S1134F505FF0FF3000E0002070BD0000405700000B -S1134F6014D00F4000D00F4008D00F40020042A4DC -S1134F700CD00F40A0E10F4000D10F4030D00F40C3 -S1134F8020D00F40010042A404D00F4000F011F8DB -S1134F90002801D000F010F8002000F021F800F003 -S1134FA039F861381A2801D2012000E00020C0B28B -S1134FB0704701207047000010B507497944183143 -S1134FC0064C7C44163404E00A68081D51188847CE -S1134FD00146A142F8D110BD040B0000240B0000CF -S1134FE080B500F005F800F017F800F023F8FCE7AE -S1134FF080B50648FEF72CF90548FEF7AFF8032103 -S11350005FF04020FDF73EFE01BD00008003C001BB -S11350100100002000F01AB880B5FEF787FBFEF708 -S11350204BFBFFF735F8FEF783FBFEF753FF00F069 -S113503013F801BD80B5FEF77AFBFEF752FBFEF7CD -S1135040ADFBFEF75BFF00F012F801BD07463846E2 -S113505000F030F8FBE7000080B51448012101702E -S1135060FEF749FB1249086000F001F801BD80B564 -S1135070FEF798FF012817D0FEF76DFB002813D028 -S11350800A48007801280FD1FEF735FB0849096862 -S11350903231884208D3054800210170FEF764FBD1 -S11350A0002801D1FFF70EF801BD0000420F0020D7 -S11350B0300F002080B5C046C046024A11001820B7 -S11350C0ABBEFBE7260002006100620063006400DF -S11350D0650066006700680069006A006B006C0088 -S11350E06D006E006F007000710072007300740038 -S11350F0750076007700780079007A00A100A2009C -S1135100A300A500AC00AF00E000E100E200E30072 -S1135110E400E500E600E700E800E900EA00EB004F -S1135120EC00ED00EE00EF00F000F100F200F300FF -S1135130F400F500F600F800F900FA00FB00FC00AA -S1135140FD00FE00FF000101030105010701090143 -S11351500B010D010F0111011301150117011901B3 -S11351601B011D011F012101230125012701290123 -S11351702B012D012F0131013301350137013A0192 -S11351803C013E01400142014401460148014B01FA -S11351904D014F01510153015501570159015B0163 -S11351A05D015F01610163016501670169016B01D3 -S11351B06D016F0171017301750177017A017C0141 -S11351C07E019201B103B203B303B403B503B60382 -S11351D0B703B803B903BA03BB03BC03BD03BE03DF -S11351E0BF03C003C103C303C403C503C603C7038A -S11351F0C803C903CA033004310432043304340439 -S1135200350436043704380439043A043B043C04B6 -S11352103D043E043F044004410442044304440466 -S1135220450446044704480449044A044B044C0416 -S11352304D044E044F0451045204530454045504C1 -S113524056045704580459045A045B045C045E046D -S11352505F047021712172217321742175217621DB -S11352607721782179217A217B217C217D217E215E -S11352707F2141FF42FF43FF44FF45FF46FF47FFB5 -S113528048FF49FF4AFF4BFF4CFF4DFF4EFF4FFFC6 -S113529050FF51FF52FF53FF54FF55FF56FF57FF76 -S11352A058FF59FF5AFF00004100420043004400E8 -S11352B0450046004700480049004A004B004C00A6 -S11352C04D004E004F005000510052005300540056 -S11352D0550056005700580059005A002100E0FFBD -S11352E0E1FFE5FFE2FFE3FFC000C100C200C3002D -S11352F0C400C500C600C700C800C900CA00CB006E -S1135300CC00CD00CE00CF00D000D100D200D3001D -S1135310D400D500D600D800D900DA00DB00DC00C8 -S1135320DD00DE007801000102010401060108012C -S11353300A010C010E0110011201140116011801D9 -S11353401A011C011E012001220124012601280149 -S11353502A012C012E0130013201340136013901B8 -S11353603B013D013F0141014301450147014A0120 -S11353704C014E01500152015401560158015A0189 -S11353805C015E01600162016401660168016A01F9 -S11353906C016E01700172017401760179017B0167 -S11353A07D01910191039203930394039503960362 -S11353B09703980399039A039B039C039D039E03FD -S11353C09F03A003A103A303A403A503A603A703A8 -S11353D0A803A903AA031004110412041304140457 -S11353E0150416041704180419041A041B041C04D5 -S11353F01D041E041F042004210422042304240485 -S1135400250426042704280429042A042B042C0434 -S11354102D042E042F0401040204030404040504CF -S113542006040704080409040A040B040C040E040B -S11354300F046021612162216321642165216621B9 -S11354406721682169216A216B216C216D216E21FC -S11354506F2121FF22FF23FF24FF25FF26FF27FFC3 -S113546028FF29FF2AFF2BFF2CFF2DFF2EFF2FFFE4 -S113547030FF31FF32FF33FF34FF35FF36FF37FF94 -S113548038FF39FF3AFF0000C700FC00E900E200E2 -S1135490E400E000E500E700EA00EB00E800EF00CC -S11354A0EE00EC00C400C500C900E600C600F4002C -S11354B0F600F200FB00F900FF00D600DC00A200B9 -S11354C0A300A500A7209201E100ED00F300FA007B -S11354D0F100D100AA00BA00BF001023AC00BD0047 -S11354E0BC00A100AB00BB009125922593250225A9 -S11354F024256125622556255525632551255725E3 -S11355005D255C255B251025142534252C251C25BB -S113551000253C255E255F255A25542569256625E9 -S1135520602550256C256725682564256525592542 -S11355305825522553256B256A2518250C258825C1 -S113554084258C2590258025B103DF009303C003B7 -S1135550A303C303B500C403A6039803A903B403B8 -S11355601E22C603B50329226122B10065226422EA -S113557020232123F7004822B0001922B7001A2261 -S11355807F20B200A025A0000060000000200000E1 -S11355900300000000800000002000000400000060 -S11355A000A00000002000000500000000C0000072 -S11355B0002000000600000000E0000000200000C1 -S11355C007000000000001000020000008000000A7 -S11355D0002001000020000009000000004001003C -S11355E0002000000A00000000600100002000000C -S11355F00B00000000800100002000000C000000EF -S113560000A00100002000000D00000000C0010007 -S1135610002000000E00000000E001000020000057 -S11356200F000000000002000080000010000000D5 -S11356300080020000800000110000000000030050 -S113564000800000120000000080030000800000C1 -S113565013000000809A90418E418F804545454952 -S113566049498E8F9092924F994F555559999A9BCB -S11356709C9D9E9F41494F55A5A5A6A7A8A9AAAB45 -S1135680AC21AEAFB0B1B2B3B4B5B6B7B8B9BABB6A -S1135690BCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCE -S11356A0CCCDCECFD0D1D2D3D4D5D6D7D8D9DADBBE -S11356B0DCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBAE -S11356C0ECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFB9E -S11356D0FCFDFEFF40420F0000201C0080841E00E1 -S11356E000802500999E36000040380000093D00E6 -S11356F000803E0000004B00404B4C0000204E0058 -S1135700808D5B0000C05D000080700000127A0094 -S113571000007D0080969800001BB7000080BB004D -S1135720C0E8CE00647ADA000024F4000000FA0035 -S113573080A81201002D310100366E0140787D01F0 -S1135740433A5C576F726B5C736F66747761726512 -S11357505C4F70656E424C545C5461726765745C56 -S113576044656D6F5C41524D434D335F4C4D335333 -S11357705F454B5F4C4D3353363936355F494152A3 -S11357805C426F6F745C6C69625C647269766572AA -S11357906C69625C666C6173686C69622E6300009C -S11357A0433A5C576F726B5C736F667477617265B2 -S11357B05C4F70656E424C545C5461726765745CF6 -S11357C044656D6F5C41524D434D335F4C4D3353D3 -S11357D05F454B5F4C4D3353363936355F49415243 -S11357E05C426F6F745C6C69625C6472697665724A -S11357F06C69625C73797363746C2E6300000000DF -S1135800433A5C576F726B5C736F66747761726551 -S11358105C4F70656E424C545C5461726765745C95 -S113582044656D6F5C41524D434D335F4C4D335372 -S11358305F454B5F4C4D3353363936355F494152E2 -S11358405C426F6F745C6C69625C647269766572E9 -S11358506C69625C756172746C69622E630000002D -S1135860433A5C576F726B5C736F667477617265F1 -S11358705C4F70656E424C545C5461726765745C35 -S113588044656D6F5C41524D434D335F4C4D335312 -S11358905F454B5F4C4D3353363936355F49415282 -S11358A05C426F6F745C6C69625C64726976657289 -S11358B06C69625C6770696F2E630000433A5C57E1 -S11358C06F726B5C736F6674776172655C4F706541 -S11358D06E424C545C5461726765745C44656D6FD0 -S11358E05C41524D434D335F4C4D33535F454B5FE9 -S11358F04C4D3353363936355F4941525C426F6FF4 -S1135900745C6C69625C6472697665726C69625C11 -S11359107373692E63000000433A5C576F726B5CCB -S1135920736F6674776172655C4F70656E424C5438 -S11359305C5461726765745C536F757263655C4136 -S1135940524D434D335F4C4D33535C4941525C7669 -S11359506563746F72732E6300000000433A5C57F2 -S11359606F726B5C736F6674776172655C4F7065A0 -S11359706E424C545C5461726765745C536F75720B -S113598063655C41524D434D335F4C4D33535C75FD -S11359906172742E63000000433A5C576F726B5C53 -S11359A0736F6674776172655C4F70656E424C54B8 -S11359B05C5461726765745C536F757263655C6691 -S11359C0696C652E6300000050617273696E672014 -S11359D06669726D776172652066696C6520746FA3 -S11359E0206F627461696E206572617365207369EA -S11359F07A652E2E2E0000004669726D77617265FD -S1135A002075706461746520737563636573736670 -S1135A10756C6C7920636F6D706C657465640A0DC8 -S1135A20000000004F70656E696E67206669726DD4 -S1135A30776172652066696C6520666F7220726595 -S1135A406164696E672E2E2E000000004669726D37 -S1135A507761726520757064617465207265717513 -S1135A606573742064657465637465640A0D00006D -S1135A705374617274696E67207468652070726F04 -S1135A806772616D6D696E672073657175656E63AC -S1135A90650A0D0052656164696E67206C696E6504 -S1135AA02066726F6D2066696C652E2E2E455252EB -S1135AB04F520A0D00000000496E76616C69642043 -S1135AC0636865636B73756D20666F756E642E2EE7 -S1135AD02E4552524F520A0D0000000053E6FFFFBC -S1135AE0440F000004000020000000002FC5FFFF49 -S1135AF0040000002001000000000020000000005D -S1135B002062797465732066726F6D206D656D6FA8 -S1135B107279206174203078000000005772697433 -S1135B20696E672070726F6772616D206368656368 -S1135B306B73756D2E2E2E002F64656D6F70726FF2 -S1135B40675F656B5F6C6D3373363936352E7372F0 -S1135B506563000020627974657320746F206D653D -S1135B606D6F72792061742030780000436C6F731C -S1135B70696E67206669726D776172652066696C0B -S1135B80650A0D0001030507090E10121416181CEE -S1135B901E00000050726F6772616D6D696E672040 -S1135BA0000000002F626F6F746C6F672E7478743E -S1135BB00000000080B541210148FDF7ABFD01BDA7 -S1135BC018590000222A3A3C3E3F7C7F0000000026 -S1135BD045726173696E67200000000000E10F40A8 -S1135BE004E10F4008E10F40C046C046C046C0462D -S1135BF0FFF7CCF92B2C3B3D5B5D00004552524F27 -S1135C00520A0D004F4B0A0D000000004F70656EE4 -S10B5C10424C540004010000A1 -S9035BE9B8 +S1132BE005D140F25241DFF8280100F017FE02221D +S1132BF02900C9B22000FFF7E9FE082304222900B6 +S1132C00C9B22000FFF71EFF31BD38B504000D0026 +S1132C102000FFF777FE002805D140F2F141DFF8EC +S1132C20F00000F0FBFD082301222900C9B22000B6 +S1132C30FFF708FF01222900C9B22000FFF7C6FEF2 +S1132C4031BD000000800540005000400090054068 +S1132C500060004000A005400070004000B0054046 +S1132C600040024038B504000D002000FFF74AFE82 +S1132C70002804D140F29661254800F0CFFD0222DD +S1132C802900C9B22000FFF7A1FE08230122290070 +S1132C90C9B22000FFF7D6FE31BD000000C00540D8 +S1132CA00050024000D005400060024000E00540B2 +S1132CB00070024000F0054000D0034038B5040025 +S1132CC00D002000FFF71EFE002804D140F2EA6147 +S1132CD00F4800F0A3FD02222900C9B22000FFF72B +S1132CE075FE082301222900C9B22000FFF7AAFEBD +S1132CF031BD0000000006400010064000200640E0 +S1132D000030064000400640005006400060064087 +S1132D1098780000DFF8C01188420BD0DFF8BC11AE +S1132D20884207D0DFF8B811884203D0DFF8B41125 +S1132D30884201D1012000E00020C0B270472DE993 +S1132D40F84304000F00150099462000FFF7E2FF46 +S1132D50002804D1CC21DFF8900100F05FFD002DA4 +S1132D600ED0022D0CD0012D0AD0032D08D0102D29 +S1132D7006D0202D04D0D221DFF86C0100F04EFDE6 +S1132D80B9F1000F0AD0B9F1010F07D0B9F1020F60 +S1132D9004D0D521DFF8500100F040FDDDF820809B +S1132DA0B9F1000F02D1780840450BD2B9F1000FF8 +S1132DB004D00C20B7FBF0F0404503D2D7214A4899 +S1132DC000F02CFDB7FBF8F0B0F57E4F03D9D82105 +S1132DD0454800F023FD099E301F0D2803D3D92157 +S1132DE0414800F01BFDB9F1020F01D1082000E0B9 +S1132DF00020B9F1000F01D1002100E004210843B3 +S1132E006060B7FBF8F00021891CB0FBF1F2521EA0 +S1132E10FF2AF9D8216115F00300800115F030056F +S1132E2050EA02202843711E08432060BDE8F18364 +S1132E3010B504002000FFF76DFF002804D14FF403 +S1132E408571294800F0EAFC606850F00200606077 +S1132E5010BD10B504002000FFF75CFF002804D16A +S1132E6040F22311204800F0D9FC606830F00200E1 +S1132E70606010BD38B504000D002000FFF74AFF64 +S1132E80002804D140F22321174800F0C7FC7FF04A +S1132E900100216811F00F018840054204D040F27E +S1132EA02521114800F0BAFCE0688007FCD5A56034 +S1132EB031BD38B504000D002000FFF72BFF0028BA +S1132EC004D140F27F21084800F0A8FCE0684007E4 +S1132ED0FCD5A068286031BD00800040009000400F +S1132EE000A0004000B00040F4780000DFF8DC13DC +S1132EF0884200F04A81DFF8D813884200F0458107 +S1132F00DFF8D013884200F04081DFF8CC13884208 +S1132F1000F03B81DFF8C413884200F03681DFF80B +S1132F20C013884200F03181DFF8B813884200F002 +S1132F302C81DFF8B413884200F02781DFF8AC134A +S1132F40884200F02281DFF8A813884200F01D8136 +S1132F50DFF8A013884200F01881DFF89C13884240 +S1132F6000F01381DFF89413884200F00E81DFF83B +S1132F709013884200F00981DFF88813884200F03A +S1132F800481DFF88413884200F0FF80DFF87C13AB +S1132F90884200F0FA80DFF87813884200F0F58068 +S1132FA0DFF87013884200F0F080DFF86C13884279 +S1132FB000F0EB80DFF86413884200F0E680DFF86D +S1132FC06013884200F0E180DFF85813884200F073 +S1132FD0DC80DFF85413884200F0D780DFF84C130C +S1132FE0884200F0D280DFF84813884200F0CD8098 +S1132FF0DFF84013884200F0C880DFF83C138842B1 +S113300000F0C380DFF83413884200F0BE8040280B +S113301000F0BB80B0F1102F00F0B780DFF8201370 +S1133020884200F0B280DFF81C13884200F0AD80C3 +S1133030DFF81413884200F0A880DFF810138842E8 +S113304000F0A380DFF88014884200F09E80DFF84F +S11330507C14884200F09980DFF87414884200F0F0 +S11330609480DFF87014884200F08F80DFF86814D1 +S1133070884200F08A80DFF86414884200F085807A +S1133080DFF85C14884200F08080B0F1101F7CD01F +S1133090DFF85014884278D0DFF84C14884274D09A +S11330A0DFF84814884270D0DFF8441488426CD0AA +S11330B0DFF84014884268D0DFF83C14884264D0BA +S11330C0DFF83814884260D0DFF8341488425CD0CA +S11330D0DFF83014884258D0DFF82C14884254D0DA +S11330E0DFF82814884250D0DFF8241488424CD0EA +S11330F0DFF82014884248D0DFF81C14884244D0FA +S1133100DFF81814884240D0DFF8141488423CD009 +S1133110DFF81014884238D0DFF80C14884234D019 +S1133120DFF80814884230D0DFF8041488422CD029 +S1133130DFF80014884228D0DFF8FC13884224D03A +S1133140B0F1202F21D0DFF8F41388421DD00828D5 +S11331501BD0DFF8EC13884217D0DFF8E81388425D +S113316013D0DFF8E41388420FD0DFF8E01388426D +S11331700BD0DFF8DC13884207D0DFF8D81388427D +S113318003D0DFF8D015884201D1012000E00020EF +S1133190C0B2704710B582B004002000FFF7A6FE4D +S11331A0002805D140F23131DFF8A40500F036FBE8 +S11331B014F0704010F1805F23D1C4F30720DFF8CE +S11331C098150818E1B2890051EA401050F0844083 +S11331D0012101600020009002E00098401C009052 +S11331E000981028F9D3C4F30720DFF86C150818E9 +S11331F0E1B2890051EA401050F08440002101609E +S11332002CE0200FDFF8581551F820000068A1B217 +S1133210220C12F01F0291400843210FDFF84025D1 +S113322052F8211008600020009002E00098401C31 +S1133230009000981028F9D3200FDFF8241551F8D6 +S113324020000068A1B2220C12F01F0291408843B2 +S1133250210FDFF80C2552F82110086013BD10B5BA +S113326004002000FFF742FE002805D140F2963109 +S1133270DFF8DC0400F0D2FA14F0704010F1805F43 +S11332800DD1C4F30720DFF8D4140818E1B2890083 +S113329051EA401050F084400121016011E0200FF8 +S11332A0DFF8C01451F820000068A1B2220C12F01B +S11332B01F0291400843210FDFF8A82452F821107F +S11332C0086010BD0138FDD170477047010010003F +S11332D002001000000110000002100000041000A1 +S11332E0000110100002101000041010005800F02B +S11332F00040101000501020005400F00100002085 +S1133300020000200400002008000020100000201B +S11333102000002040000020800000200001002048 +S1133320090800F00A0800F00B0800F00C0800F08F +S11333300D0800F00E0800F00F0800F0100800F06F +S113334000400010022000F0032000F0042000F0F0 +S113335070B50400DFF81C04006810F0E04F08D0DA +S1133360DFF810040068DFF810140840B0F1805F43 +S113337002D1002C00F1A780DFF8EC030568DFF828 +S1133380FC03066855F4006535F4800556F40066C0 +S1133390DFF8D4030560DFF8E4030660A80701D56D +S11333A0A00708D515F0010014F0010191F0010106 +S11333B0C0B208421ED074F003000540DFF8A80331 +S11333C00560002E07D516F07000302809D016F0DD +S11333D07000702805D0002E08D415F03000302875 +S11333E004D14FF48050FFF76DFF03E05FF4002039 +S11333F0FFF768FF35F4FE6514F4FE600543DFF85B +S113340080030640DFF87C032040064314F00800E4 +S113341056EAC006DFF850030560DFF86003066073 +S11334201020FFF74FFF35F4405514F44050054386 +S113343036F4005614F400500643DFF830034021FC +S11334400160002E06D5DFF834030660DFF81803A8 +S1133450056005E0DFF810030560DFF8200306606F +S1133460DFF824030540DFF824032040054336F049 +S1133470FC5614F0FC500643600008D555F4800552 +S113348036F48006DFF808032040064301E036F0F6 +S1133490804620050ED44FF4004000E0401E002872 +S11334A004D0DFF8CC1209684906F7D535F4006575 +S11334B036F40066DFF8B0020560DFF8C00206608B +S11334C01020FFF7FFFE70BD052000F00010101063 +S11334D000011020004800F080000030005000F08F +S11334E010000030014000F0000100100002001044 +S11334F01000001020000010021C00F0031C00F05B +S11335002000003001001010020010100400101000 +S113351008001010040400F0050400F0010000107D +S11335200200001004000010031800F0041800F05A +S1133530051800F0061800F0071800F0010010202C +S113354000101000005C00F0015C00F0025C00F070 +S1133550035C00F0045C00F030B4DFF80C02016896 +S1133560DFF818020268002A02D512F0700001E0A8 +S113357011F0300000280DD010283AD020286FD048 +S1133580302800F0A480602800F0A480702800F0A7 +S1133590A480A5E0C1F38410DFF8F83153F82000CB +S11335A0DFF8F431134013F1004F05D0002A00F185 +S11335B0AA800B0500F1A780DFF8E0311B68DFF873 +S11335C0B441246814F0E04F09D0DFF8A84124681E +S11335D0DFF8A4512C40B4F1805F40F08380C3F342 +S11335E04814A41C604313F01F04A41CB0FBF4F0A3 +S11335F081E0DFF88001006810F0E04F08D0DFF8C8 +S113360074010068DFF870311840B0F1805F02D1B6 +S1133610DFF88C0123E0DFF85C010068DFF8583143 +S11336201840DFF88031984205D1DFF8480100687E +S113363080B202280ED0DFF83C010068DFF8383190 +S11336401840DFF86431984207D1DFF82801006898 +S1133650000402D1DFF8540101E0DFF854019FE7D0 +S1133660DFF81001006810F0E04F08D0DFF8040123 +S11336700068DFF804311840B0F1805F02D1DFF850 +S1133680340123E0DFF8EC000068DFF8EC30184088 +S1133690DFF81031984205D1DFF8D800006880B215 +S11336A002280ED0DFF8CC000068DFF8CC301840D8 +S11336B0DFF8F430984207D1DFF8B800006800045E +S11336C002D1DFF8F40001E0DFF8F00068E747F228 +S11336D0305065E75FF4800062E74FF400405FE735 +S11336E0002032E0C3F34814604313F01F04641C49 +S11336F06400B0FBF4F05C0400D540081B0400D562 +S1133700800851F480014B021FD5002A18D55300BC +S113371010D5DFF88430134013F1004F03D0002A92 +S113372008D4090506D44000C2F38651491CB0FBF5 +S1133730F1F00AE0C2F3C551491CB0FBF1F004E01A +S1133740C1F3C351491CB0FBF1F030BC7047000019 +S1133750D8770000055C00F000E50F4000E60F405C +S1133760147C0000207C000060E00F4058E00F4013 +S113377050E00F4000E00F400000FF7070E00F4089 +S11337808FFFFF7F30000080FCFF3FF80300C0077D +S113379000004040AC7600000008008064E00F4068 +S11337A0C0E1E4000000011000000310001BB7009A +S11337B00024F40070383900C0C62D0000093D0013 +S11337C080B500F00EF811484CF24F3101601048FA +S11337D0002101600F48052101600F4800210160AC +S11337E001BD0C480021016070470A480068C0030D +S11337F004D509480068401C07490860704780B533 +S1133800FFF7F3FF0448006802BD000014E000E085 +S113381018E000E010E000E05816002080B5034AEC +S113382010600348016000F006F8FCE73C16002035 +S11338304016002070477047C2788A18DFF81832A3 +S1133840DA70827889B20B0A9A18DFF80C329A700F +S1133850DFF8042243785370DFF8FC2100781070FD +S1133860DFF8F401807889B20A0AD2B2904212D207 +S1133870DFF8E4014078401CDFF8DC215070DFF809 +S1133880D8014078002806D1DFF8CC010078401C2C +S1133890DFF8C4211070DFF8C001C07889B2C9B262 +S11338A0884217DADFF8B0018078401C6A498870D2 +S11338B06948807800280DD167484078401C6649E3 +S11338C0487065484078002804D163480078401C5B +S11338D061490870704710B492B25218531E0AE03E +S11338E00A784C7814EB0222101880B292B29042FB +S11338F000D2401C891C9942F2D3994207D109781D +S11339000A02101880B292B2904200D2401C80B2D7 +S113391010BC704780B5142250490020FFF7DBFF2C +S113392080B2002802D14FF6FF7002E080B201F0AD +S11339305FF880B202BD10B54949097C484A527CFF +S113394012EB0121B1F11404C0B200190822454957 +S113395080B2FFF7C0FF220092B2434980B2FFF762 +S1133960BAFF80B2002802D14FF6FF7002E080B2A5 +S113397001F03EF880B210BD80B50620FFF7DBFFF2 +S113398002BD3A48002101700AE0384800783849FD +S1133990002221F8102035480078401C3349087073 +S11339A0324800780028F0D03048002101700CE043 +S11339B02E48007868212F4A01FB0020002141761F +S11339C02A480078401C29490870284800780028B3 +S11339D0EED029484FF480610180704723490022CA +S11339E00A7004E021490978491C204A11701F49D2 +S11339F0097800290CD11D4909781D4A32F81110A3 +S1133A000029EFD119490978194A22F81100FFE772 +S1133A10704780B5010089B2DFF8DC0D006808301A +S1133A20FFF70AFFDFF8D00D00680B49097801722F +S1133A30DFF8C40D0068084949784172DFF8B80D11 +S1133A400068054989788172DFF8AC0D0068024985 +S1133A50C978C17201BD0000781600201200002050 +S1133A60040000201E0000202600002093160020E1 +S1133A7086160020541400208A16002010B5DFF8A2 +S1133A80781D0C68DFF8C41DDFF8C42D1160DFF861 +S1133A90C42D1160C0B2032818D1607E10F00F004D +S1133AA003280AD1208A002807D1DFF8AC0D0821A9 +S1133AB0017001F02CF800F064BEDFF8A00D0021C5 +S1133AC00180DFF8940D0021017010BDC0B20228FE +S1133AD040F0CB80DFF8880DC078401CDFF8801DF3 +S1133AE0C870C0B200281AD1DFF8740D8078401C69 +S1133AF0DFF86C1D8870C0B2002810D1DFF8600DAB +S1133B004078401CDFF8581D4870C0B2002806D128 +S1133B10DFF84C0D0078401CDFF8441D0870DFF816 +S1133B203C0D00210180DFF83C0D00210180607E06 +S1133B30072802D0607E052808D1A07E401CA0760C +S1133B40A07E782801D100206076B6E7607E002848 +S1133B50FBD0208A00287AD0A07E411EA176C0B274 +S1133B600028F2D1E07E082808D0607E022802D026 +S1133B70607E012810D1E07E05280DD100206076FA +S1133B80DFF8D40C8021017000F0C1FFDFF8A40D30 +S1133B90142180F82F108DE1E07E052801DB04203C +S1133BA000E0E07E032111FA00F0A076E07E401CE4 +S1133BB0E076607E10F00F00C0B201280AD002281F +S1133BC035D0032839D004283FD006283DD0082812 +S1133BD03BD0BAE7DFF85C0D102180F82F10DFF836 +S1133BE0540D90F82F0050F00200DFF8481D81F8C2 +S1133BF02F00DFF8400D022180F83610DFF8340D75 +S1133C00042180F83710DFF82C0D062180F83810D5 +S1133C10DFF8200D0A2180F83910DFF8400C2C2140 +S1133C200180DFF8100D602180F82E104BE1DFF8E1 +S1133C30040D002180F82F10D1E7DFF81C0C0421BB +S1133C40017000F064FF00F0DEBD00F041BD607E55 +S1133C5010F00F0003287FF478AFDFF8FC0B082185 +S1133C60017000F054FF00F08CBDDFF8C80C807BBD +S1133C7045287FF422AFDFF8E40B0088DFF8B41C9A +S1133C80097CDFF8B02C527C12EB0121884216DB50 +S1133C90DFF8A00C007CDFF89C1C497C11EB0020B1 +S1133CA0DFF8B81B0880DFF88C0C007D3F21084248 +S1133CB004D1DFF8800C407D002801D0FDE6FCE64D +S1133CC0DFF8240D0088DFF8241D0988884207D115 +S1133CD0DFF8140D4088DFF8141D4988884210D09D +S1133CE0DFF8500CC08BDFF8001D0988884207D12B +S1133CF0DFF8400C008CDFF8F01C4988884200D0C3 +S1133D00DBE6FFF707FE4FF6FF7188427FF4D5AE7E +S1133D10DFF8200CC07D062808D1FFF72DFE4FF6F2 +S1133D20FF71884244D1DFF8F84C43E0DFF8040C1B +S1133D30C07D01287FF4C1AEDFF8F80B90F82200B3 +S1133D4008287FF4BAAEDFF8EC0B002180F82210CB +S1133D50DFF8E00B808C4FF6F771884207DBDFF861 +S1133D60D40B808C0930DFF8CC1B888406E0DFF8A4 +S1133D70C40B808C0830DFF8BC1B8884DFF8B40BDC +S1133D80DFF8B01B498BC183DFF8A80BDFF8A41B55 +S1133D90898B0184DFF89C0BDFF84C1C0988418374 +S1133DA0DFF8900BDFF8401C4988818300F016BED1 +S1133DB083E66834DFF8680CA042C0F0DB80607EE4 +S1133DC00028F6D0DFF86C0B808CA1888842F0D1F3 +S1133DD0DFF8600B408CE1888842EAD1DFF8540BAD +S1133DE0408B21888842E4D1DFF8480B808B6188BE +S1133DF08842DED1DFF8000A0460DFF85C0A0021A3 +S1133E000170DFF8300B90F82F00400700F1BC82FE +S1133E10DFF8200B90F82E00C0B200098000DFF814 +S1133E20041C0870DFF8340A0088DFF8F81B0978EE +S1133E30401A1438DFF8241A0880607E10F00F004E +S1133E40022808D1DFF8EC0A90F82F0010F03F00A8 +S1133E50122800F0A382DFF8040A0088002807D1A2 +S1133E60DFF8D00A90F82F000321084200F0968270 +S1133E70DFF8C00A90F82600217A884215D1DFF8CD +S1133E80B40A90F82700617A88420ED1DFF8A40AB8 +S1133E9090F82800A17A884207D1DFF8980A90F8B0 +S1133EA02900E17A884200F07982DFF8880A10213B +S1133EB080F82F10DFF8A40928210180DFF8740AA4 +S1133EC0502180F82E10DFF86C0A217A80F82A102D +S1133ED0DFF8600A617A80F82B10DFF8580AA17ABB +S1133EE080F82C10DFF84C0AE17A80F82D10DFF806 +S1133EF0440A217B80F82610DFF8380A617B80F8B9 +S1133F002710DFF8300AA17B80F82810DFF8240A94 +S1133F10E17B80F82910DFF81C0A0621C175DFF85F +S1133F20140AA1884184DFF80C0AE1888184DFF84F +S1133F30040ADFF8B41A09884183DFF8F809DFF8C6 +S1133F40A81A49888183DFF8EC092188C183DFF846 +S1133F50E40961880184607EC00640F1F984002090 +S1133F60DFF8D01981F83100DFF8C81981F8300082 +S1133F7000F0F6BCDFF8BC0990F82F0010F03F0009 +S1133F80022806D0DFF8AC0990F82F00400729D5A5 +S1133F9093E5DFF8A009808CDFF88C1A0880DFF83D +S1133FA0840A0021017006E0DFF8780A0078401CDA +S1133FB0DFF8701A0870DFF86C0A00780028E1D185 +S1133FC0DFF8640A0088DFF85C1A0978DFF85C2AF5 +S1133FD032F811108842E7D10024DFF8480A0021A2 +S1133FE00170E6E0DFF84C09142180F82F10DFF8A7 +S1133FF06C0828210180DFF83C09502180F82E103C +S1134000DFF8300990F82900DFF8181A0870DFF893 +S11340102409DFF8201991F82D1080F82910DFF811 +S11340201409DFF8001A097880F82D10DFF8040964 +S113403090F82800DFF8EC190870DFF8F808DFF8CA +S1134040F41891F82C1080F82810DFF8E808DFF84D +S1134050D419097880F82C10DFF8D80890F82700D4 +S1134060DFF8C0190870DFF8CC08DFF8C81891F839 +S11340702B1080F82710DFF8BC08DFF8A81909789E +S113408080F82B10DFF8AC0890F82600DFF89419BC +S11340900870DFF8A008DFF89C1891F82A1080F85F +S11340A02610DFF89008DFF87C19097880F82A10C8 +S11340B0DFF8800890F82D00401CDFF8781881F8AC +S11340C02D00C0B2002820D1DFF8680890F82C0039 +S11340D0401CDFF8601881F82C00C0B2002814D10D +S11340E0DFF8500890F82B00401CDFF8481881F8DE +S11340F02B00C0B2002808D1DFF8380890F82A0055 +S1134100401CDFF8301881F82A00DFF82808408CBA +S1134110DFF814190880DFF81C08DFF81818898CF8 +S11341204184DFF81008DFF8001909888184DFF87A +S11341300408DFF80018498BC183DFF8F807DFF8BB +S1134140F417898B0184DFF8EC07DFF89C180988E1 +S11341504183DFF8E007DFF890184988818300F095 +S1134160FFBBDFF8C00800786821DFF8B42801FB42 +S11341700020407E072815D1002C0BD0A07EDFF84C +S1134180A41809786822DFF8983802FB0131897E87 +S1134190884207D2DFF88C0800786821DFF880288D +S11341A001FB0024DFF87C080078401CDFF8741859 +S11341B00870DFF870080078002812D1DFF864086E +S11341C000786821DFF8582801FB0020407E002891 +S11341D0C7D1DFF8500800786821DFF8442801FBD4 +S11341E00024002C3FF469ACDFF80C0604600320C3 +S11341F0A07620760020A0750420E0750020E076EB +S1134200DFF83007808CA080DFF82807408CE0803E +S1134210DFF82007408B2080DFF81807808B608050 +S113422001206076DFF8380600782073DFF8300666 +S113423040786073DFF828068078A073DFF82006E2 +S1134240C078E07301202082DFF8E80690F82900A6 +S1134250E072DFF8E00690F82800A072DFF8D406D8 +S113426090F827006072DFF8CC0690F826002072E0 +S11342700120FFF7CEFBDFF8BC0690F82E0010F00B +S1134280F0005128FFF6A6ACDFF898070021017072 +S113429006E0DFF890070078401CDFF88817087004 +S11342A0DFF880070078DFF88C1691F82E10C9B279 +S11342B00909C9B2491FB0EB810FBFF68BACDFF817 +S11342C064070078DFF86C16401890F83600DFF8C1 +S11342D060170870DFF85807007800283FF47AACBC +S11342E0DFF84C0700780128D3D0DFF844070078C2 +S11342F002282ED1DFF82C070078DFF83816401892 +S113430090F83700042824D1DFF818070078DFF884 +S11343102416401890F83800DFF808170978DFF8F9 +S11343201426891891F8391051EA0020DFF8F8169C +S11343300880DFF8F406008840F20B61884202DB53 +S113434040F20A6002E0DFF8E00600886082A082A2 +S113435040E4DFF8D0060078DFF8D815401890F86C +S1134360370000283FF436ACDFF8B8060078DFF8F1 +S1134370B4160978DFF8BC25891891F837100818A5 +S1134380DFF8A01608708BE700206076DFF8C80419 +S11343902021017000F0BBFBFFF78FBBDFF8940511 +S11343A090F82F00C00664D5208A002861D0218AA5 +S11343B014F10C00FFF740FADFF8780590F82A00B2 +S11343C0DFF870160978884253D1DFF8680590F851 +S11343D02B00DFF86016497888424AD1DFF854058B +S11343E090F82C00DFF84C168978884241D1DFF828 +S11343F0440590F82D00DFF83C16C978884238D17E +S1134400DFF8300600782073DFF828064078607300 +S1134410DFF820068078A073DFF81806C078E07310 +S1134420E07E00281DD194F9180094F91A10401A5E +S1134430A17DC9B2B0EBD100A17D4118A17540B2F4 +S1134440002801D540B24042E17DC9B2B0EB9100F1 +S1134450E17D4018E075A07DC0B2E17D11EBD00094 +S11344602076DFF8F40301210170207EA07600207D +S11344702082607E10F00F00C0B2012813D0C0F07B +S11344806582032800F0FA8035D3052800F02F82D6 +S1134490C0F0F881072800F04F82C0F04F8208284E +S11344A000F0E48152E2DFF8B0030078C00720D5C1 +S11344B003206076DFF8A0034021017000202082F1 +S11344C0DFF89803008800280CD0DFF88C0300780C +S11344D050F00200DFF880130870DFF880030088D2 +S11344E0FFF797FADFF87C030021018000F00FFB4F +S11344F047E1FFF7E2BADFF860030078C00740F154 +S1134500B380DFF8300490F82F0010F03F00122839 +S113451040F0AA80DFF81C0490F82E0010F0F000A0 +S1134520512829DBDFF8FC040021017006E0DFF8E4 +S1134530F4040078401CDFF8EC140870DFF8E4049D +S11345400078DFF8F01391F82E10C9B20909C9B246 +S1134550491FB0EB810F0FDADFF8C8040078DFF8E9 +S1134560D413401890F83600DFF8C4140870DFF84C +S1134570C0040078002826D103206076DFF8B40355 +S113458090F826002072DFF8AC0390F827006072E0 +S1134590DFF8A00390F82800A072DFF8980390F8E1 +S11345A02900E0720120FFF734FAAB484221017080 +S11345B000202082A94800210180AA48002101800E +S11345C000F0A5FADDE0DFF8680400780128AED039 +S11345D0DFF85C04007802282ED1DFF84804007864 +S11345E0DFF85013401890F83700042824D1DFF87E +S11345F034040078DFF83C13401890F83800DFF8F2 +S113460024140978DFF82C23891891F8391051EA19 +S11346100020DFF814140880DFF80C04008840F24E +S11346200B61884202DB40F20A6002E0DFF8F80323 +S113463000886082A0829FE7DFF8E8030078BD4924 +S1134640401890F83700002896D0DFF8D803007897 +S1134650DFF8D0130978B74A891891F83710081889 +S1134660DFF8C013087069E77B482021017000F06F +S11346704EFA614800680021417683E4AD4890F821 +S11346802F00C0072AD5607EC00627D4208A0028C0 +S11346907FF413AA71480088401C80B2FFF7B9F96F +S11346A06D48007850F010006B4908706B48008822 +S11346B0002805D06848007850F002006649087068 +S11346C000F025FA01202082082060760020E076A0 +S11346D09848112180F82F10FFF7ECBB954890F80B +S11346E02F00800619D5934890F83400914991F829 +S11346F0351051EA002056490968401854490860A9 +S1134700564800888B4991F834108A4A92F835202B +S113471052EA0121401A5149088050480088002873 +S11347200CD0607EC00609D44B48007850F00200DB +S11347304949087049480088FFF76BF97D4890F8AB +S113474030007C4991F8311011EB0020B649088003 +S1134750A08AB5490988884203D3B3480088002851 +S113476002D1A08AB0490880AF48008860823A48E4 +S113477000780321084277D03A480021018000F0F4 +S1134780C6F93548007880060AD5364800210180EC +S1134790002060766748142180F82F10FFF78ABB49 +S11347A02D480078C0060ED52E4800210180012036 +S11347B02082042060760020E0765E48112180F893 +S11347C02F10FFF777BB27480088002819D022480C +S11347D00078C00701D500202082208A00280DD14E +S11347E0608A20490988884202D2608A1D4908806B +S11347F01C480088208204E070160020208A194991 +S113480008800020E07612481249096801601548C2 +S1134810008800280CD0208A002809D0208A28305B +S11348200E4908804348182180F82F10FFF746BB33 +S113483009480078800717D50848282101803D4899 +S1134840102180F82F10FFF739BB00BF3A00002079 +S1134850681600206C160020921600208216002094 +S11348607416002084160020FFF727B972480078D8 +S1134870C00706D5002060766F481021017000F053 +S113488046F963E06D480088002803D06B4800882F +S1134890FFF7BFF8274890F82F00C00716D56648E1 +S11348A00078C00706D5072060760020A076002097 +S11348B0208201E0062060760120FFF7AAF85E4816 +S11348C01021017000F023F9FFF7EFBA5A4800787D +S11348D0C00705D50520607600202082FFF7EDB8DB +S11348E05648008800287FF4E0AAFFF7E6B853484A +S11348F00088002803D051480088FFF78AF80D4843 +S113490090F82F00C0070DD5072060760020A07610 +S11349100120FFF77EF848481021017000F0F7F8F5 +S1134920FFF7C3BA4548008800287FF4BEAAFFF702 +S1134930C4B800BF04000020FFF7B7BA3E480078AF +S1134940C00703D5072060760020A076FFF7B5B82E +S11349503B48062180F8301039480A2180F831108C +S113496037484021817536483449098889B2090A93 +S1134970017433483149098841740020304981F871 +S113498035002F4981F834002D4800214186FEF777 +S1134990F3FFC0432A4948862948452181732848A2 +S11349A00021C1730020264948752549087525480A +S11349B00088401C2349088021482249098889B27B +S11349C0090A81741E481F490988C1741C480021C2 +S11349D00183FEF79FFFC04319490883164800214D +S11349E00170FFF772B800005C160020607C0000C4 +S11349F080B2010A51EA002080B2704780B50129D3 +S1134A000CDB114A118011490968884206D00E490D +S1134A100A8801000D48006800F026F901BD000075 +S1134A2054140020931600208C16002086160020B3 +S1134A30941600207816002092160020821600207A +S1134A400400002088160020841600206C16002024 +S1134A5080B500F021F9FEF794FF4FF6A960ADF898 +S1134A60000043F61370ADF802007548BDF800105D +S1134A7001807348BDF8021041804FF6FF70ADF815 +S1134A8000000020ADF802006E48BDF8001001805F +S1134A906C48BDF80210418000F03CF9FEF7AFFE0F +S1134AA010F5FA7068490860FEF7A9FE00F51C507D +S1134AB01030664908604EF60300FEF78FFF01BD13 +S1134AC038B5634A126812F11C042268626000223D +S1134AD005E092B2131992B2155C1D72521C0B00C0 +S1134AE0DBB292B29BB29A42F3D3C9B2081DA4F8C6 +S1134AF04800B4F84810201DFFF780FF2068401CD0 +S1134B00206031BD80B500F032F8002002BD10B540 +S1134B104F48006810F11C044E480078400605D543 +S1134B20012020600020A4F848001FE049480078D4 +S1134B30C00702D50020A4F8480046480078400782 +S1134B4008D5B4F84800002804D0B4F84810201D53 +S1134B50FFF754FF3F480078800707D50020A4F8EA +S1134B6048003D480068001D00F07EF910BD10B5F6 +S1134B7000F024F900282DD0384908804FF4006053 +S1134B80FFF736FF3649898980B281420ED1012070 +S1134B90FEF774FF3148008800281BD000F0B5FCF4 +S1134BA000F021F92D480021018013E040F60600B1 +S1134BB0FFF71EFF2A49898980B281420AD100F099 +S1134BC03EFC26480088002804D000F00CF9234855 +S1134BD000210180FEF713FE1B49096888421ED399 +S1134BE01948006810F5FA7017490860002414E0A9 +S1134BF068201C4900FB0410154908600220FEF7D8 +S1134C003DFF16480088002806D000F07EFC00F026 +S1134C10EAF8124800210180641C002CE8D0FEF759 +S1134C20EEFD0A490968884208D30848006800F57F +S1134C301C5010300549086000F036FB10BD000020 +S1134C405C16002064160020501600205416002024 +S1134C50701600209216002068160020821600208C +S1134C60040000205414002010B50400200000F0BB +S1134C7025FD200010BD50F8041B61B150F8042B31 +S1134C80D30744BFA9F101039A18002342F8043B57 +S1134C90091FFAD1EFE7704738B55748FEF7DFFA36 +S1134CA05548FEF777FA5548FEF7D9FA0C215448CF +S1134CB0FDF78FFF7F21534800F092FE00215148F9 +S1134CC000F0A6FE040021004E4800F0B3FEFEF7FB +S1134CD043FC01004B4800F02DFD1621494800F02B +S1134CE03DFD0121474800F0BBFE0400FEF787FDAF +S1134CF000F598558835600708D40121414800F033 +S1134D00AFFE0400FEF77BFDA842F4D33D4800F05B +S1134D1079FD31BD00B585B008208DF80000002074 +S1134D208DF8010027208DF8020069208DF803001A +S1134D305B208DF8040045208DF8050002A903A826 +S1134D4000F03FFF039810F1010F19D0029810F101 +S1134D50010F15D003988DF800000398000A8DF810 +S1134D6001000398000C8DF8020002988DF80300EE +S1134D700298000A8DF804000298000C8DF80500D2 +S1134D8000A9204800F014FD1F489DF80010017090 +S1134D901D489DF8011041701B489DF80210817058 +S1134DA019489DF80310C17017489DF8041001714B +S1134DB015489DF80510417105B000BD10B50021DE +S1134DC0104800F025FE040021000E4800F032FED9 +S1134DD0E00706D540F242620C490A4800F074FD2F +S1134DE000E0002010BD80B5094802880749054845 +S1134DF000F0D3FD01BD0000005010202000002071 +S1134E0000500240008004403416002004000020BA +S1134E1082160020DFF8700400210170DFF86804B6 +S1134E2000218164DFF86004002180F84310DFF87A +S1134E3058040021A0F84410DFF84C0400218170CC +S1134E40DFF84404002141707047DFF83C04007827 +S1134E50002801D1002000E001207047DFF8280479 +S1134E60002180F84310704780B50178FF291ED1D6 +S1134E7000F091F8DFF8100490F84300012802D103 +S1134E80102000F07EF8DFF80004B0F94400012897 +S1134E900CDBDFF8F403012180F84310DFF8E803AA +S1134EA0B0F94410DFF8E40300F053F801BDDFF873 +S1134EB0D813097801294BD10178C92932D0CC29DA +S1134EC03FD0CF293AD0D0292FD0D12933D0D229DD +S1134ED02ED0F32917D0F4290FD0F5290AD0F629BA +S1134EE00ED0FA2912D0FC2913D0FD2914D0FE29A2 +S1134EF015D029E000F0DAF8BCE700F0F9F8B9E7DA +S1134F0000F0C9F8B6E700F018F9B3E700F0ABF821 +S1134F10B0E700F0A2F8ADE700F087F8AAE700F0E8 +S1134F2075F8A7E700F03DF9A4E700F05CF9A1E704 +S1134F3000F01AF99EE700F087F99BE700F098F972 +S1134F4098E700F0ABF995E7202000F01AF891E714 +S1134F50ACE780B589B200F0AFFE01BD10B4002308 +S1134F6002E00478E318401C0C00611E002CF8D108 +S1134F70DBB21360012010BC7047C34800214170AC +S1134F807047C149FE22CA70BF490871BE48022158 +S1134F90A0F84410704710B5040000F0F6FE002895 +S1134FA003D11020FFF7EDFF2FE0FFF7E6FFB6482F +S1134FB001210170B448FF21C170B348002101717F +S1134FC0B148007950F01000AF490871AE48002193 +S1134FD04171AD48AC494979417100F085FEAA4957 +S1134FE0887100F096FEA849C87100F092FE80B264 +S1134FF0000AA5490872A44801214172A24801216E +S11350008172A1480821A0F8441010BD10B5040015 +S11350109D4800210170FFF7B0FF9B48FF21C1703C +S113502099480121A0F8441010BD9749FF22CA7085 +S1135030954900220A719449934A52784A719249D7 +S113504000228A7190490022CA718F4900220A7293 +S11350508D490622A1F84420704710B504000020B1 +S1135060FFF78FFF10BD8849FF22CA708649884A1E +S11350708A64854900220A71834900224A7182495F +S113508000228A7180490722C1F807207E4908223C +S1135090A1F8442070477C49FF22CA707A494068CD +S11350A0886479480121A0F84410704710B50400C1 +S11350B000F01AFE401E6178884203DA2220FFF7CE +S11350C060FF14E0627892B26F48816C714801F01D +S11350D033FA6D48FF21C1706B48806C6178081801 +S11350E0694988646078401C6749A1F8440010BD90 +S11350F010B5040000F0F8FD401E6178884203DA20 +S11351002220FFF73EFF17E05F4861688164627800 +S113511092B25D48816C5F4801F00EFA5A48FF2153 +S1135120C1705948806C6178081857498864607860 +S1135130401C5549A1F8440010BD80B55249FF22D6 +S1135140CA70554A41685048806CFFF707FF4E49C2 +S113515008714D48002141714B48002181714A4832 +S11351600821A0F8441001BD10B504004648FF21F1 +S1135170C17045480021017143480021417100F08C +S1135180B3FD4149887140480021C1713E48002166 +S113519001723D48002141723B480721A0F84410A8 +S11351A010BD10B5040000F09FFD621C80B2411ECA +S11351B03548806C01F0D9F9002803D13120FFF77C +S11351C0E0FE0FE03048FF21C17000F08DFD2E4954 +S11351D0896C80B2401E40182B4988642A480121FA +S11351E0A0F8441010BD10B5040000F07DFD801E31 +S11351F06178884203DA2220FFF7C3FE23E02248C5 +S1135200FF21C17020480121A0F8441060780028D3 +S113521007D101F0B6F9002802D13120FFF7B1FE21 +S113522011E0A21C61781848806C01F09EF90028F6 +S113523003D13120FFF7A5FE05E01348806C6178A7 +S113524008181149886410BD80B541680E48806C07 +S113525001F08FF9002803D13120FFF792FE06E018 +S11352600948FF21C17008480121A0F8441001BD7C +S113527010B5040001F071F90348FF21C170024820 +S11352800121A0F8441010BD1C1500201F1500209A +S1135290587C0000201500202315002080B5312003 +S11352A0FFF76FFE01BDFF0080B5DFF8C80300788B +S11352B0401CDFF8C0130870DFF8B0030021017050 +S11352C01EE0DFF8A80300780C21DFF8A42301FB1B +S11352D0002001884288114300290AD0DFF8941382 +S11352E00978827A891A782903DB0422002101F0E3 +S11352F052F9DFF878030078401CDFF87013087067 +S1135300DFF8680300780828DBDB01BD38B50C0042 +S1135310DFF8581300220A7006E0DFF8501309780A +S1135320491CDFF848231170DFF840130978082975 +S11353301FDADFF8381309780C22DFF8343302FB64 +S1135340013529880029E8D069880029E5D0018839 +S11353502A889142E1D141886A889142DDD10622AE +S11353602100281DFFF780FCDFF808030078A872ED +S113537064E0DFF8F81200220A7006E0DFF8EC12AD +S11353800978491CDFF8E4221170DFF8E01209788B +S113539008290DDADFF8D41209780C22DFF8D032AC +S11353A002FB013529880029E8D169880029E5D163 +S11353B0AE490978082934D1AF4900220A70AF49AF +S11353C000220A70A94900220A701CE0A749097842 +S11353D00C22A74B02FB0135A7490978A54A12788C +S11353E0AB7AD21A914209DAA2490978AA7A891ABF +S11353F0A14A1170A1499D4A12780A709B49097803 +S1135400491C9A4A1170994909780829DEDB9749A1 +S11354109A4A12780A70954909780C22944B02FB37 +S11354200135042201002800FFF71EFC062221009A +S1135430281DFFF719FC8F480078A87231BD80B58C +S11354408F4800882A2803D28D48002101805BE020 +S11354508B48002101808B48808AB0F5807F03D07F +S1135460B0F5007F40D04FE08648C08C864909885B +S1135470884238D18348008D83494988884232D193 +S113548082498348FFF742FF7E484FF400718182CE +S113549006227E497F48FFF7E7FB06227E497B48C8 +S11354A0FFF7E2FB06227C497C48FFF7DDFB06227E +S11354B078497448FFF7D8FB72487249898BC184D4 +S11354C070487049C98B01856E486F49098881838A +S11354D06C486D494988C1836A484FF4C161818130 +S11354E067482A2101800FE06648C08C6649098814 +S11354F0884209D16348008D63494988884203D1B1 +S113550062496348FFF702FF01BD80B55D49C98B5D +S1135510634A128891420BD15A49098C604A5288D5 +S1135520914205D106225F495648FFF79DFB8EE064 +S11355305449C98B5C4A12881140534A12885A4B09 +S11355401B881A4091420BD14E49098C564A528805 +S113555011404D4A5288544B5B881A40914208D0FE +S11355605249534A12880A805049514A52884A8003 +S113557007E04449C98B4D4A11804C49414A128C79 +S11355804A803A4900220A7004E038490978491CE3 +S1135590364A11703549097808290FDA33480078FA +S11355A00C21334A01FB00204049098802889142BA +S11355B0EBD13E49498842889142E6D12B4909788A +S11355C008293FD10622FF212E4800F0E4FF0622DD +S11355D00021304800F0DFFF06222F492F48FFF753 +S11355E043FB06222C492948FFF73EFB25482F4957 +S11355F00988C18423482D494988018521482249C5 +S1135600098881831F4820494988C1831D484FF474 +S1135610807181821B484FF48071C181194808212F +S1135620018218480621817416480421C174154862 +S11356304FF4C16181811F481F49016010482A212C +S1135640018011E00622011D0E48FFF70DFB062222 +S113565011491248FFF708FB0A48082181810848CC +S113566000880E300649088001BD00009516002010 +S1135670BC140020971600209816002096160020CF +S113568082160020040000205C1600201A0000206E +S11356902000002024000020341600200A000020EE +S11356A0647C0000507C0000641600207C160020FE +S11356B060160020681600203A00002062B38B07B1 +S11356C008D0521E11F8013B00F8013B00F0248081 +S11356D08B07F6D1830740F0208000BF103A07D330 +S11356E030B4B1E83810103AA0E83810F9D230BC20 +S11356F0530724BFB1E80810A0E8081044BF51F8CC +S1135700043B40F8043BD20724BF31F8022B20F8B5 +S1135710022B44BF0B7803707047083A07D3B1E8F3 +S11357200810083A40F8043B40F804CBF7D253077A +S1135730E4E7000038B504000D00DFF85C038442A0 +S113574004D05D21DFF85403FEF768F86808DFF839 +S11357505013B0FBF1F0C0B2606231BD38B5040043 +S11357600D00DFF83403844204D0A621DFF82C03B3 +S1135770FEF754F8DFF82C03054204D0AA21DFF821 +S11357801C03FEF74BF8E06830F01600E9B208435A +S1135790E060A06830F00E00C5F307210843A06064 +S11357A0E06B40084000C5F307410843E06331BDA6 +S11357B070B582B004000D0000AEDFF8DC02844254 +S11357C005D040F21311DFF8D402FEF727F8002DBC +S11357D005D14FF48A71DFF8C402FEF71FF8287868 +S11357E0307068787070A878B070E878F0700098BD +S11357F0606100200090287930706879707000989A +S1135800A06173BD10B50400DFF88C02844205D09A +S113581040F26911DFF88402FEF700F8A06850F046 +S11358201000A060A06850F00100A060E06850F093 +S11358300100E060A06850F01000A06010BDF0B45A +S113584000240569ABB22E0C6654641C2D0E6554FD +S1135850641C9D1FAA4201DA160004E09E1F02E0A8 +S113586005696550241D351FA542F9DAB44220DAD2 +S11358700569F71EBC4209D16554641C2E0A66549E +S1135880641C2D0C6554641C641C12E0B71EBC42DD +S113589006D16554641C2D0A6554641CA41C08E0DC +S11358A0761EB44205D16554641CE41C01E005690C +S11358B0241D991E8C42FADB9B1F9A4201DA58423E +S11358C000E01800F0BC704770B504000D0016002D +S11358D0DFF8C401844204D040F28F216F48FDF701 +S11358E09DFF002D04D14FF424716C48FDF796FF01 +S11358F0012E04DA40F291216848FDF78FFF606BB6 +S113590010F03F0F01D1002004E0320029002000F4 +S1135910FFF795FF70BD30B403001000002240F281 +S1135920FF74A04201DB404235E0B0F10E04555C47 +S113593054EA0544521C555C54EA0564521C1C612B +S113594002E054581C61121D041F9442F9DA824289 +S11359501FD0C41EA2420BD1545C521C555C54EAA5 +S11359600524521C515C54EA0144521C1C6110E091 +S1135970841EA24207D1545C521C515C54EA012497 +S1135980521C1C6105E0441EA24202D1545C521C0C +S11359901C610121996330BC704770B504000D008F +S11359A016003D48844204D040F29E313B48FDF746 +S11359B035FF002D04D140F29F313848FDF72EFF0A +S11359C0012E04DA4FF468713448FDF727FFA06B09 +S11359D0C007FCD4320029002000FFF79CFF70BDF3 +S11359E038B504000D002C48844204D040F24741ED +S11359F02A48FDF713FFE809C001002804D040F24B +S1135A004A412648FDF70AFF6068A843606031BD3B +S1135A1038B504000D002048844204D040F26A41A5 +S1135A201E48FDF7FBFE2068EDB2002D01D0616831 +S1135A30084032BD38B504000D001748844204D034 +S1135A4040F29F411548FDF7E9FEE809C00100282E +S1135A5004D040F2A2411148FDF7E0FE256031BDBB +S1135A6038B504000D000C48844204D040F21251B1 +S1135A700A48FDF7D3FE206AC007FCD4EDB2E80063 +S1135A8010F0F80050F001002062206AC007FCD436 +S1135A90206B80B232BD0000008004401877000003 +S1135AA0A0252600E9F1FEFF10B50400A00504D0EE +S1135AB09C21DFF86001FDF7B1FEDFF85C0140F6E0 +S1135AC001210160DFF854010460DFF85401DFF8BC +S1135AD054110160DFF8480100688007FAD4DFF848 +S1135AE04801006840F60121084202D05FF0FF300F +S1135AF000E0002010BD70B504000D00160015F084 +S1135B00030F04D0DF21DFF80C01FDF787FE16F048 +S1135B10030F04D0E021DFF8FC00FDF77FFEDFF87F +S1135B20F80042F201610160DFF800010068C0077B +S1135B3039D5002E39D0E809C001DFF8E01008603B +S1135B4008E015F07C00DFF8E81022680A50241DF4 +S1135B502D1D361F15F07C0F04D1DFF8D800006826 +S1135B60002801D1002EECD1DFF8CC00DFF8CC10F6 +S1135B700160DFF8C4000068C007FAD4D9E7DFF891 +S1135B809C000560DFF8B80021680160DFF8900030 +S1135B90DFF8A8100160DFF888000068C007FAD4B5 +S1135BA0241D2D1D361F002EE9D1DFF87C0000686E +S1135BB042F20161084202D05FF0FF3000E00020B1 +S1135BC070BD38B505000C00002D04D14FF42171CF +S1135BD01048FDF723FE002C04D140F285210D4826 +S1135BE0FDF71CFE1748006810F0E04F06D015487A +S1135BF0006815490840B0F1805F02D15FF0FF30C2 +S1135C0006E01248006828601148006820600020FF +S1135C1032BD00007877000014D00F4000D00F4050 +S1135C2008D00F40020042A40CD00F40A0E10F4066 +S1135C3000D10F4030D00F4020D00F40010042A4CB +S1135C4004D00F4000E00F400000FF70E0E10F407F +S1135C50E4E10F4080B53D480088ADF80000FFF74F +S1135C60D9F800F0A3FC3A4800210170FEF7F0FED9 +S1135C7037480321017037480078012802D100A871 +S1135C80FFF7F2F801BD80B5334800F0C9FC0128E4 +S1135C9005D12F48002101702F48FFF7E5F82E4861 +S1135CA0FEF730FF012805D12948032101702A4855 +S1135CB0FFF7DAF801BD704738B504000D00244839 +S1135CC00078002804D12900C9B2200000F07CFC2F +S1135CD01F480078032804D12900C9B22000FEF728 +S1135CE0EFFEFFF7BBF831BD19480078002805D056 +S1135CF0022807D004D3032806D007E0402006E09A +S1135D00002004E0002002E0402000E0402080B2B7 +S1135D1070470F480078002805D0022807D004D324 +S1135D20032806D007E0402006E0002004E000201D +S1135D3002E0402000E0402080B270470548012185 +S1135D40017070470348002101707047A65200009B +S1135D50000000209C160020AC15002080B5FFF741 +S1135D6074F802BD80B5DFF8780600210170DFF811 +S1135D7074160020FBF733FCC0B2002804D07C2149 +S1135D80DFF86406FDF74AFD01BDDFF8540600782C +S1135D90002801D1012000E00020704780B5FFF702 +S1135DA0DDFF012801D1002011E0DFF8340600787E +S1135DB0002801D000200AE000F094FC012805D15D +S1135DC0DFF81C0601210170012000E0002002BD63 +S1135DD010B5DFF80C060078002800F0FF81DFF82A +S1135DE000060078012834D100F096FCDFF8FC05A9 +S1135DF000F0BFFCDFF8F80500F0BBFC00F08AFC03 +S1135E0001220100DFF8EC05FBF702FC002807D0B3 +S1135E10DFF8E40500F0ADFC012000F0A0FCDDE1BA +S1135E20DFF8D80500F0A5FCDFF8D40500F0A1FCEC +S1135E30DFF8D00500F09DFCDFF8CC0500210160FF +S1135E40DFF8C40500214160DFF8940502210170E8 +S1135E50C4E1DFF88C050078022840F0F780DFF811 +S1135E6094254FF48071DFF8A405FCF77DF8DFF882 +S1135E70741591F83A12C1F3C01111F0010101290E +S1135E800FDBDFF8740500F074FC022000F067FCFF +S1135E90DFF86005FBF7E7FEDFF844050021017039 +S1135EA09CE100281BD00022DFF86415DFF85C05B4 +S1135EB000F0D6F9040024B214F1010F0FD1DFF879 +S1135EC0380500F056FC032000F049FCDFF82405F7 +S1135ED0FBF7C9FEDFF80805002101707EE124B25A +S1135EE0012C28DBDFF82005406800280BD1DFF8FF +S1135EF01C05D0F88001DFF810150860DFF80805EC +S1135F0024B2446017E0DFF80405D0F88001DFF81C +S1135F10F8140968884206D2DFF8F004D0F880014A +S1135F20DFF8E4140860DFF8E004406824B22018C5 +S1135F30DFF8D4144860DFF8AC04D0F83C02DFF892 +S1135F40A414D1F84012884201D1012000E00020BD +S1135F500128C0F243810021DFF89804FBF78FFE8B +S1135F6000280FD0DFF8900400F003FC042000F0B8 +S1135F70F6FBDFF88004FBF776FEDFF8640400210B +S1135F8001702BE1DFF8740400F0F3FBDFF8840404 +S1135F9000F0EFFBDFF88014DFF86C04406800F0D9 +S1135FA075FADFF8740400F0E4FBDFF8700400F025 +S1135FB0E0FBDFF86414DFF850040068000EC0B2A0 +S1135FC000F053FADFF85814DFF83C040068000CC2 +S1135FD0C0B200F04AFADFF84C14DFF82C04006871 +S1135FE0000AC0B200F041FADFF83C14DFF81804EC +S1135FF00068C0B200F039FADFF81C0400F0B9FB05 +S113600077A000F0B6FBDFF800044168DFF8F8037E +S1136010006800F0AEFA00280FD1DFF8DC0300F0CE +S1136020A8FB052000F09BFBDFF8C803FBF71BFE71 +S1136030DFF8AC0300210170D0E0DFF8C00300F00A +S113604098FBDFF89C0303210170C7E0DFF890039D +S11360500078032840F0C280DFF898234FF4807161 +S1136060DFF8A803FBF780FFDFF8781391F83A1202 +S1136070C1F3C01111F0010101290EDBDFF8AC03FB +S113608000F077FB022000F06AFBDFF86803FBF7FF +S1136090EAFDD34800210170A0E000281AD0DFF8FF +S11360A09023DFF86C13DFF8640300F0D9F80400E0 +S11360B024B214F1010F0DD1DFF8780300F059FB7D +S11360C0032000F04CFBCB48FBF7CDFDC448002176 +S11360D0017083E024B2012C4CDBD74800F049FB6B +S11360E0CD4924B2200000F0D1F9CB4800F041FBA7 +S11360F0D24800F03EFBC849C448D0F88001000EE5 +S1136100C0B200F0B2F9C649C048D0F88001000C12 +S1136110C0B200F0AAF9C349BC48D0F88001000A13 +S1136120C0B200F0A2F9C049B848D0F88001C0B2AA +S113613000F09BF9B84800F01CFB29A000F019FB03 +S1136140BB4A24B22100B148D0F8800100F00DFA16 +S113615000280CD1A84800F00CFB062000F0FFFA40 +S1136160A448FBF780FD9E480021017036E0A34857 +S113617000F0FFFA9B48D0F83C029A49D1F840124B +S1136180884201D1012000E00020012826DBAC4830 +S113619000F0EFFA00F0F5F900280CD1964800F071 +S11361A0E8FA072000F0DBFA9248FBF75CFD8C4824 +S11361B00021017012E0914800F0DBFAA14800F0E0 +S11361C0D8FA8C48FBF74FFD9F4800F0D2FA844878 +S11361D00021017000F0B1FA00F096F910BD000042 +S11361E02E2E2E0010B50400207800F0EDFA53286E +S11361F004D1607800F0ECFA002801D103200FE00C +S11362006078312801D100200AE06078322801D179 +S1136210012005E06078332801D1022000E003204A +S113622010BD70B504000026A41C200000F047F93E +S11362300500AE19A41C200000F041F986196D1E5A +S1136240A41CADB2022DF6DAF6B2F643200000F03B +S113625036F9F6B2864201D0002000E0012070BD7C +S11362602DE9F04105000E0014005FF00008002E37 +S113627001D0002D04D140F236215B48FDF7CEFA5F +S11362802800FFF7AFFF0700FFB2032F01D1002062 +S1136290A3E02800FFF7C5FF002802D15FF0FF301C +S11362A09BE0FFB2002F03D0022F5AD028D392E0F4 +S11362B0AD1C280000F003F90700AD1C280000F015 +S11362C0FEF800023060AD1CD6F80080280000F013 +S11362D0F6F810EB08003060AD1CB7F10308002C91 +S11362E00DD0002606E0280000F0E9F8B6B23055DB +S11362F0AD1C761CB6B20FFA88F84645F3DB6AE0AB +S1136300AD1C280000F0DBF80700AD1C280000F0ED +S1136310D6F800043060AD1CD6F80080280000F0E8 +S1136320CEF818EB00203060AD1CD6F800802800B1 +S113633000F0C5F810EB08003060AD1CB7F104089C +S1136340002C0DD0002606E0280000F0B8F8B6B204 +S11363503055AD1C761CB6B20FFA88F84645F3DB0F +S113636039E0AD1C280000F0AAF80700AD1C280095 +S113637000F0A5F800063060AD1CD6F800802800B7 +S113638000F09DF818EB00403060AD1CD6F800809A +S1136390280000F094F818EB00203060AD1CD6F80B +S11363A00080280000F08BF810EB08003060AD1C72 +S11363B0B7F10508002C0DD0002606E0280000F0F7 +S11363C07EF8B6B23055AD1C761CB6B20FFA88F81A +S11363D04645F3DBFFE7404600B2BDE8F08100002C +S11363E08F16002048060020D0790000847A00002F +S11363F05C7A00007C080020407C0000487C00009F +S1136400A87A0000007A00002C160020D012002088 +S113641050140020087C0000EC150020387B00009C +S1136420EE150020F0150020F2150020CC7A0000B3 +S1136430D0130020F07A0000CC7B00008C7B00009D +S1136440547B0000A47B0000307A000080B501007A +S113645011F00F003030C9B20A2901DBC01D02E07F +S1136460C0B200F0B1F9C0B202BD38B504000D00ED +S1136470E4B22009FFF7EAFF287014F00F00FFF7D9 +S1136480E5FF68700020A870280032BD0200491C96 +S11364900A23B2FBF3F2002AF9D100220A700200A7 +S11364A0491E0A20B2FBF0F300FB132030300870C1 +S11364B00A20B2FBF0F2002AF2D10800704770B54E +S11364C004000025002609E03038C0B20A2800DBA9 +S11364D0C01FEDB2C0B210EB0515761CF6B2022E49 +S11364E00FDAF6B2305D00F06FF9C0B2B0F13001EE +S11364F0172904D2C0B2B0F13A010729E4D200202E +S113650001E02800C0B270BD80B500F036F8002864 +S11365100DD0FFF7D0FBFDF764F900F036FA04491B +S113652008400449086000F030FA4068804701BD23 +S113653080FFFF1F08ED00E070B504000D00160099 +S113654005E0287820706D1C641CFDF774F9300098 +S1136550461E80B20028F4D170BD80B500F064FB03 +S113656001BD80B500F03CF901BD80B500F043F9F0 +S113657002BD80B500F069F902BD80B500F0C2F932 +S113658002BD80B500F07BF9002801D1002001E0B4 +S113659000F0E0F902BD10B5040010000A0001008B +S11365A0200000F04DFB200010BD000080B54648DF +S11365B0FCF755FEFCF7D0FF60234FF46142010065 +S11365C0424800F096FB01BD70B504000D00EDB229 +S11365D0412D03DB57213E48FDF720F92800C0B2C6 +S11365E000F05EF8C0B2012803D05B213848FDF703 +S11365F015F900260DE0FDF71EF9B6B2305D00F086 +S11366004FF8C0B2012803D064213148FDF706F9E0 +S1136610761C2800C0B2B6B280B28642EBD370BDFD +S113662010B504002B48007800280CD12A4800F04B +S11366302AF8012805D127480121017027480021A3 +S11366400170002010BD2548007823494018401CE3 +S113665000F019F80128F4D120480078401C1F49A3 +S113666008701E4800781C4909788842E9D11B4803 +S1136670027892B21A492000FFF75EFF1548002104 +S113668001700120DEE710B50400104800F0EFFBB4 +S113669010F1010F02D02070012000E0002010BD95 +S11366A080B50100C9B2094800F0F6FB002803D107 +S11366B0002007E0FDF7BFF8044800F0C2FB002803 +S11366C0F8D0012002BD00000100001000C000400D +S11366D0947900009116002068150020901600207F +S11366E06915002000B589B000A8202100F018FC2D +S11366F000A93148FBF7A0FB002808D10098002826 +S113670005D09DF80800C00601D4012000E0002057 +S113671009B000BD2848704780B52848002180F89A +S113672024120A2226492548FAF772FF002803D1C9 +S11367302248012180F8241201BD80B51F4890F839 +S11367402402012802D11D48FBF78DFA1D4800F0F0 +S1136750B9FB0128FAD01848FBF798FB01BD80B5B6 +S1136760164890F82402012802D11448FBF77BFA5A +S113677001BD10B50400114890F82402012817D176 +S11367800E492000FBF733FC002811D50B480021EB +S113679080F824120948FBF766FA09E021780948D1 +S11367A000F07AFB074800F04CFB0028FAD0641C88 +S11367B020780028F2D110BD707B0000A00A0020D0 +S11367C0DC7B000000C0004080B500F0ACFB02BDE3 +S11367D030380A2801D2012000E00020C0B27047FE +S11367E0DFF838045FF0FF310160DFF834045FF054 +S11367F0FF310160704770B504000D0016002000E1 +S113680000F0A8F9FF2805D02819401E00F0A2F9CD +S1136810FF2801D1002017E0600A4FF400714843BB +S1136820DFF800140968884207D12B0032002100E8 +S1136830DFF8EC0300F0E4F806E02B00320021005E +S1136840DFF8D80300F0DCF870BD70B504000D006B +S1136850200000F07FF906002819401E00F07AF9A4 +S1136860F6B2FF2E02D0C0B2FF2801D1002005E00D +S11368700100C9B23000C0B200F02FF970BD80B57C +S113688000200090DFF89803006810F1010F01D197 +S1136890012036E00098DFF8881349680818009052 +S11368A00098DFF87C138968081800900098DFF8D6 +S11368B07013C968081800900098DFF86413096918 +S11368C0081800900098DFF85813496908180090D8 +S11368D00098DFF84C138969081800900098DFF8D5 +S11368E04013C969081800900098C04300900098AC +S11368F0401C009000AA0421CA480068F030FFF749 +S11369007AFF02BD0020C749096809680818C5490B +S1136910096849680818C349096889680818C14999 +S11369200968C9680818BF49096809690818BD4990 +S1136930096849690818BB49096889690818B94987 +S11369400968D1F8F0100818002801D1012000E0EE +S11369500020704780B5B248006810F1010F06D0DE +S1136960AF4800F090F8002801D100200CE0AB48BB +S1136970006810F1010F06D0A84800F084F8002840 +S113698001D1002000E0012002BDA6480068704744 +S113699080B54FF40072B1FBF2F303FB1213002B2A +S11369A001D000200BE002688A4201D1012006E0F8 +S11369B001604FF40072001DFFF7BEFD012002BD0F +S11369C038B504000D009648844208D1934C290040 +S11369D02000FFF7DDFF002810D100200FE09148D0 +S11369E00068854203D18E4C8E480568EFE720008D +S11369F000F049F80028EAD1002000E0200032BD70 +S1136A002DE9F04104000F0015001E00780A4FF430 +S1136A10007101FB00F8206810F1010F07D1414615 +S1136A202000FFF7B5FF002801D1002029E02068ED +S1136A30404508D041462000FFF7C2FF0400002C67 +S1136A4001D100201DE02068381A0019071DFCF749 +S1136A50F2FE201D381AB0F5007F0AD318F5007134 +S1136A602000FFF7ADFF0400002C01D1002008E056 +S1136A70271D287838707F1C6D1C761E002EE6D1E9 +S1136A800120BDE8F081F8B505000124286800F074 +S1136A9061F8C0B2FF2801D100201DE0002600E00B +S1136AA0761C802E16D2286810EB860715EB86001C +S1136AB040680090FCF7BFFE0422390000A8FFF7ED +S1136AC01AF8002801D0002404E0386800998842AC +S1136AD0E6D000242000C0B2F2BD70B50D00EDB2C6 +S1136AE0C0B2854201D2002033E04E49097AC0B2D7 +S1136AF0884205D34B4991F8BC10EDB2A94201D2AA +S1136B00002026E0C0B200F04FF804002800C0B214 +S1136B1000F04AF806002800C0B200F062F88019BC +S1136B20401E001B401C850A002600E0761CB6B2FD +S1136B30ADB2AE420CD2FCF77EFEB6B24FF480602A +S1136B4000FB0640FEF7B0FF0028EFD0002000E075 +S1136B50012070BD38B50400002500E06D1CEDB2C5 +S1136B60102D1FD2FCF767FEEDB20C202D4900FB5F +S1136B70051000688442F1D3EDB20C20294900FBD2 +S1136B8005100068EDB20C21264A01FB0521496875 +S1136B9008188442E2D2EDB20C20224900FB051011 +S1136BA0007A00E0FF2032BD38B50400002500E083 +S1136BB06D1CEDB2102D11D2FCF73DFEEDB20C2090 +S1136BC0184900FB0510007AE4B2A042F0D1EDB2FE +S1136BD00C20144900FB0510006801E05FF0FF3051 +S1136BE032BD38B50400002500E06D1CEDB2102D57 +S1136BF011D2FCF720FEEDB20C200A4900FB05106F +S1136C00007AE4B2A042F0D1EDB20C20054900FBB9 +S1136C100510406800E0002032BD0000C80C0020D0 +S1136C20CC0E00206C750000044B9D46C046C04647 +S1136C30C046C046FFF786F800F080F9A01800208F +S1136C4062F30F2262F31F42401810F0030308D0CE +S1136C50C91A1FD3DB0748BF00F8012D28BF20F84D +S1136C60022D130030B414461546103928BF20E90C +S1136C703C00FAD8490728BF20E90C0048BF40F877 +S1136C80042D890028BF20F8022D48BF00F8012DEB +S1136C9030BC7047C91818BF00F8012DCB0728BFB6 +S1136CA000F8012D70470000DFF83C1288421BD029 +S1136CB0DFF83812884217D0DFF83412884213D034 +S1136CC0DFF8301288420FD0DFF82C1288420BD044 +S1136CD0DFF82812884207D0DFF82412884203D054 +S1136CE0DFF82012884201D1012000E00020C0B268 +S1136CF07047F8B504000E0017001D002000FFF7D0 +S1136D00D3FF002805D14FF4B071DFF8FC01FCF784 +S1136D1085FD002F05D140F26111DFF8EC01FCF78D +S1136D207DFDDFF8E801006810F0E04F27D0DFF8C0 +S1136D30DC010068DFF8D8110840B0F1805F1ED094 +S1136D40DFF8C8010068DFF8C8110840DFF8C41193 +S1136D50884205D1DFF8B401006880B202280ED061 +S1136D60DFF8A8010068DFF8A8110840DFF8A811CF +S1136D70884206D1DFF894010068000401D1102094 +S1136D8000E0082000FB07F0864205D24FF4B17101 +S1136D90DFF87401FCF742FD200000F038F8B6EB90 +S1136DA0071F05D2206B50F0200020637F0803E00A +S1136DB0206B30F020002063F000B0FBF7F0401CA3 +S1136DC04008810961624021B0FBF1F202FB11022B +S1136DD0A262E5620020A061200000F001F8F1BD8C +S1136DE010B504002000FFF75FFF002805D14FF421 +S1136DF0FB71DFF81401FCF711FDE06A50F010009C +S1136E00E062206B40F201310843206310BD10B5ED +S1136E1004002000FFF748FF002805D140F21621A6 +S1136E20DFF8E400FCF7FAFCA0690007FCD4E06A90 +S1136E3030F01000E062206BDFF8E01008402063BF +S1136E4010BD10B504002000FFF72EFF002805D167 +S1136E5040F25541DFF8B000FCF7E0FCA069C0F354 +S1136E60401010F0010090F00100C0B210BD10B548 +S1136E7004002000FFF718FF002805D140F27641F6 +S1136E80DFF88400FCF7CAFCA069C00601D42068BE +S1136E9001E05FF0FF3010BD38B504000D002000A4 +S1136EA0FFF702FF002804D140F2C9411648FCF75D +S1136EB0B5FCA069800603D4EDB22560012000E092 +S1136EC0002032BD10B504002000FFF7EDFE0028BD +S1136ED004D140F23B510C48FCF7A0FCA069C0F37C +S1136EE0C00010F0010010BD00C0004000D0004000 +S1136EF000E0004000F000400000014000100140AC +S1136F0000200140003001403878000000E00F40CC +S1136F100000FF700000011000000310FEFCFFFFE2 +S1136F20002200F017B810B50400200000F02BF880 +S1136F30002801D0203CFFE7200010BD00F02BF812 +S1136F40002801D000F02AF8002000F03BF800F0FF +S1136F5053F8000000B500BF13009646944610395C +S1136F6028BFA0E80C50FAD85FEA417C28BF0CC0C7 +S1136F7048BF40F8042BC90728BF20F8022B48BF9C +S1136F8000F8012B00BD61381A2801D2012000E06D +S1136F900020C0B2704701207047000010B50749B7 +S1136FA079441831064C7C44163404E00A68081D00 +S1136FB0511888470146A142F8D110BD580B000072 +S1136FC0780B000080B500F005F800F017F800F029 +S1136FD023F8FCE780B50648FCF7BAF90548FCF746 +S1136FE03EF903215FF04020FBF768FE01BD00007D +S1136FF08003C0010100002000F01AB880B5FCF73E +S113700019FCFCF7DDFBFFF7ACFAFEF7ABFEFEF76D +S113701021FE00F013F801BD80B5FCF70CFCFCF771 +S1137020E4FBFEF7D5FEFEF72EFE00F012F801BDDC +S11370300746384600F030F8FBE7000080B51448F6 +S113704001210170FCF7DBFB1249086000F001F834 +S113705001BD80B5FEF782FE012818D0FEF795FE2B +S1137060002814D00A480078012810D1FCF7C7FB87 +S11370700849096801F2EE21884208D30448002136 +S11370800170FEF78BFE002801D1FFF73DFA01BD28 +S11370908E1600204416002080B5C046C046024A21 +S11370A011001820ABBEFBE726000200610062005D +S11370B063006400650066006700680069006A0098 +S11370C06B006C006D006E006F0070007100720048 +S11370D073007400750076007700780079007A00F8 +S11370E0A100A200A300A500AC00AF00E000E100F5 +S11370F0E200E300E400E500E600E700E800E90060 +S1137100EA00EB00EC00ED00EE00EF00F000F1000F +S1137110F200F300F400F500F600F800F900FA00BC +S1137120FB00FC00FD00FE00FF000101030105015E +S1137130070109010B010D010F01110113011501D3 +S1137140170119011B011D011F0121012301250143 +S1137150270129012B012D012F01310133013501B3 +S113716037013A013C013E0140014201440146011C +S113717048014B014D014F01510153015501570184 +S113718059015B015D015F016101630165016701F3 +S113719069016B016D016F01710173017501770163 +S11371A07A017C017E019201B103B203B303B403FB +S11371B0B503B603B703B803B903BA03BB03BC03EF +S11371C0BD03BE03BF03C003C103C303C403C5039C +S11371D0C603C703C803C903CA0330043104320415 +S11371E033043404350436043704380439043A04C7 +S11371F03B043C043D043E043F0440044104420477 +S113720043044404450446044704480449044A0426 +S11372104B044C044D044E044F04510452045304D3 +S11372205404550456045704580459045A045B047E +S11372305C045E045F047021712172217321742146 +S1137240752176217721782179217A217B217C216E +S11372507D217E217F2141FF42FF43FF44FF45FF03 +S113726046FF47FF48FF49FF4AFF4BFF4CFF4DFFD6 +S11372704EFF4FFF50FF51FF52FF53FF54FF55FF86 +S113728056FF57FF58FF59FF5AFF000041004200C4 +S113729043004400450046004700480049004A00B6 +S11372A04B004C004D004E004F0050005100520066 +S11372B053005400550056005700580059005A0016 +S11372C02100E0FFE1FFE5FFE2FFE3FFC000C100B2 +S11372D0C200C300C400C500C600C700C800C9007E +S11372E0CA00CB00CC00CD00CE00CF00D000D1002E +S11372F0D200D300D400D500D600D800D900DA00DB +S1137300DB00DC00DD00DE00780100010201040185 +S1137310060108010A010C010E01100112011401F9 +S1137320160118011A011C011E0120012201240169 +S1137330260128012A012C012E01300132013401D9 +S1137340360139013B013D013F0141014301450142 +S113735047014A014C014E015001520154015601AA +S113736058015A015C015E01600162016401660119 +S113737068016A016C016E01700172017401760189 +S113738079017B017D01910191039203930394039D +S1137390950396039703980399039A039B039C030D +S11373A09D039E039F03A003A103A303A403A503BA +S11373B0A603A703A803A903AA0310041104120433 +S11373C013041404150416041704180419041A04E5 +S11373D01B041C041D041E041F0420042104220495 +S11373E023042404250426042704280429042A0445 +S11373F02B042C042D042E042F0401040204030482 +S11374000404050406040704080409040A040B041C +S11374100C040E040F0460216121622163216421A4 +S1137420652166216721682169216A216B216C210C +S11374306D216E216F2121FF22FF23FF24FF25FFF1 +S113744026FF27FF28FF29FF2AFF2BFF2CFF2DFFF4 +S11374502EFF2FFF30FF31FF32FF33FF34FF35FFA4 +S113746036FF37FF38FF39FF3AFF0000C700FC0042 +S1137470E900E200E400E000E500E700EA00EB00D8 +S1137480E800EF00EE00EC00C400C500C900E6000F +S1137490C600F400F600F200FB00F900FF00D6007D +S11374A0DC00A200A300A500A7209201E100ED00EA +S11374B0F300FA00F100D100AA00BA00BF001023C3 +S11374C0AC00BD00BC00A100AB00BB00912592251F +S11374D093250225242561256225562555256325F6 +S11374E0512557255D255C255B251025142534255C +S11374F02C251C2500253C255E255F255A25542571 +S113750069256625602550256C2567256825642531 +S1137510652559255825522553256B256A25182597 +S11375200C25882584258C2590258025B103DF0032 +S11375309303C003A303C303B500C403A6039803C2 +S1137540A903B4031E22C603B50329226122B10094 +S11375506522642220232123F7004822B000192247 +S1137560B7001A227F20B200A025A00000800000EE +S1137570002000000400000000A000000020000023 +S11375800500000000C0000000200000060000000C +S113759000E00000002000000700000000000100DF +S11375A0002000000800000000200100002000006E +S11375B00900000000400100002000000A00000053 +S11375C000600100002000000B00000000800100AA +S11375D0002000000C00000000A0010000200000BA +S11375E00D00000000C00100002000000E0000009B +S11375F000E00100002000000F0000000000020075 +S113760000800000100000000080020000800000E4 +S113761011000000000003000080000012000000C0 +S1137620008003000080000013000000809A904155 +S11376308E418F804545454949498E8F9092924F9E +S1137640994F555559999A9B9C9D9E9F41494F55D9 +S1137650A5A5A6A7A8A9AAABAC21AEAFB0B1B2B3F9 +S1137660B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C35E +S1137670C4C5C6C7C8C9CACBCCCDCECFD0D1D2D34E +S1137680D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E33E +S1137690E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F32E +S11376A0F4F5F6F7F8F9FAFBFCFDFEFF40420F0093 +S11376B000201C0080841E0000802500999E360056 +S11376C00040380000093D0000803E0000004B00EF +S11376D0404B4C0000204E00808D5B0000C05D00DC +S11376E00080700000127A0000007D0080969800EF +S11376F0001BB7000080BB00C0E8CE00647ADA004B +S11377000024F4000000FA0080A81201002D3101C9 +S113771000366E0140787D01433A5C576F726B5CB2 +S1137720736F6674776172655C4F70656E424C541A +S11377305C5461726765745C44656D6F5C41524D65 +S1137740434D335F4C4D33535F454B5F4C4D335387 +S1137750363936355F4941525C426F6F745C6C69EF +S1137760625C6472697665726C69625C6574686592 +S1137770726E65742E630000433A5C576F726B5CE3 +S1137780736F6674776172655C4F70656E424C54BA +S11377905C5461726765745C44656D6F5C41524D05 +S11377A0434D335F4C4D33535F454B5F4C4D335327 +S11377B0363936355F4941525C426F6F745C6C698F +S11377C0625C6472697665726C69625C666C617332 +S11377D0686C69622E630000433A5C576F726B5C9D +S11377E0736F6674776172655C4F70656E424C545A +S11377F05C5461726765745C44656D6F5C41524DA5 +S1137800434D335F4C4D33535F454B5F4C4D3353C6 +S1137810363936355F4941525C426F6F745C6C692E +S1137820625C6472697665726C69625C73797363B5 +S1137830746C2E6300000000433A5C576F726B5CFB +S1137840736F6674776172655C4F70656E424C54F9 +S11378505C5461726765745C44656D6F5C41524D44 +S1137860434D335F4C4D33535F454B5F4C4D335366 +S1137870363936355F4941525C426F6F745C6C69CE +S1137880625C6472697665726C69625C756172745B +S11378906C69622E63000000433A5C576F726B5C44 +S11378A0736F6674776172655C4F70656E424C5499 +S11378B05C5461726765745C44656D6F5C41524DE4 +S11378C0434D335F4C4D33535F454B5F4C4D335306 +S11378D0363936355F4941525C426F6F745C6C696E +S11378E0625C6472697665726C69625C6770696F08 +S11378F02E630000433A5C576F726B5C736F66745F +S1137900776172655C4F70656E424C545C54617271 +S11379106765745C44656D6F5C41524D434D335FE4 +S11379204C4D33535F454B5F4C4D335336393635ED +S11379305F4941525C426F6F745C6C69625C647253 +S1137940697665726C69625C7373692E630000000A +S1137950433A5C576F726B5C736F667477617265E0 +S11379605C4F70656E424C545C5461726765745C24 +S1137970536F757263655C41524D434D335F4C4D9B +S113798033535C4941525C766563746F72732E6342 +S113799000000000433A5C576F726B5C736F66744F +S11379A0776172655C4F70656E424C545C546172D1 +S11379B06765745C536F757263655C41524D434DEA +S11379C0335F4C4D33535C756172742E6300000059 +S11379D0433A5C576F726B5C736F66747761726560 +S11379E05C4F70656E424C545C5461726765745CA4 +S11379F0536F757263655C66696C652E6300000085 +S1137A0050617273696E67206669726D7761726521 +S1137A102066696C6520746F206F627461696E20E2 +S1137A2065726173652073697A652E2E2E000000DD +S1137A304669726D77617265207570646174652042 +S1137A407375636365737366756C6C7920636F6DAE +S1137A50706C657465640A0D000000004F70656EFB +S1137A60696E67206669726D776172652066696CFC +S1137A706520666F722072656164696E672E2E2EB2 +S1137A80000000004669726D77617265207570644C +S1137A9061746520726571756573742064657465BD +S1137AA0637465640A0D00005374617274696E67CF +S1137AB0207468652070726F6772616D6D696E679E +S1137AC02073657175656E63650A0D0052656164A6 +S1137AD0696E67206C696E652066726F6D206669D9 +S1137AE06C652E2E2E4552524F520A0D0000000096 +S1137AF0496E76616C696420636865636B73756D48 +S1137B0020666F756E642E2E2E4552524F520A0D0A +S1137B100000000063D1FFFF98160000040000205D +S1137B2000000000F7A4FFFF040000003C01000077 +S1137B300000002000000000206279746573206654 +S1137B40726F6D206D656D6F72792061742030786D +S1137B500000000057726974696E672070726F6765 +S1137B6072616D20636865636B73756D2E2E2E00D4 +S1137B702F64656D6F70726F675F656B5F6C6D33DB +S1137B8073363936352E737265630000206279745A +S1137B90657320746F206D656D6F72792061742038 +S1137BA030780000436C6F73696E67206669726D8C +S1137BB0776172652066696C650A0D00010305072B +S1137BC0090E10121416181C1E00000050726F6764 +S1137BD072616D6D696E6720000000002F626F6F27 +S1137BE0746C6F672E7478740000000080B54121B6 +S1137BF00148FBF713FE01BD50790000222A3A3CEC +S1137C003E3F7C7F0000000045726173696E67200F +S1137C100000000040E00F4044E00F4048E00F4007 +S1137C2000E10F4004E10F4008E10F40C046C046A8 +S1137C30C046C046FFF782F92B2C3B3D5B5D00003C +S1137C404552524F520A0D004F4B0A0D00000000DE +S1137C50FFFFFFFFFFFF00004F70656E424C5400B2 +S10F7C6000000000FFFFFFFF0401000013 +S9037C2D53 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/blt_conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/blt_conf.h index b48283f6..34a381c4 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/blt_conf.h +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/blt_conf.h @@ -83,6 +83,48 @@ #define BOOT_COM_UART_CHANNEL_INDEX (0) +/* The NET communication interface for firmware updates via TCP/IP is selected by setting + * the BOOT_COM_NET_ENABLE configurable to 1. The maximum amount of data bytes in a + * message for data transmission and reception is set through BOOT_COM_NET_TX_MAX_DATA + * and BOOT_COM_NET_RX_MAX_DATA, respectively. The default IP address is configured + * with the macros BOOT_COM_NET_IPADDRx. The default netmask is configued with the macros + * BOOT_COM_NET_NETMASKx. The bootloader acts and a TCP/IP server. The port the server + * listen on for connections is configured with BOOT_COM_NET_PORT. + */ +/** \brief Enable/disable the NET transport layer. */ +#define BOOT_COM_NET_ENABLE (1) +/** \brief Configure number of bytes in the target->host data packet. */ +#define BOOT_COM_NET_TX_MAX_DATA (64) +/** \brief Configure number of bytes in the host->target data packet. */ +#define BOOT_COM_NET_RX_MAX_DATA (64) +/** \brief Configure the port that the TCP/IP server listens on */ +#define BOOT_COM_NET_PORT (1000) +/** \brief Configure the 1st byte of the IP address */ +#define BOOT_COM_NET_IPADDR0 (169) +/** \brief Configure the 2nd byte of the IP address */ +#define BOOT_COM_NET_IPADDR1 (254) +/** \brief Configure the 3rd byte of the IP address */ +#define BOOT_COM_NET_IPADDR2 (19) +/** \brief Configure the 4th byte of the IP address */ +#define BOOT_COM_NET_IPADDR3 (63) +/** \brief Configure the 1st byte of the network mask */ +#define BOOT_COM_NET_NETMASK0 (255) +/** \brief Configure the 2nd byte of the network mask */ +#define BOOT_COM_NET_NETMASK1 (255) +/** \brief Configure the 3rd byte of the network mask */ +#define BOOT_COM_NET_NETMASK2 (0) +/** \brief Configure the 4th byte of the network mask */ +#define BOOT_COM_NET_NETMASK3 (0) +/** \brief Enable/disable a hook function that is called when the IP address is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_IPADDRx values. + */ +#define BOOT_COM_NET_IPADDR_HOOK_ENABLE (0) +/** \brief Enable/disable a hook function that is called when the netmask is about + * to be set. This allows a dynamic override of the BOOT_COM_NET_NETMASKx values. + */ +#define BOOT_COM_NET_NETMASK_HOOK_ENABLE (0) + + /**************************************************************************************** * F I L E S Y S T E M I N T E R F A C E C O N F I G U R A T I O N ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/hooks.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/hooks.c index fccabe2d..7f3d29a5 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/hooks.c +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/hooks.c @@ -187,6 +187,55 @@ blt_bool NvmWriteChecksumHook(void) #endif /* BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0 */ +/**************************************************************************************** +* N E T W O R K I N T E R F A C E H O O K F U N C T I O N S +****************************************************************************************/ +#if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the IP address is about to be configured. +** \param ipAddrArray 4-byte array where the IP address should be stored. +** \return none. +** +****************************************************************************************/ +void NetIpAddressHook(blt_int8u *ipAddrArray) +{ + /* This hook function allows a dynamic configuration of the IP address. This could for + * example be used if the bootloader is activated from a running user program and + * should have the same IP address as the user program. This IP address could be stored + * at a fixed location in RAM which can be read here. For now the example implemen- + * tation simply configures the bootloader's default IP address. + */ + ipAddrArray[0] = BOOT_COM_NET_IPADDR0; + ipAddrArray[1] = BOOT_COM_NET_IPADDR1; + ipAddrArray[2] = BOOT_COM_NET_IPADDR2; + ipAddrArray[3] = BOOT_COM_NET_IPADDR3; +} /*** end of NetIpAddressHook ***/ +#endif /* BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0 */ + + +#if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) +/************************************************************************************//** +** \brief Callback that gets called when the network mask is about to be configured. +** \param netMaskArray 4-byte array where the network mask should be stored. +** \return none. +** +****************************************************************************************/ +void NetNetworkMaskHook(blt_int8u *netMaskArray) +{ + /* This hook function allows a dynamic configuration of the network mask. This could + * for example be used if the bootloader is activated from a running user program and + * should have the same network mask as the user program. This network mask could be + * stored at a fixed location in RAM which can be read here. For now the example + * implementation simply configures the bootloader's default network mask. + */ + netMaskArray[0] = BOOT_COM_NET_NETMASK0; + netMaskArray[1] = BOOT_COM_NET_NETMASK1; + netMaskArray[2] = BOOT_COM_NET_NETMASK2; + netMaskArray[3] = BOOT_COM_NET_NETMASK3; +} /*** end of NetNetworkMaskHook ***/ +#endif /* BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0 */ + + /**************************************************************************************** * W A T C H D O G D R I V E R H O O K F U N C T I O N S ****************************************************************************************/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.dep b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.dep index e9b43576..5de2d55f 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.dep +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.dep @@ -2,52 +2,17 @@ 2 - 2078784863 + 3663779922 Debug - $PROJ_DIR$\..\lib\driverlib\cpulib.h - $PROJ_DIR$\..\lib\driverlib\flashlib.h - $PROJ_DIR$\..\lib\driverlib\cpulib.c - $PROJ_DIR$\..\lib\driverlib\debug.h - $PROJ_DIR$\..\lib\driverlib\flashlib.c - $PROJ_DIR$\..\lib\driverlib\gpio.c - $PROJ_DIR$\..\lib\driverlib\gpio.h - $PROJ_DIR$\..\lib\driverlib\interrupt.c - $PROJ_DIR$\..\lib\driverlib\interrupt.h - $PROJ_DIR$\..\lib\driverlib\pin_map.h - $PROJ_DIR$\..\lib\driverlib\ssi.c - $PROJ_DIR$\..\lib\driverlib\ssi.h - $PROJ_DIR$\..\lib\driverlib\sysctl.c - $PROJ_DIR$\..\lib\driverlib\sysctl.h - $PROJ_DIR$\..\lib\driverlib\uartlib.c - $PROJ_DIR$\..\lib\driverlib\uartlib.h - $PROJ_DIR$\..\lib\fatfs\ffconf.h - $PROJ_DIR$\..\lib\fatfs\mmc.c - $PROJ_DIR$\..\lib\inc\hw_flash.h - $PROJ_DIR$\..\lib\inc\hw_gpio.h - $PROJ_DIR$\..\lib\inc\hw_ints.h - $PROJ_DIR$\..\lib\inc\hw_memmap.h - $PROJ_DIR$\..\lib\inc\hw_nvic.h - $PROJ_DIR$\..\lib\inc\hw_ssi.h - $PROJ_DIR$\..\lib\inc\hw_sysctl.h - $PROJ_DIR$\..\lib\inc\hw_types.h - $PROJ_DIR$\..\lib\inc\hw_uart.h - $PROJ_DIR$\..\blt_conf.h - $PROJ_DIR$\..\hooks.c - $PROJ_DIR$\..\main.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s - $PROJ_DIR$\..\..\..\..\Source\file.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.h + $PROJ_DIR$\..\..\..\..\Source\file.h $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c + $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\option\unicode.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.h $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.h - $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\option\unicode.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\types.h $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.c $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.h @@ -55,6 +20,20 @@ $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\ff.c $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\ff.h $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\integer.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\clock.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\lc-switch.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\lc.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\pt.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip.c + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_arch.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_arp.c + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_arp.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_timer.c + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_timer.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uiplib.c + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uiplib.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uipopt.h $PROJ_DIR$\..\..\..\..\Source\assert.c $PROJ_DIR$\..\..\..\..\Source\assert.h $PROJ_DIR$\..\..\..\..\Source\backdoor.c @@ -65,38 +44,85 @@ $PROJ_DIR$\..\..\..\..\Source\com.h $PROJ_DIR$\..\..\..\..\Source\cop.c $PROJ_DIR$\..\..\..\..\Source\cop.h - $PROJ_DIR$\..\..\..\..\Source\file.h + $PROJ_DIR$\..\..\..\..\Source\file.c + $PROJ_DIR$\..\..\..\..\Source\net.c + $PROJ_DIR$\..\..\..\..\Source\net.h $PROJ_DIR$\..\..\..\..\Source\plausibility.h $PROJ_DIR$\..\..\..\..\Source\xcp.c $PROJ_DIR$\..\..\..\..\Source\xcp.h - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\diskio.h - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\integer.h - $PROJ_DIR$\..\config.h - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.h - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c - $PROJ_DIR$\..\obj\file.lst - $PROJ_DIR$\..\obj\ssi.lst + $PROJ_DIR$\..\obj\cpu.pbi + $PROJ_DIR$\..\obj\flash.pbi + $TOOLKIT_DIR$\inc\c\xmtx.h $PROJ_DIR$\..\..\..\..\Source\filesys.h - $PROJ_DIR$\..\obj\filesys.lst - $PROJ_DIR$\..\obj\led.lst - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c - $PROJ_DIR$\..\..\..\..\Source\filesys.c - $PROJ_DIR$\..\obj\led.pbi - $PROJ_DIR$\..\obj\filesys.o $PROJ_DIR$\..\obj\unicode.lst + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\psock.c + $TOOLKIT_DIR$\inc\c\stdlib.h + $PROJ_DIR$\..\obj\filesys.o $PROJ_DIR$\..\obj\unicode.pbi + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.h + $PROJ_DIR$\..\obj\led.lst + $PROJ_DIR$\..\obj\filesys.lst + $PROJ_DIR$\..\obj\led.pbi $PROJ_DIR$\..\obj\unicode.o + $PROJ_DIR$\..\..\..\..\Source\filesys.c + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\ccsbcs.c $TOOLKIT_DIR$\inc\c\ctype.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\psock.h $TOOLKIT_DIR$\inc\c\xtls.h $TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h $TOOLKIT_DIR$\inc\c\xlocale_c.h $TOOLKIT_DIR$\inc\c\xencoding_limits.h $PROJ_DIR$\..\obj\sysctl.pbi + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c $PROJ_DIR$\..\obj\uartlib.pbi $PROJ_DIR$\..\obj\uart.o - $PROJ_DIR$\..\obj\flash.pbi - $PROJ_DIR$\..\obj\cpu.pbi + $PROJ_DIR$\..\obj\hooks.pbi + $PROJ_DIR$\..\obj\uart.lst + $PROJ_DIR$\..\obj\cop.lst + $PROJ_DIR$\..\obj\com.lst + $TOOLKIT_DIR$\lib\dl7M_tln.a + $TOOLKIT_DIR$\lib\rt7M_tl.a + $PROJ_DIR$\..\obj\ff.pbi + $PROJ_DIR$\..\obj\uartlib.lst + $PROJ_DIR$\..\obj\ff.lst + $PROJ_DIR$\..\obj\cpulib.lst + $PROJ_DIR$\..\obj\openbtl_ek_lm3s6965.map + $PROJ_DIR$\..\obj\nvm.lst + $TOOLKIT_DIR$\inc\c\stdarg.h + $PROJ_DIR$\..\obj\cpulib.o + $PROJ_DIR$\..\obj\main.pbi + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\memory.x + $PROJ_DIR$\..\obj\mmc.o + $PROJ_DIR$\..\obj\flashlib.lst + $PROJ_DIR$\..\obj\filesys.pbi + $PROJ_DIR$\..\obj\mmc.pbi + $PROJ_DIR$\..\obj\vectors.pbi + $PROJ_DIR$\..\obj\timer.o + $PROJ_DIR$\..\obj\flash.o + $PROJ_DIR$\..\obj\main.lst + $PROJ_DIR$\..\obj\vectors.o + $PROJ_DIR$\..\obj\timer.pbi + $PROJ_DIR$\..\obj\boot.lst + $PROJ_DIR$\..\obj\vectors.lst + $PROJ_DIR$\..\obj\timer.lst + $TOOLKIT_DIR$\lib\m7M_tl.a + $PROJ_DIR$\..\obj\file.pbi + $PROJ_DIR$\..\obj\file.o + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\diskio.c + $PROJ_DIR$\..\obj\ssi.o + $PROJ_DIR$\..\obj\ssi.pbi + $PROJ_DIR$\..\obj\ff.o + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\net.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\net.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\apps\hello-world\hello-world.h + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\apps\hello-world\hello-world.c + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\diskio.h + $PROJ_DIR$\..\obj\ssi.lst + $PROJ_DIR$\..\config.h + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\integer.h + $PROJ_DIR$\..\obj\file.lst + $TOOLKIT_DIR$\inc\c\DLib_Defaults.h $PROJ_DIR$\..\obj\nvm.pbi $PROJ_DIR$\..\obj\uart.pbi $PROJ_DIR$\..\obj\xcp.lst @@ -110,15 +136,13 @@ $PROJ_DIR$\..\obj\interrupt.lst $PROJ_DIR$\..\obj\sysctl.lst $PROJ_DIR$\..\obj\gpio.lst - $PROJ_DIR$\..\obj\uartlib.lst - $PROJ_DIR$\..\obj\openbtl_ek_lm3s6965.map - $PROJ_DIR$\..\obj\cpulib.lst - $PROJ_DIR$\..\obj\flashlib.lst - $PROJ_DIR$\..\obj\cpulib.o - $TOOLKIT_DIR$\inc\c\stdarg.h - $PROJ_DIR$\..\obj\mmc.pbi - $PROJ_DIR$\..\obj\mmc.o - $PROJ_DIR$\..\obj\filesys.pbi + $PROJ_DIR$\..\obj\diskio.pbi + $TOOLKIT_DIR$\inc\c\wchar.h + $TOOLKIT_DIR$\inc\c\xlocale.h + $TOOLKIT_DIR$\inc\c\yvals.h + $TOOLKIT_DIR$\inc\c\DLib_Product.h + $TOOLKIT_DIR$\inc\c\ycheck.h + $TOOLKIT_DIR$\lib\shb_l.a $PROJ_DIR$\..\obj\mmc.lst $PROJ_DIR$\..\obj\led.o $PROJ_DIR$\..\bin\openbtl_ek_lm3s6965.out @@ -128,49 +152,55 @@ $PROJ_DIR$\..\obj\flash.lst $PROJ_DIR$\..\obj\backdoor.lst $PROJ_DIR$\..\obj\cpu.lst - $PROJ_DIR$\..\obj\hooks.pbi - $PROJ_DIR$\..\obj\uart.lst - $PROJ_DIR$\..\obj\cop.lst - $PROJ_DIR$\..\obj\com.lst - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\memory.x - $TOOLKIT_DIR$\lib\dl7M_tln.a - $TOOLKIT_DIR$\lib\rt7M_tl.a - $PROJ_DIR$\..\obj\ff.pbi - $PROJ_DIR$\..\obj\nvm.lst - $TOOLKIT_DIR$\inc\c\xmtx.h - $TOOLKIT_DIR$\inc\c\stdlib.h - $TOOLKIT_DIR$\inc\c\DLib_Defaults.h $TOOLKIT_DIR$\inc\c\ysizet.h + $PROJ_DIR$\..\lib\driverlib\debug.h + $PROJ_DIR$\..\lib\driverlib\ethernet.h + $PROJ_DIR$\..\lib\driverlib\cpulib.h + $PROJ_DIR$\..\lib\driverlib\cpulib.c + $PROJ_DIR$\..\lib\driverlib\ethernet.c + $PROJ_DIR$\..\lib\driverlib\flashlib.c + $PROJ_DIR$\..\lib\driverlib\flashlib.h + $PROJ_DIR$\..\lib\driverlib\gpio.c + $PROJ_DIR$\..\lib\driverlib\gpio.h + $PROJ_DIR$\..\lib\driverlib\interrupt.c + $PROJ_DIR$\..\lib\driverlib\interrupt.h + $PROJ_DIR$\..\lib\driverlib\pin_map.h + $PROJ_DIR$\..\lib\driverlib\ssi.c + $PROJ_DIR$\..\lib\driverlib\ssi.h + $PROJ_DIR$\..\lib\driverlib\sysctl.c + $PROJ_DIR$\..\lib\driverlib\sysctl.h + $PROJ_DIR$\..\lib\driverlib\uartlib.c + $PROJ_DIR$\..\lib\driverlib\uartlib.h + $PROJ_DIR$\..\lib\fatfs\ffconf.h + $PROJ_DIR$\..\lib\fatfs\mmc.c + $PROJ_DIR$\..\lib\inc\hw_ethernet.h + $PROJ_DIR$\..\lib\inc\hw_flash.h + $PROJ_DIR$\..\lib\inc\hw_gpio.h + $PROJ_DIR$\..\lib\inc\hw_ints.h + $PROJ_DIR$\..\lib\inc\hw_memmap.h + $PROJ_DIR$\..\lib\inc\hw_nvic.h + $PROJ_DIR$\..\lib\inc\hw_ssi.h + $PROJ_DIR$\..\lib\inc\hw_sysctl.h + $PROJ_DIR$\..\lib\inc\hw_types.h + $PROJ_DIR$\..\lib\inc\hw_uart.h + $PROJ_DIR$\..\lib\uip\clock-arch.c + $PROJ_DIR$\..\lib\uip\clock-arch.h + $PROJ_DIR$\..\lib\uip\netdev.c + $PROJ_DIR$\..\lib\uip\netdev.h + $PROJ_DIR$\..\lib\uip\uip-conf.h + $PROJ_DIR$\..\blt_conf.h + $PROJ_DIR$\..\hooks.c + $PROJ_DIR$\..\main.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c $TOOLKIT_DIR$\inc\c\xlocaleuse.h $PROJ_DIR$\..\obj\lm3s6965.pbd $PROJ_DIR$\..\obj\cstart.o $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ffconf.h $PROJ_DIR$\..\obj\boot.pbi - $PROJ_DIR$\..\obj\main.pbi - $PROJ_DIR$\..\obj\vectors.pbi - $PROJ_DIR$\..\obj\timer.o - $PROJ_DIR$\..\obj\flash.o - $PROJ_DIR$\..\obj\main.lst - $PROJ_DIR$\..\obj\vectors.o - $PROJ_DIR$\..\obj\timer.pbi - $PROJ_DIR$\..\obj\boot.lst - $PROJ_DIR$\..\obj\vectors.lst - $PROJ_DIR$\..\obj\timer.lst - $TOOLKIT_DIR$\lib\m7M_tl.a - $PROJ_DIR$\..\obj\file.pbi - $PROJ_DIR$\..\obj\file.o - $PROJ_DIR$\..\obj\ff.lst - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\diskio.c - $PROJ_DIR$\..\obj\ssi.o - $PROJ_DIR$\..\obj\ssi.pbi - $PROJ_DIR$\..\obj\ff.o - $PROJ_DIR$\..\obj\diskio.pbi - $TOOLKIT_DIR$\inc\c\wchar.h - $TOOLKIT_DIR$\inc\c\xlocale.h - $TOOLKIT_DIR$\inc\c\yvals.h - $TOOLKIT_DIR$\inc\c\DLib_Product.h - $TOOLKIT_DIR$\inc\c\ycheck.h - $TOOLKIT_DIR$\lib\shb_l.a $PROJ_DIR$\..\obj\main.o $PROJ_DIR$\..\obj\boot.o $PROJ_DIR$\..\obj\assert.pbi @@ -191,388 +221,73 @@ $PROJ_DIR$\..\obj\flashlib.pbi $PROJ_DIR$\..\obj\cpulib.pbi $PROJ_DIR$\..\obj\gpio.pbi + $PROJ_DIR$\..\lib\uip\tapdev.c $PROJ_DIR$\..\obj\interrupt.pbi $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\option\ccsbcs.c + $PROJ_DIR$\..\obj\clock-arch.o + $PROJ_DIR$\..\obj\tapdev.o + $PROJ_DIR$\..\obj\clock-arch.pbi + $PROJ_DIR$\..\obj\tapdev.pbi + $PROJ_DIR$\..\obj\hello-world.pbi + $PROJ_DIR$\..\obj\uip.pbi + $PROJ_DIR$\..\obj\uip_arp.lst + $PROJ_DIR$\..\obj\uiplib.o + $PROJ_DIR$\..\obj\tapdev.lst + $PROJ_DIR$\..\obj\hello-world.lst + $PROJ_DIR$\..\obj\psock.lst + $PROJ_DIR$\..\obj\clock-arch.lst + $PROJ_DIR$\..\obj\uip_timer.lst + $PROJ_DIR$\..\obj\uiplib.lst + $PROJ_DIR$\..\obj\uip.lst + $PROJ_DIR$\..\obj\psock.pbi + $PROJ_DIR$\..\obj\uip_arp.pbi + $PROJ_DIR$\..\obj\uip_timer.pbi + $PROJ_DIR$\..\obj\uiplib.pbi + $TOOLKIT_DIR$\inc\c\stdio.h + $TOOLKIT_DIR$\inc\c\ystdio.h + $PROJ_DIR$\..\obj\ethernet.lst + $PROJ_DIR$\..\obj\net.lst + $PROJ_DIR$\..\obj\net.o + $PROJ_DIR$\..\obj\net.pbi + $PROJ_DIR$\..\obj\ethernet.o + $PROJ_DIR$\..\obj\ethernet.pbi + $PROJ_DIR$\..\obj\psock.o + $PROJ_DIR$\..\obj\uip_arp.o + $PROJ_DIR$\..\obj\uip_timer.o + $PROJ_DIR$\..\obj\uip.o + $PROJ_DIR$\..\obj\netdev.o + $PROJ_DIR$\..\obj\netdev.pbi + $PROJ_DIR$\..\obj\netdev.lst - - $PROJ_DIR$\..\lib\driverlib\cpulib.c - - - ICCARM - 106 108 - - - BICOMP - 183 - - - - - ICCARM - 0 - - - BICOMP - 0 - - - - - $PROJ_DIR$\..\lib\driverlib\flashlib.c - - - ICCARM - 107 177 - - - BICOMP - 182 - - - - - ICCARM - 18 20 24 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 1 8 - - - BICOMP - 18 20 24 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 1 8 - - - - - $PROJ_DIR$\..\lib\driverlib\gpio.c - - - ICCARM - 103 178 - - - BICOMP - 184 - - - - - ICCARM - 19 20 21 24 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 6 9 8 - - - BICOMP - 19 20 21 24 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 6 9 8 - - - - - $PROJ_DIR$\..\lib\driverlib\interrupt.c - - - ICCARM - 101 179 - - - BICOMP - 185 - - - - - ICCARM - 20 22 25 0 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 - - - BICOMP - 20 22 25 0 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 - - - - - $PROJ_DIR$\..\lib\driverlib\ssi.c - - - ICCARM - 70 155 - - - BICOMP - 156 - - - - - ICCARM - 20 21 23 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 11 13 - - - BICOMP - 20 21 23 25 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 11 13 - - - - - $PROJ_DIR$\..\lib\driverlib\sysctl.c - - - ICCARM - 102 180 - - - BICOMP - 86 - - - - - ICCARM - 20 22 24 25 0 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 13 - - - - - $PROJ_DIR$\..\lib\driverlib\uartlib.c - - - ICCARM - 104 181 - - - BICOMP - 87 - - - - - ICCARM - 20 21 24 25 26 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 15 13 - - - BICOMP - 20 21 24 25 26 3 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 8 15 13 - - - - - $PROJ_DIR$\..\lib\fatfs\mmc.c - - - ICCARM - 113 111 - - - BICOMP - 110 - - - - - ICCARM - 21 25 6 9 11 13 45 48 54 42 50 27 60 34 58 38 36 40 52 59 47 16 56 62 - - - BICOMP - 21 25 6 9 11 13 45 48 54 42 50 27 60 34 58 38 36 40 52 59 47 16 56 62 - - - [ROOT_NODE] ILINK - 115 105 + 139 80 - - $PROJ_DIR$\..\hooks.c - - - ICCARM - 97 117 - - - BICOMP - 122 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 15 13 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 15 13 - - - - - $PROJ_DIR$\..\main.c - - - ICCARM - 144 165 - - - BICOMP - 140 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 20 21 22 24 25 13 6 9 15 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 20 21 22 24 25 13 6 9 15 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c - - - ICCARM - 148 145 - - - BICOMP - 141 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s - - - AARM - 137 - - - - - $PROJ_DIR$\..\..\..\..\Source\file.c - - - ICCARM - 69 152 - - - BICOMP - 151 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 175 163 161 133 83 162 85 98 134 176 81 160 82 131 132 135 84 159 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 175 163 161 133 83 162 85 98 134 176 81 160 82 131 132 135 84 159 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c - - - ICCARM - 121 100 - - - BICOMP - 90 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c - - - ICCARM - 119 143 - - - BICOMP - 89 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 1 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 1 - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c ICCARM - 130 99 + 81 125 BICOMP - 91 + 117 ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c - - - ICCARM - 149 142 - - - BICOMP - 146 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 @@ -581,21 +296,44 @@ ICCARM - 78 80 + 48 57 BICOMP - 79 + 52 ICCARM - 47 48 16 186 + 12 13 165 217 BICOMP - 47 48 16 186 + 12 13 165 217 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c + + + ICCARM + 98 91 + + + BICOMP + 95 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 @@ -604,21 +342,21 @@ ICCARM - 123 88 + 71 69 BICOMP - 92 + 118 ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 13 15 + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 171 175 162 164 BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 21 25 13 15 + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 171 175 162 164 @@ -627,237 +365,7 @@ ICCARM - 153 157 - - - BICOMP - 129 - - - - - ICCARM - 47 48 16 45 109 163 161 133 83 162 85 98 - - - BICOMP - 47 48 16 45 109 163 161 133 83 162 85 98 - - - - - $PROJ_DIR$\..\..\..\..\Source\assert.c - - - ICCARM - 96 116 - - - BICOMP - 167 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\backdoor.c - - - ICCARM - 120 169 - - - BICOMP - 171 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\boot.c - - - ICCARM - 147 166 - - - BICOMP - 139 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\com.c - - - ICCARM - 125 118 - - - BICOMP - 172 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 44 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 44 - - - - - $PROJ_DIR$\..\..\..\..\Source\cop.c - - - ICCARM - 124 170 - - - BICOMP - 173 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\xcp.c - - - ICCARM - 93 168 - - - BICOMP - 174 - - - - - ICCARM - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - BICOMP - 54 42 50 27 60 34 58 38 36 40 52 59 47 48 16 56 62 - - - - - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c - - - ICCARM - 153 157 - - - BICOMP - 129 - - - - - ICCARM - 67 65 16 63 109 163 161 133 83 162 85 98 - - - BICOMP - 67 65 16 63 109 163 161 133 83 162 85 98 - - - - - $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c - - - ICCARM - 78 80 - - - BICOMP - 79 - - - - - ICCARM - 67 65 16 74 - - - BICOMP - 67 65 16 74 - - - - - $PROJ_DIR$\..\..\..\..\Source\filesys.c - - - ICCARM - 72 77 - - - BICOMP - 112 - - - - - ICCARM - 54 42 50 66 60 34 58 38 36 40 52 71 67 65 138 56 62 - - - BICOMP - 54 42 50 66 60 34 58 38 36 40 52 71 67 65 138 56 62 - - - - - $PROJ_DIR$\..\led.c - - - ICCARM - 73 114 + 78 105 BICOMP @@ -867,30 +375,356 @@ ICCARM - 54 42 50 66 60 34 58 38 36 40 52 59 67 65 16 56 62 21 25 13 6 9 + 12 13 165 10 82 135 133 116 63 134 65 124 BICOMP - 54 42 50 66 60 34 58 38 36 40 52 59 67 65 16 56 62 21 25 13 6 9 + 12 13 165 10 82 135 133 116 63 134 65 124 - $PROJ_DIR$\..\bin\openbtl_ek_lm3s6965.out + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip.c - ILINK - 105 + ICCARM + 232 248 - OBJCOPY - 94 + BICOMP + 223 - ILINK - 126 116 169 166 118 170 100 108 137 157 152 143 177 178 117 179 165 111 99 155 180 142 88 181 80 145 168 164 128 150 127 + ICCARM + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 20 205 135 133 116 63 134 65 124 146 206 + + + BICOMP + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 20 205 135 133 116 63 134 65 124 146 206 + + + + + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_arp.c + + + ICCARM + 224 246 + + + BICOMP + 234 + + + + + ICCARM + 22 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 205 135 133 116 63 134 65 124 146 206 + + + BICOMP + 22 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 205 135 133 116 63 134 65 124 146 206 + + + + + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uip_timer.c + + + ICCARM + 230 247 + + + BICOMP + 235 + + + + + ICCARM + 14 178 24 + + + BICOMP + 14 178 24 + + + + + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\uiplib.c + + + ICCARM + 231 225 + + + BICOMP + 236 + + + + + ICCARM + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 26 + + + BICOMP + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 26 + + + + + $PROJ_DIR$\..\..\..\..\Source\assert.c + + + ICCARM + 122 140 + + + BICOMP + 197 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\backdoor.c + + + ICCARM + 144 199 + + + BICOMP + 201 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\boot.c + + + ICCARM + 96 196 + + + BICOMP + 194 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\com.c + + + ICCARM + 73 142 + + + BICOMP + 202 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 9 40 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 9 40 + + + + + $PROJ_DIR$\..\..\..\..\Source\cop.c + + + ICCARM + 72 200 + + + BICOMP + 203 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\file.c + + + ICCARM + 115 101 + + + BICOMP + 100 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 205 135 133 116 63 134 65 124 146 206 60 132 62 46 50 190 64 131 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 205 135 133 116 63 134 65 124 146 206 60 132 62 46 50 190 64 131 + + + + + $PROJ_DIR$\..\..\..\..\Source\net.c + + + ICCARM + 240 241 + + + BICOMP + 242 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 180 19 27 181 40 22 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 180 19 27 181 40 22 + + + + + $PROJ_DIR$\..\..\..\..\Source\xcp.c + + + ICCARM + 119 198 + + + BICOMP + 204 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip\psock.c + + + ICCARM + 228 245 + + + BICOMP + 233 + + + + + ICCARM + 237 135 133 116 63 134 65 124 146 238 205 206 27 181 33 7 29 182 41 188 37 4 0 6 31 1 35 43 107 61 17 16 15 19 + + + BICOMP + 237 135 133 116 63 134 65 124 146 238 205 206 27 181 33 7 29 182 41 188 37 4 0 6 31 1 35 43 107 61 17 16 15 19 + + + + + $PROJ_DIR$\..\..\..\..\Source\filesys.c + + + ICCARM + 55 51 + + + BICOMP + 88 + + + + + ICCARM + 33 7 29 113 41 188 37 4 0 6 31 47 53 114 193 35 43 + + + BICOMP + 33 7 29 113 41 188 37 4 0 6 31 47 53 114 193 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\option\unicode.c + + + ICCARM + 48 57 + + + BICOMP + 52 + + + + + ICCARM + 53 114 165 59 + + + BICOMP + 53 114 165 59 @@ -899,17 +733,524 @@ BICOMP - 158 + 130 ICCARM - 63 65 + 111 114 BICOMP - 63 65 + 111 114 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\net.c + + + ICCARM + 240 241 + + + BICOMP + 242 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 35 43 180 19 27 181 107 22 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 35 43 180 19 27 181 107 22 + + + + + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\apps\hello-world\hello-world.c + + + ICCARM + 227 + + + BICOMP + 222 + + + + + ICCARM + 108 27 181 33 7 29 182 41 188 37 4 0 6 31 1 35 43 107 61 17 16 15 19 205 135 133 116 63 134 65 124 146 206 + + + BICOMP + 108 27 181 33 7 29 182 41 188 37 4 0 6 31 1 35 43 107 61 17 16 15 19 205 135 133 116 63 134 65 124 146 206 + + + + + $PROJ_DIR$\..\..\..\..\Source\fatfs\src\ff.c + + + ICCARM + 78 105 + + + BICOMP + 76 + + + + + ICCARM + 53 114 165 111 82 135 133 116 63 134 65 124 + + + BICOMP + 53 114 165 111 82 135 133 116 63 134 65 124 + + + + + $PROJ_DIR$\..\led.c + + + ICCARM + 54 138 + + + BICOMP + 56 + + + + + ICCARM + 33 7 29 113 41 188 37 4 0 6 31 1 53 114 165 35 43 171 175 162 155 158 + + + BICOMP + 33 7 29 113 41 188 37 4 0 6 31 1 53 114 165 35 43 171 175 162 155 158 + + + + + $PROJ_DIR$\..\bin\openbtl_ek_lm3s6965.out + + + ILINK + 80 + + + OBJCOPY + 120 + + + + + ILINK + 85 140 199 196 218 142 200 126 83 192 243 105 101 92 207 208 141 209 195 86 241 249 125 103 210 91 69 211 248 246 247 225 57 94 198 136 75 99 74 + + + + + $PROJ_DIR$\..\lib\driverlib\cpulib.c + + + ICCARM + 79 83 + + + BICOMP + 213 + + + + + ICCARM + 149 + + + BICOMP + 149 + + + + + $PROJ_DIR$\..\lib\driverlib\ethernet.c + + + ICCARM + 239 243 + + + BICOMP + 244 + + + + + ICCARM + 167 170 171 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 148 162 157 + + + BICOMP + 167 170 171 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 148 162 157 + + + + + $PROJ_DIR$\..\lib\driverlib\flashlib.c + + + ICCARM + 87 207 + + + BICOMP + 212 + + + + + ICCARM + 168 170 174 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 153 157 + + + BICOMP + 168 170 174 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 153 157 + + + + + $PROJ_DIR$\..\lib\driverlib\gpio.c + + + ICCARM + 129 208 + + + BICOMP + 214 + + + + + ICCARM + 169 170 171 174 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 155 158 157 + + + BICOMP + 169 170 171 174 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 155 158 157 + + + + + $PROJ_DIR$\..\lib\driverlib\interrupt.c + + + ICCARM + 127 209 + + + BICOMP + 216 + + + + + ICCARM + 170 172 175 149 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 + + + BICOMP + 170 172 175 149 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 + + + + + $PROJ_DIR$\..\lib\driverlib\ssi.c + + + ICCARM + 112 103 + + + BICOMP + 104 + + + + + ICCARM + 170 171 173 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 160 162 + + + BICOMP + 170 171 173 175 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 160 162 + + + + + $PROJ_DIR$\..\lib\driverlib\sysctl.c + + + ICCARM + 128 210 + + + BICOMP + 66 + + + + + ICCARM + 170 172 174 175 149 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 162 + + + BICOMP + 170 172 174 175 149 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 162 + + + + + $PROJ_DIR$\..\lib\driverlib\uartlib.c + + + ICCARM + 77 211 + + + BICOMP + 68 + + + + + ICCARM + 170 171 174 175 176 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 164 162 + + + BICOMP + 170 171 174 175 176 147 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 157 164 162 + + + + + $PROJ_DIR$\..\lib\fatfs\mmc.c + + + ICCARM + 137 86 + + + BICOMP + 89 + + + + + ICCARM + 171 175 155 158 160 162 10 13 33 7 29 182 41 188 37 4 0 6 31 1 12 165 35 43 + + + BICOMP + 171 175 155 158 160 162 10 13 33 7 29 182 41 188 37 4 0 6 31 1 12 165 35 43 + + + + + $PROJ_DIR$\..\lib\uip\clock-arch.c + + + ICCARM + 229 218 + + + BICOMP + 220 + + + + + ICCARM + 178 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 178 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\lib\uip\netdev.c + + + ICCARM + 251 249 + + + BICOMP + 250 + + + + + ICCARM + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 22 171 175 167 162 155 158 148 153 + + + BICOMP + 19 27 181 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 40 22 171 175 167 162 155 158 148 153 + + + + + $PROJ_DIR$\..\hooks.c + + + ICCARM + 123 141 + + + BICOMP + 70 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 171 175 164 162 + + + + + $PROJ_DIR$\..\main.c + + + ICCARM + 93 195 + + + BICOMP + 84 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 170 171 172 174 175 162 155 158 164 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 35 43 170 171 172 174 175 162 155 158 164 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c + + + ICCARM + 97 94 + + + BICOMP + 90 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s + + + AARM + 192 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c + + + ICCARM + 145 126 + + + BICOMP + 44 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c + + + ICCARM + 143 92 + + + BICOMP + 45 + + + + + ICCARM + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 171 175 153 + + + BICOMP + 33 7 29 182 41 188 37 4 0 6 31 1 12 13 165 35 43 171 175 153 + + + + + $PROJ_DIR$\..\lib\uip\tapdev.c + + + ICCARM + 226 219 + + + BICOMP + 221 + + + + + ICCARM + 19 27 181 108 61 17 16 15 22 33 7 29 182 41 188 37 4 0 6 31 1 35 43 171 175 167 162 155 158 148 + + + BICOMP + 19 27 181 108 61 17 16 15 22 33 7 29 182 41 188 37 4 0 6 31 1 35 43 171 175 167 162 155 158 148 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.ewp b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.ewp index 1cbafded..e98b6398 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.ewp +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/lm3s6965.ewp @@ -300,6 +300,8 @@ CCIncludePath2 $PROJ_DIR$\..\..\..\..\Source $PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\uip + $PROJ_DIR$\..\..\..\..\Source\third_party\uip\apps\hello-world $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR $PROJ_DIR$\.. @@ -307,6 +309,7 @@ $PROJ_DIR$\..\lib\inc $PROJ_DIR$\..\lib\driverlib $PROJ_DIR$\..\lib\fatfs + $PROJ_DIR$\..\lib\uip diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.dni b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.dni index af5f6c23..7e6c5bcd 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.dni +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.dni @@ -9,7 +9,7 @@ TriggerName=main LimitSize=0 ByteLimit=50 [DebugChecksum] -Checksum=-1053812097 +Checksum=1777559187 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.wsdt b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.wsdt index 798808b5..4b5dcef4 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.wsdt +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/ide/settings/lm3s6965.wsdt @@ -12,12 +12,12 @@ - 332272727 + 410272727 - 300Find-in-Files2011553087730055278946300FileFunctionLine200700100300BuildFind-in-FilesFind-All-References664941138300BuildFind-in-Files664941138 + 100Find-All-References2011553087730055278946300FileFunctionLine200700100300BuildFind-in-FilesFind-All-References664941138100Build664941138 - + TabID-31649-22318 @@ -25,24 +25,24 @@ Workspace - lm3s6965lm3s6965/Bootlm3s6965/Boot/liblm3s6965/Outputlm3s6965/Sourcelm3s6965/Source/ARMCM3_LM3Slm3s6965/Source/ARMCM3_LM3S/IARlm3s6965/Source/fatfs + lm3s6965lm3s6965/Bootlm3s6965/Outputlm3s6965/Sourcelm3s6965/Source/ARMCM3_LM3Slm3s6965/Source/fatfs - 0TabID-25743-19564BuildBuild0 + 0TabID-23631-11730BuildBuildTabID-25094-12726Ambiguous DefinitionsSelect-Ambiguous-Definitions0 - TextEditor$WS_DIR$\..\main.c000004430383038TextEditor$WS_DIR$\..\..\..\..\Source\assert.h000001121742174TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s00000483795379520100000010000001 + TextEditor$WS_DIR$\..\blt_conf.h0000010971957195TextEditor$WS_DIR$\..\main.c0000040303830381TextEditor$WS_DIR$\..\..\..\..\Source\backdoor.c000001330883088TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c000008662036203TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c000002425562556TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.h00000023462373TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\types.h000007267626840100000010000001 - iaridepm.enu1-2-2963406-2-2288297150000294643212500957341-2-2963507-2-223092421202604240079265104957341 + iaridepm.enu1-2-2548501-2-237235319375035019826197954563500049443096-2546258238134375236111261979413690 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.c new file mode 100644 index 00000000..c085ce0d --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.c @@ -0,0 +1,1381 @@ +//***************************************************************************** +// +// ethernet.c - Driver for the Integrated Ethernet Controller +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +//***************************************************************************** +// +//! \addtogroup ethernet_api +//! @{ +// +//***************************************************************************** + +#include "inc/hw_ethernet.h" +#include "inc/hw_ints.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "driverlib/debug.h" +#include "driverlib/ethernet.h" +#include "driverlib/interrupt.h" + +//***************************************************************************** +// +//! Initializes the Ethernet controller for operation. +//! +//! \param ulBase is the base address of the controller. +//! \param ulEthClk is the rate of the clock supplied to the Ethernet module. +//! +//! This function prepares the Ethernet controller for first-time use in +//! a given hardware/software configuration. This function should be called +//! before any other Ethernet API functions are called. +//! +//! The peripheral clock is the same as the processor clock. This value is +//! returned by SysCtlClockGet(), or it can be explicitly hard-coded if it is +//! constant and known (to save the code/execution overhead of a call to +//! SysCtlClockGet()). +//! +//! This function replaces the original EthernetInit() API and performs the +//! same actions. A macro is provided in ethernet.h to map the +//! original API to this API. +//! +//! \note If the device configuration is changed (for example, the system clock +//! is reprogrammed to a different speed), then the Ethernet controller must be +//! disabled by calling the EthernetDisable() function and the controller must +//! be reinitialized by calling the EthernetInitExpClk() function again. After +//! the controller has been reinitialized, the controller should be +//! reconfigured using the appropriate Ethernet API calls. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk) +{ + unsigned long ulDiv; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Set the Management Clock Divider register for access to the PHY + // register set (via EthernetPHYRead/Write). + // + // The MDC clock divided down from the system clock using the following + // formula. A maximum of 2.5MHz is allowed for F(mdc). + // + // F(mdc) = F(sys) / (2 * (div + 1)) + // div = (F(sys) / (2 * F(mdc))) - 1 + // div = (F(sys) / 2 / F(mdc)) - 1 + // + // Note: Because we should round up, to ensure we don't violate the + // maximum clock speed, we can simplify this as follows: + // + // div = F(sys) / 2 / F(mdc) + // + // For example, given a system clock of 6.0MHz, and a div value of 1, + // the mdc clock would be programmed as 1.5 MHz. + // + ulDiv = (ulEthClk / 2) / 2500000; + HWREG(ulBase + MAC_O_MDV) = (ulDiv & MAC_MDV_DIV_M); +} + +//***************************************************************************** +// +//! Sets the configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param ulConfig is the configuration for the controller. +//! +//! After the EthernetInitExpClk() function has been called, this API function +//! can be used to configure the various features of the Ethernet controller. +//! +//! The Ethernet controller provides three control registers that are used +//! to configure the controller's operation. The transmit control register +//! provides settings to enable full-duplex operation, to auto-generate the +//! frame check sequence, and to pad the transmit packets to the minimum +//! length as required by the IEEE standard. The receive control register +//! provides settings to enable reception of packets with bad frame check +//! sequence values and to enable multi-cast or promiscuous modes. The +//! timestamp control register provides settings that enable support logic in +//! the controller that allow the use of the General Purpose Timer 3 to capture +//! timestamps for the transmitted and received packets. Note that not all +//! devices support this functionality; see the data sheet to determine if +//! this feature is supported. +//! +//! The \e ulConfig parameter is the logical OR of the following values: +//! +//! - \b ETH_CFG_TS_TSEN - Enable TX and RX interrupt status as CCP timer +//! inputs +//! - \b ETH_CFG_RX_BADCRCDIS - Disable reception of packets with a bad CRC +//! - \b ETH_CFG_RX_PRMSEN - Enable promiscuous mode reception (all packets) +//! - \b ETH_CFG_RX_AMULEN - Enable reception of multicast packets +//! - \b ETH_CFG_TX_DPLXEN - Enable full duplex transmit mode +//! - \b ETH_CFG_TX_CRCEN - Enable transmit with auto CRC generation +//! - \b ETH_CFG_TX_PADEN - Enable padding of transmit data to minimum size +//! +//! These bit-mapped values are programmed into the transmit, receive, and/or +//! timestamp control register. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig) +{ + unsigned long ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT((ulConfig & ~(ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN | ETH_CFG_RX_BADCRCDIS | + ETH_CFG_RX_PRMSEN | ETH_CFG_RX_AMULEN | + ETH_CFG_TS_TSEN)) == 0); + + // + // Setup the Transmit Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_TCTL); + ulTemp &= ~(MAC_TCTL_DUPLEX | MAC_TCTL_CRC | MAC_TCTL_PADEN); + ulTemp |= ulConfig & 0x0FF; + HWREG(ulBase + MAC_O_TCTL) = ulTemp; + + // + // Setup the Receive Control Register. + // + ulTemp = HWREG(ulBase + MAC_O_RCTL); + ulTemp &= ~(MAC_RCTL_BADCRC | MAC_RCTL_PRMS | MAC_RCTL_AMUL); + ulTemp |= (ulConfig >> 8) & 0x0FF; + HWREG(ulBase + MAC_O_RCTL) = ulTemp; + + // + // Setup the Time Stamp Configuration register. + // + ulTemp = HWREG(ulBase + MAC_O_TS); + ulTemp &= ~(MAC_TS_TSEN); + ulTemp |= (ulConfig >> 16) & 0x0FF; + HWREG(ulBase + MAC_O_TS) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the current configuration of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function queries the control registers of the Ethernet controller +//! and returns a bit-mapped configuration value. +//! +//! \sa The description of the EthernetConfigSet() function provides detailed +//! information for the bit-mapped configuration values that are returned. +//! +//! \return Returns the bit-mapped Ethernet controller configuration value. +// +//***************************************************************************** +unsigned long +EthernetConfigGet(unsigned long ulBase) +{ + unsigned long ulConfig; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read and return the Ethernet controller configuration parameters, + // properly shifted into the appropriate bit field positions. + // + ulConfig = HWREG(ulBase + MAC_O_TS) << 16; + ulConfig |= (HWREG(ulBase + MAC_O_RCTL) & ~(MAC_RCTL_RXEN)) << 8; + ulConfig |= HWREG(ulBase + MAC_O_TCTL) & ~(MAC_TCTL_TXEN); + return(ulConfig); +} + +//***************************************************************************** +// +//! Sets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the array of MAC-48 address octets. +//! +//! This function programs the IEEE-defined MAC-48 address specified in +//! \e pucMACAddr into the Ethernet controller. This address is used by the +//! Ethernet controller for hardware-level filtering of incoming Ethernet +//! packets (when promiscuous mode is not enabled). +//! +//! The MAC-48 address is defined as 6 octets, illustrated by the following +//! example address. The numbers are shown in hexadecimal format. +//! +//! AC-DE-48-00-00-80 +//! +//! In this representation, the first three octets (AC-DE-48) are the +//! Organizationally Unique Identifier (OUI). This is a number assigned by +//! the IEEE to an organization that requests a block of MAC addresses. The +//! last three octets (00-00-80) are a 24-bit number managed by the OUI owner +//! to uniquely identify a piece of hardware within that organization that is +//! to be connected to the Ethernet. +//! +//! In this representation, the octets are transmitted from left to right, +//! with the ``AC'' octet being transmitted first and the ``80'' octet being +//! transmitted last. Within an octet, the bits are transmitted LSB to MSB. +//! For this address, the first bit to be transmitted would be ``0'', the LSB +//! of ``AC'', and the last bit to be transmitted would be ``1'', the MSB of +//! ``80''. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrSet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Program the MAC Address into the device. The first four bytes of the + // MAC Address are placed into the IA0 register. The remaining two bytes + // of the MAC address are placed into the IA1 register. + // + pucTemp[0] = pucMACAddr[0]; + pucTemp[1] = pucMACAddr[1]; + pucTemp[2] = pucMACAddr[2]; + pucTemp[3] = pucMACAddr[3]; + HWREG(ulBase + MAC_O_IA0) = ulTemp; + ulTemp = 0; + pucTemp[0] = pucMACAddr[4]; + pucTemp[1] = pucMACAddr[5]; + HWREG(ulBase + MAC_O_IA1) = ulTemp; +} + +//***************************************************************************** +// +//! Gets the MAC address of the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucMACAddr is the pointer to the location in which to store the +//! array of MAC-48 address octets. +//! +//! This function reads the currently programmed MAC address into the +//! \e pucMACAddr buffer. +//! +//! \sa Refer to EthernetMACAddrSet() API description for more details about +//! the MAC address format. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetMACAddrGet(unsigned long ulBase, unsigned char *pucMACAddr) +{ + unsigned long ulTemp; + unsigned char *pucTemp = (unsigned char *)&ulTemp; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucMACAddr != 0); + + // + // Read the MAC address from the device. The first four bytes of the + // MAC address are read from the IA0 register. The remaining two bytes + // of the MAC addres + // + ulTemp = HWREG(ulBase + MAC_O_IA0); + pucMACAddr[0] = pucTemp[0]; + pucMACAddr[1] = pucTemp[1]; + pucMACAddr[2] = pucTemp[2]; + pucMACAddr[3] = pucTemp[3]; + ulTemp = HWREG(ulBase + MAC_O_IA1); + pucMACAddr[4] = pucTemp[0]; + pucMACAddr[5] = pucTemp[1]; +} + +//***************************************************************************** +// +//! Enables the Ethernet controller for normal operation. +//! +//! \param ulBase is the base address of the controller. +//! +//! Once the Ethernet controller has been configured using the +//! EthernetConfigSet() function and the MAC address has been programmed using +//! the EthernetMACAddrSet() function, this API function can be called to +//! enable the controller for normal operation. +//! +//! This function enables the controller's transmitter and receiver, and +//! resets the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetEnable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Enable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RXEN; + + // + // Enable Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) |= MAC_TCTL_TXEN; + + // + // Reset the receive FIFO again, after the receiver has been enabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Disables the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! When terminating operations on the Ethernet interface, this function should +//! be called. This function disables the transmitter and receiver, and +//! clears out the receive FIFO. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetDisable(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Reset the receive FIFO. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; + + // + // Disable the Ethernet transmitter. + // + HWREG(ulBase + MAC_O_TCTL) &= ~(MAC_TCTL_TXEN); + + // + // Disable the Ethernet receiver. + // + HWREG(ulBase + MAC_O_RCTL) &= ~(MAC_RCTL_RXEN); + + // + // Reset the receive FIFO again, after the receiver has been disabled. + // + HWREG(ulBase + MAC_O_RCTL) |= MAC_RCTL_RSTFIFO; +} + +//***************************************************************************** +// +//! Check for packet available from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller provides a register that contains the number of +//! packets available in the receive FIFO. When the last bytes of a packet are +//! successfully received (that is, the frame check sequence bytes), the packet +//! count is incremented. Once the packet has been fully read (including the +//! frame check sequence bytes) from the FIFO, the packet count is decremented. +//! +//! \return Returns \b true if there are one or more packets available in the +//! receive FIFO, including the current packet being read, and \b false +//! otherwise. +// +//***************************************************************************** +tBoolean +EthernetPacketAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of packets. + // + return((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) ? true : false); +} + +//***************************************************************************** +// +//! Checks for packet space available in the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! +//! The Ethernet controller's transmit FIFO is designed to support a single +//! packet at a time. After the packet has been written into the FIFO, the +//! transmit request bit must be set to enable the transmission of the packet. +//! Only after the packet has been transmitted can a new packet be written +//! into the FIFO. This function simply checks to see if a packet is +//! in progress. If so, there is no space available in the transmit FIFO. +//! +//! \return Returns \b true if a space is available in the transmit FIFO, and +//! \b false otherwise. +// +//***************************************************************************** +tBoolean +EthernetSpaceAvail(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Return the availability of space. + // + return((HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) ? false : true); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for reading a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! Based on the following table of how the receive frame is stored in the +//! receive FIFO, this function will extract a packet from the FIFO and store +//! it in the packet buffer that was passed in. +//! +//! Format of the data in the RX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | FL MSB | FL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! | Word Y | FCS 4 | FCS 3 | FCS 2 | FCS 1 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where FL is Frame Length, (FL + DA + SA + FT + DATA + FCS) Bytes. +//! Where DA is Destination (MAC) Address. +//! Where SA is Source (MAC) Address. +//! Where FT is Frame Type (or Frame Length for Ethernet). +//! Where DATA is Payload Data for the Ethernet Frame. +//! Where FCS is the Frame Check Sequence. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +static long +EthernetPacketGetInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long lFrameLen, lTempLen; + long i = 0; + + // + // Read WORD 0 (see format above) from the FIFO, set the receive + // Frame Length and store the first two bytes of the destination + // address in the receive buffer. + // + ulTemp = HWREG(ulBase + MAC_O_DATA); + lFrameLen = (long)(ulTemp & 0xFFFF); + pucBuf[i++] = (unsigned char) ((ulTemp >> 16) & 0xff); + pucBuf[i++] = (unsigned char) ((ulTemp >> 24) & 0xff); + + // + // Read all but the last WORD into the receive buffer. + // + lTempLen = (lBufLen < (lFrameLen - 6)) ? lBufLen : (lFrameLen - 6); + while(i <= (lTempLen - 4)) + { + *(unsigned long *)&pucBuf[i] = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // Read the last 1, 2, or 3 BYTES into the buffer + // + if(i < lTempLen) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + if(i == lTempLen - 3) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + pucBuf[i++] = ((ulTemp >> 16) & 0xff); + i += 1; + } + else if(i == lTempLen - 2) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + pucBuf[i++] = ((ulTemp >> 8) & 0xff); + i += 2; + } + else if(i == lTempLen - 1) + { + pucBuf[i++] = ((ulTemp >> 0) & 0xff); + i += 3; + } + } + + // + // Read any remaining WORDS (that did not fit into the buffer). + // + while(i < (lFrameLen - 2)) + { + ulTemp = HWREG(ulBase + MAC_O_DATA); + i += 4; + } + + // + // If frame was larger than the buffer, return the "negative" frame length + // + lFrameLen -= 6; + if(lFrameLen > lBufLen) + { + return(-lFrameLen); + } + + // + // Return the Frame Length + // + return(lFrameLen); +} + +//***************************************************************************** +// +//! Receives a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. If no packet is available the function +//! returns immediately. Otherwise, the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can fit +//! into \e pucBuf (as specified by \e lBufLen), the function returns the +//! negated length of the packet and the buffer contains \e lBufLen bytes +//! of the packet. Otherwise, the function returns the length of the +//! packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! This function replaces the original EthernetPacketNonBlockingGet() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function returns immediately if no packet is available. +//! +//! \return Returns \b 0 if no packet is available, the negated packet length +//! \b -n if the packet is too large for \e pucBuf, and the packet length \b n +//! otherwise. +// +//***************************************************************************** +long +EthernetPacketGetNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check to see if any packets are available. + // + if((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + return(0); + } + + // + // Read the packet, and return. + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits for a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is the maximum number of bytes to be read into the buffer. +//! +//! This function reads a packet from the receive FIFO of the controller and +//! places it into \e pucBuf. The function waits until a packet is +//! available in the FIFO. Then the function reads the entire packet +//! from the receive FIFO. If there are more bytes in the packet than can +//! fit into \e pucBuf (as specified by \e lBufLen), the function returns +//! the negated length of the packet and the buffer contains \e lBufLen +//! bytes of the packet. Otherwise, the function returns the length of +//! the packet that was read and \e pucBuf contains the entire packet +//! (excluding the frame check sequence bytes). +//! +//! \note This function is blocking and does not return until a packet arrives. +//! +//! \return Returns the negated packet length \b -n if the packet is too large +//! for \e pucBuf, and returns the packet length \b n otherwise. +// +//***************************************************************************** +long +EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for a packet to become available + // + while((HWREG(ulBase + MAC_O_NP) & MAC_NP_NPR_M) == 0) + { + } + + // + // Read the packet + // + return(EthernetPacketGetInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! \internal +//! +//! Internal function for sending a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! Puts a packet into the transmit FIFO of the controller. +//! +//! Format of the data in the TX FIFO is as follows: +//! +//! \verbatim +//! +---------+----------+----------+----------+----------+ +//! | | 31:24 | 23:16 | 15:8 | 7:0 | +//! +---------+----------+----------+----------+----------+ +//! | Word 0 | DA 2 | DA 1 | PL MSB | PL LSB | +//! +---------+----------+----------+----------+----------+ +//! | Word 1 | DA 6 | DA 5 | DA 4 | DA 3 | +//! +---------+----------+----------+----------+----------+ +//! | Word 2 | SA 4 | SA 3 | SA 2 | SA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 3 | FT LSB | FT MSB | SA 6 | SA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 4 | DATA 4 | DATA 3 | DATA 2 | DATA 1 | +//! +---------+----------+----------+----------+----------+ +//! | Word 5 | DATA 8 | DATA 7 | DATA 6 | DATA 5 | +//! +---------+----------+----------+----------+----------+ +//! | Word 6 | DATA 12 | DATA 11 | DATA 10 | DATA 9 | +//! +---------+----------+----------+----------+----------+ +//! | ... | | | | | +//! +---------+----------+----------+----------+----------+ +//! | Word X | DATA n | DATA n-1 | DATA n-2 | DATA n-3 | +//! +---------+----------+----------+----------+----------+ +//! \endverbatim +//! +//! Where PL is Payload Length, (DATA) only +//! Where DA is Destination (MAC) Address +//! Where SA is Source (MAC) Address +//! Where FT is Frame Type (or Frame Length for Ethernet) +//! Where DATA is Payload Data for the Ethernet Frame +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +static long +EthernetPacketPutInternal(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + unsigned long ulTemp; + long i = 0; + + // + // If the packet is too large, return the negative packet length as + // an error code. + // + if(lBufLen > (2048 - 2)) + { + return(-lBufLen); + } + + // + // Build and write WORD 0 (see format above) to the transmit FIFO. + // + ulTemp = (unsigned long)(lBufLen - 14); + ulTemp |= (pucBuf[i++] << 16); + ulTemp |= (pucBuf[i++] << 24); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + + // + // Write each subsequent WORD n to the transmit FIFO, except for the last + // WORD (if the word does not contain 4 bytes). + // + while(i <= (lBufLen - 4)) + { + HWREG(ulBase + MAC_O_DATA) = *(unsigned long *)&pucBuf[i]; + i += 4; + } + + // + // Build the last word of the remaining 1, 2, or 3 bytes, and store + // the WORD into the transmit FIFO. + // + if(i != lBufLen) + { + if(i == (lBufLen - 3)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + ulTemp |= (pucBuf[i++] << 16); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 2)) + { + ulTemp = (pucBuf[i++] << 0); + ulTemp |= (pucBuf[i++] << 8); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + else if(i == (lBufLen - 1)) + { + ulTemp = (pucBuf[i++] << 0); + HWREG(ulBase + MAC_O_DATA) = ulTemp; + } + } + + // + // Activate the transmitter + // + HWREG(ulBase + MAC_O_TR) = MAC_TR_NEWTX; + + // + // Return the Buffer Length transmitted. + // + return(lBufLen); +} + +//***************************************************************************** +// +//! Sends a packet to the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the +//! transmitter for this packet. If no space is available in the FIFO, the +//! function returns immediately. If space is available, the +//! function returns once \e lBufLen bytes of the packet have been placed +//! into the FIFO and the transmitter has been started. The function does not +//! wait for the transmission to complete. The function returns the +//! negated \e lBufLen if the length is larger than the space available in +//! the transmit FIFO. +//! +//! This function replaces the original EthernetPacketNonBlockingPut() API and +//! performs the same actions. A macro is provided in ethernet.h to +//! map the original API to this API. +//! +//! \note This function does not block and returns immediately if no space +//! is available for the transmit packet. +//! +//! \return Returns \b 0 if no space is available in the transmit FIFO, the +//! negated packet length \b -lBufLen if the packet is too large for FIFO, and +//! the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPutNonBlocking(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Check if the transmit FIFO is in use and return the appropriate code. + // + if(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + return(0); + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Waits to send a packet from the Ethernet controller. +//! +//! \param ulBase is the base address of the controller. +//! \param pucBuf is the pointer to the packet buffer. +//! \param lBufLen is number of bytes in the packet to be transmitted. +//! +//! This function writes \e lBufLen bytes of the packet contained in \e pucBuf +//! into the transmit FIFO of the controller and then activates the transmitter +//! for this packet. This function waits until the transmit FIFO is empty. +//! Once space is available, the function returns once \e lBufLen bytes of +//! the packet have been placed into the FIFO and the transmitter has been +//! started. The function does not wait for the transmission to complete. The +//! function returns the negated \e lBufLen if the length is larger than +//! the space available in the transmit FIFO. +//! +//! \note This function blocks and waits until space is available for the +//! transmit packet before returning. +//! +//! \return Returns the negated packet length \b -lBufLen if the packet is too +//! large for FIFO, and the packet length \b lBufLen otherwise. +// +//***************************************************************************** +long +EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pucBuf != 0); + ASSERT(lBufLen > 0); + + // + // Wait for current packet (if any) to complete. + // + while(HWREG(ulBase + MAC_O_TR) & MAC_TR_NEWTX) + { + } + + // + // Send the packet and return. + // + return(EthernetPacketPutInternal(ulBase, pucBuf, lBufLen)); +} + +//***************************************************************************** +// +//! Registers an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! \param pfnHandler is a pointer to the function to be called when the +//! enabled Ethernet interrupts occur. +//! +//! This function sets the handler to be called when the Ethernet interrupt +//! occurs. This function enables the global interrupt in the interrupt +//! controller; specific Ethernet interrupts must be enabled via +//! EthernetIntEnable(). It is the interrupt handler's responsibility to clear +//! the interrupt source. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntRegister(unsigned long ulBase, void (*pfnHandler)(void)) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(pfnHandler != 0); + + // + // Register the interrupt handler. + // + IntRegister(INT_ETH, pfnHandler); + + // + // Enable the Ethernet interrupt. + // + IntEnable(INT_ETH); +} + +//***************************************************************************** +// +//! Unregisters an interrupt handler for an Ethernet interrupt. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function unregisters the interrupt handler. This function disables +//! the global interrupt in the interrupt controller so that the interrupt +//! handler no longer is called. +//! +//! \sa IntRegister() for important information about registering interrupt +//! handlers. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntUnregister(unsigned long ulBase) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Disable the interrupt. + // + IntDisable(INT_ETH); + + // + // Unregister the interrupt handler. + // + IntUnregister(INT_ETH); +} + +//***************************************************************************** +// +//! Enables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be enabled. +//! +//! This function enables the indicated Ethernet interrupt sources. Only the +//! sources that are enabled can be reflected to the processor interrupt; +//! disabled sources have no effect on the processor. +//! +//! The \e ulIntFlags parameter is the logical OR of any of the following: +//! +//! - \b ETH_INT_PHY - An interrupt from the PHY has occurred. The integrated +//! PHY supports a number of interrupt conditions. The appropriate PHY +//! register, PHY_MR17 or PHY_MR29 depending on the device class, must be read +//! to determine which PHY interrupt has occurred. This register can be read +//! using the EthernetPHYRead() API function. +//! - \b ETH_INT_MDIO - This interrupt indicates that a transaction on the +//! management interface has completed successfully. +//! - \b ETH_INT_RXER - This interrupt indicates that an error has occurred +//! during reception of a frame. This error can indicate a length mismatch, a +//! CRC failure, or an error indication from the PHY. +//! - \b ETH_INT_RXOF - This interrupt indicates that a frame has been received +//! that exceeds the available space in the RX FIFO. +//! - \b ETH_INT_TX - This interrupt indicates that the packet stored in the TX +//! FIFO has been successfully transmitted. +//! - \b ETH_INT_TXER - This interrupt indicates that an error has occurred +//! during the transmission of a packet. This error can be either a retry +//! failure during the back-off process, or an invalid length stored in the TX +//! FIFO. +//! - \b ETH_INT_RX - This interrupt indicates that one (or more) packets are +//! available in the RX FIFO for processing. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Enable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) |= ulIntFlags; +} + +//***************************************************************************** +// +//! Disables individual Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is the bit mask of the interrupt sources to be disabled. +//! +//! Disables the indicated Ethernet interrupt sources. Only the sources that +//! are enabled can be reflected to the processor interrupt; disabled sources +//! have no effect on the processor. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Disable the specified interrupts. + // + HWREG(ulBase + MAC_O_IM) &= ~ulIntFlags; +} + +//***************************************************************************** +// +//! Gets the current Ethernet interrupt status. +//! +//! \param ulBase is the base address of the controller. +//! \param bMasked is false if the raw interrupt status is required and true +//! if the masked interrupt status is required. +//! +//! This function returns the interrupt status for the Ethernet controller. +//! Either the raw interrupt status or the status of interrupts that are +//! allowed to reflect to the processor can be returned. +//! +//! \return Returns the current interrupt status, enumerated as a bit field of +//! values described in EthernetIntEnable(). +// +//***************************************************************************** +unsigned long +EthernetIntStatus(unsigned long ulBase, tBoolean bMasked) +{ + unsigned long ulStatus; + + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Read the unmasked status. + // + ulStatus = HWREG(ulBase + MAC_O_RIS); + + // + // If masked status is requested, mask it off. + // + if(bMasked) + { + ulStatus &= HWREG(ulBase + MAC_O_IM); + } + + // + // Return the interrupt status value. + // + return(ulStatus); +} + +//***************************************************************************** +// +//! Clears Ethernet interrupt sources. +//! +//! \param ulBase is the base address of the controller. +//! \param ulIntFlags is a bit mask of the interrupt sources to be cleared. +//! +//! The specified Ethernet interrupt sources are cleared so that they no longer +//! assert. This function must be called in the interrupt handler to keep the +//! interrupt from being triggered again immediately upon exit. +//! +//! The \e ulIntFlags parameter has the same definition as the \e ulIntFlags +//! parameter to EthernetIntEnable(). +//! +//! \note Because there is a write buffer in the Cortex-M processor, it may +//! take several clock cycles before the interrupt source is actually cleared. +//! Therefore, it is recommended that the interrupt source be cleared early in +//! the interrupt handler (as opposed to the very last action) to avoid +//! returning from the interrupt handler before the interrupt source is +//! actually cleared. Failure to do so may result in the interrupt handler +//! being immediately reentered (because the interrupt controller still sees +//! the interrupt source asserted). +//! +//! \return None. +// +//***************************************************************************** +void +EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + ASSERT(!(ulIntFlags & ~(ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | + ETH_INT_RX))); + + // + // Clear the requested interrupt sources. + // + HWREG(ulBase + MAC_O_IACK) = ulIntFlags; +} + +//***************************************************************************** +// +//! Sets the PHY address. +//! +//! \param ulBase is the base address of the controller. +//! \param ucAddr is the address of the PHY. +//! +//! This function sets the address of the PHY that is accessed via +//! EthernetPHYRead() and EthernePHYWrite(). This configuration is only needed +//! when connecting to an external PHY via MII, and should not be used on +//! devices that have integrated PHYs. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Set the PHY address. + // + HWREG(ulBase + MAC_O_MADD) = ucAddr; +} + +//***************************************************************************** +// +//! Writes to the PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! \param ulData is the data to be written to the PHY register. +//! +//! This function writes the \e ulData to the PHY register specified by +//! \e ucRegAddr. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the DATA to be written. + // + HWREG(ulBase + MAC_O_MTXD) = ulData & MAC_MTXD_MDTX_M; + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_WRITE | MAC_MCTL_START); + + // + // Wait for the write transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } +} + +//***************************************************************************** +// +//! Reads from a PHY register. +//! +//! \param ulBase is the base address of the controller. +//! \param ucRegAddr is the address of the PHY register to be accessed. +//! +//! This function returns the contents of the PHY register specified by +//! \e ucRegAddr. +//! +//! \return Returns the 16-bit value read from the PHY. +// +//***************************************************************************** +unsigned long +EthernetPHYRead(unsigned long ulBase, unsigned char ucRegAddr) +{ + // + // Check the arguments. + // + ASSERT(ulBase == ETH_BASE); + + // + // Wait for any pending transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Program the PHY register address and initiate the transaction. + // + HWREG(ulBase + MAC_O_MCTL) = (((ucRegAddr << 3) & MAC_MCTL_REGADR_M) | + MAC_MCTL_START); + + // + // Wait for the transaction to complete. + // + while(HWREG(ulBase + MAC_O_MCTL) & MAC_MCTL_START) + { + } + + // + // Return the PHY data that was read. + // + return(HWREG(ulBase + MAC_O_MRXD) & MAC_MRXD_MDRX_M); +} + +//***************************************************************************** +// +//! Powers off the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers off the Ethernet PHY, reducing the current +//! consumption of the device. While in the powered off state, the Ethernet +//! controller is unable to connect to the Ethernet. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOff(unsigned long ulBase) +{ + // + // Set the PWRDN bit and clear the ANEGEN bit in the PHY, putting it into + // its low power mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_ANEGEN) | + PHY_MR0_PWRDN); +} + +//***************************************************************************** +// +//! Powers on the Ethernet PHY. +//! +//! \param ulBase is the base address of the controller. +//! +//! This function powers on the Ethernet PHY, enabling it return to normal +//! operation. By default, the PHY is powered on, so this function is only +//! called if EthernetPHYPowerOff() has previously been called. +//! +//! \return None. +// +//***************************************************************************** +void +EthernetPHYPowerOn(unsigned long ulBase) +{ + // + // Clear the PWRDN bit and set the ANEGEN bit in the PHY, putting it into + // normal operating mode. + // + EthernetPHYWrite(ulBase, PHY_MR0, + (EthernetPHYRead(ulBase, PHY_MR0) & ~PHY_MR0_PWRDN) | + PHY_MR0_ANEGEN); +} + +//***************************************************************************** +// +// Close the Doxygen group. +//! @} +// +//***************************************************************************** diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.h new file mode 100644 index 00000000..6e6c3fc3 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/driverlib/ethernet.h @@ -0,0 +1,187 @@ +//***************************************************************************** +// +// ethernet.h - Defines and Macros for the ethernet module. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Peripheral Driver Library. +// +//***************************************************************************** + +#ifndef __ETHERNET_H__ +#define __ETHERNET_H__ + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// Values that can be passed to EthernetConfigSet as the ulConfig value, and +// returned from EthernetConfigGet. +// +//***************************************************************************** +#define ETH_CFG_TS_TSEN 0x010000 // Enable Timestamp (CCP) +#define ETH_CFG_RX_BADCRCDIS 0x000800 // Disable RX BAD CRC Packets +#define ETH_CFG_RX_PRMSEN 0x000400 // Enable RX Promiscuous +#define ETH_CFG_RX_AMULEN 0x000200 // Enable RX Multicast +#define ETH_CFG_TX_DPLXEN 0x000010 // Enable TX Duplex Mode +#define ETH_CFG_TX_CRCEN 0x000004 // Enable TX CRC Generation +#define ETH_CFG_TX_PADEN 0x000002 // Enable TX Padding + +//***************************************************************************** +// +// Values that can be passed to EthernetIntEnable, EthernetIntDisable, and +// EthernetIntClear as the ulIntFlags parameter, and returned from +// EthernetIntStatus. +// +//***************************************************************************** +#define ETH_INT_PHY 0x040 // PHY Event/Interrupt +#define ETH_INT_MDIO 0x020 // Management Transaction +#define ETH_INT_RXER 0x010 // RX Error +#define ETH_INT_RXOF 0x008 // RX FIFO Overrun +#define ETH_INT_TX 0x004 // TX Complete +#define ETH_INT_TXER 0x002 // TX Error +#define ETH_INT_RX 0x001 // RX Complete + +//***************************************************************************** +// +// Helper Macros for Ethernet Processing +// +//***************************************************************************** +// +// htonl/ntohl - big endian/little endian byte swapping macros for +// 32-bit (long) values +// +//***************************************************************************** +#ifndef htonl + #define htonl(a) \ + ((((a) >> 24) & 0x000000ff) | \ + (((a) >> 8) & 0x0000ff00) | \ + (((a) << 8) & 0x00ff0000) | \ + (((a) << 24) & 0xff000000)) +#endif + +#ifndef ntohl + #define ntohl(a) htonl((a)) +#endif + +//***************************************************************************** +// +// htons/ntohs - big endian/little endian byte swapping macros for +// 16-bit (short) values +// +//***************************************************************************** +#ifndef htons + #define htons(a) \ + ((((a) >> 8) & 0x00ff) | \ + (((a) << 8) & 0xff00)) +#endif + +#ifndef ntohs + #define ntohs(a) htons((a)) +#endif + +//***************************************************************************** +// +// API Function prototypes +// +//***************************************************************************** +extern void EthernetInitExpClk(unsigned long ulBase, unsigned long ulEthClk); +extern void EthernetConfigSet(unsigned long ulBase, unsigned long ulConfig); +extern unsigned long EthernetConfigGet(unsigned long ulBase); +extern void EthernetMACAddrSet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetMACAddrGet(unsigned long ulBase, + unsigned char *pucMACAddr); +extern void EthernetEnable(unsigned long ulBase); +extern void EthernetDisable(unsigned long ulBase); +extern tBoolean EthernetPacketAvail(unsigned long ulBase); +extern tBoolean EthernetSpaceAvail(unsigned long ulBase); +extern long EthernetPacketGetNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketGet(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPutNonBlocking(unsigned long ulBase, + unsigned char *pucBuf, + long lBufLen); +extern long EthernetPacketPut(unsigned long ulBase, unsigned char *pucBuf, + long lBufLen); +extern void EthernetIntRegister(unsigned long ulBase, + void (*pfnHandler)(void)); +extern void EthernetIntUnregister(unsigned long ulBase); +extern void EthernetIntEnable(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetIntDisable(unsigned long ulBase, unsigned long ulIntFlags); +extern unsigned long EthernetIntStatus(unsigned long ulBase, tBoolean bMasked); +extern void EthernetIntClear(unsigned long ulBase, unsigned long ulIntFlags); +extern void EthernetPHYAddrSet(unsigned long ulBase, unsigned char ucAddr); +extern void EthernetPHYWrite(unsigned long ulBase, unsigned char ucRegAddr, + unsigned long ulData); +extern unsigned long EthernetPHYRead(unsigned long ulBase, + unsigned char ucRegAddr); +extern void EthernetPHYPowerOff(unsigned long ulBase); +extern void EthernetPHYPowerOn(unsigned long ulBase); + +//***************************************************************************** +// +// Several Ethernet APIs have been renamed, with the original function name +// being deprecated. These defines provide backward compatibility. +// +//***************************************************************************** +#ifndef DEPRECATED +#include "driverlib/sysctl.h" +#define EthernetInit(a) \ + EthernetInitExpClk(a, SysCtlClockGet()) +#define EthernetPacketNonBlockingGet(a, b, c) \ + EthernetPacketGetNonBlocking(a, b, c) +#define EthernetPacketNonBlockingPut(a, b, c) \ + EthernetPacketPutNonBlocking(a, b, c) +#endif + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/inc/hw_ethernet.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/inc/hw_ethernet.h new file mode 100644 index 00000000..61ae8a76 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/inc/hw_ethernet.h @@ -0,0 +1,703 @@ +//***************************************************************************** +// +// hw_ethernet.h - Macros used when accessing the Ethernet hardware. +// +// Copyright (c) 2006-2013 Texas Instruments Incorporated. All rights reserved. +// Software License Agreement +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the +// distribution. +// +// Neither the name of Texas Instruments Incorporated nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This is part of revision 10636 of the Stellaris Firmware Development Package. +// +//***************************************************************************** + +#ifndef __HW_ETHERNET_H__ +#define __HW_ETHERNET_H__ + +//***************************************************************************** +// +// The following are defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_RIS 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IACK 0x00000000 // Ethernet MAC Raw Interrupt + // Status/Acknowledge +#define MAC_O_IM 0x00000004 // Ethernet MAC Interrupt Mask +#define MAC_O_RCTL 0x00000008 // Ethernet MAC Receive Control +#define MAC_O_TCTL 0x0000000C // Ethernet MAC Transmit Control +#define MAC_O_DATA 0x00000010 // Ethernet MAC Data +#define MAC_O_IA0 0x00000014 // Ethernet MAC Individual Address + // 0 +#define MAC_O_IA1 0x00000018 // Ethernet MAC Individual Address + // 1 +#define MAC_O_THR 0x0000001C // Ethernet MAC Threshold +#define MAC_O_MCTL 0x00000020 // Ethernet MAC Management Control +#define MAC_O_MDV 0x00000024 // Ethernet MAC Management Divider +#define MAC_O_MADD 0x00000028 // Ethernet MAC Management Address +#define MAC_O_MTXD 0x0000002C // Ethernet MAC Management Transmit + // Data +#define MAC_O_MRXD 0x00000030 // Ethernet MAC Management Receive + // Data +#define MAC_O_NP 0x00000034 // Ethernet MAC Number of Packets +#define MAC_O_TR 0x00000038 // Ethernet MAC Transmission + // Request +#define MAC_O_TS 0x0000003C // Ethernet MAC Timer Support +#define MAC_O_LED 0x00000040 // Ethernet MAC LED Encoding +#define MAC_O_MDIX 0x00000044 // Ethernet PHY MDIX + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RIS register. +// +//***************************************************************************** +#define MAC_RIS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_RIS_MDINT 0x00000020 // MII Transaction Complete +#define MAC_RIS_RXER 0x00000010 // Receive Error +#define MAC_RIS_FOV 0x00000008 // FIFO Overrun +#define MAC_RIS_TXEMP 0x00000004 // Transmit FIFO Empty +#define MAC_RIS_TXER 0x00000002 // Transmit Error +#define MAC_RIS_RXINT 0x00000001 // Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IACK register. +// +//***************************************************************************** +#define MAC_IACK_PHYINT 0x00000040 // Clear PHY Interrupt +#define MAC_IACK_MDINT 0x00000020 // Clear MII Transaction Complete +#define MAC_IACK_RXER 0x00000010 // Clear Receive Error +#define MAC_IACK_FOV 0x00000008 // Clear FIFO Overrun +#define MAC_IACK_TXEMP 0x00000004 // Clear Transmit FIFO Empty +#define MAC_IACK_TXER 0x00000002 // Clear Transmit Error +#define MAC_IACK_RXINT 0x00000001 // Clear Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IM register. +// +//***************************************************************************** +#define MAC_IM_PHYINTM 0x00000040 // Mask PHY Interrupt +#define MAC_IM_MDINTM 0x00000020 // Mask MII Transaction Complete +#define MAC_IM_RXERM 0x00000010 // Mask Receive Error +#define MAC_IM_FOVM 0x00000008 // Mask FIFO Overrun +#define MAC_IM_TXEMPM 0x00000004 // Mask Transmit FIFO Empty +#define MAC_IM_TXERM 0x00000002 // Mask Transmit Error +#define MAC_IM_RXINTM 0x00000001 // Mask Packet Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_RCTL register. +// +//***************************************************************************** +#define MAC_RCTL_RSTFIFO 0x00000010 // Clear Receive FIFO +#define MAC_RCTL_BADCRC 0x00000008 // Enable Reject Bad CRC +#define MAC_RCTL_PRMS 0x00000004 // Enable Promiscuous Mode +#define MAC_RCTL_AMUL 0x00000002 // Enable Multicast Frames +#define MAC_RCTL_RXEN 0x00000001 // Enable Receiver + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TCTL register. +// +//***************************************************************************** +#define MAC_TCTL_DUPLEX 0x00000010 // Enable Duplex Mode +#define MAC_TCTL_CRC 0x00000004 // Enable CRC Generation +#define MAC_TCTL_PADEN 0x00000002 // Enable Packet Padding +#define MAC_TCTL_TXEN 0x00000001 // Enable Transmitter + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_DATA register. +// +//***************************************************************************** +#define MAC_DATA_TXDATA_M 0xFFFFFFFF // Transmit FIFO Data +#define MAC_DATA_RXDATA_M 0xFFFFFFFF // Receive FIFO Data +#define MAC_DATA_RXDATA_S 0 +#define MAC_DATA_TXDATA_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA0 register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4_M 0xFF000000 // MAC Address Octet 4 +#define MAC_IA0_MACOCT3_M 0x00FF0000 // MAC Address Octet 3 +#define MAC_IA0_MACOCT2_M 0x0000FF00 // MAC Address Octet 2 +#define MAC_IA0_MACOCT1_M 0x000000FF // MAC Address Octet 1 +#define MAC_IA0_MACOCT4_S 24 +#define MAC_IA0_MACOCT3_S 16 +#define MAC_IA0_MACOCT2_S 8 +#define MAC_IA0_MACOCT1_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_IA1 register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6_M 0x0000FF00 // MAC Address Octet 6 +#define MAC_IA1_MACOCT5_M 0x000000FF // MAC Address Octet 5 +#define MAC_IA1_MACOCT6_S 8 +#define MAC_IA1_MACOCT5_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_THR register. +// +//***************************************************************************** +#define MAC_THR_THRESH_M 0x0000003F // Threshold Value +#define MAC_THR_THRESH_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MCTL register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR_M 0x000000F8 // MII Register Address +#define MAC_MCTL_WRITE 0x00000002 // MII Register Transaction Type +#define MAC_MCTL_START 0x00000001 // MII Register Transaction Enable +#define MAC_MCTL_REGADR_S 3 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDV register. +// +//***************************************************************************** +#define MAC_MDV_DIV_M 0x000000FF // Clock Divider +#define MAC_MDV_DIV_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MADD register. +// +//***************************************************************************** +#define MAC_MADD_PHYADR_M 0x0000001F // PHY Address +#define MAC_MADD_PHYADR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MTXD register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX_M 0x0000FFFF // MII Register Transmit Data +#define MAC_MTXD_MDTX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MRXD register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX_M 0x0000FFFF // MII Register Receive Data +#define MAC_MRXD_MDRX_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_NP register. +// +//***************************************************************************** +#define MAC_NP_NPR_M 0x0000003F // Number of Packets in Receive + // FIFO +#define MAC_NP_NPR_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TR register. +// +//***************************************************************************** +#define MAC_TR_NEWTX 0x00000001 // New Transmission + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_TS register. +// +//***************************************************************************** +#define MAC_TS_TSEN 0x00000001 // Time Stamp Enable + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_LED register. +// +//***************************************************************************** +#define MAC_LED_LED1_M 0x00000F00 // LED1 Source +#define MAC_LED_LED1_LINK 0x00000000 // Link OK +#define MAC_LED_LED1_RXTX 0x00000100 // RX or TX Activity (Default LED1) +#define MAC_LED_LED1_100 0x00000500 // 100BASE-TX mode +#define MAC_LED_LED1_10 0x00000600 // 10BASE-T mode +#define MAC_LED_LED1_DUPLEX 0x00000700 // Full-Duplex +#define MAC_LED_LED1_LINKACT 0x00000800 // Link OK & Blink=RX or TX + // Activity +#define MAC_LED_LED0_M 0x0000000F // LED0 Source +#define MAC_LED_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define MAC_LED_LED0_RXTX 0x00000001 // RX or TX Activity +#define MAC_LED_LED0_100 0x00000005 // 100BASE-TX mode +#define MAC_LED_LED0_10 0x00000006 // 10BASE-T mode +#define MAC_LED_LED0_DUPLEX 0x00000007 // Full-Duplex +#define MAC_LED_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the MAC_O_MDIX register. +// +//***************************************************************************** +#define MAC_MDIX_EN 0x00000001 // MDI/MDI-X Enable + +//***************************************************************************** +// +// The following are defines for the Ethernet Controller PHY registers. +// +//***************************************************************************** +#define PHY_MR0 0x00000000 // Ethernet PHY Management Register + // 0 - Control +#define PHY_MR1 0x00000001 // Ethernet PHY Management Register + // 1 - Status +#define PHY_MR2 0x00000002 // Ethernet PHY Management Register + // 2 - PHY Identifier 1 +#define PHY_MR3 0x00000003 // Ethernet PHY Management Register + // 3 - PHY Identifier 2 +#define PHY_MR4 0x00000004 // Ethernet PHY Management Register + // 4 - Auto-Negotiation + // Advertisement +#define PHY_MR5 0x00000005 // Ethernet PHY Management Register + // 5 - Auto-Negotiation Link + // Partner Base Page Ability +#define PHY_MR6 0x00000006 // Ethernet PHY Management Register + // 6 - Auto-Negotiation Expansion +#define PHY_MR16 0x00000010 // Ethernet PHY Management Register + // 16 - Vendor-Specific +#define PHY_MR17 0x00000011 // Ethernet PHY Management Register + // 17 - Mode Control/Status +#define PHY_MR18 0x00000012 // Ethernet PHY Management Register + // 18 - Diagnostic +#define PHY_MR19 0x00000013 // Ethernet PHY Management Register + // 19 - Transceiver Control +#define PHY_MR23 0x00000017 // Ethernet PHY Management Register + // 23 - LED Configuration +#define PHY_MR24 0x00000018 // Ethernet PHY Management Register + // 24 -MDI/MDIX Control +#define PHY_MR27 0x0000001B // Ethernet PHY Management Register + // 27 - Special Control/Status +#define PHY_MR29 0x0000001D // Ethernet PHY Management Register + // 29 - Interrupt Status +#define PHY_MR30 0x0000001E // Ethernet PHY Management Register + // 30 - Interrupt Mask +#define PHY_MR31 0x0000001F // Ethernet PHY Management Register + // 31 - PHY Special Control/Status + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR0 register. +// +//***************************************************************************** +#define PHY_MR0_RESET 0x00008000 // Reset Registers +#define PHY_MR0_LOOPBK 0x00004000 // Loopback Mode +#define PHY_MR0_SPEEDSL 0x00002000 // Speed Select +#define PHY_MR0_ANEGEN 0x00001000 // Auto-Negotiation Enable +#define PHY_MR0_PWRDN 0x00000800 // Power Down +#define PHY_MR0_ISO 0x00000400 // Isolate +#define PHY_MR0_RANEG 0x00000200 // Restart Auto-Negotiation +#define PHY_MR0_DUPLEX 0x00000100 // Set Duplex Mode +#define PHY_MR0_COLT 0x00000080 // Collision Test + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR1 register. +// +//***************************************************************************** +#define PHY_MR1_100X_F 0x00004000 // 100BASE-TX Full-Duplex Mode +#define PHY_MR1_100X_H 0x00002000 // 100BASE-TX Half-Duplex Mode +#define PHY_MR1_10T_F 0x00001000 // 10BASE-T Full-Duplex Mode +#define PHY_MR1_10T_H 0x00000800 // 10BASE-T Half-Duplex Mode +#define PHY_MR1_MFPS 0x00000040 // Management Frames with Preamble + // Suppressed +#define PHY_MR1_ANEGC 0x00000020 // Auto-Negotiation Complete +#define PHY_MR1_RFAULT 0x00000010 // Remote Fault +#define PHY_MR1_ANEGA 0x00000008 // Auto-Negotiation +#define PHY_MR1_LINK 0x00000004 // Link Made +#define PHY_MR1_JAB 0x00000002 // Jabber Condition +#define PHY_MR1_EXTD 0x00000001 // Extended Capabilities + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR2 register. +// +//***************************************************************************** +#define PHY_MR2_OUI_M 0x0000FFFF // Organizationally Unique + // Identifier[21:6] +#define PHY_MR2_OUI_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR3 register. +// +//***************************************************************************** +#define PHY_MR3_OUI_M 0x0000FC00 // Organizationally Unique + // Identifier[5:0] +#define PHY_MR3_MN_M 0x000003F0 // Model Number +#define PHY_MR3_RN_M 0x0000000F // Revision Number +#define PHY_MR3_OUI_S 10 +#define PHY_MR3_MN_S 4 +#define PHY_MR3_RN_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR4 register. +// +//***************************************************************************** +#define PHY_MR4_NP 0x00008000 // Next Page +#define PHY_MR4_RF 0x00002000 // Remote Fault +#define PHY_MR4_A3 0x00000100 // Technology Ability Field [3] +#define PHY_MR4_A2 0x00000080 // Technology Ability Field [2] +#define PHY_MR4_A1 0x00000040 // Technology Ability Field [1] +#define PHY_MR4_A0 0x00000020 // Technology Ability Field [0] +#define PHY_MR4_S_M 0x0000001F // Selector Field +#define PHY_MR4_S_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR5 register. +// +//***************************************************************************** +#define PHY_MR5_NP 0x00008000 // Next Page +#define PHY_MR5_ACK 0x00004000 // Acknowledge +#define PHY_MR5_RF 0x00002000 // Remote Fault +#define PHY_MR5_A_M 0x00001FE0 // Technology Ability Field +#define PHY_MR5_S_M 0x0000001F // Selector Field +#define PHY_MR5_S_8023 0x00000001 // IEEE Std 802.3 +#define PHY_MR5_S_8029 0x00000002 // IEEE Std 802.9 ISLAN-16T +#define PHY_MR5_S_8025 0x00000003 // IEEE Std 802.5 +#define PHY_MR5_S_1394 0x00000004 // IEEE Std 1394 +#define PHY_MR5_A_S 5 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR6 register. +// +//***************************************************************************** +#define PHY_MR6_PDF 0x00000010 // Parallel Detection Fault +#define PHY_MR6_LPNPA 0x00000008 // Link Partner is Next Page Able +#define PHY_MR6_PRX 0x00000002 // New Page Received +#define PHY_MR6_LPANEGA 0x00000001 // Link Partner is Auto-Negotiation + // Able + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR16 register. +// +//***************************************************************************** +#define PHY_MR16_RPTR 0x00008000 // Repeater Mode +#define PHY_MR16_INPOL 0x00004000 // Interrupt Polarity +#define PHY_MR16_TXHIM 0x00001000 // Transmit High Impedance Mode +#define PHY_MR16_SQEI 0x00000800 // SQE Inhibit Testing +#define PHY_MR16_NL10 0x00000400 // Natural Loopback Mode +#define PHY_MR16_SR_M 0x000003C0 // Silicon Revision Identifier +#define PHY_MR16_APOL 0x00000020 // Auto-Polarity Disable +#define PHY_MR16_RVSPOL 0x00000010 // Receive Data Polarity +#define PHY_MR16_PCSBP 0x00000002 // PCS Bypass +#define PHY_MR16_RXCC 0x00000001 // Receive Clock Control +#define PHY_MR16_SR_S 6 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR17 register. +// +//***************************************************************************** +#define PHY_MR17_JABBER_IE 0x00008000 // Jabber Interrupt Enable +#define PHY_MR17_FASTRIP 0x00004000 // 10-BASE-T Fast Mode Enable +#define PHY_MR17_RXER_IE 0x00004000 // Receive Error Interrupt Enable +#define PHY_MR17_EDPD 0x00002000 // Enable Energy Detect Power Down +#define PHY_MR17_PRX_IE 0x00002000 // Page Received Interrupt Enable +#define PHY_MR17_PDF_IE 0x00001000 // Parallel Detection Fault + // Interrupt Enable +#define PHY_MR17_LSQE 0x00000800 // Low Squelch Enable +#define PHY_MR17_LPACK_IE 0x00000800 // LP Acknowledge Interrupt Enable +#define PHY_MR17_LSCHG_IE 0x00000400 // Link Status Change Interrupt + // Enable +#define PHY_MR17_RFAULT_IE 0x00000200 // Remote Fault Interrupt Enable +#define PHY_MR17_ANEGCOMP_IE 0x00000100 // Auto-Negotiation Complete + // Interrupt Enable +#define PHY_MR17_FASTEST 0x00000100 // Auto-Negotiation Test Mode +#define PHY_MR17_JABBER_INT 0x00000080 // Jabber Event Interrupt +#define PHY_MR17_RXER_INT 0x00000040 // Receive Error Interrupt +#define PHY_MR17_PRX_INT 0x00000020 // Page Receive Interrupt +#define PHY_MR17_PDF_INT 0x00000010 // Parallel Detection Fault + // Interrupt +#define PHY_MR17_LPACK_INT 0x00000008 // LP Acknowledge Interrupt +#define PHY_MR17_LSCHG_INT 0x00000004 // Link Status Change Interrupt +#define PHY_MR17_FGLS 0x00000004 // Force Good Link Status +#define PHY_MR17_RFAULT_INT 0x00000002 // Remote Fault Interrupt +#define PHY_MR17_ENON 0x00000002 // Energy On +#define PHY_MR17_ANEGCOMP_INT 0x00000001 // Auto-Negotiation Complete + // Interrupt + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR18 register. +// +//***************************************************************************** +#define PHY_MR18_ANEGF 0x00001000 // Auto-Negotiation Failure +#define PHY_MR18_DPLX 0x00000800 // Duplex Mode +#define PHY_MR18_RATE 0x00000400 // Rate +#define PHY_MR18_RXSD 0x00000200 // Receive Detection +#define PHY_MR18_RX_LOCK 0x00000100 // Receive PLL Lock + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR19 register. +// +//***************************************************************************** +#define PHY_MR19_TXO_M 0x0000C000 // Transmit Amplitude Selection +#define PHY_MR19_TXO_00DB 0x00000000 // Gain set for 0.0dB of insertion + // loss +#define PHY_MR19_TXO_04DB 0x00004000 // Gain set for 0.4dB of insertion + // loss +#define PHY_MR19_TXO_08DB 0x00008000 // Gain set for 0.8dB of insertion + // loss +#define PHY_MR19_TXO_12DB 0x0000C000 // Gain set for 1.2dB of insertion + // loss + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR23 register. +// +//***************************************************************************** +#define PHY_MR23_LED1_M 0x000000F0 // LED1 Source +#define PHY_MR23_LED1_LINK 0x00000000 // Link OK +#define PHY_MR23_LED1_RXTX 0x00000010 // RX or TX Activity (Default LED1) +#define PHY_MR23_LED1_100 0x00000050 // 100BASE-TX mode +#define PHY_MR23_LED1_10 0x00000060 // 10BASE-T mode +#define PHY_MR23_LED1_DUPLEX 0x00000070 // Full-Duplex +#define PHY_MR23_LED1_LINKACT 0x00000080 // Link OK & Blink=RX or TX + // Activity +#define PHY_MR23_LED0_M 0x0000000F // LED0 Source +#define PHY_MR23_LED0_LINK 0x00000000 // Link OK (Default LED0) +#define PHY_MR23_LED0_RXTX 0x00000001 // RX or TX Activity +#define PHY_MR23_LED0_100 0x00000005 // 100BASE-TX mode +#define PHY_MR23_LED0_10 0x00000006 // 10BASE-T mode +#define PHY_MR23_LED0_DUPLEX 0x00000007 // Full-Duplex +#define PHY_MR23_LED0_LINKACT 0x00000008 // Link OK & Blink=RX or TX + // Activity + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR24 register. +// +//***************************************************************************** +#define PHY_MR24_PD_MODE 0x00000080 // Parallel Detection Mode +#define PHY_MR24_AUTO_SW 0x00000040 // Auto-Switching Enable +#define PHY_MR24_MDIX 0x00000020 // Auto-Switching Configuration +#define PHY_MR24_MDIX_CM 0x00000010 // Auto-Switching Complete +#define PHY_MR24_MDIX_SD_M 0x0000000F // Auto-Switching Seed +#define PHY_MR24_MDIX_SD_S 0 + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR27 register. +// +//***************************************************************************** +#define PHY_MR27_XPOL 0x00000010 // Polarity State of 10 BASE-T + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR29 register. +// +//***************************************************************************** +#define PHY_MR29_EONIS 0x00000080 // ENERGYON Interrupt +#define PHY_MR29_ANCOMPIS 0x00000040 // Auto-Negotiation Complete + // Interrupt +#define PHY_MR29_RFLTIS 0x00000020 // Remote Fault Interrupt +#define PHY_MR29_LDIS 0x00000010 // Link Down Interrupt +#define PHY_MR29_LPACKIS 0x00000008 // Auto-Negotiation LP Acknowledge +#define PHY_MR29_PDFIS 0x00000004 // Parallel Detection Fault +#define PHY_MR29_PRXIS 0x00000002 // Auto Negotiation Page Received + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR30 register. +// +//***************************************************************************** +#define PHY_MR30_EONIM 0x00000080 // ENERGYON Interrupt Enabled +#define PHY_MR30_ANCOMPIM 0x00000040 // Auto-Negotiation Complete + // Interrupt Enabled +#define PHY_MR30_RFLTIM 0x00000020 // Remote Fault Interrupt Enabled +#define PHY_MR30_LDIM 0x00000010 // Link Down Interrupt Enabled +#define PHY_MR30_LPACKIM 0x00000008 // Auto-Negotiation LP Acknowledge + // Enabled +#define PHY_MR30_PDFIM 0x00000004 // Parallel Detection Fault Enabled +#define PHY_MR30_PRXIM 0x00000002 // Auto Negotiation Page Received + // Enabled + +//***************************************************************************** +// +// The following are defines for the bit fields in the PHY_MR31 register. +// +//***************************************************************************** +#define PHY_MR31_AUTODONE 0x00001000 // Auto Negotiation Done +#define PHY_MR31_SPEED_M 0x0000001C // HCD Speed Value +#define PHY_MR31_SPEED_10HD 0x00000004 // 10BASE-T half duplex +#define PHY_MR31_SPEED_100HD 0x00000008 // 100BASE-T half duplex +#define PHY_MR31_SPEED_10FD 0x00000014 // 10BASE-T full duplex +#define PHY_MR31_SPEED_100FD 0x00000018 // 100BASE-T full duplex +#define PHY_MR31_SCRDIS 0x00000001 // Scramble Disable + +//***************************************************************************** +// +// The following definitions are deprecated. +// +//***************************************************************************** +#ifndef DEPRECATED + +//***************************************************************************** +// +// The following are deprecated defines for the Ethernet MAC register offsets. +// +//***************************************************************************** +#define MAC_O_IS 0x00000000 // Interrupt Status Register + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IS +// register. +// +//***************************************************************************** +#define MAC_IS_PHYINT 0x00000040 // PHY Interrupt +#define MAC_IS_MDINT 0x00000020 // MDI Transaction Complete +#define MAC_IS_RXER 0x00000010 // RX Error +#define MAC_IS_FOV 0x00000008 // RX FIFO Overrun +#define MAC_IS_TXEMP 0x00000004 // TX FIFO Empy +#define MAC_IS_TXER 0x00000002 // TX Error +#define MAC_IS_RXINT 0x00000001 // RX Packet Available + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA0 +// register. +// +//***************************************************************************** +#define MAC_IA0_MACOCT4 0xFF000000 // 4th Octet of MAC address +#define MAC_IA0_MACOCT3 0x00FF0000 // 3rd Octet of MAC address +#define MAC_IA0_MACOCT2 0x0000FF00 // 2nd Octet of MAC address +#define MAC_IA0_MACOCT1 0x000000FF // 1st Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_IA1 +// register. +// +//***************************************************************************** +#define MAC_IA1_MACOCT6 0x0000FF00 // 6th Octet of MAC address +#define MAC_IA1_MACOCT5 0x000000FF // 5th Octet of MAC address + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_THR +// register. +// +//***************************************************************************** +#define MAC_THR_THRESH 0x0000003F // Transmit Threshold Value + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MCTL +// register. +// +//***************************************************************************** +#define MAC_MCTL_REGADR 0x000000F8 // Address for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MDV +// register. +// +//***************************************************************************** +#define MAC_MDV_DIV 0x000000FF // Clock Divider for MDC for TX + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MTXD +// register. +// +//***************************************************************************** +#define MAC_MTXD_MDTX 0x0000FFFF // Data for Next MII Transaction + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_MRXD +// register. +// +//***************************************************************************** +#define MAC_MRXD_MDRX 0x0000FFFF // Data Read from Last MII Trans + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the MAC_O_NP +// register. +// +//***************************************************************************** +#define MAC_NP_NPR 0x0000003F // Number of RX Frames in FIFO + +//***************************************************************************** +// +// The following are deprecated defines for the bit fields in the PHY_MR23 +// register. +// +//***************************************************************************** +#define PHY_MR23_LED1_TX 0x00000020 // TX Activity +#define PHY_MR23_LED1_RX 0x00000030 // RX Activity +#define PHY_MR23_LED1_COL 0x00000040 // Collision +#define PHY_MR23_LED0_TX 0x00000002 // TX Activity +#define PHY_MR23_LED0_RX 0x00000003 // RX Activity +#define PHY_MR23_LED0_COL 0x00000004 // Collision + +//***************************************************************************** +// +// The following are deprecated defines for the reset values of the MAC +// registers. +// +//***************************************************************************** +#define MAC_RV_MDV 0x00000080 +#define MAC_RV_IM 0x0000007F +#define MAC_RV_THR 0x0000003F +#define MAC_RV_RCTL 0x00000008 +#define MAC_RV_IA0 0x00000000 +#define MAC_RV_TCTL 0x00000000 +#define MAC_RV_DATA 0x00000000 +#define MAC_RV_MRXD 0x00000000 +#define MAC_RV_TR 0x00000000 +#define MAC_RV_IS 0x00000000 +#define MAC_RV_NP 0x00000000 +#define MAC_RV_MCTL 0x00000000 +#define MAC_RV_MTXD 0x00000000 +#define MAC_RV_IA1 0x00000000 +#define MAC_RV_IACK 0x00000000 +#define MAC_RV_MADD 0x00000000 + +#endif + +#endif // __HW_ETHERNET_H__ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.c new file mode 100644 index 00000000..1e213136 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * Implementation of architecture-specific clock functionality + * \author + * Adam Dunkels + */ + +#include "clock-arch.h" +#include "boot.h" + +/*---------------------------------------------------------------------------*/ +clock_time_t +clock_time(void) +{ + return (clock_time_t)TimerGet(); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.h new file mode 100644 index 00000000..aa97f0e7 --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/clock-arch.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +#ifndef __CLOCK_ARCH_H__ +#define __CLOCK_ARCH_H__ + +typedef int clock_time_t; +#define CLOCK_CONF_SECOND 1000 + +#endif /* __CLOCK_ARCH_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.c b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.c new file mode 100644 index 00000000..a5228bfa --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Author: Adam Dunkels + * + * $Id: netdev.c,v 1.8 2006/06/07 08:39:58 adam Exp $ + */ + + +/*---------------------------------------------------------------------------*/ +#include "uip.h" +#include "uip_arp.h" +#include "boot.h" +#include "inc/hw_memmap.h" +#include "inc/hw_types.h" +#include "inc/hw_ethernet.h" +#include "driverlib/sysctl.h" +#include "driverlib/gpio.h" +#include "driverlib/ethernet.h" +#include "driverlib/flashlib.h" + + +/*---------------------------------------------------------------------------*/ +#define NETDEV_LINKUP_TIMEOUT_MS (5000) + +#define NETDEV_DEFAULT_MACADDR0 (0x08) +#define NETDEV_DEFAULT_MACADDR1 (0x00) +#define NETDEV_DEFAULT_MACADDR2 (0x27) +#define NETDEV_DEFAULT_MACADDR3 (0x69) +#define NETDEV_DEFAULT_MACADDR4 (0x5B) +#define NETDEV_DEFAULT_MACADDR5 (0x45) + + +/*---------------------------------------------------------------------------*/ +void netdev_init(void) +{ + blt_int32u ulTemp; + blt_int32u ulLinkTimeOut; + + /* enable and reset the ethernet controller. */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH); + SysCtlPeripheralReset(SYSCTL_PERIPH_ETH); + /* enable port F for ethernet LEDs. + * LED0 Bit 3 Output + * LED1 Bit 2 Output + */ + SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); + GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3); + /* intialize the ethernet controller and disable all ethernet controller + * interrupt sources. + */ + EthernetIntDisable(ETH_BASE, (ETH_INT_PHY | ETH_INT_MDIO | ETH_INT_RXER | + ETH_INT_RXOF | ETH_INT_TX | ETH_INT_TXER | ETH_INT_RX)); + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* initialize the ethernet controller for operation. */ + EthernetInitExpClk(ETH_BASE, SysCtlClockGet()); + /* configure the ethernet controller for normal operation. + * - Full Duplex + * - TX CRC Auto Generation + * - TX Padding Enabled + */ + EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_CRCEN | + ETH_CFG_TX_PADEN)); + /* wait for the link to become active. */ + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + ulLinkTimeOut = TimerGet() + NETDEV_LINKUP_TIMEOUT_MS; + + while ((ulTemp & 0x0004) == 0) + { + ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1); + /* check for timeout so that the software program can still start if the + * ethernet cable is not connected. + */ + if (TimerGet() >= ulLinkTimeOut) + { + break; + } + } + /* enable the ethernet controller. */ + EthernetEnable(ETH_BASE); +} + + +/*---------------------------------------------------------------------------*/ +void netdev_setmacaddr(void) +{ + struct uip_eth_addr macAddress; + unsigned long ulUser0, ulUser1; + + /* set the default MAC address */ + macAddress.addr[0] = NETDEV_DEFAULT_MACADDR0; + macAddress.addr[1] = NETDEV_DEFAULT_MACADDR1; + macAddress.addr[2] = NETDEV_DEFAULT_MACADDR2; + macAddress.addr[3] = NETDEV_DEFAULT_MACADDR3; + macAddress.addr[4] = NETDEV_DEFAULT_MACADDR4; + macAddress.addr[5] = NETDEV_DEFAULT_MACADDR5; + /* the LM3S eval kit should have a MAC address pre-propgrammed in flash by the + * manufacturer. try to use this one, otherwise use the default values. + */ + FlashUserGet(&ulUser0, &ulUser1); + if ( (ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff) ) + { + macAddress.addr[0] = ((ulUser0 >> 0) & 0xff); + macAddress.addr[1] = ((ulUser0 >> 8) & 0xff); + macAddress.addr[2] = ((ulUser0 >> 16) & 0xff); + macAddress.addr[3] = ((ulUser1 >> 0) & 0xff); + macAddress.addr[4] = ((ulUser1 >> 8) & 0xff); + macAddress.addr[5] = ((ulUser1 >> 16) & 0xff); + } + EthernetMACAddrSet(ETH_BASE, &macAddress.addr[0]); + uip_setethaddr(macAddress); +} + + +/*---------------------------------------------------------------------------*/ +unsigned int netdev_read(void) +{ + blt_int32u ulTemp; + + /* read and Clear the interrupt flag. */ + ulTemp = EthernetIntStatus(ETH_BASE, false); + EthernetIntClear(ETH_BASE, ulTemp); + + /* check to see if an RX Interrupt has occured. */ + if(ulTemp & ETH_INT_RX) + { + return EthernetPacketGetNonBlocking(ETH_BASE, uip_buf, sizeof(uip_buf)); + } + return 0; +} + + +/*---------------------------------------------------------------------------*/ +void netdev_send(void) +{ + EthernetPacketPut(ETH_BASE, uip_buf, uip_len); +} + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.h new file mode 100644 index 00000000..d02efb3c --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/netdev.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Adam Dunkels. + * 4. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: netdev.h,v 1.1 2002/01/10 06:22:56 adam Exp $ + * + */ + +#ifndef __NETDEV_H__ +#define __NETDEV_H__ + +void netdev_init(void); +unsigned int netdev_read(void); +void netdev_send(void); +void netdev_setmacaddr(void); + +#endif /* __NETDEV_H__ */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/uip-conf.h b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/uip-conf.h new file mode 100644 index 00000000..fd9ba0dd --- /dev/null +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Boot/lib/uip/uip-conf.h @@ -0,0 +1,151 @@ +/** + * \addtogroup uipopt + * @{ + */ + +/** + * \name Project-specific configuration options + * @{ + * + * uIP has a number of configuration options that can be overridden + * for each project. These are kept in a project-specific uip-conf.h + * file and all configuration names have the prefix UIP_CONF. + */ + +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * An example uIP configuration file + * \author + * Adam Dunkels + */ + +#ifndef __UIP_CONF_H__ +#define __UIP_CONF_H__ + + +/** + * 8 bit datatype + * + * This typedef defines the 8-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned char u8_t; + +/** + * 16 bit datatype + * + * This typedef defines the 16-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef unsigned short u16_t; + +/** + * Statistics datatype + * + * This typedef defines the dataype used for keeping statistics in + * uIP. + * + * \hideinitializer + */ +typedef unsigned short uip_stats_t; + +/** + * Maximum number of TCP connections. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_CONNECTIONS 1 + +/** + * Maximum number of listening TCP ports. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_LISTENPORTS 1 + +/** + * uIP buffer size. + * + * \hideinitializer + */ +#define UIP_CONF_BUFFER_SIZE 1600 + +/** + * CPU byte order. + * + * \hideinitializer + */ +#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN + +/** + * Logging on or off + * + * \hideinitializer + */ +#define UIP_CONF_LOGGING 0 + +/** + * UDP support on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP 0 + +/** + * UDP checksums on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP_CHECKSUMS 1 + +/** + * uIP statistics on or off + * + * \hideinitializer + */ +#define UIP_CONF_STATISTICS 0 + +/* Here we include the header file for the application(s) we use in + our project. */ +#include "boot.h" +#include "net.h" + +#endif /* __UIP_CONF_H__ */ + +/** @} */ +/** @} */ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.out b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.out index de1b18fe..3e374e9e 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.out and b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.out differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.srec index a53e0f99..89f5cec9 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/bin/demoprog_ek_lm3s6965.srec @@ -1,272 +1,272 @@ S01C000064656D6F70726F675F656B5F6C6D3373363936352E73726563C4 -S113600058040020AD7000008B7000008B700000FD -S11360108B7000008B7000008B7000008B70000090 -S11360208B7000008B7000008B7000008B70000080 -S11360308B7000008B7000008B700000B368000050 -S11360408B7000008B7000008B7000008B70000060 -S11360508B7000008B7000008B7000008B70000050 -S11360608B7000008B7000008B7000008B70000040 -S11360708B7000008B7000008B7000008B70000030 -S11360808B7000008B7000008B7000008B70000020 -S11360908B7000008B7000008B7000008B70000010 -S11360A08B7000008B7000008B7000008B70000000 -S11360B08B7000008B7000008B7000008B700000F0 -S11360C08B7000008B7000008B7000008B700000E0 -S11360D08B7000008B7000008B7000008B700000D0 -S11360E08B7000008B7000008B7000008B700000C0 -S10760F0EE11AA55AA -S11360F4DFF80C15884200F0A980DFF808158842FF -S113610400F0A480DFF80015884200F09F80DFF8D7 -S1136114FC14884200F09A80DFF8F414884200F0FA -S11361249580DFF8F014884200F09080DFF8E814DA -S1136134884200F08B80DFF8E414884200F0868003 -S1136144DFF8DC14884200F08180DFF8D814884238 -S11361547CD0DFF8D414884278D0DFF8D014884295 -S113616474D0DFF8CC14884270D0DFF8C8148842A5 -S11361746CD0DFF8C414884268D0DFF8C0148842B5 -S113618464D0DFF8BC14884260D0DFF8B8148842C5 -S11361945CD0DFF8B414884258D0402856D0B0F10B -S11361A4102F53D0DFF8A41488424FD0DFF8A01482 -S11361B488424BD0DFF89C14884247D0DFF8981407 -S11361C4884243D0DFF8941488423FD0B0F1101FC2 -S11361D43CD0DFF88C14884238D0DFF88814884225 -S11361E434D0DFF88414884230D0DFF88014884235 -S11361F42CD0DFF87C14884228D0DFF87814884245 -S113620424D0DFF87414884220D0DFF87014884254 -S11362141CD0DFF86C14884218D0DFF86814884264 -S113622414D0DFF86414884210D0DFF86014884274 -S11362340CD0B0F1202F09D0DFF85414884205D0D3 -S1136244082803D0DFF85014884201D1012000E06B -S11362540020C0B2704710B504002000FFF748FFC7 -S1136264002805D14FF4FC71DFF8280400F05FFA2C -S1136274200FDFF8281451F820000068A1B2220C82 -S113628412F01F0291400843210FDFF8102452F842 -S11362942110086010BDDFF81404DFF81414016041 -S11362A4FEE700000138FDD17047704770B5040063 -S11362B4DFF80004006810F0E04F08D0DFF8F403BE -S11362C40068DFF8F4130840B0F1805F02D1002CB9 -S11362D400F19980DFF8C8030568DFF8E003066875 -S11362E455F4006535F4800556F40066DFF8B00310 -S11362F40560DFF8C8030660A80701D5A00708D520 -S113630415F0010014F0010191F00101C0B208423A -S11363141ED074F003000540DFF884030560002EEA -S113632407D516F07000302809D016F070007028D4 -S113633405D0002E08D415F03000302804D14FF4D1 -S11363448050FFF7AFFF03E05FF40020FFF7AAFFDC -S1136354DFF86C03054043F2F07020400543DFF896 -S113636464030640DFF860032040064314F0080089 -S113637456EAC006DFF82C0340210160002E06D53E -S1136384DFF838030660DFF81803056005E0DFF87A -S113639410030560DFF8240306601020FFF782FF72 -S11363A4DFF828030540DFF828032040054336F0CE -S11363B4FC5614F0FC500643600008D555F48005DF -S11363C436F48006DFF80C032040064301E036F07F -S11363D4804620050ED44FF4004000E0401E0028FF -S11363E404D0DFF8C41209684906F7D535F400650A -S11363F436F40066DFF8A8020560DFF8C002066020 -S11364041020FFF74FFF70BD30B4DFF89402016829 -S1136414DFF8A8020268002A02D512F0700001E035 -S113642411F0300000280DD010283AD020286FD065 -S1136434302800F0A480602800F0A480702800F0C4 -S1136444A480A5E0C1F38410DFF88C3253F8200053 -S1136454DFF88832134013F1004F05D0002A00F10D -S1136464AA800B0500F1A780DFF874321B68DFF8FB -S11364744442246814F0E04F09D0DFF83842246819 -S1136484DFF834522C40B4F1805F40F08380C3F3CE -S11364944814A41C604313F01F04A41CB0FBF4F0C0 -S11364A481E0DFF81002006810F0E04F08D0DFF854 -S11364B404020068DFF800321840B0F1805F02D1B2 -S11364C4DFF8200223E0DFF8EC010068DFF8E831AC -S11364D41840DFF81432984205D1DFF8D801006877 -S11364E480B202280ED0DFF8CC010068DFF8C8318E -S11364F41840DFF8F831984207D1DFF8B801006892 -S1136504000402D1DFF8E80101E0DFF8E8019FE7C5 -S1136514DFF8A001006810F0E04F08D0DFF8940120 -S11365240068DFF894311840B0F1805F02D1DFF8DD -S1136534C80123E0DFF87C010068DFF87C311840EF -S1136544DFF8A431984205D1DFF86801006880B20D -S113655402280ED0DFF85C010068DFF85C311840D3 -S1136564DFF88831984207D1DFF848010068000455 -S113657402D1DFF8880101E0DFF8840168E747F21B -S1136584305065E75FF4800062E74FF400405FE752 -S1136594002032E0C3F34814604313F01F04641C66 -S11365A46400B0FBF4F05C0400D540081B0400D57F -S11365B4800851F480014B021FD5002A18D55300DA -S11365C410D5DFF81831134013F1004F03D0002A1B -S11365D408D4090506D44000C2F38651491CB0FB13 -S11365E4F1F00AE0C2F3C551491CB0FBF1F004E038 -S11365F4C1F3C351491CB0FBF1F030BC7047000037 -S1136604010010000200100000011000000210003C -S113661400041000000110100002101000041010F7 -S1136624004010100050102001000020020000203F -S11366340400002008000020100000202000002096 -S113664440000020800000200001002000400010D1 -S113665400101010000110208000003010000030E1 -S113666400010010000200101000001020000010AF -S1136674200000300100101002001010040010105B -S113668408001010010000100200001004000010A3 -S113669401001020606E000000101000C0700000A3 -S11366A460E00F4058E00F4050E00F400CED00E074 -S11366B40400FA0500E00F400000FF7070E00F4092 -S11366C40FC8FFFF8FDFFF7F30200080FCFF3FF8FF -S11366D40300C007000040407C6F000000080080F5 -S11366E464E00F40C0E1E400000001100000031066 -S11366F4001BB7000024F40070383900C0C62D0014 -S113670400093D0080B500F007F800F01FF800F020 -S11367148DF800F031F8FAE780B50748FFF7C6FDB5 -S113672400F076F800F0ACF800F0CAF801BD034AB2 -S1136734106003480160FEE78003C00148000020A4 -S11367444C00002080B5FFF7A6FD01BD80B52A48A2 -S1136754FFF781FD2948FFF77EFD03215FF0402008 -S113676400F01EFAFFF750FE60234FF4614201006B -S1136774234800F066FA01BD80B522480078002859 -S11367840BD1214800F02BF8012827D11D48012101 -S113679401701E480021017020E01C4800781A4949 -S11367A44018401C00F01BF8012817D11748007842 -S11367B4401C164908701548007813490978884222 -S11367C40CD11048002101700F484078FF2805D1EE -S11367D40D488078002801D1FFF7B4FF01BD10B53E -S11367E40400074800F0D5FA10F1010F02D020701C -S11367F4012000E0002010BD010000100100002071 -S113680400C0004055000020000000205400002077 -S113681480B51748FFF71FFD0121164800F0A5F9BC -S113682400220121134800F08CF901BD10B500F0D9 -S11368343BF8040010480068201AB0F5FA7F16D318 -S11368440E480078002808D10C4801210170012267 -S11368540121084800F075F907E008480021017097 -S113686400220121034800F06CF90348046010BDC0 -S11368742000002000500240440000205600002064 -S113688480B5FFF7C1FD4FF47A71B0FBF1F000F06D -S1136894B5FA00F0A5FA00F0AAFA002000F001F815 -S11368A401BD0649086070470448006870470348FE -S11368B40068401C01490860704700005000002033 -S11368C480B500F0B1FA01BDB0F1402F43D0DFF838 -S11368D4081388423FD0DFF8041388423BD0DFF822 -S11368E40013884237D0DFF8FC12884233D0DFF833 -S11368F4F81288422FD0DFF8F41288422BD0DFF844 -S1136904F012884227D0DFF8EC12884223D0DFF853 -S1136914E81288421FD0DFF8E41288421BD0DFF863 -S1136924E012884217D0DFF8DC12884213D0DFF873 -S1136934D81288420FD0DFF8D41288420BD0DFF883 -S1136944D012884207D0DFF8CC12884203D0DFF893 -S1136954C812884201D1012000E00020C0B270476F -S113696470B504000D0016002000FFF7ADFF0028E9 -S113697404D1E421DFF8A402FFF7D9FE002E08D0E5 -S1136984012E06D0022E04D0E621DFF89002FFF790 -S1136994CEFEF00705D514F580600068EDB22843F7 -S11369A404E014F580600068EDB2A84314F5806136 -S11369B40860B00705D514F584600068EDB2284377 -S11369C404E014F584600068EDB2A84314F584610E -S11369D4086070BDF8B504000D0017001E00200007 -S11369E4FFF772FF002805D14FF4DD71DFF82C02A4 -S11369F4FFF79DFE012F0BD0022F09D0042F07D0DF -S1136A040C2F05D04FF4DF71DFF81002FFF78FFE6F -S1136A14082E11D00A2E0FD00C2E0DD0092E0BD017 -S1136A240B2E09D00D2E07D0002E05D040F2C5112F -S1136A34DFF8E801FFF77BFEF80705D514F5A0603D -S1136A440068EDB2284304E014F5A0600068EDB2D8 -S1136A54A84314F5A0610860B80704D5D4F8040564 -S1136A64EDB2284303E0D4F80405EDB2A843C4F816 -S1136A740405780705D514F5A1600068EDB2284330 -S1136A8404E014F5A1600068EDB2A84314F5A16113 -S1136A940860380705D514F5A3600068EDB22843EF -S1136AA404E014F5A3600068EDB2A84314F5A361EF -S1136AB40860F00704D5D4F80C05EDB2284303E0CC -S1136AC4D4F80C05EDB2A843C4F80C05B00705D5F9 -S1136AD414F5A2600068EDB2284304E014F5A26042 -S1136AE40068EDB2A84314F5A2610860700704D5E8 -S1136AF4D4F81405EDB2284303E0D4F81405EDB238 -S1136B04A843C4F81405300704D5D4F81C05EDB221 -S1136B14284303E0D4F81C05EDB2A843C4F81C05CB -S1136B24002E05D114F5A5600068EDB2284304E0F5 -S1136B3414F5A5600068EDB2A84314F5A5610860D6 -S1136B44F1BD70B504000D0016002000FFF7BCFE73 -S1136B54002805D14FF45171DFF8C000FFF7E7FDB9 -S1136B64EDB2F6B244F8256070BD38B504000D00EA -S1136B742000FFF7A9FE002804D140F2044127486D -S1136B84FFF7D5FD01222900C9B22000FFF7E8FE72 -S1136B94082301222900C9B22000FFF71BFF31BDDD -S1136BA438B504000D002000FFF78EFE002804D140 -S1136BB440F21F511948FFF7BAFD02222900C9B255 -S1136BC42000FFF7CDFE082301222900C9B22000CA -S1136BD4FFF700FF31BD0000008005400050004075 -S1136BE4009005400060004000A005400070004093 -S1136BF400B005400040024000C00540005002407F -S1136C0400D005400060024000E0054000700240EE -S1136C1400F0054000D0034000000640206F00004F -S1136C24DFF89811884207D0DFF89411884203D022 -S1136C34DFF89011884201D1012000E00020C0B2A5 -S1136C447047F8B504000E0017001D002000FFF77C -S1136C54E7FF002805D140F20D11DFF86C01FFF7BE -S1136C6466FD002F05D14FF48771DFF85C01FFF74F -S1136C745EFDDFF85801006810F0E04F27D0DFF81C -S1136C844C010068DFF848110840B0F1805F1ED061 -S1136C94DFF838010068DFF838110840DFF83411F0 -S1136CA4884205D1DFF82401006880B202280ED09E -S1136CB4DFF818010068DFF818110840DFF818112C -S1136CC4884206D1DFF804010068000401D11020D1 -S1136CD400E0082000FB07F0864205D240F20F11C1 -S1136CE4DFF8E400FFF723FD200000F038F8B6EBEA -S1136CF4071F05D2206B50F0200020637F0803E0B7 -S1136D04206B30F020002063F000B0FBF7F0401C4F -S1136D144008810961624021B0FBF1F202FB1102D7 -S1136D24A262E5620020A061200000F001F8F1BD38 -S1136D3410B504002000FFF773FF002805D14FF4B9 -S1136D44CF71DFF88400FFF7F2FCE06A50F0100022 -S1136D54E062206B40F201310843206310BD10B59A -S1136D6404002000FFF75CFF002805D14FF4DF7115 -S1136D74DFF85400FFF7DBFCA0690007FCD4E06AE9 -S1136D8430F01000E062206BDFF8501008402063FC -S1136D9410BD10B504002000FFF742FF002804D101 -S1136DA440F209410848FFF7C2FCA069C00601D4B7 -S1136DB4206801E05FF0FF3010BD000000C0004017 -S1136DC400D0004000E00040D86F000000E00F4015 -S1136DD40000FF700000011000000310FEFCFFFF20 -S1136DE40E48006850F005000C49086070470B48D1 -S1136DF4006850F0020009490860704710B50400A7 -S1136E04002C02D0B4F1807F03D9D0210448FFF7C9 -S1136E148EFC601E0349086010BD000010E000E011 -S1136E24C06E000014E000E080B500F013F8C0B2B6 -S1136E3402BD50F8041B61B150F8042BD30744BFBE -S1136E44A9F101039A18002342F8043B091FFAD15B -S1136E54EFE77047EFF3108062B67047433A5C572C -S1136E646F726B5C736F6674776172655C4F706587 -S1136E746E424C545C5461726765745C44656D6F16 -S1136E845C41524D434D335F4C4D33535F454B5F2F -S1136E944C4D3353363936355F4941525C50726F29 -S1136EA4675C6C69625C6472697665726C69625C65 -S1136EB473797363746C2E6300000000433A5C5767 -S1136EC46F726B5C736F6674776172655C4F706527 -S1136ED46E424C545C5461726765745C44656D6FB6 -S1136EE45C41524D434D335F4C4D33535F454B5FCF -S1136EF44C4D3353363936355F4941525C50726FC9 -S1136F04675C6C69625C6472697665726C69625C04 -S1136F147379737469636B2E63000000433A5C579E -S1136F246F726B5C736F6674776172655C4F7065C6 -S1136F346E424C545C5461726765745C44656D6F55 -S1136F445C41524D434D335F4C4D33535F454B5F6E -S1136F544C4D3353363936355F4941525C50726F68 -S1136F64675C6C69625C6472697665726C69625CA4 -S1136F746770696F2E63000040420F0000201C00FC -S1136F8480841E0000802500999E3600004038004D -S1136F9400093D0000803E0000004B00404B4C00C3 -S1136FA400204E00808D5B0000C05D0000807000F6 -S1136FB400127A0000007D0080969800001BB70040 -S1136FC40080BB00C0E8CE00647ADA000024F40038 -S1136FD40000FA00433A5C576F726B5C736F66741B -S1136FE4776172655C4F70656E424C545C54617297 -S1136FF46765745C44656D6F5C41524D434D335F0A -S11370044C4D33535F454B5F4C4D33533639363512 -S11370145F4941525C50726F675C6C69625C647274 -S1137024697665726C69625C756172742E630000C2 -S113703410B5074979441831064C7C44163404E0ED -S11370440A68081D511888470146A142F8D110BDA9 -S11370540800000014000000DBFDFFFF58000000DE -S1137064000000200000000000F009F8002801D00E -S1137074FFF7DEFF0020FFF745FB00F002F80120D4 -S1137084704700F001B8FEE70746384600F002F8FE -S1137094FBE7000080B5C046C046024A1100182030 -S11370A4ABBEFBE726000200034B9D46C046C04628 -S11370B4C046C046FFF7D8FF5804002000E10F4043 -S10B70C404E10F4008E10F4054 -S90370ADDF +S113800058040020AD9000008B9000008B9000007D +S11380108B9000008B9000008B9000008B900000F0 +S11380208B9000008B9000008B9000008B900000E0 +S11380308B9000008B9000008B900000B3880000B0 +S11380408B9000008B9000008B9000008B900000C0 +S11380508B9000008B9000008B9000008B900000B0 +S11380608B9000008B9000008B9000008B900000A0 +S11380708B9000008B9000008B9000008B90000090 +S11380808B9000008B9000008B9000008B90000080 +S11380908B9000008B9000008B9000008B90000070 +S11380A08B9000008B9000008B9000008B90000060 +S11380B08B9000008B9000008B9000008B90000050 +S11380C08B9000008B9000008B9000008B90000040 +S11380D08B9000008B9000008B9000008B90000030 +S11380E08B9000008B9000008B9000008B90000020 +S10780F0EE11AA558A +S11380F4DFF80C15884200F0A980DFF808158842DF +S113810400F0A480DFF80015884200F09F80DFF8B7 +S1138114FC14884200F09A80DFF8F414884200F0DA +S11381249580DFF8F014884200F09080DFF8E814BA +S1138134884200F08B80DFF8E414884200F08680E3 +S1138144DFF8DC14884200F08180DFF8D814884218 +S11381547CD0DFF8D414884278D0DFF8D014884275 +S113816474D0DFF8CC14884270D0DFF8C814884285 +S11381746CD0DFF8C414884268D0DFF8C014884295 +S113818464D0DFF8BC14884260D0DFF8B8148842A5 +S11381945CD0DFF8B414884258D0402856D0B0F1EB +S11381A4102F53D0DFF8A41488424FD0DFF8A01462 +S11381B488424BD0DFF89C14884247D0DFF89814E7 +S11381C4884243D0DFF8941488423FD0B0F1101FA2 +S11381D43CD0DFF88C14884238D0DFF88814884205 +S11381E434D0DFF88414884230D0DFF88014884215 +S11381F42CD0DFF87C14884228D0DFF87814884225 +S113820424D0DFF87414884220D0DFF87014884234 +S11382141CD0DFF86C14884218D0DFF86814884244 +S113822414D0DFF86414884210D0DFF86014884254 +S11382340CD0B0F1202F09D0DFF85414884205D0B3 +S1138244082803D0DFF85014884201D1012000E04B +S11382540020C0B2704710B504002000FFF748FFA7 +S1138264002805D14FF4FC71DFF8280400F05FFA0C +S1138274200FDFF8281451F820000068A1B2220C62 +S113828412F01F0291400843210FDFF8102452F822 +S11382942110086010BDDFF81404DFF81414016021 +S11382A4FEE700000138FDD17047704770B5040043 +S11382B4DFF80004006810F0E04F08D0DFF8F4039E +S11382C40068DFF8F4130840B0F1805F02D1002C99 +S11382D400F19980DFF8C8030568DFF8E003066855 +S11382E455F4006535F4800556F40066DFF8B003F0 +S11382F40560DFF8C8030660A80701D5A00708D500 +S113830415F0010014F0010191F00101C0B208421A +S11383141ED074F003000540DFF884030560002ECA +S113832407D516F07000302809D016F070007028B4 +S113833405D0002E08D415F03000302804D14FF4B1 +S11383448050FFF7AFFF03E05FF40020FFF7AAFFBC +S1138354DFF86C03054043F2F07020400543DFF876 +S113836464030640DFF860032040064314F0080069 +S113837456EAC006DFF82C0340210160002E06D51E +S1138384DFF838030660DFF81803056005E0DFF85A +S113839410030560DFF8240306601020FFF782FF52 +S11383A4DFF828030540DFF828032040054336F0AE +S11383B4FC5614F0FC500643600008D555F48005BF +S11383C436F48006DFF80C032040064301E036F05F +S11383D4804620050ED44FF4004000E0401E0028DF +S11383E404D0DFF8C41209684906F7D535F40065EA +S11383F436F40066DFF8A8020560DFF8C002066000 +S11384041020FFF74FFF70BD30B4DFF89402016809 +S1138414DFF8A8020268002A02D512F0700001E015 +S113842411F0300000280DD010283AD020286FD045 +S1138434302800F0A480602800F0A480702800F0A4 +S1138444A480A5E0C1F38410DFF88C3253F8200033 +S1138454DFF88832134013F1004F05D0002A00F1ED +S1138464AA800B0500F1A780DFF874321B68DFF8DB +S11384744442246814F0E04F09D0DFF838422468F9 +S1138484DFF834522C40B4F1805F40F08380C3F3AE +S11384944814A41C604313F01F04A41CB0FBF4F0A0 +S11384A481E0DFF81002006810F0E04F08D0DFF834 +S11384B404020068DFF800321840B0F1805F02D192 +S11384C4DFF8200223E0DFF8EC010068DFF8E8318C +S11384D41840DFF81432984205D1DFF8D801006857 +S11384E480B202280ED0DFF8CC010068DFF8C8316E +S11384F41840DFF8F831984207D1DFF8B801006872 +S1138504000402D1DFF8E80101E0DFF8E8019FE7A5 +S1138514DFF8A001006810F0E04F08D0DFF8940100 +S11385240068DFF894311840B0F1805F02D1DFF8BD +S1138534C80123E0DFF87C010068DFF87C311840CF +S1138544DFF8A431984205D1DFF86801006880B2ED +S113855402280ED0DFF85C010068DFF85C311840B3 +S1138564DFF88831984207D1DFF848010068000435 +S113857402D1DFF8880101E0DFF8840168E747F2FB +S1138584305065E75FF4800062E74FF400405FE732 +S1138594002032E0C3F34814604313F01F04641C46 +S11385A46400B0FBF4F05C0400D540081B0400D55F +S11385B4800851F480014B021FD5002A18D55300BA +S11385C410D5DFF81831134013F1004F03D0002AFB +S11385D408D4090506D44000C2F38651491CB0FBF3 +S11385E4F1F00AE0C2F3C551491CB0FBF1F004E018 +S11385F4C1F3C351491CB0FBF1F030BC7047000017 +S1138604010010000200100000011000000210001C +S113861400041000000110100002101000041010D7 +S1138624004010100050102001000020020000201F +S11386340400002008000020100000202000002076 +S113864440000020800000200001002000400010B1 +S113865400101010000110208000003010000030C1 +S1138664000100100002001010000010200000108F +S1138674200000300100101002001010040010103B +S11386840800101001000010020000100400001083 +S113869401001020608E000000101000C090000043 +S11386A460E00F4058E00F4050E00F400CED00E054 +S11386B40400FA0500E00F400000FF7070E00F4072 +S11386C40FC8FFFF8FDFFF7F30200080FCFF3FF8DF +S11386D40300C007000040407C8F000000080080B5 +S11386E464E00F40C0E1E400000001100000031046 +S11386F4001BB7000024F40070383900C0C62D00F4 +S113870400093D0080B500F007F800F01FF800F000 +S11387148DF800F031F8FAE780B50748FFF7C6FD95 +S113872400F076F800F0ACF800F0CAF801BD034A92 +S1138734106003480160FEE78003C0014800002084 +S11387444C00002080B5FFF7A6FD01BD80B52A4882 +S1138754FFF781FD2948FFF77EFD03215FF04020E8 +S113876400F01EFAFFF750FE60234FF4614201004B +S1138774234800F066FA01BD80B522480078002839 +S11387840BD1214800F02BF8012827D11D480121E1 +S113879401701E480021017020E01C4800781A4929 +S11387A44018401C00F01BF8012817D11748007822 +S11387B4401C164908701548007813490978884202 +S11387C40CD11048002101700F484078FF2805D1CE +S11387D40D488078002801D1FFF7B4FF01BD10B51E +S11387E40400074800F0D5FA10F1010F02D02070FC +S11387F4012000E0002010BD010000100100002051 +S113880400C0004055000020000000205400002057 +S113881480B51748FFF71FFD0121164800F0A5F99C +S113882400220121134800F08CF901BD10B500F0B9 +S11388343BF8040010480068201AB0F5FA7F16D3F8 +S11388440E480078002808D10C4801210170012247 +S11388540121084800F075F907E008480021017077 +S113886400220121034800F06CF90348046010BDA0 +S11388742000002000500240440000205600002044 +S113888480B5FFF7C1FD4FF47A71B0FBF1F000F04D +S1138894B5FA00F0A5FA00F0AAFA002000F001F8F5 +S11388A401BD0649086070470448006870470348DE +S11388B40068401C01490860704700005000002013 +S11388C480B500F0B1FA01BDB0F1402F43D0DFF818 +S11388D4081388423FD0DFF8041388423BD0DFF802 +S11388E40013884237D0DFF8FC12884233D0DFF813 +S11388F4F81288422FD0DFF8F41288422BD0DFF824 +S1138904F012884227D0DFF8EC12884223D0DFF833 +S1138914E81288421FD0DFF8E41288421BD0DFF843 +S1138924E012884217D0DFF8DC12884213D0DFF853 +S1138934D81288420FD0DFF8D41288420BD0DFF863 +S1138944D012884207D0DFF8CC12884203D0DFF873 +S1138954C812884201D1012000E00020C0B270474F +S113896470B504000D0016002000FFF7ADFF0028C9 +S113897404D1E421DFF8A402FFF7D9FE002E08D0C5 +S1138984012E06D0022E04D0E621DFF89002FFF770 +S1138994CEFEF00705D514F580600068EDB22843D7 +S11389A404E014F580600068EDB2A84314F5806116 +S11389B40860B00705D514F584600068EDB2284357 +S11389C404E014F584600068EDB2A84314F58461EE +S11389D4086070BDF8B504000D0017001E002000E7 +S11389E4FFF772FF002805D14FF4DD71DFF82C0284 +S11389F4FFF79DFE012F0BD0022F09D0042F07D0BF +S1138A040C2F05D04FF4DF71DFF81002FFF78FFE4F +S1138A14082E11D00A2E0FD00C2E0DD0092E0BD0F7 +S1138A240B2E09D00D2E07D0002E05D040F2C5110F +S1138A34DFF8E801FFF77BFEF80705D514F5A0601D +S1138A440068EDB2284304E014F5A0600068EDB2B8 +S1138A54A84314F5A0610860B80704D5D4F8040544 +S1138A64EDB2284303E0D4F80405EDB2A843C4F8F6 +S1138A740405780705D514F5A1600068EDB2284310 +S1138A8404E014F5A1600068EDB2A84314F5A161F3 +S1138A940860380705D514F5A3600068EDB22843CF +S1138AA404E014F5A3600068EDB2A84314F5A361CF +S1138AB40860F00704D5D4F80C05EDB2284303E0AC +S1138AC4D4F80C05EDB2A843C4F80C05B00705D5D9 +S1138AD414F5A2600068EDB2284304E014F5A26022 +S1138AE40068EDB2A84314F5A2610860700704D5C8 +S1138AF4D4F81405EDB2284303E0D4F81405EDB218 +S1138B04A843C4F81405300704D5D4F81C05EDB201 +S1138B14284303E0D4F81C05EDB2A843C4F81C05AB +S1138B24002E05D114F5A5600068EDB2284304E0D5 +S1138B3414F5A5600068EDB2A84314F5A5610860B6 +S1138B44F1BD70B504000D0016002000FFF7BCFE53 +S1138B54002805D14FF45171DFF8C000FFF7E7FD99 +S1138B64EDB2F6B244F8256070BD38B504000D00CA +S1138B742000FFF7A9FE002804D140F2044127484D +S1138B84FFF7D5FD01222900C9B22000FFF7E8FE52 +S1138B94082301222900C9B22000FFF71BFF31BDBD +S1138BA438B504000D002000FFF78EFE002804D120 +S1138BB440F21F511948FFF7BAFD02222900C9B235 +S1138BC42000FFF7CDFE082301222900C9B22000AA +S1138BD4FFF700FF31BD0000008005400050004055 +S1138BE4009005400060004000A005400070004073 +S1138BF400B005400040024000C00540005002405F +S1138C0400D005400060024000E0054000700240CE +S1138C1400F0054000D0034000000640208F00000F +S1138C24DFF89811884207D0DFF89411884203D002 +S1138C34DFF89011884201D1012000E00020C0B285 +S1138C447047F8B504000E0017001D002000FFF75C +S1138C54E7FF002805D140F20D11DFF86C01FFF79E +S1138C6466FD002F05D14FF48771DFF85C01FFF72F +S1138C745EFDDFF85801006810F0E04F27D0DFF8FC +S1138C844C010068DFF848110840B0F1805F1ED041 +S1138C94DFF838010068DFF838110840DFF83411D0 +S1138CA4884205D1DFF82401006880B202280ED07E +S1138CB4DFF818010068DFF818110840DFF818110C +S1138CC4884206D1DFF804010068000401D11020B1 +S1138CD400E0082000FB07F0864205D240F20F11A1 +S1138CE4DFF8E400FFF723FD200000F038F8B6EBCA +S1138CF4071F05D2206B50F0200020637F0803E097 +S1138D04206B30F020002063F000B0FBF7F0401C2F +S1138D144008810961624021B0FBF1F202FB1102B7 +S1138D24A262E5620020A061200000F001F8F1BD18 +S1138D3410B504002000FFF773FF002805D14FF499 +S1138D44CF71DFF88400FFF7F2FCE06A50F0100002 +S1138D54E062206B40F201310843206310BD10B57A +S1138D6404002000FFF75CFF002805D14FF4DF71F5 +S1138D74DFF85400FFF7DBFCA0690007FCD4E06AC9 +S1138D8430F01000E062206BDFF8501008402063DC +S1138D9410BD10B504002000FFF742FF002804D1E1 +S1138DA440F209410848FFF7C2FCA069C00601D497 +S1138DB4206801E05FF0FF3010BD000000C00040F7 +S1138DC400D0004000E00040D88F000000E00F40D5 +S1138DD40000FF700000011000000310FEFCFFFF00 +S1138DE40E48006850F005000C49086070470B48B1 +S1138DF4006850F0020009490860704710B5040087 +S1138E04002C02D0B4F1807F03D9D0210448FFF7A9 +S1138E148EFC601E0349086010BD000010E000E0F1 +S1138E24C08E000014E000E080B500F013F8C0B276 +S1138E3402BD50F8041B61B150F8042BD30744BF9E +S1138E44A9F101039A18002342F8043B091FFAD13B +S1138E54EFE77047EFF3108062B67047433A5C570C +S1138E646F726B5C736F6674776172655C4F706567 +S1138E746E424C545C5461726765745C44656D6FF6 +S1138E845C41524D434D335F4C4D33535F454B5F0F +S1138E944C4D3353363936355F4941525C50726F09 +S1138EA4675C6C69625C6472697665726C69625C45 +S1138EB473797363746C2E6300000000433A5C5747 +S1138EC46F726B5C736F6674776172655C4F706507 +S1138ED46E424C545C5461726765745C44656D6F96 +S1138EE45C41524D434D335F4C4D33535F454B5FAF +S1138EF44C4D3353363936355F4941525C50726FA9 +S1138F04675C6C69625C6472697665726C69625CE4 +S1138F147379737469636B2E63000000433A5C577E +S1138F246F726B5C736F6674776172655C4F7065A6 +S1138F346E424C545C5461726765745C44656D6F35 +S1138F445C41524D434D335F4C4D33535F454B5F4E +S1138F544C4D3353363936355F4941525C50726F48 +S1138F64675C6C69625C6472697665726C69625C84 +S1138F746770696F2E63000040420F0000201C00DC +S1138F8480841E0000802500999E3600004038002D +S1138F9400093D0000803E0000004B00404B4C00A3 +S1138FA400204E00808D5B0000C05D0000807000D6 +S1138FB400127A0000007D0080969800001BB70020 +S1138FC40080BB00C0E8CE00647ADA000024F40018 +S1138FD40000FA00433A5C576F726B5C736F6674FB +S1138FE4776172655C4F70656E424C545C54617277 +S1138FF46765745C44656D6F5C41524D434D335FEA +S11390044C4D33535F454B5F4C4D335336393635F2 +S11390145F4941525C50726F675C6C69625C647254 +S1139024697665726C69625C756172742E630000A2 +S113903410B5074979441831064C7C44163404E0CD +S11390440A68081D511888470146A142F8D110BD89 +S11390540800000014000000DBFDFFFF58000000BE +S1139064000000200000000000F009F8002801D0EE +S1139074FFF7DEFF0020FFF745FB00F002F80120B4 +S1139084704700F001B8FEE70746384600F002F8DE +S1139094FBE7000080B5C046C046024A1100182010 +S11390A4ABBEFBE726000200034B9D46C046C04608 +S11390B4C046C046FFF7D8FF5804002000E10F4023 +S10B90C404E10F4008E10F4034 +S90390ADBF diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/lm3s6965.dep b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/lm3s6965.dep index a4c0b6ae..e033e710 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/lm3s6965.dep +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/lm3s6965.dep @@ -6,115 +6,69 @@ Debug - $PROJ_DIR$\..\lib\driverlib\adc.h - $PROJ_DIR$\..\lib\driverlib\cpu.c - $PROJ_DIR$\..\lib\driverlib\adc.c - $PROJ_DIR$\..\lib\driverlib\comp.c - $PROJ_DIR$\..\lib\driverlib\comp.h - $PROJ_DIR$\..\lib\driverlib\cpu.h - $PROJ_DIR$\..\lib\driverlib\debug.h - $PROJ_DIR$\..\lib\driverlib\epi.c - $PROJ_DIR$\..\lib\driverlib\epi.h - $PROJ_DIR$\..\lib\driverlib\ethernet.c - $PROJ_DIR$\..\lib\driverlib\ethernet.h - $PROJ_DIR$\..\lib\driverlib\flash.c - $PROJ_DIR$\..\lib\driverlib\flash.h - $PROJ_DIR$\..\lib\driverlib\gpio.c - $PROJ_DIR$\..\lib\driverlib\gpio.h - $PROJ_DIR$\..\lib\driverlib\hibernate.c - $PROJ_DIR$\..\lib\driverlib\hibernate.h - $PROJ_DIR$\..\lib\driverlib\i2c.c - $PROJ_DIR$\..\lib\driverlib\i2c.h - $PROJ_DIR$\..\lib\driverlib\i2s.c - $PROJ_DIR$\..\lib\driverlib\i2s.h - $PROJ_DIR$\..\lib\driverlib\interrupt.c - $PROJ_DIR$\..\lib\driverlib\interrupt.h - $PROJ_DIR$\..\lib\driverlib\mpu.c - $PROJ_DIR$\..\time.h - $PROJ_DIR$\..\vectors.c - $PROJ_DIR$\..\obj\stm32f10x_gpio.pbi - $PROJ_DIR$\..\obj\system_stm32f10x.pbi - $PROJ_DIR$\..\obj\adc.lst - $PROJ_DIR$\..\obj\ethernet.lst - $PROJ_DIR$\..\obj\gpio.lst - $PROJ_DIR$\..\obj\stm32f10x_fsmc.o - $TOOLKIT_DIR$\lib\dl7M_tln.a - $PROJ_DIR$\..\obj\epi.lst - $PROJ_DIR$\..\obj\stm32f10x_crc.o - $PROJ_DIR$\..\obj\demoprog_ek_lm3s6965.map - $PROJ_DIR$\..\obj\core_cm3.o - $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.srec - $PROJ_DIR$\..\obj\cstart.o - $PROJ_DIR$\..\obj\stm32f10x_crc.pbi - $PROJ_DIR$\..\obj\stm32f10x_can.o - $PROJ_DIR$\..\obj\stm32f10x_can.pbi - $PROJ_DIR$\..\obj\i2c.lst - $PROJ_DIR$\..\obj\stm32f10x_bkp.o - $PROJ_DIR$\..\obj\stm32f10x_adc.pbi - $PROJ_DIR$\..\obj\stm32f10x_dac.pbi - $PROJ_DIR$\..\obj\stm32f10x_bkp.pbi - $PROJ_DIR$\..\obj\misc.o - $PROJ_DIR$\..\obj\flash.lst - $PROJ_DIR$\..\obj\stm32f10x_dbgmcu.pbi - $PROJ_DIR$\..\obj\stm32f10x_cec.pbi - $PROJ_DIR$\..\obj\stm32f10x_cec.o - $PROJ_DIR$\..\obj\stm32f10x_i2c.pbi - $TOOLKIT_DIR$\lib\rt7M_tl.a - $PROJ_DIR$\..\obj\stm32f10x_gpio.o - $PROJ_DIR$\..\obj\stm32f10x_i2c.o - $PROJ_DIR$\..\obj\stm32f10x_iwdg.o - $PROJ_DIR$\..\obj\stm32f10x_pwr.o - $PROJ_DIR$\..\obj\stm32f10x_rcc.o - $PROJ_DIR$\..\obj\stm32f10x_rtc.o - $PROJ_DIR$\..\obj\stm32f10x_sdio.o - $PROJ_DIR$\..\obj\stm32f10x_spi.o - $PROJ_DIR$\..\obj\stm32f10x_tim.o - $PROJ_DIR$\..\obj\stm32f10x_usart.o - $PROJ_DIR$\..\obj\stm32f10x_wwdg.o - $PROJ_DIR$\..\obj\system_stm32f10x.o - $PROJ_DIR$\..\obj\core_cm3.pbi - $PROJ_DIR$\..\obj\misc.pbi - $PROJ_DIR$\..\obj\stm32f10x_adc.o - $TOOLKIT_DIR$\lib\shb_l.a - $PROJ_DIR$\..\obj\irq.o - $PROJ_DIR$\..\obj\main.o - $PROJ_DIR$\..\obj\led.o - $PROJ_DIR$\..\obj\boot.o - $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.out - $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.srec - $PROJ_DIR$\..\obj\lm3s6965.pbd - $PROJ_DIR$\..\obj\time.o - $PROJ_DIR$\..\obj\time.pbi - $PROJ_DIR$\..\obj\interrupt.lst - $PROJ_DIR$\..\obj\i2s.lst - $PROJ_DIR$\..\obj\cpu.lst - $PROJ_DIR$\..\obj\comp.lst - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - $PROJ_DIR$\..\lib\driverlib\mpu.h - $PROJ_DIR$\..\lib\driverlib\pwm.c - $PROJ_DIR$\..\lib\driverlib\pwm.h - $PROJ_DIR$\..\lib\driverlib\qei.c - $PROJ_DIR$\..\lib\driverlib\qei.h - $PROJ_DIR$\..\lib\driverlib\ssi.c - $PROJ_DIR$\..\lib\driverlib\ssi.h - $PROJ_DIR$\..\lib\driverlib\sysctl.c - $PROJ_DIR$\..\lib\driverlib\sysctl.h - $PROJ_DIR$\..\lib\driverlib\systick.c - $PROJ_DIR$\..\lib\driverlib\systick.h - $PROJ_DIR$\..\lib\driverlib\timer.c - $PROJ_DIR$\..\lib\driverlib\timer.h - $PROJ_DIR$\..\lib\driverlib\uart.c - $PROJ_DIR$\..\lib\driverlib\uart.h - $PROJ_DIR$\..\lib\driverlib\udma.c - $PROJ_DIR$\..\lib\driverlib\udma.h - $PROJ_DIR$\..\lib\driverlib\usb.c - $PROJ_DIR$\..\lib\driverlib\usb.h - $PROJ_DIR$\..\lib\driverlib\watchdog.c - $PROJ_DIR$\..\lib\driverlib\watchdog.h - $PROJ_DIR$\..\lib\inc\hw_adc.h $PROJ_DIR$\..\lib\inc\hw_comp.h $PROJ_DIR$\..\lib\inc\hw_epi.h $PROJ_DIR$\..\lib\inc\hw_ethernet.h + $PROJ_DIR$\..\time.h + $PROJ_DIR$\..\vectors.c + $PROJ_DIR$\..\obj\adc.pbi + $PROJ_DIR$\..\obj\watchdog.o + $PROJ_DIR$\..\obj\usb.o + $TOOLKIT_DIR$\lib\shb_l.a + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c + $PROJ_DIR$\..\obj\led.o + $PROJ_DIR$\..\timer.c + $PROJ_DIR$\..\obj\boot.o + $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.out + $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.srec + $PROJ_DIR$\..\obj\time.pbi + $PROJ_DIR$\..\obj\i2s.lst + $PROJ_DIR$\..\obj\irq.o + $PROJ_DIR$\..\obj\irq.pbi + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c + $PROJ_DIR$\..\obj\time.o + $PROJ_DIR$\..\obj\cpu.lst + $PROJ_DIR$\..\obj\lm3s6965.pbd + $PROJ_DIR$\..\obj\main.o + $PROJ_DIR$\..\obj\comp.lst + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c + $PROJ_DIR$\..\obj\interrupt.lst + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c + $PROJ_DIR$\..\obj\main.pbi + $PROJ_DIR$\..\obj\led.pbi + $PROJ_DIR$\..\obj\stm32f10x_adc.o + $PROJ_DIR$\..\obj\misc.pbi + $PROJ_DIR$\..\obj\led.lst + $PROJ_DIR$\..\obj\system_stm32f10x.pbi + $PROJ_DIR$\..\obj\stm32f10x_wwdg.pbi + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c + $PROJ_DIR$\..\obj\stm32f10x_rcc.pbi + $PROJ_DIR$\..\obj\epi.o + $PROJ_DIR$\..\obj\stm32f10x_flash.pbi + $PROJ_DIR$\..\obj\timer.pbi + $PROJ_DIR$\..\obj\boot.lst + $PROJ_DIR$\..\obj\stm32f10x_fsmc.pbi + $PROJ_DIR$\..\obj\ssi.lst + $PROJ_DIR$\..\obj\stm32f10x_exti.pbi + $PROJ_DIR$\..\obj\stm32f10x_gpio.pbi + $PROJ_DIR$\..\obj\timer.lst + $PROJ_DIR$\..\obj\main.lst + $PROJ_DIR$\..\obj\stm32f10x_rtc.pbi + $PROJ_DIR$\..\obj\stm32f10x_usart.pbi + $TOOLKIT_DIR$\lib\m7M_tl.a + $PROJ_DIR$\..\obj\vectors.pbi + $PROJ_DIR$\..\obj\vectors.lst + $TOOLKIT_DIR$\lib\dl7M_tln.a + $PROJ_DIR$\..\obj\adc.lst + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c + $PROJ_DIR$\..\obj\cpu.o + $PROJ_DIR$\..\obj\usb.lst + $PROJ_DIR$\..\obj\udma.lst + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c + $PROJ_DIR$\..\obj\pwm.lst $PROJ_DIR$\..\lib\inc\hw_flash.h $PROJ_DIR$\..\lib\inc\hw_gpio.h $PROJ_DIR$\..\lib\inc\hw_hibernate.h @@ -143,74 +97,76 @@ $PROJ_DIR$\..\led.h $PROJ_DIR$\..\main.c $PROJ_DIR$\..\time.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c - $PROJ_DIR$\..\timer.c - $PROJ_DIR$\..\obj\irq.pbi - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - $PROJ_DIR$\..\obj\led.pbi - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - $PROJ_DIR$\..\obj\main.pbi - $PROJ_DIR$\..\obj\led.lst - $PROJ_DIR$\..\obj\vectors.lst - $PROJ_DIR$\..\obj\boot.lst - $PROJ_DIR$\..\obj\main.lst - $PROJ_DIR$\..\obj\vectors.pbi - $PROJ_DIR$\..\obj\timer.pbi - $PROJ_DIR$\..\obj\timer.lst + $PROJ_DIR$\..\lib\driverlib\cpu.c + $PROJ_DIR$\..\lib\driverlib\comp.c + $PROJ_DIR$\..\lib\driverlib\adc.h + $PROJ_DIR$\..\lib\driverlib\adc.c + $PROJ_DIR$\..\lib\driverlib\comp.h + $PROJ_DIR$\..\lib\driverlib\cpu.h + $PROJ_DIR$\..\lib\driverlib\debug.h + $PROJ_DIR$\..\lib\driverlib\epi.c + $PROJ_DIR$\..\lib\driverlib\epi.h + $PROJ_DIR$\..\lib\driverlib\ethernet.c + $PROJ_DIR$\..\lib\driverlib\ethernet.h + $PROJ_DIR$\..\lib\driverlib\flash.c + $PROJ_DIR$\..\lib\driverlib\flash.h + $PROJ_DIR$\..\lib\driverlib\gpio.c + $PROJ_DIR$\..\lib\driverlib\gpio.h + $PROJ_DIR$\..\lib\driverlib\hibernate.c + $PROJ_DIR$\..\lib\driverlib\hibernate.h + $PROJ_DIR$\..\lib\driverlib\i2c.c + $PROJ_DIR$\..\lib\driverlib\i2c.h + $PROJ_DIR$\..\lib\driverlib\i2s.c + $PROJ_DIR$\..\lib\driverlib\i2s.h + $PROJ_DIR$\..\lib\driverlib\interrupt.c + $PROJ_DIR$\..\lib\driverlib\interrupt.h + $PROJ_DIR$\..\lib\driverlib\mpu.c + $PROJ_DIR$\..\lib\driverlib\mpu.h + $PROJ_DIR$\..\lib\driverlib\pwm.c + $PROJ_DIR$\..\lib\driverlib\pwm.h + $PROJ_DIR$\..\lib\driverlib\qei.c + $PROJ_DIR$\..\lib\driverlib\qei.h + $PROJ_DIR$\..\lib\driverlib\ssi.c + $PROJ_DIR$\..\lib\driverlib\ssi.h + $PROJ_DIR$\..\lib\driverlib\sysctl.c + $PROJ_DIR$\..\lib\driverlib\sysctl.h + $PROJ_DIR$\..\lib\driverlib\systick.c + $PROJ_DIR$\..\lib\driverlib\systick.h + $PROJ_DIR$\..\lib\driverlib\timer.c + $PROJ_DIR$\..\lib\driverlib\timer.h + $PROJ_DIR$\..\lib\driverlib\uart.c + $PROJ_DIR$\..\lib\driverlib\uart.h + $PROJ_DIR$\..\lib\driverlib\udma.c + $PROJ_DIR$\..\lib\driverlib\udma.h + $PROJ_DIR$\..\lib\driverlib\usb.c + $PROJ_DIR$\..\lib\driverlib\usb.h + $PROJ_DIR$\..\lib\driverlib\watchdog.c + $PROJ_DIR$\..\lib\driverlib\watchdog.h + $PROJ_DIR$\..\lib\inc\hw_adc.h + $PROJ_DIR$\..\obj\stm32f10x_dma.pbi + $PROJ_DIR$\..\obj\stm32f10x_flash.o $PROJ_DIR$\..\obj\irq.lst $PROJ_DIR$\..\obj\stm32f10x_exti.o - $PROJ_DIR$\..\obj\stm32f10x_flash.o - $PROJ_DIR$\..\obj\stm32f10x_flash.pbi - $TOOLKIT_DIR$\lib\m7M_tl.a - $PROJ_DIR$\..\obj\stm32f10x_rtc.pbi - $PROJ_DIR$\..\obj\stm32f10x_rcc.pbi - $PROJ_DIR$\..\obj\stm32f10x_wwdg.pbi - $PROJ_DIR$\..\obj\stm32f10x_fsmc.pbi - $PROJ_DIR$\..\obj\stm32f10x_usart.pbi - $PROJ_DIR$\..\obj\stm32f10x_dma.pbi - $PROJ_DIR$\..\obj\stm32f10x_exti.pbi - $PROJ_DIR$\..\obj\uart.lst $PROJ_DIR$\..\obj\sysctl.lst + $PROJ_DIR$\..\obj\uart.lst $PROJ_DIR$\..\obj\qei.lst - $PROJ_DIR$\..\obj\udma.lst - $PROJ_DIR$\..\obj\usb.lst - $PROJ_DIR$\..\obj\cpu.o - $PROJ_DIR$\..\obj\epi.o - $PROJ_DIR$\..\obj\ssi.lst - $PROJ_DIR$\..\obj\pwm.lst - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c - $PROJ_DIR$\..\obj\stm32f10x_tim.pbi - $PROJ_DIR$\..\obj\stm32f10x_spi.pbi - $PROJ_DIR$\..\obj\epi.pbi - $PROJ_DIR$\..\obj\ethernet.pbi - $PROJ_DIR$\..\obj\flash.pbi - $PROJ_DIR$\..\obj\gpio.pbi - $PROJ_DIR$\..\obj\hibernate.pbi - $PROJ_DIR$\..\obj\i2c.pbi - $PROJ_DIR$\..\obj\i2s.pbi - $PROJ_DIR$\..\obj\interrupt.pbi - $PROJ_DIR$\..\obj\mpu.pbi - $PROJ_DIR$\..\obj\pwm.pbi + $PROJ_DIR$\..\obj\demoprog_ek_lm3s6965.map + $PROJ_DIR$\..\obj\gpio.lst + $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.srec + $PROJ_DIR$\..\obj\core_cm3.o + $PROJ_DIR$\..\obj\epi.lst + $PROJ_DIR$\..\obj\stm32f10x_crc.o + $PROJ_DIR$\..\obj\stm32f10x_fsmc.o + $PROJ_DIR$\..\obj\interrupt.o + $PROJ_DIR$\..\obj\ethernet.lst + $PROJ_DIR$\..\obj\systick.o + $PROJ_DIR$\..\obj\udma.o + $PROJ_DIR$\..\obj\uart.o + $PROJ_DIR$\..\obj\sysctl.o + $PROJ_DIR$\..\obj\ssi.o + $PROJ_DIR$\..\obj\qei.o + $PROJ_DIR$\..\obj\pwm.o + $PROJ_DIR$\..\obj\mpu.o $PROJ_DIR$\..\obj\qei.pbi $PROJ_DIR$\..\obj\ssi.pbi $PROJ_DIR$\..\obj\sysctl.pbi @@ -242,43 +198,418 @@ $PROJ_DIR$\..\obj\hibernate.o $PROJ_DIR$\..\obj\i2c.o $PROJ_DIR$\..\obj\i2s.o - $PROJ_DIR$\..\obj\interrupt.o - $PROJ_DIR$\..\obj\mpu.o - $PROJ_DIR$\..\obj\pwm.o - $PROJ_DIR$\..\obj\qei.o - $PROJ_DIR$\..\obj\ssi.o - $PROJ_DIR$\..\obj\sysctl.o - $PROJ_DIR$\..\obj\systick.o - $PROJ_DIR$\..\obj\uart.o - $PROJ_DIR$\..\obj\udma.o - $PROJ_DIR$\..\obj\usb.o - $PROJ_DIR$\..\obj\watchdog.o - $PROJ_DIR$\..\obj\adc.pbi $PROJ_DIR$\..\obj\comp.pbi $PROJ_DIR$\..\obj\cpu.pbi $PROJ_DIR$\..\obj\hibernate.lst $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.out + $PROJ_DIR$\..\obj\cstart.o + $PROJ_DIR$\..\obj\stm32f10x_crc.pbi + $PROJ_DIR$\..\obj\stm32f10x_can.o + $PROJ_DIR$\..\obj\stm32f10x_can.pbi + $PROJ_DIR$\..\obj\i2c.lst + $PROJ_DIR$\..\obj\stm32f10x_bkp.o + $PROJ_DIR$\..\obj\stm32f10x_adc.pbi + $PROJ_DIR$\..\obj\stm32f10x_dac.pbi + $PROJ_DIR$\..\obj\stm32f10x_bkp.pbi + $PROJ_DIR$\..\obj\misc.o + $PROJ_DIR$\..\obj\flash.lst + $PROJ_DIR$\..\obj\stm32f10x_dbgmcu.pbi + $PROJ_DIR$\..\obj\stm32f10x_cec.pbi + $PROJ_DIR$\..\obj\stm32f10x_cec.o + $PROJ_DIR$\..\obj\stm32f10x_i2c.pbi + $TOOLKIT_DIR$\lib\rt7M_tl.a + $PROJ_DIR$\..\obj\stm32f10x_gpio.o + $PROJ_DIR$\..\obj\stm32f10x_i2c.o + $PROJ_DIR$\..\obj\stm32f10x_iwdg.o + $PROJ_DIR$\..\obj\stm32f10x_pwr.o + $PROJ_DIR$\..\obj\stm32f10x_rcc.o + $PROJ_DIR$\..\obj\stm32f10x_rtc.o + $PROJ_DIR$\..\obj\stm32f10x_sdio.o + $PROJ_DIR$\..\obj\stm32f10x_spi.o + $PROJ_DIR$\..\obj\stm32f10x_tim.o + $PROJ_DIR$\..\obj\stm32f10x_usart.o + $PROJ_DIR$\..\obj\stm32f10x_wwdg.o + $PROJ_DIR$\..\obj\system_stm32f10x.o + $PROJ_DIR$\..\obj\core_cm3.pbi + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c + $PROJ_DIR$\..\obj\stm32f10x_tim.pbi + $PROJ_DIR$\..\obj\stm32f10x_spi.pbi + $PROJ_DIR$\..\obj\epi.pbi + $PROJ_DIR$\..\obj\ethernet.pbi + $PROJ_DIR$\..\obj\flash.pbi + $PROJ_DIR$\..\obj\gpio.pbi + $PROJ_DIR$\..\obj\hibernate.pbi + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c + $PROJ_DIR$\..\obj\i2c.pbi + $PROJ_DIR$\..\obj\i2s.pbi + $PROJ_DIR$\..\obj\interrupt.pbi + $PROJ_DIR$\..\obj\mpu.pbi + $PROJ_DIR$\..\obj\pwm.pbi - $PROJ_DIR$\..\lib\driverlib\cpu.c + [ROOT_NODE] + + + ILINK + 195 144 + + + + + $PROJ_DIR$\..\vectors.c ICCARM - 81 171 + 54 173 BICOMP - 249 + 53 ICCARM - 5 + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 BICOMP - 5 + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c + + + ICCARM + 219 + + + BICOMP + 239 + + + + + $PROJ_DIR$\..\timer.c + + + ICCARM + 174 + + + BICOMP + 42 + + + + + $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.out + + + OBJCOPY + 14 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c + + + ICCARM + 223 + + + BICOMP + 36 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c + + + ICCARM + 217 + + + BICOMP + 50 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c + + + ICCARM + 220 + + + BICOMP + 238 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c + + + ICCARM + 218 + + + BICOMP + 177 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c + + + ICCARM + 221 + + + BICOMP + 51 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c + + + ICCARM + 222 + + + BICOMP + 37 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c + + + ICCARM + 198 + + + BICOMP + 199 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c + + + ICCARM + 33 + + + BICOMP + 202 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c + + + ICCARM + 201 + + + BICOMP + 204 + + + + + $PROJ_DIR$\..\boot.c + + + ICCARM + 43 12 + + + BICOMP + 175 + + + + + ICCARM + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + BICOMP + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\cstart.s + + + AARM + 196 + + + + + $PROJ_DIR$\..\irq.c + + + ICCARM + 139 17 + + + BICOMP + 18 + + + + + ICCARM + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + BICOMP + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\led.c + + + ICCARM + 35 10 + + + BICOMP + 32 + + + + + ICCARM + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + BICOMP + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\main.c + + + ICCARM + 49 24 + + + BICOMP + 31 + + + + + ICCARM + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + BICOMP + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\time.c + + + ICCARM + 185 21 + + + BICOMP + 15 + + + + + ICCARM + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + BICOMP + 84 178 82 86 88 3 68 69 70 74 76 123 105 129 113 125 + + + + + $PROJ_DIR$\..\lib\driverlib\cpu.c + + + ICCARM + 22 58 + + + BICOMP + 193 + + + + + ICCARM + 96 + + + BICOMP + 96 + + + + + $PROJ_DIR$\..\lib\driverlib\comp.c + + + ICCARM + 25 184 + + + BICOMP + 192 + + + + + ICCARM + 0 68 69 76 95 97 113 + + + BICOMP + 0 68 69 76 95 97 113 @@ -287,7 +618,145 @@ ICCARM - 28 227 + 56 183 + + + BICOMP + 5 + + + + + ICCARM + 136 68 69 76 93 97 113 + + + BICOMP + 136 68 69 76 93 97 113 + + + + + $PROJ_DIR$\..\lib\driverlib\epi.c + + + ICCARM + 148 40 + + + BICOMP + 240 + + + + + ICCARM + 1 68 69 76 97 99 113 + + + BICOMP + 1 68 69 76 97 99 113 + + + + + $PROJ_DIR$\..\lib\driverlib\ethernet.c + + + ICCARM + 152 180 + + + BICOMP + 241 + + + + + ICCARM + 2 68 69 76 97 101 123 113 + + + BICOMP + 2 68 69 76 97 101 123 113 + + + + + $PROJ_DIR$\..\lib\driverlib\flash.c + + + ICCARM + 206 187 + + + BICOMP + 242 + + + + + ICCARM + 63 68 74 76 97 103 113 + + + BICOMP + 63 68 74 76 97 103 113 + + + + + $PROJ_DIR$\..\lib\driverlib\gpio.c + + + ICCARM + 145 188 + + + BICOMP + 243 + + + + + ICCARM + 64 68 69 74 76 97 105 113 + + + BICOMP + 64 68 69 74 76 97 105 113 + + + + + $PROJ_DIR$\..\lib\driverlib\hibernate.c + + + ICCARM + 194 189 + + + BICOMP + 244 + + + + + ICCARM + 65 68 74 76 97 107 123 113 + + + BICOMP + 65 68 74 76 97 107 123 113 + + + + + $PROJ_DIR$\..\lib\driverlib\i2c.c + + + ICCARM + 200 190 BICOMP @@ -297,20 +766,20 @@ ICCARM - 105 114 115 122 0 6 22 + 66 68 69 74 76 97 109 123 113 BICOMP - 105 114 115 122 0 6 22 + 66 68 69 74 76 97 109 123 113 - $PROJ_DIR$\..\lib\driverlib\comp.c + $PROJ_DIR$\..\lib\driverlib\i2s.c ICCARM - 82 228 + 16 191 BICOMP @@ -320,172 +789,11 @@ ICCARM - 106 114 115 122 4 6 22 + 67 68 69 76 97 111 113 BICOMP - 106 114 115 122 4 6 22 - - - - - $PROJ_DIR$\..\lib\driverlib\epi.c - - - ICCARM - 33 172 - - - BICOMP - 195 - - - - - ICCARM - 107 114 115 122 6 8 22 - - - BICOMP - 107 114 115 122 6 8 22 - - - - - $PROJ_DIR$\..\lib\driverlib\ethernet.c - - - ICCARM - 29 224 - - - BICOMP - 196 - - - - - ICCARM - 108 114 115 122 6 10 92 22 - - - BICOMP - 108 114 115 122 6 10 92 22 - - - - - $PROJ_DIR$\..\lib\driverlib\flash.c - - - ICCARM - 48 231 - - - BICOMP - 197 - - - - - ICCARM - 109 114 120 122 6 12 22 - - - BICOMP - 109 114 120 122 6 12 22 - - - - - $PROJ_DIR$\..\lib\driverlib\gpio.c - - - ICCARM - 30 232 - - - BICOMP - 198 - - - - - ICCARM - 110 114 115 120 122 6 14 22 - - - BICOMP - 110 114 115 120 122 6 14 22 - - - - - $PROJ_DIR$\..\lib\driverlib\hibernate.c - - - ICCARM - 250 233 - - - BICOMP - 199 - - - - - ICCARM - 111 114 120 122 6 16 92 22 - - - BICOMP - 111 114 120 122 6 16 92 22 - - - - - $PROJ_DIR$\..\lib\driverlib\i2c.c - - - ICCARM - 42 234 - - - BICOMP - 200 - - - - - ICCARM - 112 114 115 120 122 6 18 92 22 - - - BICOMP - 112 114 115 120 122 6 18 92 22 - - - - - $PROJ_DIR$\..\lib\driverlib\i2s.c - - - ICCARM - 80 235 - - - BICOMP - 201 - - - - - ICCARM - 113 114 115 122 6 20 22 - - - BICOMP - 113 114 115 122 6 20 22 + 67 68 69 76 97 111 113 @@ -494,21 +802,21 @@ ICCARM - 79 236 + 28 151 BICOMP - 202 + 249 ICCARM - 114 116 122 5 6 22 + 68 70 76 96 97 113 BICOMP - 114 116 122 5 6 22 + 68 70 76 96 97 113 @@ -517,98 +825,44 @@ ICCARM - 226 237 + 182 160 BICOMP - 203 + 250 ICCARM - 114 116 122 6 22 84 + 68 70 76 97 113 115 BICOMP - 114 116 122 6 22 84 + 68 70 76 97 113 115 - - [ROOT_NODE] - - - ILINK - 251 35 - - - - - $PROJ_DIR$\..\vectors.c - - - ICCARM - 148 217 - - - BICOMP - 151 - - - - - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - - - $PROJ_DIR$\..\bin\demoprog_olimex_stm32p103.out - - - OBJCOPY - 75 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c - - - ICCARM - 60 - - - BICOMP - 221 - - - $PROJ_DIR$\..\lib\driverlib\pwm.c ICCARM - 174 238 + 62 159 BICOMP - 204 + 251 ICCARM - 114 115 117 120 122 6 22 86 + 68 69 71 74 76 97 113 117 BICOMP - 114 115 117 120 122 6 22 86 + 68 69 71 74 76 97 113 117 @@ -617,21 +871,17 @@ ICCARM - 168 239 + 143 158 BICOMP - 205 + 161 ICCARM - 114 115 118 122 6 22 88 - - - BICOMP - 114 115 118 122 6 22 88 + 68 69 72 76 97 113 119 @@ -640,21 +890,21 @@ ICCARM - 173 240 + 45 157 BICOMP - 206 + 162 ICCARM - 114 115 119 122 6 22 90 92 + 68 69 73 76 97 113 121 123 BICOMP - 114 115 119 122 6 22 90 92 + 68 69 73 76 97 113 121 123 @@ -663,21 +913,21 @@ ICCARM - 167 241 + 141 156 BICOMP - 207 + 163 ICCARM - 114 116 120 122 5 6 22 92 + 68 70 74 76 96 97 113 123 BICOMP - 114 116 120 122 5 6 22 92 + 68 70 74 76 96 97 113 123 @@ -686,21 +936,21 @@ ICCARM - 225 242 + 181 153 BICOMP - 208 + 164 ICCARM - 114 116 122 6 22 94 + 68 70 76 97 113 125 BICOMP - 114 116 122 6 22 94 + 68 70 76 97 113 125 @@ -709,21 +959,21 @@ ICCARM - 153 218 + 48 174 BICOMP - 152 + 42 ICCARM - 114 115 121 122 6 22 96 + 68 69 75 76 97 113 127 BICOMP - 114 115 121 122 6 22 96 + 68 69 75 76 97 113 127 @@ -732,21 +982,21 @@ ICCARM - 166 243 + 142 155 BICOMP - 209 + 165 ICCARM - 114 115 120 122 123 6 22 98 92 + 68 69 74 76 77 97 113 129 123 BICOMP - 114 115 120 122 123 6 22 98 92 + 68 69 74 76 77 97 113 129 123 @@ -755,21 +1005,21 @@ ICCARM - 169 244 + 60 154 BICOMP - 210 + 166 ICCARM - 122 124 6 22 100 + 76 78 97 113 131 BICOMP - 122 124 6 22 100 + 76 78 97 113 131 @@ -778,21 +1028,21 @@ ICCARM - 170 245 + 59 7 BICOMP - 211 + 167 ICCARM - 114 115 122 125 6 22 100 102 + 68 69 76 79 97 113 131 133 BICOMP - 114 115 122 125 6 22 100 102 + 68 69 76 79 97 113 131 133 @@ -801,288 +1051,53 @@ ICCARM - 230 246 + 186 6 BICOMP - 212 + 168 ICCARM - 114 115 122 126 6 22 104 + 68 69 76 80 97 113 135 BICOMP - 114 115 122 126 6 22 104 + 68 69 76 80 97 113 135 - $PROJ_DIR$\..\boot.c + $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.out - ICCARM - 149 73 + ILINK + 144 - BICOMP - 219 - - - - - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - - - $PROJ_DIR$\..\cstart.s - - - AARM - 38 - - - - - $PROJ_DIR$\..\irq.c - - - ICCARM - 154 70 - - - BICOMP - 140 - - - - - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - - - $PROJ_DIR$\..\led.c - - - ICCARM - 147 72 - - - BICOMP - 142 - - - - - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - - - $PROJ_DIR$\..\main.c - - - ICCARM - 150 71 - - - BICOMP + OBJCOPY 146 - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 + ILINK + 169 183 12 184 58 196 40 180 187 188 189 190 191 151 17 10 24 160 159 158 157 156 153 21 174 155 154 7 173 6 8 211 52 55 - - $PROJ_DIR$\..\time.c - - - ICCARM - 229 77 - - - BICOMP - 78 - - - - - ICCARM - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - BICOMP - 130 222 128 132 134 24 114 115 116 120 122 92 14 98 22 94 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c - - - ICCARM - 59 - - - BICOMP - 159 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c - - - ICCARM - 61 - - - BICOMP - 194 - - - - - $PROJ_DIR$\..\timer.c - - - ICCARM - 218 - - - BICOMP - 152 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_tim.c - - - ICCARM - 62 - - - BICOMP - 193 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c - - - ICCARM - 65 - - - BICOMP - 27 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - - - ICCARM - 63 - - - BICOMP - 163 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_wwdg.c - - - ICCARM - 64 - - - BICOMP - 161 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c - - - ICCARM - 43 - - - BICOMP - 46 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - - - ICCARM - 68 - - - BICOMP - 44 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c - - - ICCARM - 40 - - - BICOMP - 41 - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c ICCARM - 51 + 209 BICOMP - 50 + 208 @@ -1091,11 +1106,11 @@ ICCARM - 34 + 149 BICOMP - 39 + 197 @@ -1104,11 +1119,11 @@ ICCARM - 215 + 171 BICOMP - 45 + 203 @@ -1117,11 +1132,11 @@ ICCARM - 214 + 170 BICOMP - 49 + 207 @@ -1130,11 +1145,11 @@ ICCARM - 216 + 172 BICOMP - 164 + 137 @@ -1143,11 +1158,11 @@ ICCARM - 155 + 140 BICOMP - 165 + 46 @@ -1156,11 +1171,11 @@ ICCARM - 156 + 138 BICOMP - 157 + 41 @@ -1169,11 +1184,11 @@ ICCARM - 31 + 150 BICOMP - 162 + 44 @@ -1182,11 +1197,11 @@ ICCARM - 54 + 212 BICOMP - 26 + 47 @@ -1195,11 +1210,11 @@ ICCARM - 55 + 213 BICOMP - 52 + 210 @@ -1208,37 +1223,11 @@ ICCARM - 56 + 214 BICOMP - 223 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - - - ICCARM - 47 - - - BICOMP - 67 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c - - - ICCARM - 36 - - - BICOMP - 66 + 179 @@ -1247,11 +1236,11 @@ ICCARM - 57 + 215 BICOMP - 220 + 176 @@ -1260,32 +1249,39 @@ ICCARM - 58 + 216 BICOMP - 160 + 39 - $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.out + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - ILINK - 35 + ICCARM + 205 - OBJCOPY - 37 + BICOMP + 34 - + + + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c + - ILINK - 213 227 73 228 171 38 172 224 231 232 233 234 235 236 70 72 71 237 238 239 240 241 242 77 218 243 244 245 217 246 69 53 158 32 + ICCARM + 147 - + + BICOMP + 224 + + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.dni b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.dni index 1ce28b25..d372d375 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.dni +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.dni @@ -11,21 +11,21 @@ ByteLimit=50 [Breakpoints] Count=0 [DebugChecksum] -Checksum=-713695774 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 +Checksum=21002497 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" [CallStack] ShowArgs=0 [Disassembly] MixedMode=1 +[Log file] +LoggingEnabled=_ 0 +LogFile=_ "" +Category=_ 0 +[TermIOLog] +LoggingEnabled=_ 0 +LogFile=_ "" [CallStackLog] Enabled=0 [DriverProfiling] diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.wsdt b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.wsdt index 8a9bd867..7987bb00 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.wsdt +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/ide/settings/lm3s6965.wsdt @@ -12,7 +12,7 @@ - 387272727 + 283272727 @@ -35,7 +35,7 @@ - + TabID-27300-28131 @@ -47,20 +47,20 @@ - 0TabID-14407-15370BuildBuild0 + 0TabID-14407-15370BuildBuild0 - TextEditor$WS_DIR$\..\main.c000003427712771TextEditor$WS_DIR$\..\led.c000002722592259TextEditor$WS_DIR$\..\boot.c00000955097509720100000010000001 + TextEditor$WS_DIR$\..\main.c0000071442644260TextEditor$WS_DIR$\..\led.c000005835953595TextEditor$WS_DIR$\..\boot.c0000011655735573TextEditor$WS_DIR$\..\cstart.s000001526082608TextEditor$WS_DIR$\..\vectors.c000006312901290TextEditor$WS_DIR$\..\time.c000000434643460100000010000001 - iaridepm.enu1-2-2721461-2-2240244125000242063241146717262-2-22421922-2-219242441002083242063125000242063 + iaridepm.enu1-2-2760357-2-218620596875203373186979755952-2-22031922-2-21924205100208320337396875203373 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/memory.x index 8f5f3971..99d161e5 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S6965_IAR/Prog/memory.x @@ -1,7 +1,7 @@ /*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00006000; +define symbol __ICFEDIT_intvec_start__ = 0x00008000; /*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00006000; +define symbol __ICFEDIT_region_ROM_start__ = 0x00008000; define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.elf index 2b622a50..2017402c 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.map index a42dea1b..93ad011c 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.map @@ -25,7 +25,7 @@ Discarded input sections .text.SysCtlPeripheralDeepSleepDisable 0x00000000 0x38 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralClockGating - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlIntRegister 0x00000000 0x14 THUMB Debug/../../obj/sysctl.o .text.SysCtlIntUnregister @@ -37,7 +37,7 @@ Discarded input sections .text.SysCtlIntClear 0x00000000 0xc THUMB Debug/../../obj/sysctl.o .text.SysCtlIntStatus - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x14 THUMB Debug/../../obj/sysctl.o .text.SysCtlLDOSet 0x00000000 0x34 THUMB Debug/../../obj/sysctl.o .text.SysCtlLDOGet @@ -61,15 +61,15 @@ Discarded input sections .text.SysCtlPWMClockGet 0x00000000 0x34 THUMB Debug/../../obj/sysctl.o .text.SysCtlADCSpeedSet - 0x00000000 0x58 THUMB Debug/../../obj/sysctl.o + 0x00000000 0x5c THUMB Debug/../../obj/sysctl.o .text.SysCtlADCSpeedGet 0x00000000 0x2c THUMB Debug/../../obj/sysctl.o .text.SysCtlIOSCVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlMOSCVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlPLLVerificationSet - 0x00000000 0x1c THUMB Debug/../../obj/sysctl.o + 0x00000000 0x18 THUMB Debug/../../obj/sysctl.o .text.SysCtlClkVerificationClear 0x00000000 0x10 THUMB Debug/../../obj/sysctl.o .text.SysCtlGPIOAHBEnable @@ -96,9 +96,9 @@ Discarded input sections .text.IntDefaultHandler 0x00000000 0x2 THUMB Debug/../../obj/interrupt.o .text.IntMasterEnable - 0x00000000 0xc THUMB Debug/../../obj/interrupt.o + 0x00000000 0xa THUMB Debug/../../obj/interrupt.o .text.IntMasterDisable - 0x00000000 0xc THUMB Debug/../../obj/interrupt.o + 0x00000000 0xa THUMB Debug/../../obj/interrupt.o .text.IntRegister 0x00000000 0x54 THUMB Debug/../../obj/interrupt.o .text.IntUnregister @@ -138,19 +138,30 @@ Discarded input sections 0x00000000 0x6 THUMB Debug/../../obj/cpulib.o .text.CPUbasepriGet 0x00000000 0x6 THUMB Debug/../../obj/cpulib.o + .debug_frame 0x00000000 0x70 THUMB Debug/../../obj/cpulib.o + .debug_info 0x00000000 0x116 THUMB Debug/../../obj/cpulib.o + .debug_abbrev 0x00000000 0xb4 THUMB Debug/../../obj/cpulib.o + .debug_aranges + 0x00000000 0x48 THUMB Debug/../../obj/cpulib.o + .debug_ranges 0x00000000 0x38 THUMB Debug/../../obj/cpulib.o + .debug_line 0x00000000 0xff THUMB Debug/../../obj/cpulib.o + .debug_str 0x00000000 0x119 THUMB Debug/../../obj/cpulib.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/cpulib.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/cpulib.o .text 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .data 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .bss 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .text.GPIOGetIntNumber - 0x00000000 0xe0 THUMB Debug/../../obj/gpio.o + 0x00000000 0xdc THUMB Debug/../../obj/gpio.o .text.GPIODirModeGet 0x00000000 0x4c THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeSet - 0x00000000 0x80 THUMB Debug/../../obj/gpio.o + 0x00000000 0x78 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeGet 0x00000000 0x5c THUMB Debug/../../obj/gpio.o .text.GPIOPadConfigGet - 0x00000000 0xa4 THUMB Debug/../../obj/gpio.o + 0x00000000 0xac THUMB Debug/../../obj/gpio.o .text.GPIOPinIntEnable 0x00000000 0x28 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntDisable @@ -211,15 +222,15 @@ Discarded input sections .text.FlashProtectGet 0x00000000 0x98 THUMB Debug/../../obj/flashlib.o .text.FlashProtectSet - 0x00000000 0x11c THUMB Debug/../../obj/flashlib.o + 0x00000000 0x110 THUMB Debug/../../obj/flashlib.o .text.FlashProtectSave - 0x00000000 0x54 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x48 THUMB Debug/../../obj/flashlib.o .text.FlashUserGet - 0x00000000 0x64 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x60 THUMB Debug/../../obj/flashlib.o .text.FlashUserSet - 0x00000000 0x38 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x34 THUMB Debug/../../obj/flashlib.o .text.FlashUserSave - 0x00000000 0x64 THUMB Debug/../../obj/flashlib.o + 0x00000000 0x60 THUMB Debug/../../obj/flashlib.o .text.FlashIntRegister 0x00000000 0x14 THUMB Debug/../../obj/flashlib.o .text.FlashIntUnregister @@ -229,15 +240,15 @@ Discarded input sections .text.FlashIntDisable 0x00000000 0x10 THUMB Debug/../../obj/flashlib.o .text.FlashIntStatus - 0x00000000 0x1c THUMB Debug/../../obj/flashlib.o + 0x00000000 0x14 THUMB Debug/../../obj/flashlib.o .text.FlashIntClear 0x00000000 0xc THUMB Debug/../../obj/flashlib.o + .rodata.CSWTCH.9 + 0x00000000 0x3 THUMB Debug/../../obj/flashlib.o .rodata.g_pulFMPPERegs 0x00000000 0x10 THUMB Debug/../../obj/flashlib.o .rodata.g_pulFMPRERegs 0x00000000 0x10 THUMB Debug/../../obj/flashlib.o - .rodata.CSWTCH.4 - 0x00000000 0x3 THUMB Debug/../../obj/flashlib.o .text 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o .data 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o .bss 0x00000000 0x0 THUMB Debug/../../obj/uartlib.o @@ -280,7 +291,7 @@ Discarded input sections .text.UARTTxIntModeGet 0x00000000 0x20 THUMB Debug/../../obj/uartlib.o .text.UARTCharsAvail - 0x00000000 0x28 THUMB Debug/../../obj/uartlib.o + 0x00000000 0x24 THUMB Debug/../../obj/uartlib.o .text.UARTCharGet 0x00000000 0x24 THUMB Debug/../../obj/uartlib.o .text.UARTCharPut @@ -327,13 +338,13 @@ Discarded input sections .text.CANIntDisable 0x00000000 0x40 THUMB Debug/../../obj/canlib.o .text.CANIntStatus - 0x00000000 0x4c THUMB Debug/../../obj/canlib.o + 0x00000000 0x48 THUMB Debug/../../obj/canlib.o .text.CANIntClear - 0x00000000 0x6c THUMB Debug/../../obj/canlib.o + 0x00000000 0x68 THUMB Debug/../../obj/canlib.o .text.CANRetrySet 0x00000000 0x38 THUMB Debug/../../obj/canlib.o .text.CANRetryGet - 0x00000000 0x2c THUMB Debug/../../obj/canlib.o + 0x00000000 0x28 THUMB Debug/../../obj/canlib.o .text.CANErrCntrGet 0x00000000 0x34 THUMB Debug/../../obj/canlib.o .text.CANMessageClear @@ -343,6 +354,15 @@ Discarded input sections .text 0x00000000 0x0 THUMB Debug/../../obj/hooks.o .data 0x00000000 0x0 THUMB Debug/../../obj/hooks.o .bss 0x00000000 0x0 THUMB Debug/../../obj/hooks.o + .debug_info 0x00000000 0x52 THUMB Debug/../../obj/hooks.o + .debug_abbrev 0x00000000 0x24 THUMB Debug/../../obj/hooks.o + .debug_aranges + 0x00000000 0x18 THUMB Debug/../../obj/hooks.o + .debug_line 0x00000000 0x1d THUMB Debug/../../obj/hooks.o + .debug_str 0x00000000 0x100 THUMB Debug/../../obj/hooks.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/hooks.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/hooks.o .text 0x00000000 0x0 THUMB Debug/../../obj/main.o .data 0x00000000 0x0 THUMB Debug/../../obj/main.o .bss 0x00000000 0x0 THUMB Debug/../../obj/main.o @@ -402,7 +422,7 @@ Memory Configuration Name Origin Length Attributes UNPLACED_SECTIONS 0xffffffff 0x00000000 xw SRAM 0x20000000 0x00002000 xw -FLASH 0x00000000 0x00006000 xr +FLASH 0x00000000 0x00008000 xr *default* 0x00000000 0xffffffff Linker script and memory map @@ -410,7 +430,7 @@ Linker script and memory map 0x20000000 __SRAM_segment_start__ = 0x20000000 0x20002000 __SRAM_segment_end__ = 0x20002000 0x00000000 __FLASH_segment_start__ = 0x0 - 0x00006000 __FLASH_segment_end__ = 0x6000 + 0x00008000 __FLASH_segment_end__ = 0x8000 0x00000200 __STACKSIZE__ = 0x200 0x00000000 __STACKSIZE_PROCESS__ = 0x0 0x00000000 __STACKSIZE_IRQ__ = 0x0 @@ -439,332 +459,342 @@ Linker script and memory map 0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= __FLASH_segment_end__)), error: .vectors is too large to fit in FLASH memory segment) 0x000000f0 __init_load_start__ = ALIGN (__vectors_end__, 0x4) -.init 0x000000f0 0x198 +.init 0x000000f0 0x1a0 0x000000f0 __init_start__ = . *(.init .init.*) - .init 0x000000f0 0x198 THUMB Debug/../../obj/cstart.o + .init 0x000000f0 0x1a0 THUMB Debug/../../obj/cstart.o 0x000000f0 EntryFromProg - 0x0000017a reset_handler - 0x000001fa exit - 0x00000288 __init_end__ = (__init_start__ + SIZEOF (.init)) - 0x00000288 __init_load_end__ = __init_end__ + 0x0000017e reset_handler + 0x00000202 exit + 0x00000290 __init_end__ = (__init_start__ + SIZEOF (.init)) + 0x00000290 __init_load_end__ = __init_end__ 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= __FLASH_segment_end__)), error: .init is too large to fit in FLASH memory segment) - 0x00000288 __text_load_start__ = ALIGN (__init_end__, 0x4) + 0x00000290 __text_load_start__ = ALIGN (__init_end__, 0x4) -.text 0x00000288 0x1c38 - 0x00000288 __text_start__ = . +.text 0x00000290 0x1bbc + 0x00000290 __text_start__ = . *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*) .glue_7 0x00000000 0x0 linker stubs .glue_7t 0x00000000 0x0 linker stubs .text.SysCtlPeripheralValid - 0x00000288 0x150 THUMB Debug/../../obj/sysctl.o + 0x00000290 0x148 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralEnable 0x000003d8 0x38 THUMB Debug/../../obj/sysctl.o 0x000003d8 SysCtlPeripheralEnable .text.SysCtlDelay - 0x00000410 0x6 THUMB Debug/../../obj/sysctl.o + 0x00000410 0x8 THUMB Debug/../../obj/sysctl.o 0x00000410 SysCtlDelay - *fill* 0x00000416 0x2 00 .text.SysCtlClockSet - 0x00000418 0x13c THUMB Debug/../../obj/sysctl.o + 0x00000418 0x144 THUMB Debug/../../obj/sysctl.o 0x00000418 SysCtlClockSet .text.SysCtlClockGet - 0x00000554 0x1c0 THUMB Debug/../../obj/sysctl.o - 0x00000554 SysCtlClockGet + 0x0000055c 0x1b4 THUMB Debug/../../obj/sysctl.o + 0x0000055c SysCtlClockGet .text.IntEnable - 0x00000714 0x88 THUMB Debug/../../obj/interrupt.o - 0x00000714 IntEnable + 0x00000710 0x88 THUMB Debug/../../obj/interrupt.o + 0x00000710 IntEnable .text.IntDisable - 0x0000079c 0x88 THUMB Debug/../../obj/interrupt.o - 0x0000079c IntDisable + 0x00000798 0x88 THUMB Debug/../../obj/interrupt.o + 0x00000798 IntDisable .text.GPIOBaseValid - 0x00000824 0xa0 THUMB Debug/../../obj/gpio.o + 0x00000820 0x98 THUMB Debug/../../obj/gpio.o .text.GPIODirModeSet - 0x000008c4 0x54 THUMB Debug/../../obj/gpio.o - 0x000008c4 GPIODirModeSet + 0x000008b8 0x54 THUMB Debug/../../obj/gpio.o + 0x000008b8 GPIODirModeSet .text.GPIOPadConfigSet - 0x00000918 0x120 THUMB Debug/../../obj/gpio.o - 0x00000918 GPIOPadConfigSet + 0x0000090c 0x110 THUMB Debug/../../obj/gpio.o + 0x0000090c GPIOPadConfigSet .text.GPIOPinTypeCAN - 0x00000a38 0x34 THUMB Debug/../../obj/gpio.o - 0x00000a38 GPIOPinTypeCAN + 0x00000a1c 0x34 THUMB Debug/../../obj/gpio.o + 0x00000a1c GPIOPinTypeCAN .text.GPIOPinTypeUART - 0x00000a6c 0x34 THUMB Debug/../../obj/gpio.o - 0x00000a6c GPIOPinTypeUART + 0x00000a50 0x34 THUMB Debug/../../obj/gpio.o + 0x00000a50 GPIOPinTypeUART .text.FlashClear - 0x00000aa0 0x48 THUMB Debug/../../obj/flashlib.o - 0x00000aa0 FlashClear + 0x00000a84 0x4c THUMB Debug/../../obj/flashlib.o + 0x00000a84 FlashClear .text.FlashProgram - 0x00000ae8 0xdc THUMB Debug/../../obj/flashlib.o - 0x00000ae8 FlashProgram + 0x00000ad0 0xcc THUMB Debug/../../obj/flashlib.o + 0x00000ad0 FlashProgram .text.UARTBaseValid - 0x00000bc4 0x28 THUMB Debug/../../obj/uartlib.o + 0x00000b9c 0x24 THUMB Debug/../../obj/uartlib.o .text.UARTEnable - 0x00000bec 0x30 THUMB Debug/../../obj/uartlib.o - 0x00000bec UARTEnable + 0x00000bc0 0x30 THUMB Debug/../../obj/uartlib.o + 0x00000bc0 UARTEnable .text.UARTDisable - 0x00000c1c 0x34 THUMB Debug/../../obj/uartlib.o - 0x00000c1c UARTDisable + 0x00000bf0 0x34 THUMB Debug/../../obj/uartlib.o + 0x00000bf0 UARTDisable .text.UARTConfigSetExpClk - 0x00000c50 0xd8 THUMB Debug/../../obj/uartlib.o - 0x00000c50 UARTConfigSetExpClk + 0x00000c24 0xd0 THUMB Debug/../../obj/uartlib.o + 0x00000c24 UARTConfigSetExpClk .text.UARTSpaceAvail - 0x00000d28 0x28 THUMB Debug/../../obj/uartlib.o - 0x00000d28 UARTSpaceAvail + 0x00000cf4 0x24 THUMB Debug/../../obj/uartlib.o + 0x00000cf4 UARTSpaceAvail .text.UARTCharGetNonBlocking - 0x00000d50 0x28 THUMB Debug/../../obj/uartlib.o - 0x00000d50 UARTCharGetNonBlocking + 0x00000d18 0x28 THUMB Debug/../../obj/uartlib.o + 0x00000d18 UARTCharGetNonBlocking .text.UARTCharPutNonBlocking - 0x00000d78 0x2c THUMB Debug/../../obj/uartlib.o - 0x00000d78 UARTCharPutNonBlocking + 0x00000d40 0x2c THUMB Debug/../../obj/uartlib.o + 0x00000d40 UARTCharPutNonBlocking .text.CANBaseValid - 0x00000da4 0x28 THUMB Debug/../../obj/canlib.o + 0x00000d6c 0x24 THUMB Debug/../../obj/canlib.o .text.CANIntNumberGet - 0x00000dcc 0x2c THUMB Debug/../../obj/canlib.o + 0x00000d90 0x2c THUMB Debug/../../obj/canlib.o .text.CANRegWrite - 0x00000df8 0x18 THUMB Debug/../../obj/canlib.o + 0x00000dbc 0x18 THUMB Debug/../../obj/canlib.o .text.CANRegRead - 0x00000e10 0x60 THUMB Debug/../../obj/canlib.o - .text.CANInit 0x00000e70 0x98 THUMB Debug/../../obj/canlib.o - 0x00000e70 CANInit + 0x00000dd4 0x60 THUMB Debug/../../obj/canlib.o + .text.CANInit 0x00000e34 0x98 THUMB Debug/../../obj/canlib.o + 0x00000e34 CANInit .text.CANEnable - 0x00000f08 0x2c THUMB Debug/../../obj/canlib.o - 0x00000f08 CANEnable + 0x00000ecc 0x2c THUMB Debug/../../obj/canlib.o + 0x00000ecc CANEnable .text.CANBitTimingSet - 0x00000f34 0xdc THUMB Debug/../../obj/canlib.o - 0x00000f34 CANBitTimingSet + 0x00000ef8 0xdc THUMB Debug/../../obj/canlib.o + 0x00000ef8 CANBitTimingSet .text.CANStatusGet - 0x00001010 0x7c THUMB Debug/../../obj/canlib.o - 0x00001010 CANStatusGet + 0x00000fd4 0x7c THUMB Debug/../../obj/canlib.o + 0x00000fd4 CANStatusGet .text.CANMessageSet - 0x0000108c 0x1dc THUMB Debug/../../obj/canlib.o - 0x0000108c CANMessageSet + 0x00001050 0x1e0 THUMB Debug/../../obj/canlib.o + 0x00001050 CANMessageSet .text.CANMessageGet - 0x00001268 0x1bc THUMB Debug/../../obj/canlib.o - 0x00001268 CANMessageGet + 0x00001230 0x1ac THUMB Debug/../../obj/canlib.o + 0x00001230 CANMessageGet .text.startup.main - 0x00001424 0x40 THUMB Debug/../../obj/main.o - 0x00001424 main + 0x000013dc 0x40 THUMB Debug/../../obj/main.o + 0x000013dc main .text.UnusedISR - 0x00001464 0xc THUMB Debug/../../obj/vectors.o - 0x00001464 UnusedISR + 0x0000141c 0xc THUMB Debug/../../obj/vectors.o + 0x0000141c UnusedISR .text.CpuStartUserProgram - 0x00001470 0x28 THUMB Debug/../../obj/cpu.o - 0x00001470 CpuStartUserProgram + 0x00001428 0x30 THUMB Debug/../../obj/cpu.o + 0x00001428 CpuStartUserProgram .text.CpuMemCopy - 0x00001498 0x20 THUMB Debug/../../obj/cpu.o - 0x00001498 CpuMemCopy + 0x00001458 0x1e THUMB Debug/../../obj/cpu.o + 0x00001458 CpuMemCopy .text.CpuReset - 0x000014b8 0x4 THUMB Debug/../../obj/cpu.o - 0x000014b8 CpuReset + 0x00001476 0x4 THUMB Debug/../../obj/cpu.o + 0x00001476 CpuReset + *fill* 0x0000147a 0x2 00 .text.FlashGetSector - 0x000014bc 0x38 THUMB Debug/../../obj/flash.o + 0x0000147c 0x38 THUMB Debug/../../obj/flash.o .text.FlashWriteBlock - 0x000014f4 0x48 THUMB Debug/../../obj/flash.o + 0x000014b4 0x4e THUMB Debug/../../obj/flash.o + *fill* 0x00001502 0x2 00 .text.FlashSwitchBlock - 0x0000153c 0x50 THUMB Debug/../../obj/flash.o + 0x00001504 0x4c THUMB Debug/../../obj/flash.o .text.FlashAddToBlock - 0x0000158c 0x80 THUMB Debug/../../obj/flash.o + 0x00001550 0x80 THUMB Debug/../../obj/flash.o .text.FlashInit - 0x0000160c 0x18 THUMB Debug/../../obj/flash.o - 0x0000160c FlashInit + 0x000015d0 0x18 THUMB Debug/../../obj/flash.o + 0x000015d0 FlashInit .text.FlashWrite - 0x00001624 0x48 THUMB Debug/../../obj/flash.o - 0x00001624 FlashWrite + 0x000015e8 0x48 THUMB Debug/../../obj/flash.o + 0x000015e8 FlashWrite .text.FlashErase - 0x0000166c 0xe0 THUMB Debug/../../obj/flash.o - 0x0000166c FlashErase + 0x00001630 0xc0 THUMB Debug/../../obj/flash.o + 0x00001630 FlashErase .text.FlashWriteChecksum - 0x0000174c 0x44 THUMB Debug/../../obj/flash.o - 0x0000174c FlashWriteChecksum + 0x000016f0 0x40 THUMB Debug/../../obj/flash.o + 0x000016f0 FlashWriteChecksum .text.FlashVerifyChecksum - 0x00001790 0x48 THUMB Debug/../../obj/flash.o - 0x00001790 FlashVerifyChecksum + 0x00001730 0x48 THUMB Debug/../../obj/flash.o + 0x00001730 FlashVerifyChecksum .text.FlashDone - 0x000017d8 0x34 THUMB Debug/../../obj/flash.o - 0x000017d8 FlashDone - .text.NvmInit 0x0000180c 0x4 THUMB Debug/../../obj/nvm.o - 0x0000180c NvmInit + 0x00001778 0x34 THUMB Debug/../../obj/flash.o + 0x00001778 FlashDone + .text.FlashGetUserProgBaseAddress + 0x000017ac 0x6 THUMB Debug/../../obj/flash.o + 0x000017ac FlashGetUserProgBaseAddress + .text.NvmInit 0x000017b2 0x4 THUMB Debug/../../obj/nvm.o + 0x000017b2 NvmInit .text.NvmWrite - 0x00001810 0x4 THUMB Debug/../../obj/nvm.o - 0x00001810 NvmWrite + 0x000017b6 0x4 THUMB Debug/../../obj/nvm.o + 0x000017b6 NvmWrite .text.NvmErase - 0x00001814 0x4 THUMB Debug/../../obj/nvm.o - 0x00001814 NvmErase + 0x000017ba 0x4 THUMB Debug/../../obj/nvm.o + 0x000017ba NvmErase .text.NvmVerifyChecksum - 0x00001818 0x4 THUMB Debug/../../obj/nvm.o - 0x00001818 NvmVerifyChecksum - .text.NvmDone 0x0000181c 0x14 THUMB Debug/../../obj/nvm.o - 0x0000181c NvmDone + 0x000017be 0x4 THUMB Debug/../../obj/nvm.o + 0x000017be NvmVerifyChecksum + .text.NvmDone 0x000017c2 0x12 THUMB Debug/../../obj/nvm.o + 0x000017c2 NvmDone .text.TimerInit - 0x00001830 0x20 THUMB Debug/../../obj/timer.o - 0x00001830 TimerInit + 0x000017d4 0x20 THUMB Debug/../../obj/timer.o + 0x000017d4 TimerInit .text.TimerReset - 0x00001850 0xc THUMB Debug/../../obj/timer.o - 0x00001850 TimerReset + 0x000017f4 0xc THUMB Debug/../../obj/timer.o + 0x000017f4 TimerReset .text.TimerUpdate - 0x0000185c 0x1c THUMB Debug/../../obj/timer.o - 0x0000185c TimerUpdate + 0x00001800 0x1c THUMB Debug/../../obj/timer.o + 0x00001800 TimerUpdate .text.TimerGet - 0x00001878 0x14 THUMB Debug/../../obj/timer.o - 0x00001878 TimerGet + 0x0000181c 0x10 THUMB Debug/../../obj/timer.o + 0x0000181c TimerGet .text.UartInit - 0x0000188c 0x28 THUMB Debug/../../obj/uart.o - 0x0000188c UartInit + 0x0000182c 0x28 THUMB Debug/../../obj/uart.o + 0x0000182c UartInit .text.UartTransmitPacket - 0x000018b4 0x74 THUMB Debug/../../obj/uart.o - 0x000018b4 UartTransmitPacket + 0x00001854 0x6c THUMB Debug/../../obj/uart.o + 0x00001854 UartTransmitPacket .text.UartReceivePacket - 0x00001928 0x70 THUMB Debug/../../obj/uart.o - 0x00001928 UartReceivePacket - .text.CanInit 0x00001998 0xa8 THUMB Debug/../../obj/can.o - 0x00001998 CanInit + 0x000018c0 0x68 THUMB Debug/../../obj/uart.o + 0x000018c0 UartReceivePacket + .text.CanInit 0x00001928 0xa0 THUMB Debug/../../obj/can.o + 0x00001928 CanInit .text.CanTransmitPacket - 0x00001a40 0x54 THUMB Debug/../../obj/can.o - 0x00001a40 CanTransmitPacket + 0x000019c8 0x54 THUMB Debug/../../obj/can.o + 0x000019c8 CanTransmitPacket .text.CanReceivePacket - 0x00001a94 0x2c THUMB Debug/../../obj/can.o - 0x00001a94 CanReceivePacket + 0x00001a1c 0x2c THUMB Debug/../../obj/can.o + 0x00001a1c CanReceivePacket .text.AssertFailure - 0x00001ac0 0x18 THUMB Debug/../../obj/assert.o - 0x00001ac0 AssertFailure + 0x00001a48 0x18 THUMB Debug/../../obj/assert.o + 0x00001a48 AssertFailure .text.BackDoorCheck - 0x00001ad8 0x38 THUMB Debug/../../obj/backdoor.o - 0x00001ad8 BackDoorCheck + 0x00001a60 0x38 THUMB Debug/../../obj/backdoor.o + 0x00001a60 BackDoorCheck .text.BackDoorInit - 0x00001b10 0x20 THUMB Debug/../../obj/backdoor.o - 0x00001b10 BackDoorInit + 0x00001a98 0x20 THUMB Debug/../../obj/backdoor.o + 0x00001a98 BackDoorInit .text.BootInit - 0x00001b30 0x1a THUMB Debug/../../obj/boot.o - 0x00001b30 BootInit + 0x00001ab8 0x1a THUMB Debug/../../obj/boot.o + 0x00001ab8 BootInit .text.BootTask - 0x00001b4a 0x16 THUMB Debug/../../obj/boot.o - 0x00001b4a BootTask - .text.ComInit 0x00001b60 0x3c THUMB Debug/../../obj/com.o - 0x00001b60 ComInit - .text.ComTask 0x00001b9c 0x3c THUMB Debug/../../obj/com.o - 0x00001b9c ComTask - .text.ComFree 0x00001bd8 0x2 THUMB Debug/../../obj/com.o - 0x00001bd8 ComFree - *fill* 0x00001bda 0x2 00 + 0x00001ad2 0x16 THUMB Debug/../../obj/boot.o + 0x00001ad2 BootTask + .text.ComInit 0x00001ae8 0x3c THUMB Debug/../../obj/com.o + 0x00001ae8 ComInit + .text.ComTask 0x00001b24 0x3c THUMB Debug/../../obj/com.o + 0x00001b24 ComTask + .text.ComFree 0x00001b60 0x2 THUMB Debug/../../obj/com.o + 0x00001b60 ComFree + *fill* 0x00001b62 0x2 00 .text.ComTransmitPacket - 0x00001bdc 0x2c THUMB Debug/../../obj/com.o - 0x00001bdc ComTransmitPacket + 0x00001b64 0x30 THUMB Debug/../../obj/com.o + 0x00001b64 ComTransmitPacket .text.ComGetActiveInterfaceMaxRxLen - 0x00001c08 0x1c THUMB Debug/../../obj/com.o - 0x00001c08 ComGetActiveInterfaceMaxRxLen + 0x00001b94 0x20 THUMB Debug/../../obj/com.o + 0x00001b94 ComGetActiveInterfaceMaxRxLen .text.ComGetActiveInterfaceMaxTxLen - 0x00001c24 0x1c THUMB Debug/../../obj/com.o - 0x00001c24 ComGetActiveInterfaceMaxTxLen + 0x00001bb4 0x20 THUMB Debug/../../obj/com.o + 0x00001bb4 ComGetActiveInterfaceMaxTxLen .text.ComSetConnectEntryState - 0x00001c40 0xc THUMB Debug/../../obj/com.o - 0x00001c40 ComSetConnectEntryState + 0x00001bd4 0xc THUMB Debug/../../obj/com.o + 0x00001bd4 ComSetConnectEntryState .text.ComIsConnected - 0x00001c4c 0x4 THUMB Debug/../../obj/com.o - 0x00001c4c ComIsConnected - .text.CopInit 0x00001c50 0x2 THUMB Debug/../../obj/cop.o - 0x00001c50 CopInit + 0x00001be0 0x4 THUMB Debug/../../obj/com.o + 0x00001be0 ComIsConnected + .text.CopInit 0x00001be4 0x2 THUMB Debug/../../obj/cop.o + 0x00001be4 CopInit .text.CopService - 0x00001c52 0x2 THUMB Debug/../../obj/cop.o - 0x00001c52 CopService + 0x00001be6 0x2 THUMB Debug/../../obj/cop.o + 0x00001be6 CopService .text.XcpSetCtoError - 0x00001c54 0x14 THUMB Debug/../../obj/xcp.o - .text.XcpInit 0x00001c68 0x1c THUMB Debug/../../obj/xcp.o - 0x00001c68 XcpInit + 0x00001be8 0x14 THUMB Debug/../../obj/xcp.o + .text.XcpInit 0x00001bfc 0x1c THUMB Debug/../../obj/xcp.o + 0x00001bfc XcpInit .text.XcpIsConnected - 0x00001c84 0x10 THUMB Debug/../../obj/xcp.o - 0x00001c84 XcpIsConnected + 0x00001c18 0x10 THUMB Debug/../../obj/xcp.o + 0x00001c18 XcpIsConnected .text.XcpPacketTransmitted - 0x00001c94 0x10 THUMB Debug/../../obj/xcp.o - 0x00001c94 XcpPacketTransmitted + 0x00001c28 0x10 THUMB Debug/../../obj/xcp.o + 0x00001c28 XcpPacketTransmitted .text.XcpPacketReceived - 0x00001ca4 0x21c THUMB Debug/../../obj/xcp.o - 0x00001ca4 XcpPacketReceived - 0x00001ec0 __text_end__ = (__text_start__ + SIZEOF (.text)) - 0x00001ec0 __text_load_end__ = __text_end__ + 0x00001c38 0x214 THUMB Debug/../../obj/xcp.o + 0x00001c38 XcpPacketReceived + 0x00001e4c __text_end__ = (__text_start__ + SIZEOF (.text)) + 0x00001e4c __text_load_end__ = __text_end__ .vfp11_veneer 0x00000000 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs .v4_bx 0x00000000 0x0 .v4_bx 0x00000000 0x0 linker stubs - 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= __FLASH_segment_end__)), error: .text is too large to fit in FLASH memory segment) - 0x00001ec0 __dtors_load_start__ = ALIGN (__text_end__, 0x4) -.dtors 0x00001ec0 0x0 - 0x00001ec0 __dtors_start__ = . +.iplt 0x00000000 0x0 + .iplt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o + 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= __FLASH_segment_end__)), error: .text is too large to fit in FLASH memory segment) + 0x00001e4c __dtors_load_start__ = ALIGN (__text_end__, 0x4) + +.dtors 0x00001e4c 0x0 + 0x00001e4c __dtors_start__ = . *(SORT(.dtors.*)) *(.dtors) *(.fini_array .fini_array.*) - 0x00001ec0 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) - 0x00001ec0 __dtors_load_end__ = __dtors_end__ + 0x00001e4c __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) + 0x00001e4c __dtors_load_end__ = __dtors_end__ 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= __FLASH_segment_end__)), error: .dtors is too large to fit in FLASH memory segment) - 0x00001ec0 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) + 0x00001e4c __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) -.ctors 0x00001ec0 0x0 - 0x00001ec0 __ctors_start__ = . +.ctors 0x00001e4c 0x0 + 0x00001e4c __ctors_start__ = . *(SORT(.ctors.*)) *(.ctors) *(.init_array .init_array.*) - 0x00001ec0 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) - 0x00001ec0 __ctors_load_end__ = __ctors_end__ + 0x00001e4c __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) + 0x00001e4c __ctors_load_end__ = __ctors_end__ 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= __FLASH_segment_end__)), error: .ctors is too large to fit in FLASH memory segment) - 0x00001ec0 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) + 0x00001e4c __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) -.rodata 0x00001ec0 0x547 - 0x00001ec0 __rodata_start__ = . +.rodata 0x00001e4c 0x52f + 0x00001e4c __rodata_start__ = . *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata.g_pulXtals - 0x00001ec0 0x5c THUMB Debug/../../obj/sysctl.o + 0x00001e4c 0x5c THUMB Debug/../../obj/sysctl.o .rodata.str1.1 - 0x00001f1c 0x6b THUMB Debug/../../obj/sysctl.o - *fill* 0x00001f87 0x1 00 + 0x00001ea8 0x6b THUMB Debug/../../obj/sysctl.o + *fill* 0x00001f13 0x1 00 .rodata.g_pulRCGCRegs - 0x00001f88 0xc THUMB Debug/../../obj/sysctl.o + 0x00001f14 0xc THUMB Debug/../../obj/sysctl.o .rodata.str1.1 - 0x00001f94 0x6e THUMB Debug/../../obj/interrupt.o + 0x00001f20 0x6e THUMB Debug/../../obj/interrupt.o .rodata.str1.1 - 0x00002002 0x69 THUMB Debug/../../obj/gpio.o + 0x00001f8e 0x69 THUMB Debug/../../obj/gpio.o .rodata.str1.1 - 0x0000206b 0x6d THUMB Debug/../../obj/flashlib.o + 0x00001ff7 0x6d THUMB Debug/../../obj/flashlib.o .rodata.str1.1 - 0x000020d8 0x6c THUMB Debug/../../obj/uartlib.o + 0x00002064 0x6c THUMB Debug/../../obj/uartlib.o .rodata.str1.1 - 0x00002144 0x6b THUMB Debug/../../obj/canlib.o + 0x000020d0 0x6b THUMB Debug/../../obj/canlib.o .rodata.str1.1 - 0x000021af 0x85 THUMB Debug/../../obj/vectors.o + 0x0000213b 0x85 THUMB Debug/../../obj/vectors.o .rodata.flashLayout - 0x00002234 0xd8 THUMB Debug/../../obj/flash.o + 0x000021c0 0xc0 THUMB Debug/../../obj/flash.o .rodata.str1.1 - 0x0000230c 0x77 THUMB Debug/../../obj/uart.o + 0x00002280 0x77 THUMB Debug/../../obj/uart.o .rodata.str1.1 - 0x00002383 0x76 THUMB Debug/../../obj/can.o - .rodata.CSWTCH.5 - 0x000023f9 0x3 THUMB Debug/../../obj/com.o - .rodata.CSWTCH.7 - 0x000023fc 0x3 THUMB Debug/../../obj/com.o + 0x000022f7 0x76 THUMB Debug/../../obj/can.o + .rodata.CSWTCH.13 + 0x0000236d 0x3 THUMB Debug/../../obj/com.o + .rodata.CSWTCH.10 + 0x00002370 0x3 THUMB Debug/../../obj/com.o .rodata.xcpStationId - 0x000023ff 0x8 THUMB Debug/../../obj/xcp.o - 0x00002407 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) - 0x00002407 __rodata_load_end__ = __rodata_end__ + 0x00002373 0x8 THUMB Debug/../../obj/xcp.o + 0x0000237b __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) + 0x0000237b __rodata_load_end__ = __rodata_end__ + +.rel.dyn 0x00000000 0x0 + .rel.iplt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= __FLASH_segment_end__)), error: .rodata is too large to fit in FLASH memory segment) - 0x00002408 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) + 0x0000237c __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) -.ARM.exidx 0x00002408 0x0 - 0x00002408 __ARM.exidx_start__ = . - 0x00002408 __exidx_start = __ARM.exidx_start__ +.ARM.exidx 0x0000237c 0x0 + 0x0000237c __ARM.exidx_start__ = . + 0x0000237c __exidx_start = __ARM.exidx_start__ *(.ARM.exidx .ARM.exidx.*) - 0x00002408 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) - 0x00002408 __exidx_end = __ARM.exidx_end__ - 0x00002408 __ARM.exidx_load_end__ = __ARM.exidx_end__ + 0x0000237c __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) + 0x0000237c __exidx_end = __ARM.exidx_end__ + 0x0000237c __ARM.exidx_load_end__ = __ARM.exidx_end__ 0x00000001 . = ASSERT (((__ARM.exidx_end__ >= __FLASH_segment_start__) && (__ARM.exidx_end__ <= __FLASH_segment_end__)), error: .ARM.exidx is too large to fit in FLASH memory segment) - 0x00002408 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) + 0x0000237c __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) -.fast 0x20000000 0x0 load address 0x00002408 +.fast 0x20000000 0x0 load address 0x0000237c 0x20000000 __fast_start__ = . *(.fast .fast.*) 0x20000000 __fast_end__ = (__fast_start__ + SIZEOF (.fast)) - 0x00002408 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) + 0x0000237c __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) 0x00000001 . = ASSERT (((__fast_load_end__ >= __FLASH_segment_start__) && (__fast_load_end__ <= __FLASH_segment_end__)), error: .fast is too large to fit in FLASH memory segment) .fast_run 0x20000000 0x0 @@ -773,23 +803,26 @@ Linker script and memory map 0x20000000 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run)) 0x20000000 __fast_run_load_end__ = __fast_run_end__ 0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= __SRAM_segment_end__)), error: .fast_run is too large to fit in SRAM memory segment) - 0x00002408 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) + 0x0000237c __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) -.data 0x20000000 0x4 load address 0x00002408 +.data 0x20000000 0x1 load address 0x0000237c 0x20000000 __data_start__ = . *(.data .data.* .gnu.linkonce.d.*) .data.comActiveInterface - 0x20000000 0x4 THUMB Debug/../../obj/com.o - 0x20000004 __data_end__ = (__data_start__ + SIZEOF (.data)) - 0x0000240c __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + 0x20000000 0x1 THUMB Debug/../../obj/com.o + 0x20000001 __data_end__ = (__data_start__ + SIZEOF (.data)) + 0x0000237d __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + +.igot.plt 0x00000000 0x0 + .igot.plt 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o 0x00000001 . = ASSERT (((__data_load_end__ >= __FLASH_segment_start__) && (__data_load_end__ <= __FLASH_segment_end__)), error: .data is too large to fit in FLASH memory segment) -.data_run 0x20000000 0x4 load address 0x00002408 +.data_run 0x20000000 0x1 load address 0x0000237c 0x20000000 __data_run_start__ = . - 0x20000004 . = MAX ((__data_run_start__ + SIZEOF (.data)), .) - *fill* 0x20000000 0x4 00 - 0x20000004 __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run)) - 0x20000004 __data_run_load_end__ = __data_run_end__ + 0x20000001 . = MAX ((__data_run_start__ + SIZEOF (.data)), .) + *fill* 0x20000000 0x1 00 + 0x20000001 __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run)) + 0x20000001 __data_run_load_end__ = __data_run_end__ 0x00000001 . = ASSERT (((__data_run_end__ >= __SRAM_segment_start__) && (__data_run_end__ <= __SRAM_segment_end__)), error: .data_run is too large to fit in SRAM memory segment) 0x20000004 __bss_load_start__ = ALIGN (__data_run_end__, 0x4) @@ -802,11 +835,11 @@ Linker script and memory map 0x20000208 0x204 THUMB Debug/../../obj/flash.o .bss.millisecond_counter 0x2000040c 0x4 THUMB Debug/../../obj/timer.o - .bss.xcpCtoReqPacket.1103 + .bss.xcpCtoReqPacket.3931 0x20000410 0x41 THUMB Debug/../../obj/uart.o - .bss.xcpCtoRxLength.1104 + .bss.xcpCtoRxLength.3932 0x20000451 0x1 THUMB Debug/../../obj/uart.o - .bss.xcpCtoRxInProgress.1105 + .bss.xcpCtoRxInProgress.3933 0x20000452 0x1 THUMB Debug/../../obj/uart.o *fill* 0x20000453 0x1 00 .bss.assert_failure_file @@ -820,7 +853,7 @@ Linker script and memory map 0x20000460 0x4 THUMB Debug/../../obj/backdoor.o .bss.comEntryStateConnect 0x20000464 0x1 THUMB Debug/../../obj/com.o - .bss.xcpCtoReqPacket.908 + .bss.xcpCtoReqPacket.3736 0x20000465 0x40 THUMB Debug/../../obj/com.o *fill* 0x200004a5 0x3 00 .bss.xcpInfo 0x200004a8 0x4c THUMB Debug/../../obj/xcp.o @@ -873,14 +906,14 @@ Linker script and memory map 0x20000774 __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) 0x20000774 __tbss_load_end__ = __tbss_end__ 0x00000001 . = ASSERT (((__tbss_end__ >= __SRAM_segment_start__) && (__tbss_end__ <= __SRAM_segment_end__)), error: .tbss is too large to fit in SRAM memory segment) - 0x0000240c __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + 0x00002380 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) -.tdata 0x20000774 0x0 load address 0x0000240c +.tdata 0x20000774 0x0 load address 0x00002380 0x20000774 __tdata_start__ = . *(.tdata .tdata.*) 0x20000774 __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) - 0x0000240c __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) - 0x0000240c __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) + 0x00002380 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) + 0x00002380 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) 0x00000001 . = ASSERT (((__tdata_load_end__ >= __FLASH_segment_start__) && (__tdata_load_end__ <= __FLASH_segment_end__)), error: .tdata is too large to fit in FLASH memory segment) .tdata_run 0x20000774 0x0 @@ -917,249 +950,233 @@ LOAD THUMB Debug/../../obj/xcp.o END GROUP OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/../bin/openbtl_ek_lm3s8962.elf elf32-littlearm) -.debug_frame 0x00000000 0x195c +.debug_frame 0x00000000 0x18f0 .debug_frame 0x00000000 0x404 THUMB Debug/../../obj/sysctl.o .debug_frame 0x00000404 0x18c THUMB Debug/../../obj/interrupt.o - .debug_frame 0x00000590 0x70 THUMB Debug/../../obj/cpulib.o - .debug_frame 0x00000600 0x434 THUMB Debug/../../obj/gpio.o - .debug_frame 0x00000a34 0x18c THUMB Debug/../../obj/flashlib.o - .debug_frame 0x00000bc0 0x4d8 THUMB Debug/../../obj/uartlib.o - .debug_frame 0x00001098 0x2ec THUMB Debug/../../obj/canlib.o - .debug_frame 0x00001384 0x2c THUMB Debug/../../obj/main.o - .debug_frame 0x000013b0 0x20 THUMB Debug/../../obj/vectors.o - .debug_frame 0x000013d0 0x5c THUMB Debug/../../obj/cpu.o - .debug_frame 0x0000142c 0x13c THUMB Debug/../../obj/flash.o - .debug_frame 0x00001568 0x6c THUMB Debug/../../obj/nvm.o - .debug_frame 0x000015d4 0x5c THUMB Debug/../../obj/timer.o - .debug_frame 0x00001630 0x70 THUMB Debug/../../obj/uart.o - .debug_frame 0x000016a0 0x80 THUMB Debug/../../obj/can.o - .debug_frame 0x00001720 0x2c THUMB Debug/../../obj/assert.o - .debug_frame 0x0000174c 0x48 THUMB Debug/../../obj/backdoor.o - .debug_frame 0x00001794 0x48 THUMB Debug/../../obj/boot.o - .debug_frame 0x000017dc 0xdc THUMB Debug/../../obj/com.o - .debug_frame 0x000018b8 0x30 THUMB Debug/../../obj/cop.o - .debug_frame 0x000018e8 0x74 THUMB Debug/../../obj/xcp.o + .debug_frame 0x00000590 0x434 THUMB Debug/../../obj/gpio.o + .debug_frame 0x000009c4 0x178 THUMB Debug/../../obj/flashlib.o + .debug_frame 0x00000b3c 0x4d8 THUMB Debug/../../obj/uartlib.o + .debug_frame 0x00001014 0x2ec THUMB Debug/../../obj/canlib.o + .debug_frame 0x00001300 0x2c THUMB Debug/../../obj/main.o + .debug_frame 0x0000132c 0x20 THUMB Debug/../../obj/vectors.o + .debug_frame 0x0000134c 0x60 THUMB Debug/../../obj/cpu.o + .debug_frame 0x000013ac 0x150 THUMB Debug/../../obj/flash.o + .debug_frame 0x000014fc 0x6c THUMB Debug/../../obj/nvm.o + .debug_frame 0x00001568 0x5c THUMB Debug/../../obj/timer.o + .debug_frame 0x000015c4 0x70 THUMB Debug/../../obj/uart.o + .debug_frame 0x00001634 0x7c THUMB Debug/../../obj/can.o + .debug_frame 0x000016b0 0x2c THUMB Debug/../../obj/assert.o + .debug_frame 0x000016dc 0x48 THUMB Debug/../../obj/backdoor.o + .debug_frame 0x00001724 0x48 THUMB Debug/../../obj/boot.o + .debug_frame 0x0000176c 0xe0 THUMB Debug/../../obj/com.o + .debug_frame 0x0000184c 0x30 THUMB Debug/../../obj/cop.o + .debug_frame 0x0000187c 0x74 THUMB Debug/../../obj/xcp.o -.debug_info 0x00000000 0x4b92 - .debug_info 0x00000000 0x844 THUMB Debug/../../obj/sysctl.o - .debug_info 0x00000844 0x379 THUMB Debug/../../obj/interrupt.o - .debug_info 0x00000bbd 0x110 THUMB Debug/../../obj/cpulib.o - .debug_info 0x00000ccd 0x96b THUMB Debug/../../obj/gpio.o - .debug_info 0x00001638 0x422 THUMB Debug/../../obj/flashlib.o - .debug_info 0x00001a5a 0x9af THUMB Debug/../../obj/uartlib.o - .debug_info 0x00002409 0xa67 THUMB Debug/../../obj/canlib.o - .debug_info 0x00002e70 0x5a THUMB Debug/../../obj/hooks.o - .debug_info 0x00002eca 0x90 THUMB Debug/../../obj/main.o - .debug_info 0x00002f5a 0xfd THUMB Debug/../../obj/cstart.o - .debug_info 0x00003057 0xf0 THUMB Debug/../../obj/vectors.o - .debug_info 0x00003147 0x139 THUMB Debug/../../obj/cpu.o - .debug_info 0x00003280 0x66c THUMB Debug/../../obj/flash.o - .debug_info 0x000038ec 0x15a THUMB Debug/../../obj/nvm.o - .debug_info 0x00003a46 0x12c THUMB Debug/../../obj/timer.o - .debug_info 0x00003b72 0x275 THUMB Debug/../../obj/uart.o - .debug_info 0x00003de7 0x2c6 THUMB Debug/../../obj/can.o - .debug_info 0x000040ad 0xe4 THUMB Debug/../../obj/assert.o - .debug_info 0x00004191 0xc0 THUMB Debug/../../obj/backdoor.o - .debug_info 0x00004251 0x88 THUMB Debug/../../obj/boot.o - .debug_info 0x000042d9 0x251 THUMB Debug/../../obj/com.o - .debug_info 0x0000452a 0x86 THUMB Debug/../../obj/cop.o - .debug_info 0x000045b0 0x5e2 THUMB Debug/../../obj/xcp.o +.debug_info 0x00000000 0x84d0 + .debug_info 0x00000000 0xca4 THUMB Debug/../../obj/sysctl.o + .debug_info 0x00000ca4 0x545 THUMB Debug/../../obj/interrupt.o + .debug_info 0x000011e9 0x15bc THUMB Debug/../../obj/gpio.o + .debug_info 0x000027a5 0x5ed THUMB Debug/../../obj/flashlib.o + .debug_info 0x00002d92 0x13b8 THUMB Debug/../../obj/uartlib.o + .debug_info 0x0000414a 0x17d9 THUMB Debug/../../obj/canlib.o + .debug_info 0x00005923 0x197 THUMB Debug/../../obj/main.o + .debug_info 0x00005aba 0xfd THUMB Debug/../../obj/cstart.o + .debug_info 0x00005bb7 0x134 THUMB Debug/../../obj/vectors.o + .debug_info 0x00005ceb 0x1d0 THUMB Debug/../../obj/cpu.o + .debug_info 0x00005ebb 0x89d THUMB Debug/../../obj/flash.o + .debug_info 0x00006758 0x241 THUMB Debug/../../obj/nvm.o + .debug_info 0x00006999 0x13e THUMB Debug/../../obj/timer.o + .debug_info 0x00006ad7 0x4e5 THUMB Debug/../../obj/uart.o + .debug_info 0x00006fbc 0x557 THUMB Debug/../../obj/can.o + .debug_info 0x00007513 0xf8 THUMB Debug/../../obj/assert.o + .debug_info 0x0000760b 0x121 THUMB Debug/../../obj/backdoor.o + .debug_info 0x0000772c 0x141 THUMB Debug/../../obj/boot.o + .debug_info 0x0000786d 0x3e0 THUMB Debug/../../obj/com.o + .debug_info 0x00007c4d 0x88 THUMB Debug/../../obj/cop.o + .debug_info 0x00007cd5 0x7fb THUMB Debug/../../obj/xcp.o -.debug_abbrev 0x00000000 0x1675 - .debug_abbrev 0x00000000 0x1a5 THUMB Debug/../../obj/sysctl.o - .debug_abbrev 0x000001a5 0x172 THUMB Debug/../../obj/interrupt.o - .debug_abbrev 0x00000317 0xa8 THUMB Debug/../../obj/cpulib.o - .debug_abbrev 0x000003bf 0x125 THUMB Debug/../../obj/gpio.o - .debug_abbrev 0x000004e4 0x1a3 THUMB Debug/../../obj/flashlib.o - .debug_abbrev 0x00000687 0x11e THUMB Debug/../../obj/uartlib.o - .debug_abbrev 0x000007a5 0x1fa THUMB Debug/../../obj/canlib.o - .debug_abbrev 0x0000099f 0x28 THUMB Debug/../../obj/hooks.o - .debug_abbrev 0x000009c7 0x5f THUMB Debug/../../obj/main.o - .debug_abbrev 0x00000a26 0x14 THUMB Debug/../../obj/cstart.o - .debug_abbrev 0x00000a3a 0xbe THUMB Debug/../../obj/vectors.o - .debug_abbrev 0x00000af8 0xaf THUMB Debug/../../obj/cpu.o - .debug_abbrev 0x00000ba7 0x22e THUMB Debug/../../obj/flash.o - .debug_abbrev 0x00000dd5 0xba THUMB Debug/../../obj/nvm.o - .debug_abbrev 0x00000e8f 0xe8 THUMB Debug/../../obj/timer.o - .debug_abbrev 0x00000f77 0x161 THUMB Debug/../../obj/uart.o - .debug_abbrev 0x000010d8 0x14c THUMB Debug/../../obj/can.o - .debug_abbrev 0x00001224 0x7c THUMB Debug/../../obj/assert.o - .debug_abbrev 0x000012a0 0x5b THUMB Debug/../../obj/backdoor.o - .debug_abbrev 0x000012fb 0x3f THUMB Debug/../../obj/boot.o - .debug_abbrev 0x0000133a 0x11c THUMB Debug/../../obj/com.o - .debug_abbrev 0x00001456 0x3f THUMB Debug/../../obj/cop.o - .debug_abbrev 0x00001495 0x1e0 THUMB Debug/../../obj/xcp.o +.debug_abbrev 0x00000000 0x1d43 + .debug_abbrev 0x00000000 0x207 THUMB Debug/../../obj/sysctl.o + .debug_abbrev 0x00000207 0x1ea THUMB Debug/../../obj/interrupt.o + .debug_abbrev 0x000003f1 0x18e THUMB Debug/../../obj/gpio.o + .debug_abbrev 0x0000057f 0x203 THUMB Debug/../../obj/flashlib.o + .debug_abbrev 0x00000782 0x175 THUMB Debug/../../obj/uartlib.o + .debug_abbrev 0x000008f7 0x24e THUMB Debug/../../obj/canlib.o + .debug_abbrev 0x00000b45 0xc0 THUMB Debug/../../obj/main.o + .debug_abbrev 0x00000c05 0x14 THUMB Debug/../../obj/cstart.o + .debug_abbrev 0x00000c19 0xf7 THUMB Debug/../../obj/vectors.o + .debug_abbrev 0x00000d10 0x10e THUMB Debug/../../obj/cpu.o + .debug_abbrev 0x00000e1e 0x2df THUMB Debug/../../obj/flash.o + .debug_abbrev 0x000010fd 0x123 THUMB Debug/../../obj/nvm.o + .debug_abbrev 0x00001220 0x101 THUMB Debug/../../obj/timer.o + .debug_abbrev 0x00001321 0x1ea THUMB Debug/../../obj/uart.o + .debug_abbrev 0x0000150b 0x1f6 THUMB Debug/../../obj/can.o + .debug_abbrev 0x00001701 0x9b THUMB Debug/../../obj/assert.o + .debug_abbrev 0x0000179c 0x9d THUMB Debug/../../obj/backdoor.o + .debug_abbrev 0x00001839 0x6e THUMB Debug/../../obj/boot.o + .debug_abbrev 0x000018a7 0x1c9 THUMB Debug/../../obj/com.o + .debug_abbrev 0x00001a70 0x42 THUMB Debug/../../obj/cop.o + .debug_abbrev 0x00001ab2 0x291 THUMB Debug/../../obj/xcp.o -.debug_loc 0x00000000 0x48e0 - .debug_loc 0x00000000 0x813 THUMB Debug/../../obj/sysctl.o - .debug_loc 0x00000813 0x354 THUMB Debug/../../obj/interrupt.o - .debug_loc 0x00000b67 0xe1c THUMB Debug/../../obj/gpio.o - .debug_loc 0x00001983 0x43c THUMB Debug/../../obj/flashlib.o - .debug_loc 0x00001dbf 0xda6 THUMB Debug/../../obj/uartlib.o - .debug_loc 0x00002b65 0xfc9 THUMB Debug/../../obj/canlib.o - .debug_loc 0x00003b2e 0x20 THUMB Debug/../../obj/main.o - .debug_loc 0x00003b4e 0xbf THUMB Debug/../../obj/cpu.o - .debug_loc 0x00003c0d 0x63e THUMB Debug/../../obj/flash.o - .debug_loc 0x0000424b 0x7f THUMB Debug/../../obj/nvm.o - .debug_loc 0x000042ca 0x20 THUMB Debug/../../obj/timer.o - .debug_loc 0x000042ea 0x190 THUMB Debug/../../obj/uart.o - .debug_loc 0x0000447a 0x11a THUMB Debug/../../obj/can.o - .debug_loc 0x00004594 0x46 THUMB Debug/../../obj/assert.o - .debug_loc 0x000045da 0x40 THUMB Debug/../../obj/backdoor.o - .debug_loc 0x0000461a 0x40 THUMB Debug/../../obj/boot.o - .debug_loc 0x0000465a 0x9c THUMB Debug/../../obj/com.o - .debug_loc 0x000046f6 0x1ea THUMB Debug/../../obj/xcp.o +.debug_loc 0x00000000 0x531d + .debug_loc 0x00000000 0xa92 THUMB Debug/../../obj/sysctl.o + .debug_loc 0x00000a92 0x432 THUMB Debug/../../obj/interrupt.o + .debug_loc 0x00000ec4 0xf68 THUMB Debug/../../obj/gpio.o + .debug_loc 0x00001e2c 0x525 THUMB Debug/../../obj/flashlib.o + .debug_loc 0x00002351 0xe9d THUMB Debug/../../obj/uartlib.o + .debug_loc 0x000031ee 0x1147 THUMB Debug/../../obj/canlib.o + .debug_loc 0x00004335 0x20 THUMB Debug/../../obj/main.o + .debug_loc 0x00004355 0xc9 THUMB Debug/../../obj/cpu.o + .debug_loc 0x0000441e 0x679 THUMB Debug/../../obj/flash.o + .debug_loc 0x00004a97 0xc5 THUMB Debug/../../obj/nvm.o + .debug_loc 0x00004b5c 0x20 THUMB Debug/../../obj/timer.o + .debug_loc 0x00004b7c 0x150 THUMB Debug/../../obj/uart.o + .debug_loc 0x00004ccc 0x15f THUMB Debug/../../obj/can.o + .debug_loc 0x00004e2b 0x71 THUMB Debug/../../obj/assert.o + .debug_loc 0x00004e9c 0x40 THUMB Debug/../../obj/backdoor.o + .debug_loc 0x00004edc 0x40 THUMB Debug/../../obj/boot.o + .debug_loc 0x00004f1c 0x9f THUMB Debug/../../obj/com.o + .debug_loc 0x00004fbb 0x362 THUMB Debug/../../obj/xcp.o -.debug_aranges 0x00000000 0x950 +.debug_aranges 0x00000000 0x910 .debug_aranges 0x00000000 0x178 THUMB Debug/../../obj/sysctl.o .debug_aranges 0x00000178 0x90 THUMB Debug/../../obj/interrupt.o .debug_aranges - 0x00000208 0x48 THUMB Debug/../../obj/cpulib.o + 0x00000208 0x128 THUMB Debug/../../obj/gpio.o .debug_aranges - 0x00000250 0x128 THUMB Debug/../../obj/gpio.o + 0x00000330 0x98 THUMB Debug/../../obj/flashlib.o .debug_aranges - 0x00000378 0x98 THUMB Debug/../../obj/flashlib.o + 0x000003c8 0x160 THUMB Debug/../../obj/uartlib.o .debug_aranges - 0x00000410 0x160 THUMB Debug/../../obj/uartlib.o + 0x00000528 0xd0 THUMB Debug/../../obj/canlib.o .debug_aranges - 0x00000570 0xd0 THUMB Debug/../../obj/canlib.o + 0x000005f8 0x20 THUMB Debug/../../obj/main.o .debug_aranges - 0x00000640 0x20 THUMB Debug/../../obj/main.o + 0x00000618 0x20 THUMB Debug/../../obj/cstart.o .debug_aranges - 0x00000660 0x20 THUMB Debug/../../obj/cstart.o + 0x00000638 0x20 THUMB Debug/../../obj/vectors.o .debug_aranges - 0x00000680 0x20 THUMB Debug/../../obj/vectors.o + 0x00000658 0x30 THUMB Debug/../../obj/cpu.o .debug_aranges - 0x000006a0 0x30 THUMB Debug/../../obj/cpu.o + 0x00000688 0x70 THUMB Debug/../../obj/flash.o .debug_aranges - 0x000006d0 0x68 THUMB Debug/../../obj/flash.o + 0x000006f8 0x40 THUMB Debug/../../obj/nvm.o .debug_aranges - 0x00000738 0x40 THUMB Debug/../../obj/nvm.o + 0x00000738 0x38 THUMB Debug/../../obj/timer.o .debug_aranges - 0x00000778 0x38 THUMB Debug/../../obj/timer.o + 0x00000770 0x30 THUMB Debug/../../obj/uart.o .debug_aranges - 0x000007b0 0x30 THUMB Debug/../../obj/uart.o + 0x000007a0 0x30 THUMB Debug/../../obj/can.o .debug_aranges - 0x000007e0 0x30 THUMB Debug/../../obj/can.o + 0x000007d0 0x20 THUMB Debug/../../obj/assert.o .debug_aranges - 0x00000810 0x20 THUMB Debug/../../obj/assert.o + 0x000007f0 0x28 THUMB Debug/../../obj/backdoor.o .debug_aranges - 0x00000830 0x28 THUMB Debug/../../obj/backdoor.o + 0x00000818 0x28 THUMB Debug/../../obj/boot.o .debug_aranges - 0x00000858 0x28 THUMB Debug/../../obj/boot.o + 0x00000840 0x68 THUMB Debug/../../obj/com.o .debug_aranges - 0x00000880 0x68 THUMB Debug/../../obj/com.o + 0x000008a8 0x28 THUMB Debug/../../obj/cop.o .debug_aranges - 0x000008e8 0x28 THUMB Debug/../../obj/cop.o - .debug_aranges - 0x00000910 0x40 THUMB Debug/../../obj/xcp.o + 0x000008d0 0x40 THUMB Debug/../../obj/xcp.o -.debug_ranges 0x00000000 0x8f0 +.debug_ranges 0x00000000 0x900 .debug_ranges 0x00000000 0x168 THUMB Debug/../../obj/sysctl.o .debug_ranges 0x00000168 0x80 THUMB Debug/../../obj/interrupt.o - .debug_ranges 0x000001e8 0x38 THUMB Debug/../../obj/cpulib.o - .debug_ranges 0x00000220 0x118 THUMB Debug/../../obj/gpio.o - .debug_ranges 0x00000338 0x88 THUMB Debug/../../obj/flashlib.o - .debug_ranges 0x000003c0 0x150 THUMB Debug/../../obj/uartlib.o - .debug_ranges 0x00000510 0xf0 THUMB Debug/../../obj/canlib.o - .debug_ranges 0x00000600 0x10 THUMB Debug/../../obj/main.o - .debug_ranges 0x00000610 0x10 THUMB Debug/../../obj/vectors.o - .debug_ranges 0x00000620 0x20 THUMB Debug/../../obj/cpu.o - .debug_ranges 0x00000640 0x70 THUMB Debug/../../obj/flash.o - .debug_ranges 0x000006b0 0x30 THUMB Debug/../../obj/nvm.o - .debug_ranges 0x000006e0 0x40 THUMB Debug/../../obj/timer.o - .debug_ranges 0x00000720 0xa0 THUMB Debug/../../obj/uart.o - .debug_ranges 0x000007c0 0x20 THUMB Debug/../../obj/can.o - .debug_ranges 0x000007e0 0x10 THUMB Debug/../../obj/assert.o - .debug_ranges 0x000007f0 0x18 THUMB Debug/../../obj/backdoor.o - .debug_ranges 0x00000808 0x18 THUMB Debug/../../obj/boot.o - .debug_ranges 0x00000820 0x58 THUMB Debug/../../obj/com.o - .debug_ranges 0x00000878 0x18 THUMB Debug/../../obj/cop.o - .debug_ranges 0x00000890 0x60 THUMB Debug/../../obj/xcp.o + .debug_ranges 0x000001e8 0x118 THUMB Debug/../../obj/gpio.o + .debug_ranges 0x00000300 0x88 THUMB Debug/../../obj/flashlib.o + .debug_ranges 0x00000388 0x150 THUMB Debug/../../obj/uartlib.o + .debug_ranges 0x000004d8 0xc0 THUMB Debug/../../obj/canlib.o + .debug_ranges 0x00000598 0x10 THUMB Debug/../../obj/main.o + .debug_ranges 0x000005a8 0x10 THUMB Debug/../../obj/vectors.o + .debug_ranges 0x000005b8 0x20 THUMB Debug/../../obj/cpu.o + .debug_ranges 0x000005d8 0x60 THUMB Debug/../../obj/flash.o + .debug_ranges 0x00000638 0x30 THUMB Debug/../../obj/nvm.o + .debug_ranges 0x00000668 0x40 THUMB Debug/../../obj/timer.o + .debug_ranges 0x000006a8 0xb0 THUMB Debug/../../obj/uart.o + .debug_ranges 0x00000758 0x20 THUMB Debug/../../obj/can.o + .debug_ranges 0x00000778 0x10 THUMB Debug/../../obj/assert.o + .debug_ranges 0x00000788 0x18 THUMB Debug/../../obj/backdoor.o + .debug_ranges 0x000007a0 0x18 THUMB Debug/../../obj/boot.o + .debug_ranges 0x000007b8 0x58 THUMB Debug/../../obj/com.o + .debug_ranges 0x00000810 0x18 THUMB Debug/../../obj/cop.o + .debug_ranges 0x00000828 0xd8 THUMB Debug/../../obj/xcp.o -.debug_line 0x00000000 0x3606 - .debug_line 0x00000000 0x7f1 THUMB Debug/../../obj/sysctl.o - .debug_line 0x000007f1 0x2b6 THUMB Debug/../../obj/interrupt.o - .debug_line 0x00000aa7 0xff THUMB Debug/../../obj/cpulib.o - .debug_line 0x00000ba6 0x5ee THUMB Debug/../../obj/gpio.o - .debug_line 0x00001194 0x3e4 THUMB Debug/../../obj/flashlib.o - .debug_line 0x00001578 0x752 THUMB Debug/../../obj/uartlib.o - .debug_line 0x00001cca 0x610 THUMB Debug/../../obj/canlib.o - .debug_line 0x000022da 0x1d THUMB Debug/../../obj/hooks.o - .debug_line 0x000022f7 0x99 THUMB Debug/../../obj/main.o - .debug_line 0x00002390 0x14f THUMB Debug/../../obj/cstart.o - .debug_line 0x000024df 0x132 THUMB Debug/../../obj/vectors.o - .debug_line 0x00002611 0xe8 THUMB Debug/../../obj/cpu.o - .debug_line 0x000026f9 0x257 THUMB Debug/../../obj/flash.o - .debug_line 0x00002950 0x104 THUMB Debug/../../obj/nvm.o - .debug_line 0x00002a54 0xfb THUMB Debug/../../obj/timer.o - .debug_line 0x00002b4f 0x138 THUMB Debug/../../obj/uart.o - .debug_line 0x00002c87 0x1a7 THUMB Debug/../../obj/can.o - .debug_line 0x00002e2e 0x120 THUMB Debug/../../obj/assert.o - .debug_line 0x00002f4e 0x140 THUMB Debug/../../obj/backdoor.o - .debug_line 0x0000308e 0xb5 THUMB Debug/../../obj/boot.o - .debug_line 0x00003143 0x1fc THUMB Debug/../../obj/com.o - .debug_line 0x0000333f 0xab THUMB Debug/../../obj/cop.o - .debug_line 0x000033ea 0x21c THUMB Debug/../../obj/xcp.o +.debug_line 0x00000000 0x3e8d + .debug_line 0x00000000 0x85b THUMB Debug/../../obj/sysctl.o + .debug_line 0x0000085b 0x33c THUMB Debug/../../obj/interrupt.o + .debug_line 0x00000b97 0x68a THUMB Debug/../../obj/gpio.o + .debug_line 0x00001221 0x450 THUMB Debug/../../obj/flashlib.o + .debug_line 0x00001671 0x7c7 THUMB Debug/../../obj/uartlib.o + .debug_line 0x00001e38 0x6b7 THUMB Debug/../../obj/canlib.o + .debug_line 0x000024ef 0x17f THUMB Debug/../../obj/main.o + .debug_line 0x0000266e 0x178 THUMB Debug/../../obj/cstart.o + .debug_line 0x000027e6 0x1a2 THUMB Debug/../../obj/vectors.o + .debug_line 0x00002988 0x17c THUMB Debug/../../obj/cpu.o + .debug_line 0x00002b04 0x363 THUMB Debug/../../obj/flash.o + .debug_line 0x00002e67 0x10f THUMB Debug/../../obj/nvm.o + .debug_line 0x00002f76 0xf8 THUMB Debug/../../obj/timer.o + .debug_line 0x0000306e 0x2a5 THUMB Debug/../../obj/uart.o + .debug_line 0x00003313 0x28c THUMB Debug/../../obj/can.o + .debug_line 0x0000359f 0x127 THUMB Debug/../../obj/assert.o + .debug_line 0x000036c6 0x157 THUMB Debug/../../obj/backdoor.o + .debug_line 0x0000381d 0x159 THUMB Debug/../../obj/boot.o + .debug_line 0x00003976 0x214 THUMB Debug/../../obj/com.o + .debug_line 0x00003b8a 0xa9 THUMB Debug/../../obj/cop.o + .debug_line 0x00003c33 0x25a THUMB Debug/../../obj/xcp.o -.debug_str 0x00000000 0x248c - .debug_str 0x00000000 0x571 THUMB Debug/../../obj/sysctl.o - 0x598 (size before relaxing) - .debug_str 0x00000571 0x1a5 THUMB Debug/../../obj/interrupt.o - 0x28c (size before relaxing) - .debug_str 0x00000716 0xbe THUMB Debug/../../obj/cpulib.o - 0x119 (size before relaxing) - .debug_str 0x000007d4 0x376 THUMB Debug/../../obj/gpio.o - 0x449 (size before relaxing) - .debug_str 0x00000b4a 0x22d THUMB Debug/../../obj/flashlib.o - 0x315 (size before relaxing) - .debug_str 0x00000d77 0x38e THUMB Debug/../../obj/uartlib.o - 0x4a1 (size before relaxing) - .debug_str 0x00001105 0x4f1 THUMB Debug/../../obj/canlib.o - 0x5d7 (size before relaxing) - .debug_str 0x000015f6 0x5c THUMB Debug/../../obj/hooks.o - 0x100 (size before relaxing) - .debug_str 0x00001652 0x60 THUMB Debug/../../obj/main.o - 0x109 (size before relaxing) - .debug_str 0x000016b2 0xbf THUMB Debug/../../obj/vectors.o - 0x163 (size before relaxing) - .debug_str 0x00001771 0xd8 THUMB Debug/../../obj/cpu.o - 0x187 (size before relaxing) - .debug_str 0x00001849 0x267 THUMB Debug/../../obj/flash.o - 0x34f (size before relaxing) - .debug_str 0x00001ab0 0xaa THUMB Debug/../../obj/nvm.o - 0x17f (size before relaxing) - .debug_str 0x00001b5a 0xcd THUMB Debug/../../obj/timer.o - 0x17c (size before relaxing) - .debug_str 0x00001c27 0x10e THUMB Debug/../../obj/uart.o - 0x1e7 (size before relaxing) - .debug_str 0x00001d35 0xf5 THUMB Debug/../../obj/can.o - 0x2f8 (size before relaxing) - .debug_str 0x00001e2a 0xac THUMB Debug/../../obj/assert.o - 0x165 (size before relaxing) - .debug_str 0x00001ed6 0xa8 THUMB Debug/../../obj/backdoor.o +.debug_str 0x00000000 0x23da + .debug_str 0x00000000 0x5a3 THUMB Debug/../../obj/sysctl.o + 0x5f9 (size before relaxing) + .debug_str 0x000005a3 0x1d3 THUMB Debug/../../obj/interrupt.o + 0x2e5 (size before relaxing) + .debug_str 0x00000776 0x376 THUMB Debug/../../obj/gpio.o + 0x4a3 (size before relaxing) + .debug_str 0x00000aec 0x22d THUMB Debug/../../obj/flashlib.o + 0x36f (size before relaxing) + .debug_str 0x00000d19 0x38e THUMB Debug/../../obj/uartlib.o + 0x4f2 (size before relaxing) + .debug_str 0x000010a7 0x4f1 THUMB Debug/../../obj/canlib.o + 0x631 (size before relaxing) + .debug_str 0x00001598 0x72 THUMB Debug/../../obj/main.o 0x160 (size before relaxing) - .debug_str 0x00001f7e 0x7d THUMB Debug/../../obj/boot.o + .debug_str 0x0000160a 0xb4 THUMB Debug/../../obj/vectors.o + 0x183 (size before relaxing) + .debug_str 0x000016be 0x13b THUMB Debug/../../obj/cpu.o + 0x1ea (size before relaxing) + .debug_str 0x000017f9 0x25e THUMB Debug/../../obj/flash.o + 0x3ab (size before relaxing) + .debug_str 0x00001a57 0x98 THUMB Debug/../../obj/nvm.o + 0x1d0 (size before relaxing) + .debug_str 0x00001aef 0xc2 THUMB Debug/../../obj/timer.o + 0x17c (size before relaxing) + .debug_str 0x00001bb1 0x10e THUMB Debug/../../obj/uart.o + 0x2af (size before relaxing) + .debug_str 0x00001cbf 0xf5 THUMB Debug/../../obj/can.o + 0x3a5 (size before relaxing) + .debug_str 0x00001db4 0x95 THUMB Debug/../../obj/assert.o + 0x170 (size before relaxing) + .debug_str 0x00001e49 0xb7 THUMB Debug/../../obj/backdoor.o + 0x18c (size before relaxing) + .debug_str 0x00001f00 0x83 THUMB Debug/../../obj/boot.o + 0x17d (size before relaxing) + .debug_str 0x00001f83 0x1c9 THUMB Debug/../../obj/com.o + 0x330 (size before relaxing) + .debug_str 0x0000214c 0x6a THUMB Debug/../../obj/cop.o 0x121 (size before relaxing) - .debug_str 0x00001ffb 0x1b2 THUMB Debug/../../obj/com.o - 0x290 (size before relaxing) - .debug_str 0x000021ad 0x7d THUMB Debug/../../obj/cop.o - 0x121 (size before relaxing) - .debug_str 0x0000222a 0x262 THUMB Debug/../../obj/xcp.o - 0x343 (size before relaxing) + .debug_str 0x000021b6 0x224 THUMB Debug/../../obj/xcp.o + 0x3d3 (size before relaxing) .comment 0x00000000 0x4e .comment 0x00000000 0x4e THUMB Debug/../../obj/sysctl.o 0x4f (size before relaxing) .comment 0x00000000 0x4f THUMB Debug/../../obj/interrupt.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/cpulib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/gpio.o .comment 0x00000000 0x4f THUMB Debug/../../obj/flashlib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/uartlib.o .comment 0x00000000 0x4f THUMB Debug/../../obj/canlib.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/hooks.o .comment 0x00000000 0x4f THUMB Debug/../../obj/main.o .comment 0x00000000 0x4f THUMB Debug/../../obj/vectors.o .comment 0x00000000 0x4f THUMB Debug/../../obj/cpu.o @@ -1176,50 +1193,46 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/B .comment 0x00000000 0x4f THUMB Debug/../../obj/xcp.o .ARM.attributes - 0x00000000 0x10 + 0x00000000 0x33 .ARM.attributes - 0x00000000 0x10 THUMB Debug/../../obj/sysctl.o + 0x00000000 0x33 THUMB Debug/../../obj/sysctl.o .ARM.attributes - 0x00000010 0x10 THUMB Debug/../../obj/interrupt.o + 0x00000033 0x33 THUMB Debug/../../obj/interrupt.o .ARM.attributes - 0x00000020 0x10 THUMB Debug/../../obj/cpulib.o + 0x00000066 0x33 THUMB Debug/../../obj/gpio.o .ARM.attributes - 0x00000030 0x10 THUMB Debug/../../obj/gpio.o + 0x00000099 0x33 THUMB Debug/../../obj/flashlib.o .ARM.attributes - 0x00000040 0x10 THUMB Debug/../../obj/flashlib.o + 0x000000cc 0x33 THUMB Debug/../../obj/uartlib.o .ARM.attributes - 0x00000050 0x10 THUMB Debug/../../obj/uartlib.o + 0x000000ff 0x33 THUMB Debug/../../obj/canlib.o .ARM.attributes - 0x00000060 0x10 THUMB Debug/../../obj/canlib.o + 0x00000132 0x33 THUMB Debug/../../obj/main.o .ARM.attributes - 0x00000070 0x10 THUMB Debug/../../obj/hooks.o + 0x00000165 0x23 THUMB Debug/../../obj/cstart.o .ARM.attributes - 0x00000080 0x10 THUMB Debug/../../obj/main.o + 0x00000188 0x33 THUMB Debug/../../obj/vectors.o .ARM.attributes - 0x00000090 0x10 THUMB Debug/../../obj/cstart.o + 0x000001bb 0x33 THUMB Debug/../../obj/cpu.o .ARM.attributes - 0x000000a0 0x10 THUMB Debug/../../obj/vectors.o + 0x000001ee 0x33 THUMB Debug/../../obj/flash.o .ARM.attributes - 0x000000b0 0x10 THUMB Debug/../../obj/cpu.o + 0x00000221 0x33 THUMB Debug/../../obj/nvm.o .ARM.attributes - 0x000000c0 0x10 THUMB Debug/../../obj/flash.o + 0x00000254 0x33 THUMB Debug/../../obj/timer.o .ARM.attributes - 0x000000d0 0x10 THUMB Debug/../../obj/nvm.o + 0x00000287 0x33 THUMB Debug/../../obj/uart.o .ARM.attributes - 0x000000e0 0x10 THUMB Debug/../../obj/timer.o + 0x000002ba 0x33 THUMB Debug/../../obj/can.o .ARM.attributes - 0x000000f0 0x10 THUMB Debug/../../obj/uart.o + 0x000002ed 0x33 THUMB Debug/../../obj/assert.o .ARM.attributes - 0x00000100 0x10 THUMB Debug/../../obj/can.o + 0x00000320 0x33 THUMB Debug/../../obj/backdoor.o .ARM.attributes - 0x00000110 0x10 THUMB Debug/../../obj/assert.o + 0x00000353 0x33 THUMB Debug/../../obj/boot.o .ARM.attributes - 0x00000120 0x10 THUMB Debug/../../obj/backdoor.o + 0x00000386 0x33 THUMB Debug/../../obj/com.o .ARM.attributes - 0x00000130 0x10 THUMB Debug/../../obj/boot.o + 0x000003b9 0x33 THUMB Debug/../../obj/cop.o .ARM.attributes - 0x00000140 0x10 THUMB Debug/../../obj/com.o - .ARM.attributes - 0x00000150 0x10 THUMB Debug/../../obj/cop.o - .ARM.attributes - 0x00000160 0x10 THUMB Debug/../../obj/xcp.o + 0x000003ec 0x33 THUMB Debug/../../obj/xcp.o diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.srec index 765eb0f7..719ab014 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/bin/openbtl_ek_lm3s8962.srec @@ -1,581 +1,571 @@ S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF -S1130000740700207B0100006514000065140000E3 -S113001065140000651400006514000065140000F8 -S113002065140000651400006514000065140000E8 -S113003065140000651400006514000065140000D8 -S113004065140000651400006514000065140000C8 -S113005065140000651400006514000065140000B8 -S113006065140000651400006514000065140000A8 -S11300706514000065140000651400006514000098 -S11300806514000065140000651400006514000088 -S11300906514000065140000651400006514000078 -S11300A06514000065140000651400006514000068 -S11300B06514000065140000651400006514000058 -S11300C06514000065140000651400006514000048 -S11300D06514000065140000651400006514000038 -S11300E06514000065140000651400006514000028 -S11300F072B64B484B4901604B498D464B484C49BD -S11301004C4A00F07BF84C484C494D4A00F076F8D4 -S11301104C484D494D4A00F071F84D484D494E4AFE -S113012000F06CF84D484E494E4A00F067F84E48CE -S11301304E494F4A00F062F84E484F49002200F001 -S113014068F84E484E49091A082903DB0022026068 -S1130150043001603F484049884205D002680430B9 -S113016003B4904703BCF7E700208646EC4601F051 -S113017067FD00200021434A904772B62A498D4604 -S11301802A482B492B4A00F039F82B482B492C4A92 -S113019000F034F82B482C492C4A00F02FF82C4856 -S11301A02C492D4A00F02AF82C482D492D4A00F0FC -S11301B025F82D482D492E4A00F020F82D482E49C7 -S11301C0002200F026F82D482D49091A082903DBDE -S11301D000220260043001601E481F49884205D095 -S11301E00268043003B4904703BCF7E70020864656 -S11301F0EC4600200021234A9047FEE7884207D0BE -S1130200521A05D0037801300B700131013AF9D14B -S11302107047884202D002700130FAE7704700004C -S113022008ED00E00000000074070020082400002E -S11302300000002004000020880200008802000062 -S1130240C01E000008240000000000200000002060 -S1130250C01E0000C01E0000C01E0000C01E000022 -S1130260C01E0000C01E0000C01E0000C01E000012 -S11302700724000004000020F4040020F4040020FB -S10B02807405002025140000A0 -S1130288A0F58013013B012B40F28780454B98422F -S113029800F0838003F5807398427ED003F50073E1 -S11302A898427AD0404B984277D003F580739842AD -S11302B873D003F5007398426FD003F570539842D6 -S11302C86BD003F11023984267D0384B984264D01E -S11302D80133984261D0023398425ED00433984285 -S11302E85BD00833984258D01033984255D0203305 -S11302F8984252D0403398424FD0803398424CD0E1 -S113030840284AD0B0F1102F47D0294B984244D006 -S113031803F57D23984240D0264B98423DD0264B86 -S113032898423AD0703B984237D0B0F1101F34D07D -S1130338224B984231D003F5807398422DD0A3F50F -S1130348F873984229D01033984226D003F1005309 -S1130358984222D01A4B98421FD0013398421CD09D -S11303680233984219D00433984216D0154B984258 -S113037813D00133984210D0023398420DD0B0F113 -S1130388202F0AD0104B984207D0082807D00F4BCB -S1130398C31A584240EB03007047012070470120FC -S11303A8704700BF00011000000110100100002078 -S11303B800400010000110208000003000010010EF -S11303C8010010100100001001001020001010009E -S11303D810B50446FFF754FF20B909484FF4FC71DF -S11303E801F06AFB220FA1B2C4F3044401FA04F435 -S11303F8044B53F822301A6814431C6010BD00BF24 -S11304081C1F0000881F00000138FDD17047000040 -S1130418444B70B51A68044612F0E04F05D01A68C8 -S1130428414B1340B3F1805F01D1002C79DB3F4984 -S11304383F4A0B68166843F4006323F4800546F4C6 -S113044800669B070D60166001D5A00703D5E90770 -S113045819D5E20717D464F003031D40334B002E6B -S11304681D6005DA06F07003302B05D0702B02E00E -S113047805F03003302B02D14FF4805001E04FF4E3 -S11304880020FFF7C1FF25F45E5543F2F0732340C3 -S113049825F070051D43274B274A3340274E40213A -S11304A826401E4304F0080356EAC306204B116095 -S11304B802F108024BBF1E60156015601E60102013 -S11304C8FFF7A2FF1E4B25F0F865234025F003052E -S11304D81D4326F0FC5604F0FC531E43630007D565 -S11304E8184B26F48006234045F480051E4301E09A -S11304F826F0804620050BD4134A4FF400431168B4 -S1130508490601D4013BFAD125F4006526F40066B6 -S1130518064B10201D6010331E60BDE87040FFF7C5 -S113052873BF70BD00E00F400000FF7060E00F4033 -S113053870E00F408FDFFF7F58E00F4030200080CD -S11305480300C0070000404050E00F40624B70B504 -S11305581A6810331B68002BB4BF03F0700102F053 -S11305683001202936D004D869B1102940F0B1806F -S11305780FE0602956D0702951D0302940F0A98065 -S113058847F230505CE05549C2F3841051F820001A -S113059856E05349086810F0E04F46D00C685148BB -S11305A82040B0F1805F40D00C684E4820404E4C4B -S11305B8A04203D1096889B2022938D04848494978 -S11305C804682140494CA14233D10068484980B2AB -S11305D8484C1FE04249086810F0E04F2BD00C68E3 -S11305E840482040B0F1805F25D00C683D48204049 -S11305F83D4CA04203D1096889B202291DD038486C -S1130608384904682140394CA14218D100683A4954 -S11306183A4C80B200280CBF2046084610E04FF43C -S113062800400DE04FF480000AE0354808E0314806 -S113063806E02F4804E0334802E0304800E02E4842 -S1130648002B02DA13F4006F01E012F4006F28D1D2 -S11306582D49234D09682C6814F0E04F43F6E074E3 -S113066801EA04044FEA541405D02E681D4D3540A0 -S1130678B5F1805F05D1023401F01F0560430235EE -S113068804E0604301F01F0501356D00B0FBF5F08F -S113069811F4804F18BF4008090448BF800842F489 -S11306A88002510216D5002B0DDA590005D51A051A -S11306B803D44000C3F3865301E0C3F3C5530133A5 -S11306C8B0FBF3F070BDC2F3C3520132B0FBF2F0D9 -S11306D870BD002070BD00BF60E00F40C01E000068 -S11306E800E00F400000FF7000000110000003103C -S11306F80024F400001BB70000093D00C0C62D000B -S1130708C0E1E4007038390064E00F40462810B5B1 -S1130718044605D91A484FF4D57101F0CDF90DE016 -S1130728042804D1174B1A6842F4803213E00528D0 -S113073804D1144B1A6842F400320CE0062C04D19C -S1130748104B1A6842F4802205E00F2C05D10E4B99 -S11307581A6842F002021A6010BDA4F110031F2B9C -S113076805D8012202FA03F3084A136010BD2F2C9E -S113077805D90123303C03FA04F4054B1C6010BD71 -S1130788941F000024ED00E010E000E000E100E028 -S113079804E100E0462810B5044605D91A484FF488 -S11307A8F77101F089F90DE0042804D1174B1A6890 -S11307B822F4803213E0052804D1144B1A6822F479 -S11307C800320CE0062C04D1104B1A6822F4802263 -S11307D805E00F2C05D10E4B1A6822F002021A60AC -S11307E810BDA4F110031F2B05D8012202FA03F34C -S11307F8084A136010BD2F2C05D90123303C03FA95 -S113080804F4054B1C6010BD941F000024ED00E0A7 -S113081810E000E080E100E084E100E0B0F1402F66 -S113082845D0254B984242D0A3F5A62398423ED002 -S113083803F5A82398423AD0A3F5A623984236D0C4 -S113084803F5A823984232D0A3F5A62398422ED0C4 -S113085803F5A82398422AD0A3F55C33984226D0FE -S113086803F56033984222D0A3F55C3398421ED036 -S113087803F5603398421AD0A3F55C33984216D036 -S113088803F56033984212D0A3F55C3398420ED036 -S113089803F5603398420AD0A3F50833984208D088 -S11308A803F50C33C31A584240EB03007047012088 -S11308B870470120704700BF0080054070B50446AA -S11308C81646CDB2FFF7AAFF18B91048E42101F083 -S11308D8F3F8022E03D90D48E62101F0EDF8D4F817 -S11308E8003416F0010F14BF2B43AB4304F58062A8 -S11308F81360D4F8202416F0020F04F5846314BF9F -S1130908154322EA05051D6070BD00BF02200000E2 -S1130918F0B5044615461F46CEB2FFF77FFF20B94F -S113092842484FF4DD7101F0C7F86B1E012B08D95A -S1130938042D06D00C2D04D03C484FF4DF7101F08F -S1130948BBF8082F0FD00A2F0DD00C2F0BD0092F6E -S113095809D00B2F07D00D2F05D027B1334840F20B -S1130968C51101F0A9F8D4F8003515F0010F14BF2A -S11309783343B34304F5A0621360D4F8042515F097 -S1130988020F04F5A06314BF3243B24303F1040316 -S11309981A60D4F8083515F0040F14BF3343B34371 -S11309A804F5A1621360D4F8183515F0080F14BFC4 -S11309B83343B34304F5A3621360D4F80C2517F04A -S11309C8010F04F5A06314BF3243B24303F10C03CF -S11309D81A60D4F8103517F0020F14BF3343B34329 -S11309E804F5A2621360D4F8142517F0040F04F573 -S11309F8A26314BF3243B24303F104031A60D4F868 -S1130A081C2517F0080F04F5A26303F10C0314BFA7 -S1130A183243B2431A60D4F8282504F5A5630FB904 -S1130A28164301E022EA06061E60F0BD022000001B -S1130A3830B50446CDB2FFF7F1FE20B908484FF4AB -S1130A48647101F039F8204629460222FFF736FF7F -S1130A582046294604220823BDE83040FFF758BF42 -S1130A680220000030B50446CDB2FFF7D7FE20B906 -S1130A78084840F21F5101F01FF820462946022277 -S1130A88FFF71CFF2046294601220823BDE8304011 -S1130A98FFF73EBF02200000830510B5044603D0CB -S1130AA80B48842101F008F80A4B01221A6043F824 -S1130AB8144C094A143B08331A601A689207FCD488 -S1130AC8064B186810F0010018BF4FF0FF3010BD36 -S1130AD86B20000014D00F40020042A40CD00F4039 -S1130AE82DE9F041054688070C46164603D02848E8 -S1130AF8C82100F0E1FFB10703D02548C92100F05F -S1130B08DBFF244B01221A60234B1B68DA071ED42F -S1130B18224B234F234824491A462EE024F07F030E -S1130B28CCF8003007E0214B0434434455F8048BD7 -S1130B38043EC3F8008014F07C0801D13B680BB96B -S1130B48002EF0D110600B68DB07FCD405E0184ACE -S1130B58DFF84CC0174F14481146002EDED10EE0C2 -S1130B683C6055F804CBC0F800C01960D2F800C046 -S1130B781CF0010FFAD10434043E002EF0D10E4BC0 -S1130B88186810F0010018BF4FF0FF30BDE8F0817D -S1130B986B20000014D00F40A0E10F4008D00F4094 -S1130BA800D00F4004D00F40010042A400D10F40F0 -S1130BB820D00F4030D00F400CD00F40084B984243 -S1130BC80AD003F58053984208D003F58053C31A1A -S1130BD8584240EB030070470120704701207047DA -S1130BE800C0004010B50446FFF7E8FF20B90848E4 -S1130BF84FF4CF7100F060FFE36A43F01003E3623F -S1130C08236B43F4407343F00103236310BD00BF17 -S1130C18D820000010B50446FFF7D0FF20B90948D2 -S1130C284FF4DF7100F048FFA3691907FCD4E36AA5 -S1130C3823F01003E362236B23F4407323F00103CE -S1130C48236310BDD8200000F0B504460D461646AF -S1130C581F46FFF7B3FF20B92C4840F20D1100F0EE -S1130C682BFF26B929484FF4877100F025FF284B3C -S1130C781A6812F0E04F1DD01968264A0A40B2F1EA -S1130C88805F17D01968234A0A4023498A4203D14E -S1130C981B689BB2022B0DD01D4A1E4B11680B40DA -S1130CA81E498B4208D113689BB2002B0CBF10233A -S1130CB8082302E0102300E0082373439D4204D272 -S1130CC8124840F20F1100F0F7FE2046FFF7A2FF8A -S1130CD8B5EB061F236B04D243F020032363760885 -S1130CE802E023F020032363ED00B5FBF6F601369A -S1130CF8F3096362C6F3450600232046A662E76249 -S1130D08A361BDE8F040FFF76DBF00BFD820000025 -S1130D1800E00F400000FF70000001100000031005 -S1130D2810B50446FFF74AFF20B9064840F2E931F6 -S1130D3800F0C2FEA36913F0200F14BF00200120A5 -S1130D4810BD00BFD820000010B50446FFF736FFD9 -S1130D5820B9064840F2094100F0AEFEA369D8065E -S1130D6854BF20684FF0FF3010BD00BFD8200000EA -S1130D7830B50446CDB2FFF721FF20B9064840F24A -S1130D885B4100F099FEA3699A0602D4256001200C -S1130D9830BD002030BD00BFD8200000084B984269 -S1130DA80AD003F58053984208D003F58053C31A38 -S1130DB8584240EB030070470120704701207047F8 -S1130DC800000440094B98420DD003F58053984223 -S1130DD807D0A3F5005398420CBF37204FF0FF30DB -S1130DE87047392070473820704700BF001004400E -S1130DF881B00160002301E0009B01330093009B54 -S1130E08042BF9DD01B0704771B5054620F47E6006 -S1130E1820F01F00FFF7D6FF421C044603D11048F8 -S1130E28F92100F049FE0126A4F1300206FA02F67F -S1130E380C4B1B681E4002D02046FFF7ABFC2B6806 -S1130E48002301E0009B01330093009B042BF9DD90 -S1130E582D6816B12046FFF759FC284678BD00BF17 -S1130E684421000004E100E0F0B50446FFF796FFD2 -S1130E7820B9224840F2D91100F01EFE2046012173 -S1130E88FFF7B6FF04F120052846FFF7BDFF10F46D -S1130E980046F9D104F124073846B021FFF7A8FF2A -S1130EA8314604F13400FFF7A3FF314604F138005A -S1130EB8FFF79EFF01262846FFF7A6FF0004FAD491 -S1130EC8314628460136FFF793FF212EF3D13846E1 -S1130ED80C21FFF78DFF01262846FFF795FF010433 -S1130EE8FAD4314628460136FFF782FF212EF3D182 -S1130EF8201DBDE8F040FFF787BF00BF4421000074 -S1130F0810B50446FFF74AFF20B9074840F23A21D2 -S1130F1800F0D2FD2046FFF777FF20F001012046BC -S1130F28BDE81040FFF764BF4421000070B50546D2 -S1130F380C46FFF733FF20B932484FF4597100F0DB -S1130F48BBFD24B92F4840F2653100F0B5FD236894 -S1130F58023B0E2B04D92B4840F26B3100F0ACFD58 -S1130F686368013B072B04D926484FF45C7100F0F1 -S1130F78A3FDA368013B032B04D9224840F2753131 -S1130F8800F09AFDE368013BB3F5806F04D31D4874 -S1130F9840F27B3100F090FD2846FFF735FF064606 -S1130FA840F041012846FFF723FF616823680139AF -S1130FB8013B09031B0203F4706301F4E041194384 -S1130FC8E36805F10C00013B03F03F031943A368F0 -S1130FD8013B9B01DBB21943FFF70AFFE16805F106 -S1130FE818000139C1F38311FFF702FFF30726F054 -S1130FF84001284648BF26F04101BDE87040FFF78C -S1131008F7BE00BF4421000030B504460D46FFF783 -S1131018C5FE20B91A4840F2925100F04DFD032D47 -S11310282AD8DFE805F0020D151D04342046FFF721 -S1131038EBFE6FF01F0105462046FFF7D9FE1CE0C2 -S113104804F58070FFF7E0FE054604F582700EE0B3 -S113105804F59070FFF7D8FE054604F5927006E093 -S113106804F5B070FFF7D0FE054604F5B270FFF73B -S1131078CBFE45EA004500E00025284630BD00BF08 -S1131088442100002DE9F04F85B00446039115462C -S11310981E46FFF783FE20B9704840F25F6100F0F6 -S11310A80BFD039A531E1F2B04D96C484FF4CC61D3 -S11310B800F002FD042E04D9684840F2666100F08D -S11310C8FBFC04F1200304930498FFF79DFE03043A -S11310D8FAD42968B1F5006F3ABFAA68C2F380024E -S11310E80122042E00F2B780DFE806F0031E070A87 -S11310F8160001234FF4807711E000231F4616E001 -S113110800234FF480574FF4005E41F6FF764FF604 -S1131118FF784FF0D30C0FE001234FF490570026CB -S11311284FF4005EB04605E000234FF480779E46F6 -S11311381E4698464FF0930CA86810F0080F09D083 -S11311486E6822B11FFA86F8C6F30C4602E07605EB -S1131158F60C904600F02809B9F1280F00F0180998 -S113116808BF46F40046B9F1180F08BF46F4804694 -S113117810F0380F1CBF4FF0D30C47F480574CF0D5 -S1131188200C4AB18AB2C1F30C4141F4404141EA0E -S11311980E010192029107E049054EEAD14E4EF440 -S11311A8004ECDF808E00192D5F80CA081050AF0AC -S11311B80F0247EA02075CBF47F08007BFB2C207C5 -S11311C848BF47F40067800748BF47F48067DBB12E -S11311D8D5F810B004F13C09002313E05D1C554513 -S11311E81BF8031004DA1BF805209D1C41EA0221B0 -S11311F84846CDF800C0FFF7FBFDDDF800C009F153 -S113120804092B465345E9DB614604F12400FFF742 -S1131218EFFD04F128004146FFF7EAFD04F12C0034 -S11312283146FFF7E5FD04F130000199FFF7E0FDD1 -S113123804F134000299FFF7DBFD04F13800394664 -S1131248FFF7D6FD039B049803F03F0105B0BDE802 -S1131258F04FFFF7CDBD05B0BDE8F08F4421000085 -S11312682DE9F34F04460D461646DFB2FFF796FD07 -S113127820B9694840F2C17100F01EFC6B1E1F2B97 -S113128804D9654840F2C27100F016FC04F18408E0 -S1131298002F14BF7B217321404604F1800705F019 -S11312A83F05FFF7A5FD38462946FFF7A1FD384657 -S11312B8FFF7AAFD10F40042F9D104F18800009266 -S11312C8FFF7A2FD834604F18C00FFF79DFD8246DB -S11312D804F19000FFF798FD034604F1940001938C -S11312E8FFF792FD1FFA80F904F19800FFF78CFDCF -S11312F8009A80B210F4807FB260019B09F4005216 -S113130801D10AB902E00AB94022B26019F4804254 -S11313184FEAC9494FEAD94908D09BB243EA09437D -S11313283360B36843F00403B36002E04FEAA903EF -S11313383360410403D5B36843F48073B360C304D2 -S113134828D51FFA8AFA4FEACA43DB0C3AB11FFAC6 -S11313588BFB4BEA034373606FF0604203E09B101E -S1131368736040F2FF72934202D1B368590603D402 -S1131378B36843F00803B3601AF4004F03D0B368AA -S113138843F02803B3601AF4804F03D0B36843F0E2 -S11313981803B360020503D5B36843F00103B360CF -S11313A8430503D5B36843F00203B36001042FD5A2 -S11313B8B36800F00F0A13F04009C6F80CA015D161 -S11313C8D6F810B09C340FE02046FFF71DFD09F154 -S11313D80103043453450BF8090004DA000A0BF836 -S11313E8030009F102039946D145EDDB4046042187 -S11313F8FFF7FEFC38462946FFF7FAFC3846FFF7A4 -S113140803FD0204FAD4B36843F08003B36001E037 -S11314180023F360BDE8FC8F4421000000B50B48AD -S1131428FEF7F6FF0A48FEF7D3FF03214FF04020EA -S1131438FFF718FB0748FEF7CBFF07480321FFF720 -S1131448F7FA00F071FB00F07CFBFCE78003C001B5 -S113145801000020080000200070004001483D21E0 -S113146800F02ABBAF21000000B500F0D1F958B153 -S113147800F0AEFB00F0E8F9044B4FF480421A6028 -S113148844F204031B6898475DF804FB08ED00E088 -S113149870B50C4695B2064607E014F8013B013DC9 -S11314A806F8013B00F0D1FBADB2002DF5D170BDBB -S11314B8FEF75FBE70B50C4D0646002400F0C5FB70 -S11314C82B689E4209D36A689B189E4205D2064B34 -S11314D80C2202FB0434207A70BD01340C35122C22 -S11314E8ECD1FF2070BD00BF342200002DE9F1418A -S11314F805460068FFF7DEFFFF2818D000242F6890 -S1131508261DAB5904EB0708009300F09EFB6846C0 -S113151841460422FFF7E4FA48B9E259009B9A428B -S113152806D1B6F5007F3446E9D1012000E0002059 -S1131538BDE8F881114B30B5984204460D4606D0F3 -S1131548B1F5804F05D0FFF7D1FF18B910E00C4C66 -S113155800E01C46EB050DD12368AB420BD02046B6 -S113156840F8045B29464FF40072FFF791FF02E04C -S1131578044600E00024204630BD00BF04000020DB -S1131588080200202DE9F0439846036821F4FE7709 -S1131598013304460D46164627F0030706D140F8E2 -S11315A8047B39464FF40072FFF772FF2368BB428D -S11315B805D020463946FFF7BDFF0446F0B123683D -S11315C840F2FF19ED1A0435651907F5007700F0A4 -S11315D83CFB231DEB1A4B4506D920463946FFF739 -S11315E8A9FF044660B1051D16F8013BB8F10108CE -S11315F805F8013BEBD10120BDE8F083BDE8F08399 -S1131608BDE8F083034A4FF0FF331360024A1360C6 -S1131618704700BF080200200400002070B504468B -S11316280D461646FFF746FFFF2815D0601E4019E1 -S1131638FFF740FFFF280FD024F4FE7323F00303C1 -S1131648B3F5804F0CBF05480548214632462B4662 -S1131658BDE87040FFF796BF002070BD040000206D -S1131668080200202DE9F0410E460446FFF722FF48 -S1131678013C0546A019FFF71DFFFF2D074659D069 -S1131688FF285AD0854255D8012D53D9132851D84B -S11316982B4E0024B04600F0D8FA98F80830AB4234 -S11316A804D10C235C43264B1C5906E00134122C4C -S11316B808F10C08EFD14FF0FF34DFF884800025DF -S11316C800F0C3FA98F80830BB4205D10C235D43F7 -S11316D81B4B53F8058006E00135122D08F10C0860 -S11316E8EED14FF0FF38002500F0AFFA337ABB4251 -S11316F805D1134B0C2202FB05356B6804E0013558 -S11317080C36122DF0D10023C4EB0806F618C6F3E4 -S11317188F26002509E000F098FA2046FFF7BCF967 -S113172804F5806430B90135ADB2B542F3D3012074 -S1131738BDE8F0810020BDE8F0810020BDE8F0811B -S1131748342200000F4B01B51A68013217D05A68C9 -S1131758996844F2F0008918DA6889181A698918AE -S11317685A6989189A698918DA698B185B4201AA37 -S113177842F8043D04216A46FFF750FF00E00120C7 -S113178808BD00BF0400002044F2040318684FF4A5 -S113179880431B68C01844F208031B68C01844F24D -S11317A80C031B68C01844F210031B68C01844F2E9 -S11317B814031B68C01844F218031B68C01844F2C9 -S11317C8F0031B68C018D0F1010038BF002070472F -S11317D80A4800B50368013302D0FFF787FE58B101 -S11317E807480368013306D0FFF780FE003018BFAE -S11317F801205DF804FB01205DF804FB04000020CF -S113180808020020FFF7FEBEFFF708BFFFF72ABF54 -S1131818FFF7BABF00B5FFF795FF18B15DF804EB01 -S1131828FFF7D6BF5DF804FB054B00224CF24F319D -S11318381A60596005219A601960024B1A60704752 -S113184810E000E00C040020014B00221A607047ED -S113185810E000E0044B1B68DB0303D5034B1A6854 -S113186801321A60704700BF10E000E00C04002049 -S113187800B5FFF7EFFF024B18685DF804FB00BFE3 -S11318880C04002000B50748FEF7A2FDFEF75EFE33 -S1131898014605484FF4614260235DF804EBFFF705 -S11318A8D3B900BF0100001000C0004070B5CDB22C -S11318B8402D064603D91848572100F0FDF817486B -S11318C82946FFF755FA40B101E000F0BEF9134884 -S11318D8FFF726FA0028F8D003E00F485B2100F050 -S11318E8EBF8002414E000F0B0F9315D0B48FFF781 -S11318F83FFA40B101E000F0A8F90848FFF710FAF0 -S11319080028F8D003E00448642100F0D5F8013435 -S1131918A3B2AB42E7D370BD0C23000000C0004063 -S1131928F0B5174C064625785DB91648FFF70CFA4A -S1131938421C1FD0144B187001232370134B1D70C5 -S113194818E0124D0F482F78FFF7FEF9431C13D007 -S11319580D492B78CF19787001330A78DBB29A4293 -S11319682B700BD130460131FFF792FD0023237011 -S11319780120F0BD2846F0BD0020F0BD0020F0BDD8 -S11319885204002000C0004010040020510400202C -S113199870B5264889B0FEF71BFD2548FFF764FAA1 -S11319A804230793102340F2A4601C4608225D1CFC -S11319B81AE0A918B0FBF1F6413EF6B20A2E12D885 -S11319C8B4FBF1F64E43102E0DD1032A059398BFAC -S11319D807921023B3FBF1F10891154805A9069263 -S11319E8FFF7A4FA06E0013A002AE2D16438013B81 -S11319F8DCD113E00E48FFF783FA40F267630093E3 -S1131A0803F5CC7301930823029303930848012137 -S1131A186A460223FFF736FB09B070BD05489021DA -S1131A280693059300F048F8E4E700BF00011000AE -S1131A38000004408323000030B5044685B0CDB2CD -S1131A4810480121FFF7E0FA820703D50E48AB21BD -S1131A5800F032F840F2E17300930A4800230221AF -S1131A686A46029303950494FFF70CFB0121054889 -S1131A78FFF7CAFA044600F0E8F8A307F6D405B05D -S1131A8830BD00BF000004408323000010B50221CC -S1131A9885B004460748FFF7B7FA10F0010007D0ED -S1131AA8012104486A460B460494FFF7D9FB012038 -S1131AB805B010BD00000440034B00B51860034B8B -S1131AC8196000F0C2F8FCE7540400205804002010 -S1131AD810B500F0B7F8012810D0094C2378012B71 -S1131AE80CD1FFF7C5FE074B1B683233984205D368 -S1131AF800232370BDE81040FFF7B6BC10BD00BF3B -S1131B085C04002060040020054B012200B51A7013 -S1131B18FFF7AEFE034B18605DF804EBFFF7D8BF80 -S1131B285C0400206004002000B500F08DF8FFF785 -S1131B387BFEFFF767FE00F00FF85DF804EBFFF794 -S1131B48E3BF00B500F081F8FFF784FE00F022F847 -S1131B585DF804EBFFF7BCBF31B5FF2300250B4C40 -S1131B688DF800308DF8015000F07AF8FFF710FF77 -S1131B7801232360FFF786FE054B25601B78012BA4 -S1131B8802D1684600F08AF838BD00BF0000002082 -S1131B986404002000B50C48FFF778FF012804D13D -S1131BA80A4B1860084800F079F80748FFF7B8FEB0 -S1131BB8012807D1054B044800221A605DF804EB9C -S1131BC800F06CB85DF804FB6504002000000020F8 -S1131BD87047000070B5094E044633688DB2012B76 -S1131BE802D1E9B2FFF728FF33681BB9E9B22046EE -S1131BF8FFF75CFEBDE8704000F048B80000002024 -S1131C08044B1B68013B022B9ABF034AD05C40205B -S1131C18704700BF00000020F9230000044B1B6834 -S1131C28013B022B9ABF034AD05C4020704700BF97 -S1131C3800000020FC230000014B01221A707047A9 -S1131C486404002000F01AB870477047034BFE2262 -S1131C58DA7002221871A3F844207047A8040020FF -S1131C68054B00221A709A6483F84320A3F8442091 -S1131C789A705A70704700BFA8040020024B187865 -S1131C88003018BF01207047A8040020024B00222E -S1131C9883F84320704700BFA8040020F0B50378F8 -S1131CA80546FF2B824C14D100220125E370102332 -S1131CB86270237162712570FFF7A2FFA071FFF7AC -S1131CC8ADFFE071FFF7AAFF000A20726572A572E2 -S1131CD872E02678012E40F0EA80F32B46D012D821 -S1131CE8CF2B00F0C18005D8C92B78D0CC2B40F07D -S1131CF8C480C0E0D12B00F0B180C0F08380D22B27 -S1131D0840F0BB809BE0FA2B49D006D8F52B0CD0C9 -S1131D1813D3F62B40F0B18023E0FD2B50D0FE2BDB -S1131D2859D0FC2B40F0A98048E0FFF769FF6A7896 -S1131D3890426DDD201DA16C08E0FFF761FF6B7810 -S1131D48984265DD6968201DA1646A78FFF7A0FBE5 -S1131D58FF23E3706A78A36CD318A3646B78013308 -S1131D6879E0FF23E3704368A36481E0FF23E37011 -S1131D780023A06C69681A4603E01C5C013312193D -S1131D88D2B28B42F9D14A4BC3F8072001221A7107 -S1131D9800225A719A710822A3F8442070E0FF23A4 -S1131DA8E370444B0722A364002323716371A37176 -S1131DB8E27123726372A37208234CE000205DE091 -S1131DC8FF236278E37000232371A371E371237204 -S1131DD8627106233FE000232370637046E0A76C1A -S1131DE8FFF70EFF6A1C411E3846FFF70DFD002859 -S1131DF841D0FF23E370A56CFFF702FF013D2D18C6 -S1131E08A56435E0FFF7FCFE6B780138984201DCE5 -S1131E18222033E0FF23E370A4F84460697819B9F9 -S1131E28FFF7F8FC60BB26E0214CAA1CA06CFFF766 -S1131E38EBFC00B36A78A36CD318A36420E00025F4 -S1131E48FF23E37025716571FFF7DAFEE571A07170 -S1131E58257265720723A4F8443011E0A06C696800 -S1131E68FFF7D4FC10B906E0FFF722FBFF23E37069 -S1131E78A4F8446004E0312000E02020FFF7E6FEE7 -S1131E880B4C94F84330012B02D11020FFF7DEFEEF -S1131E98B4F8441006480BB2002B08DD012380F87F -S1131EA8433089B20330BDE8F040FFF793BEF0BD7C -S10B1EB8A8040020FF23000030 -S1131EC040420F0000201C0080841E00008025007A -S1131ED0999E36000040380000093D0000803E0015 -S1131EE000004B00404B4C0000204E00808D5B00F6 -S1131EF000C05D000080700000127A0000007D00C8 -S1131F0080969800001BB7000080BB00C0E8CE009C -S1131F10647ADA000024F4000000FA00433A2F57F0 -S1131F206F726B2F736F6674776172652F4F706574 -S1131F306E424C542F5461726765742F44656D6F03 -S1131F402F41524D434D335F4C4D33535F454B5FEF -S1131F504C4D3353383936325F43726F7373776F36 -S1131F60726B732F426F6F742F6964652F2E2E2F3F -S1131F706C69622F6472697665726C69622F737919 -S1131F807363746C2E63000000E10F4004E10F40A2 -S1131F9008E10F40433A2F576F726B2F736F6674CB -S1131FA0776172652F4F70656E424C542F54617285 -S1131FB06765742F44656D6F2F41524D434D335FF8 -S1131FC04C4D33535F454B5F4C4D335338393632A8 -S1131FD05F43726F7373776F726B732F426F6F749B -S1131FE02F6964652F2E2E2F6C69622F64726976B7 -S1131FF065726C69622F696E746572727570742E85 -S11320006300433A2F576F726B2F736F6674776157 -S113201072652F4F70656E424C542F546172676520 -S1132020742F44656D6F2F41524D434D335F4C4DBA -S113203033535F454B5F4C4D3353383936325F432E -S1132040726F7373776F726B732F426F6F742F6934 -S113205064652F2E2E2F6C69622F64726976657207 -S11320606C69622F6770696F2E6300433A2F576F54 -S1132070726B2F736F6674776172652F4F70656E24 -S1132080424C542F5461726765742F44656D6F2FF1 -S113209041524D434D335F4C4D33535F454B5F4C81 -S11320A04D3353383936325F43726F7373776F72BF -S11320B06B732F426F6F742F6964652F2E2E2F6CF4 -S11320C069622F6472697665726C69622F666C61ED -S11320D073686C69622E6300433A2F576F726B2FDB -S11320E0736F6674776172652F4F70656E424C54DE -S11320F02F5461726765742F44656D6F2F41524D83 -S1132100434D335F4C4D33535F454B5F4C4D33531D -S1132110383936325F43726F7373776F726B732F14 -S1132120426F6F742F6964652F2E2E2F6C69622F96 -S11321306472697665726C69622F756172746C6918 -S1132140622E6300433A2F576F726B2F736F66745E -S1132150776172652F4F70656E424C542F546172D3 -S11321606765742F44656D6F2F41524D434D335F46 -S11321704C4D33535F454B5F4C4D335338393632F6 -S11321805F43726F7373776F726B732F426F6F74E9 -S11321902F6964652F2E2E2F6C69622F6472697605 -S11321A065726C69622F63616E6C69622E630043B1 -S11321B03A2F576F726B2F736F6674776172652F46 -S11321C04F70656E424C542F5461726765742F448E -S11321D0656D6F2F41524D434D335F4C4D33535F0B -S11321E0454B5F4C4D3353383936325F43726F730E -S11321F073776F726B732F426F6F742F6964652FDF -S11322002E2E2F2E2E2F2E2E2F2E2E2F536F7572F5 -S113221063652F41524D434D335F4C4D33532F4330 -S1132220726F7373776F726B732F766563746F72EB -S1132230732E630000400000002000000200000034 -S11322400060000000200000030000000080000087 -S1132250002000000400000000A000000020000096 -S11322600500000000C0000000200000060000007F -S113227000E0000000200000070000000000010052 -S113228000200000080000000020010000200000E1 -S11322900900000000400100002000000A000000C6 -S11322A000600100002000000B000000008001001D -S11322B0002000000C00000000A00100002000002D -S11322C00D00000000C00100002000000E0000000E -S11322D000E00100002000000F00000000000200E8 -S11322E00080000010000000008002000080000058 -S11322F01100000000000300008000001200000034 -S1132300008003000080000013000000433A2F57B0 -S11323106F726B2F736F6674776172652F4F706580 -S11323206E424C542F5461726765742F44656D6F0F -S11323302F41524D434D335F4C4D33535F454B5FFB -S11323404C4D3353383936325F43726F7373776F42 -S1132350726B732F426F6F742F6964652F2E2E2F4B -S11323602E2E2F2E2E2F2E2E2F536F757263652F28 -S113237041524D434D335F4C4D33532F756172744D -S11323802E6300433A2F576F726B2F736F66747707 -S11323906172652F4F70656E424C542F54617267A1 -S11323A065742F44656D6F2F41524D434D335F4C1F -S11323B04D33535F454B5F4C4D3353383936325FA1 -S11323C043726F7373776F726B732F426F6F742FD7 -S11323D06964652F2E2E2F2E2E2F2E2E2F2E2E2F6C -S11323E0536F757263652F41524D434D335F4C4DAE -S11323F033532F63616E2E63000800000800004F02 -S10A240070656E424C5400AC -S107240804000000C8 -S903017B80 +S1130000740700207F0100001D1400001D1400006F +S11300101D1400001D1400001D1400001D14000018 +S11300201D1400001D1400001D1400001D14000008 +S11300301D1400001D1400001D1400001D140000F8 +S11300401D1400001D1400001D1400001D140000E8 +S11300501D1400001D1400001D1400001D140000D8 +S11300601D1400001D1400001D1400001D140000C8 +S11300701D1400001D1400001D1400001D140000B8 +S11300801D1400001D1400001D1400001D140000A8 +S11300901D1400001D1400001D1400001D14000098 +S11300A01D1400001D1400001D1400001D14000088 +S11300B01D1400001D1400001D1400001D14000078 +S11300C01D1400001D1400001D1400001D14000068 +S11300D01D1400001D1400001D1400001D14000058 +S11300E01D1400001D1400001D1400001D14000048 +S11300F072B64D484D4901604D49072291438D46E2 +S11301004C484D494D4A00F07DF84D484D494E4A02 +S113011000F078F84D484E494E4A00F073F84E48C6 +S11301204E494F4A00F06EF84E484F494F4A00F08E +S113013069F84F484F49504A00F064F84F48504915 +S1130140002200F06AF84F484F49091A082903DBD6 +S1130150002202600430016040484149884205D0D1 +S11301600268043003B4904703BCF7E700208646D6 +S1130170EC4601F02FFD00200021444A904772B65E +S11301802B49072291438D462A482B492B4A00F0DC +S113019039F82B482B492C4A00F034F82B482C49C9 +S11301A02C4A00F02FF82C482C492D4A00F02AF84C +S11301B02C482D492D4A00F025F82D482D492E4A6A +S11301C000F020F82D482E49002200F026F82D4892 +S11301D02D49091A082903DB00220260043001605A +S11301E01E481F49884205D00268043003B4904772 +S11301F003BCF7E700208646EC4600200021234A92 +S11302009047FEE7884207D0521A05D003780130A0 +S11302100B700131013AF9D17047884202D0027063 +S11302200130FAE77047000008ED00E0000000002C +S1130230740700207C23000000000020010000203F +S113024090020000900200004C1E00007C2300007D +S113025000000020000000204C1E00004C1E000086 +S11302604C1E00004C1E00004C1E00004C1E0000E2 +S11302704C1E00004C1E00007B23000004000020E4 +S1130280F4040020F404002074050020DD130000B1 +S1130290A0F58013591E012940F28680434A9042FA +S11302A000F0828002F5807398427DD003F50071DE +S11302B0884279D03E4A904276D002F580739842C3 +S11302C072D003F5007188426ED001F570529042ED +S11302D06AD002F11023984266D03649884263D02E +S11302E04A1C904260D0931C98425DD0191D8842EC +S11302F05AD00831884257D01031884254D0203126 +S1130300884251D0403188424ED0803188424BD00F +S1130310402849D0B0F1102F46D0274A904243D00C +S113032002F57D2398423FD0244988423CD0244A98 +S1130330904239D0703A904236D0B0F1101F33D089 +S1130340204B984230D003F5807188422CD0A1F51F +S1130350F872904228D01032904225D002F1005316 +S1130360984221D0184988421ED04A1C90421BD082 +S1130370931C984218D0191D884215D0134A9042F4 +S113038012D0531C98420FD0991C88420CD0B0F163 +S1130390202F09D00E4A904206D0082804D00D4BD5 +S11303A0C11A4842484170470120704700011000BB +S11303B00001101001000020004000100001102076 +S11303C08000003000010010010010100100001036 +S11303D0010010200010100010B50446FFF758FF6C +S11303E020B909484FF4FC7101F02EFB220FA1B291 +S11303F0C4F3044401FA04F4044B53F822000268E1 +S11304001443046010BD00BFA81E0000141F0000A8 +S113041001387FF4FDAF7047464B70B51A68044647 +S113042012F0E04F05D0186843490140B1F1805FF4 +S113043001D1002C7DDB4148414903680E6823F457 +S1130440800545F4006546F4006205600A6099077A +S113045001D5A00703D5D90719D5E30717D464F04C +S11304600300364B0540002A1D6005DA06F07002D1 +S1130470302A05D0702A02E005F03001302902D17B +S11304804FF4805001E04FF40020FFF7C1FF2D4BE3 +S11304902D49334025F45F5543F2F07043F4006670 +S11304A020402140294A25F03005054304F0080383 +S11304B046EA010022494026166050EAC30602F1CA +S11304C008024BBF0E60156015600E601020FFF728 +S11304D09FFF1F4A25F0F86020F0030322401343D6 +S11304E004F0FC5126F0FC52600042EA010207D5F8 +S11304F0184822F48002204043F48003024301E0C0 +S113050022F0804221050BD44FF4004112480068C8 +S1130510400601D40139F9D123F4006322F40062C6 +S113052006480749036010200A60BDE87040FFF7E1 +S11305306FBF70BD00E00F400000FF7060E00F402F +S113054070E00F408FDFFF7F3020008058E00F40C5 +S11305500300C0070000404050E00F405F4B70B5FF +S11305601A6810331B68002BB4BF03F0700102F04B +S11305703001202937D004D869B1102940F0AB806C +S11305800FE0602954D070294FD0302940F0A38067 +S113059047F2305056E05249C2F3841051F820001B +S11305A050E05049086810F0E04F44D00C684E48C1 +S11305B02040B0F1805F3ED00C684B4820404B4C4B +S11305C0A04203D1096888B2022836D0454846497A +S11305D004682140464CA14201D0464832E00068FC +S11305E081B251B3F9E73F49086810F0E04F26D0D3 +S11305F00C683D482040B0F1805F20D00C683A4838 +S113060020403A4CA04203D1096888B2022818D08D +S11306103448354904682140354CA14201D036485C +S113062010E0006881B261B1F9E74FF4004009E0DD +S11306304FF4800006E0314804E0314802E03148DC +S113064000E03148002B02DA13F4006F01E012F4E9 +S1130650006F28D12D4D2968224D2C6814F0E04FED +S113066043F6E07404EA01044FEA541405D02E68FA +S11306701D4D3540B5F1805F05D1023401F01F05F1 +S11306806043023504E0604301F01F0501356D004D +S1130690B0FBF5F011F4804F18BF4008090448BFBF +S11306A0800842F48002510216D5002B0DDA59005D +S11306B005D51A0503D44000C3F3865201E0C3F301 +S11306C0C552531CB0FBF3F070BDC2F3C353591CA5 +S11306D0B0FBF1F070BD002070BD00BF60E00F40C2 +S11306E04C1E000000E00F400000FF7000000110ED +S11306F0000003100024F40000093D00C0E1E40000 +S1130700001BB70070383900C0C62D0064E00F40EC +S1130710462810B5044605D91A484FF4D57101F09E +S113072093F90EE0042804D1174B186840F4803084 +S113073005E0052805D1144B1A6842F4003018600E +S113074010BD062C04D1104B196841F48020F6E743 +S11307500F2C04D10D4B1A6842F00200EFE7A4F10C +S113076010031F2B05D8012000FA03F308490B607E +S113077010BD2F2C05D9303C012101FA04F4054A9F +S1130780146010BD201F000024ED00E010E000E024 +S113079000E100E004E100E0462810B5044605D974 +S11307A01A484FF4F77101F04FF90EE0042804D110 +S11307B0174B186820F4803005E0052805D1144B48 +S11307C01A6822F40030186010BD062C04D1104BB6 +S11307D0196821F48020F6E70F2C04D10D4B1A6818 +S11307E022F00200EFE7A4F110031F2B05D801202B +S11307F000FA03F308490B6010BD2F2C05D9303CD7 +S1130800012101FA04F4054A146010BD201F000000 +S113081024ED00E010E000E080E100E084E100E08D +S1130820B0F1402F44D0234B984241D0A3F5A621E8 +S113083088423DD001F5A822904239D0A2F5A623E2 +S1130840984235D003F5A821884231D0A1F5A622DB +S113085090422DD002F5A823984229D0A3F55C310B +S1130860884225D001F56032904221D0A2F55C3354 +S113087098421DD003F56031884219D0A1F55C324D +S1130880904215D002F56033984211D0A3F55C3143 +S113089088420DD001F56032904209D0A2F50833A8 +S11308A0984205D003F50C31421A5042504170472A +S11308B0012070470080054070B504460D46164679 +S11308C0FFF7AEFF18B91048E42101F0BDF8022E7D +S11308D003D90D48E62101F0B7F8D4F8003416F036 +S11308E0010F14BF2B43AB4304F580621360D4F8AB +S11308F0200416F0020F04F5846114BF054320EAB6 +S113090005050D6070BD00BF8E1F0000F8B50446DC +S11309100D4617461E46FFF783FF20B93E484FF4A5 +S1130920DD7101F091F87B1E012B08D9042F06D04C +S11309300C2F04D038484FF4DF7101F085F8082EED +S11309400FD00A2E0DD00C2E0BD0092E09D00B2E51 +S113095007D00D2E05D026B12F4840F2C51101F065 +S113096073F8D4F8000517F0010F14BF2843A84307 +S113097004F5A0621060D4F8041517F0020F14BF38 +S11309802943A94304F204531960D4F8080517F065 +S1130990040F14BF2843A84304F5A1621060D4F8DF +S11309A0181517F0080F14BF2943A94304F5A363CE +S11309B01960D4F80C0516F0010F14BF2843A8439E +S11309C004F20C521060D4F8101516F0020F14BF84 +S11309D02943A94304F5A2631960D4F8140516F059 +S11309E0040F14BF2843A84304F214521060D4F82F +S11309F01C1516F0080F04F21C5314BF2943A94315 +S1130A00196004F5A560D4F828250EB9154301E052 +S1130A1022EA05050560F8BD8E1F000070B5054685 +S1130A200C46FFF7FDFE20B908484FF4647101F04D +S1130A300BF8284621460222FFF73EFF28462146AE +S1130A4004220823BDE87040FFF760BF8E1F00003A +S1130A5070B505460C46FFF7E3FE20B9084840F29E +S1130A601F5100F0F1FF284621460222FFF724FF20 +S1130A702846214601220823BDE87040FFF746BFFF +S1130A808E1F0000830510B5044603D00C48842152 +S1130A9000F0DAFF0B4B01221A600B4843F8144CA8 +S1130AA0143B0833186019688A07FCD4074A136892 +S1130AB013F0010F14BF4FF0FF30002010BD00BF32 +S1130AC0F71F000014D00F40020042A40CD00F40C6 +S1130AD070B50C46A1070646154603D02548C82123 +S1130AE000F0B2FFAA0703D02248C92100F0ACFFEE +S1130AF0214B012221481A600168CB0719D42346EF +S1130B002BE075B11E4A043D881853F8041B01609C +S1130B10A01B1A1812F07C01F3D11A4800680028AF +S1130B20EFD0194C194E26602168C807FCD414462E +S1130B301E462DB1164B24F07F021A603346E7E7B8 +S1130B401448016811F0010F14BF4FF0FF3000206A +S1130B5070BD0268D107FCD404332A199A42EFD03D +S1130B600B48311B0360C8580B4A08491060101D1C +S1130B700160EEE7F71F000014D00F40A0E10F4022 +S1130B8000D10F4030D00F4020D00F40010042A4CC +S1130B9000D00F400CD00F4004D00F40074B9842B8 +S1130BA009D003F58051884205D001F58052831A9B +S1130BB05842584170470120704700BF00C00040B0 +S1130BC010B50446FFF7EAFF20B908484FF4CF7187 +S1130BD000F03AFFE36A43F01000E062216B41F455 +S1130BE0407242F00103236310BD00BF6420000083 +S1130BF010B50446FFF7D2FF20B909484FF4DF715E +S1130C0000F022FFA3691907FCD4E06A20F0100168 +S1130C10E162226B22F4407323F00100206310BDD3 +S1130C2064200000F8B504460E4615461F46FFF73B +S1130C30B5FF20B92A4840F20D1100F005FF25B98F +S1130C4027484FF4877100F0FFFE264A136813F01B +S1130C50E04F1CD0116824480840B0F1805F16D0E2 +S1130C601368214921481940814203D1126893B283 +S1130C70022B0CD01B481C4A01681D4B0A409A42A7 +S1130C8001D0082204E0006881B20029F9D11022C1 +S1130C906A43964204D2124840F20F1100F0D4FE87 +S1130CA02046FFF7A5FFB6EB051F236B04D243F0E4 +S1130CB0200121636D0802E023F020002063F60088 +S1130CC0B6FBF5F56A1C0020D309C2F3450563623F +S1130CD0A562E762A0612046BDE8F840FFF770BF57 +S1130CE06420000000E00F400000FF7000000110CD +S1130CF00000031010B50446FFF750FF20B9054863 +S1130D0040F2E93100F0A0FEA06980F02001C1F3B7 +S1130D10401010BD6420000010B50446FFF73EFFEC +S1130D2020B9064840F2094100F08EFEA369D806B6 +S1130D3054BF20684FF0FF3010BD00BF6420000096 +S1130D4038B504460D46FFF729FF20B9064840F29E +S1130D505B4100F079FEA3699A0602D42560012064 +S1130D6038BD002038BD00BF64200000074B984206 +S1130D7009D003F58051884205D001F58052831AC9 +S1130D805842584170470120704700BF000004409A +S1130D90094B98420DD003F58051884207D0A1F544 +S1130DA0005290420CBF37204FF0FF30704739207B +S1130DB070473820704700BF00100440016082B0C3 +S1130DC000210191019B042B02DC0198411CF8E7EE +S1130DD002B0704773B5054620F47F6020F00F0021 +S1130DE0FFF7D6FF421C044603D11048F92100F056 +S1130DF02BFE0121A4F1300201FA02F00C4B1E6813 +S1130E00064002D02046FFF7C7FC2B680021019161 +S1130E10019B042B02DC019A511CF8E72D6816B1E2 +S1130E202046FFF775FC28467CBD00BFD02000009B +S1130E3004E100E0F8B50446FFF798FF20B9224822 +S1130E4040F2D91100F000FE20460121FFF7B6FF61 +S1130E5004F120052846FFF7BDFF10F40046F7D142 +S1130E6004F124073846B021FFF7A8FF314604F106 +S1130E703400FFF7A3FF314604F13800FFF79EFF6B +S1130E8001262846FFF7A6FF0004FAD43146284677 +S1130E900136FFF793FF212EF3D138460C21FFF7DB +S1130EA08DFF01262846FFF795FF0104FAD4314649 +S1130EB028460136FFF782FF212EF3D1201DBDE81D +S1130EC0F840FFF787BF00BFD020000010B50446EC +S1130ED0FFF74CFF20B9074840F23A2100F0B4FD77 +S1130EE02046FFF777FF20F001012046BDE81040BF +S1130EF0FFF764BFD020000070B505460C46FFF72D +S1130F0035FF20B932484FF4597100F09DFD24B9E2 +S1130F102F4840F2653100F097FD2368981E0E2893 +S1130F2004D92B4840F26B3100F08EFD61684A1EF3 +S1130F30072A04D926484FF45C7100F085FDA668A1 +S1130F40731E032B04D9224840F2753100F07CFD56 +S1130F50E068411EB1F5806F04D31D4840F27B3137 +S1130F6000F072FD2846FFF735FF064646F04101C2 +S1130F702846FFF723FF6268531E22681803531E96 +S1130F8000F4E0411802E36800F47062581EA3689C +S1130F90114300F03F02581E11438201D3B219439A +S1130FA005F10C00FFF70AFFE16805F118004A1E7D +S1130FB0C2F38311FFF702FFF30754BF26F0400189 +S1130FC026F041012846BDE87040FFF7F7BE00BF98 +S1130FD0D020000038B504460D46FFF7C7FE20B9FF +S1130FE01A4840F2925100F02FFD032D2AD8DFE871 +S1130FF005F0020D151D04342046FFF7EBFE6FF0DB +S11310001F0105462046FFF7D9FE1CE004F5807059 +S1131010FFF7E0FE054604F582700EE004F59070DB +S1131020FFF7D8FE054604F5927006E004F5B070AB +S1131030FFF7D0FE054604F5B270FFF7CBFE45EA94 +S1131040004500E00025284638BD00BFD020000040 +S11310502DE9F04F87B005468B4617461C46FFF72F +S113106085FE20B9714840F25F6100F0EDFC0BF1A0 +S1131070FF331F2B04D96D484FF4CC6100F0E4FC1E +S1131080042C04D9694840F2666100F0DDFC05F1E6 +S1131090200A5046FFF79EFE0304F8D4D7F800C098 +S11310A0BCF5006F3ABFBA68C2F380020122042C77 +S11310B000F2B880DFE804F0031E070A16000121DD +S11310C04FF4807311E000210B4616E000214FF429 +S11310D080534FF4005E41F6FF744FF6FF764FF0F5 +S11310E0D3080FE001214FF4905300244FF4005E25 +S11310F0264605E000214FF480738E460C460E46CA +S11311004FF09308B86810F0080F08D07C681AB143 +S1131110A6B2C4F30C4402E06605F40C164600F0D3 +S11311202809B9F1280F00F0180908BF44F4004455 +S1131130B9F1180F08BF44F4804410F0380F18BFF9 +S11311404FF0D30848F0200818BF43F48053CDF87B +S113115014804AB11FFA8CF2CCF30C49049249F47E +S113116040424EEA020906E04FEA4C5C4EEADC4E8D +S11311704EF400490492FA6802F00F0843EA0808A2 +S113118083055CBF48F080031FFA83F8C30748BF98 +S113119048F40068800748BF48F4806829BB05F11B +S11311A024000599FFF70AFE05F128003146FFF7F0 +S11311B005FE05F12C002146FFF700FE05F1300085 +S11311C00499FFF7FBFD05F134004946FFF7F6FDEE +S11311D005F138004146FFF7F1FD50460BF03F01A1 +S11311E007B0BDE8F04FFFF7E9BD3B6905F13C0CE2 +S11311F000209042D3DA471C9742195C03DADF5D82 +S113120041EA0721871C60460CF1040C0392029307 +S1131210CDF804C0FFF7D2FD3846DDF804C0029BC8 +S1131220039AE6E707B0BDE8F08F00BFD0200000C6 +S11312302DE9F74F0546894614461E46FFF796FDED +S113124020B9654840F2C17100F0FEFB09F1FF339B +S11312501F2B04D9604840F2C27100F0F5FB05F180 +S113126084084046002E14BF7B21732105F18007BA +S113127009F03F09FFF7A2FD38464946FFF79EFDF6 +S11312803846FFF7A7FD0004FAD405F18800FFF7FC +S1131290A1FD834605F18C00FFF79CFD824605F114 +S11312A09000FFF797FD024605F194000192FFF7C5 +S11312B091FD064605F19800FFF78CFD10F4807F40 +S11312C006F40051019A02D119B9002302E0002961 +S11312D0FBD14023A36016F480434FEAC64608D0EE +S11312E091B2A26841EAD60642F004012660A160E8 +S11312F001E0760D2660410403D5A26842F48071B2 +S1131300A160C20426D54FEACA42D10C3BB11FFAF0 +S11313108BFB4BEA014363606FF0604203E08B1088 +S1131320636040F2FF72934202D1A168490603D47C +S1131330A36843F00802A2601AF4004F03D0A16826 +S113134041F02803A3601AF4804F03D0A26842F04E +S11313501801A160020503D5A36843F00102A2604D +S1131360430503D5A16841F00203A36001042ED50F +S1131370A66800F00F0A16F04006C4F80CA008D0C6 +S113138040460421FFF71AFD38464946FFF716FD8B +S113139013E0D4F810B09C355645F1DA2846FFF72F +S11313A019FD721C043552450BF8060003DA030AD2 +S11313B00BF80230B21C1646EEE73846FFF70AFD7A +S11313C00204FAD4A26842F08001A16001E0002086 +S11313D0E060BDE8FE8F00BFD020000008B50B48D8 +S11313E0FFF71AF80A48FEF7F7FF03214FF04020F1 +S11313F0FFF72EFB0748FEF7EFFF07480321FFF72F +S11314000DFB00F059FB00F064FBFCE78003C00116 +S113141001000020080000200070004001483D2128 +S113142000F012BB3B21000008B500F0C8F978B108 +S113143000F096FB00F0DEF900F0B8F9054B20F05F +S1131440604020F07F01196000F0B0F942689047D5 +S113145008BD00BF08ED00E0F8B505460E46174686 +S11314600024A3B29F4205D0A05D605500F0BBFBF1 +S11314700134F6E7F8BDFEF782BE000070B5002423 +S11314800646254600F0AFFB094BE258964209D3C5 +S1131490191948681218964204D20C2101FB05352B +S11314A0287A70BD0C340135C02CEBD1FF2070BDFF +S11314B0C02100002DE9F34105460068FFF7DEFF77 +S11314C0FF2801D100201AE000242B1958682F6846 +S11314D002AE46F8040D04EB070800F084FB304626 +S11314E041460422FFF7F4FA0028EBD1E2590199AE +S11314F08A42E7D10434B4F5007FE6D10120BDE887 +S1131500FC81000038B5104B044698420D4606D0C5 +S1131510B1F5004F05D0FFF7CDFF18B910E00B4C23 +S113152000E01C46EB050BD12068A84209D02046F8 +S113153040F8045B29464FF40072FFF78DFF00E08A +S11315400024204638BD00BF04000020080200200B +S11315502DE9F8439946036821F4FF7501330446E5 +S11315600E46904625F0010506D140F8045B294655 +S11315704FF40072FFF770FF2068A84208D020469D +S11315802946FFF7BFFF044610B90020BDE8F883E1 +S113159021684746761AA219161D00F024FB231D64 +S11315A0F01AB0F5007F08D3204605F50071FFF767 +S11315B0A9FF04460028E8D0061D17F8011B08EB14 +S11315C00902974206F8011BE7D10120BDE8F88320 +S11315D0034A04484FF0FF3313600360704700BFB1 +S11315E0080200200400002070B504460D4616468B +S11315F0FFF744FFFF2815D0601E4019FFF73EFF98 +S1131600FF280FD024F4FF7323F00101B1F5004F3C +S11316100CBF05480548214632462B46BDE87040BC +S1131620FFF796BF002070BD0400002008020020D0 +S1131630F8B505460E46FFF721FF0446681E8019DB +S1131640FFF71CFFFF2C05464DD0FF284BD08442EA +S113165049D8032C47D9132845D8002600F0C3FAEB +S1131660224B0C2202FB06310F7AA74201D10C68EF +S113167004E00136102EF1D14FF0FF34002700F0C2 +S1131680B2FA1A4A0C2000FB0723197AA94201D1A5 +S11316901F6804E00137102FF1D14FF0FF37002607 +S11316A000F0A1FA114A0C2000FB0623197AA94282 +S11316B001D15D6803E00136102EF1D100253F1BF6 +S11316C07819C0F38F270025BD420AD200F08BFAA7 +S11316D02046FFF7D7F904F5806420B96A1C95B257 +S11316E0F2E70120F8BD0020F8BD00BFC0210000D2 +S11316F00E4B07B51A68013216D058689968DA6833 +S11317000918881819695A69401881189869DB6999 +S11317100A18D118484202AA42F8040D042148F2DA +S1131720F000FFF761FF00E001200EBD040000207F +S113173048F204034FF400410A68186848F20803A9 +S113174019688018421848F20C000368D11848F24E +S11317501002106848F214031A680918881848F22D +S113176018010B68C21848F2F00001685318D3F14D +S1131770010038BF002070470A4808B503680133E8 +S113178005D1094801684B1C06D1012008BDFFF7AB +S113179091FE0028F5D108BDFFF78CFE003018BF7C +S11317A0012008BD04000020080200204FF400407E +S11317B07047FFF70DBFFFF717BFFFF739BFFFF7FC +S11317C0B7BF08B5FFF794FF18B1BDE80840FFF7AD +S11317D0D3BF08BD054B00224CF24F3105201A60DF +S11317E059609A601860024B1A60704710E000E07C +S11317F00C040020014B00221A60704710E000E046 +S1131800044B1868C30303D503490A68531C0B60CF +S1131810704700BF10E000E00C04002008B5FFF79B +S1131820EFFF014B186808BD0C04002010B50748F1 +S1131830FEF7D2FDFEF792FE014605484FF46142E1 +S11318406023BDE81040FFF7EDB900BF01000010B0 +S113185000C00040402970B506460D4603D916481D +S1131860572100F0F1F815482946FFF769FA30B11D +S11318701248FFF73FFA30B900F0B5F9F8E70E481F +S11318805B2100F0E1F80024A3B2AB4213D200F0D4 +S1131890AAF90A48315DFFF753FA30B10748FFF758 +S11318A029FA30B900F09FF9F8E70348642100F001 +S11318B0CBF80134E8E770BD8022000000C000408E +S11318C0F8B5154C064625786DB91448FFF724FA87 +S11318D0421C01D10020F8BD1149124B08700120AF +S11318E020701D70F6E70F4D0C482F78FFF714FA9F +S11318F00137431CEED00A492B78C8550A78581C86 +S1131900C3B29A422B70E5D130460131FFF7A4FDF2 +S1131910002222700120F8BD5204002000C00040C3 +S1131920100400205104002010B524488AB0FEF7AA +S113193053FD2348FFF77EFA0423102203930192F8 +S113194040F2A4600823EBB1511CC918B0FBF1F4B8 +S1131950413CE4B20A2C13D81024B4FBF1F44C43F8 +S1131960102C0DD1032B019298BF03931022B2FBCC +S1131970F1F0049001A912480293FFF7BDFA08E0C0 +S1131980013BE0E76438013ADCD10E48902100F0D5 +S11319905BF80B48FFF79AFA40F26761082201F5F9 +S11319A0CC7305910693079208920548012105AA74 +S11319B00223FFF74DFB0AB010BD00BF0001100069 +S11319C000000440F722000030B5044687B00D46FD +S11319D010480121FFF7FEFA820703D50E48AB2118 +S11319E000F032F840F2E17301930A480023022127 +S11319F001AA039304950594FFF72AFB01210548E6 +S1131A00FFF7E8FA044600F0EEF8A307F6D407B0AF +S1131A1030BD00BF00000440F722000010B50221D1 +S1131A2086B004460748FFF7D5FA10F0010007D046 +S1131A300121044801AA0B460594FFF7F9FB012094 +S1131A4006B010BD0000044008B5034B18600348FD +S1131A50016000F0C8F8FCE754040020580400209A +S1131A6010B500F0BDF8012810D0094C2378012BE3 +S1131A700CD1FFF7D3FE07490A683232904205D3EE +S1131A8000202070BDE81040FFF7CEBC10BD00BFA1 +S1131A905C0400206004002008B5054B01221A7084 +S1131AA0FFF7BCFE03490860BDE80840FFF7D8BF54 +S1131AB05C0400206004002008B500F093F8FFF7F0 +S1131AC089FEFFF776FE00F00FF8BDE80840FFF747 +S1131AD0E3BF08B500F087F8FFF792FE00F022F8A4 +S1131AE0BDE80840FFF7BCBF37B5FF2300250B4C0A +S1131AF08DF804308DF8055000F080F8FFF714FFDE +S1131B0001202070FFF792FE054925700A78012A0A +S1131B1002D101A800F090F83EBD00BF00000020F3 +S1131B206404002008B50C48FFF778FF012804D1AD +S1131B300A4B1870084800F07FF80748FFF7C0FE0A +S1131B40012807D10548002202700348BDE8084077 +S1131B5000F072B808BD00BF65040020000000203A +S1131B60704700000A4B70B51A780646012A0C46E5 +S1131B701D4602D1C9B2FFF727FF287818B93046AD +S1131B80E1B2FFF767FEBDE8704000F04DB800BF5A +S1131B9000000020054B1878411ECBB2022B02D85E +S1131BA0034AD05C70474020704700BF000000200B +S1131BB070230000054B1878411ECBB2022B02D8CB +S1131BC0034AD05C70474020704700BF00000020EB +S1131BD06D230000014B01221A7070476404002039 +S1131BE000F01AB870477047034BFE2218710220A8 +S1131BF0DA70A3F844007047A8040020054B0022C3 +S1131C001A709A6483F84320A3F844209A705A7097 +S1131C10704700BFA8040020024B1878003018BF9A +S1131C2001207047A8040020024B002283F84320BF +S1131C30704700BFA8040020F8B503780546FF2BC1 +S1131C40804C14D100210125E370102361702371AD +S1131C5061712570FFF79EFFA071FFF7ABFFE07184 +S1131C60FFF7A8FF020A22726572A5727FE0267848 +S1131C70012E40F0E580F32B55D01FD8CF2B00F078 +S1131C80BD8006D8C92B00F08380CC2B40F0BF80E8 +S1131C90BBE0D12B00F0AC80C0F08C80D22B40F0A4 +S1131CA0B6800025FF22E27025716571FFF772FF8F +S1131CB0E571A07125726572072396E0FA2B4BD06B +S1131CC00AD8F52B11D01AD3F62B40F0A080FF22AE +S1131CD0E2704068A06495E0FD2B4AD0FE2B53D0FF +S1131CE0FC2B40F09480002092E0FFF753FF6A78C9 +S1131CF0904201DC22208BE0201DA16C08E0FFF75C +S1131D0049FF6B789842F5DD6968201DA1646A7803 +S1131D10FFF7A2FBFF21E1706A78A06C1318A3649B +S1131D2069784B1C61E0FF20E070A36C6C680020B4 +S1131D301C19A34204D013F8011B4218D0B2F8E7CF +S1131D40404B0022C3F807000121082019715A7181 +S1131D509A71A3F844005DE03B4B0021FF20072269 +S1131D60E070A36421716171A171C4F80720082394 +S1131D703BE062780021FF23E37021716271A1715D +S1131D80E1712172062330E000222270627037E094 +S1131D90A76CFFF7FFFE6A1C411E3846FFF70BFDD8 +S1131DA098B3FF20A56CE070FFF7F4FE013D2918FD +S1131DB0A16427E0FFF7EEFE69780138884299DDD7 +S1131DC0FF22E270A4F84460697819B9FFF7F9FCBE +S1131DD000BB1AE01B4CAA1CA06CFFF7ECFCA0B1E2 +S1131DE06878A36CC118A16414E0A4F8443011E02D +S1131DF0A06C6968FFF7E1FC10B906E0FFF73BFB54 +S1131E00FF20E070A4F8446004E0312000E02020CA +S1131E10FFF7EAFE0B4C94F84300012802D110208E +S1131E20FFF7E2FEB4F84410064A0BB2002B07DDBC +S1131E30012082F84300D01CBDE8F840FFF792BEB1 +S10F1E40F8BD00BFA804002073230000BC +S1131E4C40420F0000201C0080841E0000802500EE +S1131E5C999E36000040380000093D0000803E0089 +S1131E6C00004B00404B4C0000204E00808D5B006A +S1131E7C00C05D000080700000127A0000007D003C +S1131E8C80969800001BB7000080BB00C0E8CE0011 +S1131E9C647ADA000024F4000000FA00433A2F5765 +S1131EAC6F726B2F736F6674776172652F4F7065E9 +S1131EBC6E424C542F5461726765742F44656D6F78 +S1131ECC2F41524D434D335F4C4D33535F454B5F64 +S1131EDC4C4D3353383936325F43726F7373776FAB +S1131EEC726B732F426F6F742F6964652F2E2E2FB4 +S1131EFC6C69622F6472697665726C69622F73798E +S1131F0C7363746C2E63000000E10F4004E10F4016 +S1131F1C08E10F40433A2F576F726B2F736F66743F +S1131F2C776172652F4F70656E424C542F546172F9 +S1131F3C6765742F44656D6F2F41524D434D335F6C +S1131F4C4C4D33535F454B5F4C4D3353383936321C +S1131F5C5F43726F7373776F726B732F426F6F740F +S1131F6C2F6964652F2E2E2F6C69622F647269762B +S1131F7C65726C69622F696E746572727570742EF9 +S1131F8C6300433A2F576F726B2F736F66747761CC +S1131F9C72652F4F70656E424C542F546172676595 +S1131FAC742F44656D6F2F41524D434D335F4C4D2F +S1131FBC33535F454B5F4C4D3353383936325F43A3 +S1131FCC726F7373776F726B732F426F6F742F69A9 +S1131FDC64652F2E2E2F6C69622F6472697665727C +S1131FEC6C69622F6770696F2E6300433A2F576FC9 +S1131FFC726B2F736F6674776172652F4F70656E99 +S113200C424C542F5461726765742F44656D6F2F65 +S113201C41524D434D335F4C4D33535F454B5F4CF5 +S113202C4D3353383936325F43726F7373776F7233 +S113203C6B732F426F6F742F6964652F2E2E2F6C68 +S113204C69622F6472697665726C69622F666C6161 +S113205C73686C69622E6300433A2F576F726B2F4F +S113206C736F6674776172652F4F70656E424C5452 +S113207C2F5461726765742F44656D6F2F41524DF7 +S113208C434D335F4C4D33535F454B5F4C4D335392 +S113209C383936325F43726F7373776F726B732F89 +S11320AC426F6F742F6964652F2E2E2F6C69622F0B +S11320BC6472697665726C69622F756172746C698D +S11320CC622E6300433A2F576F726B2F736F6674D3 +S11320DC776172652F4F70656E424C542F54617248 +S11320EC6765742F44656D6F2F41524D434D335FBB +S11320FC4C4D33535F454B5F4C4D3353383936326B +S113210C5F43726F7373776F726B732F426F6F745D +S113211C2F6964652F2E2E2F6C69622F6472697679 +S113212C65726C69622F63616E6C69622E63004325 +S113213C3A2F576F726B2F736F6674776172652FBA +S113214C4F70656E424C542F5461726765742F4402 +S113215C656D6F2F41524D434D335F4C4D33535F7F +S113216C454B5F4C4D3353383936325F43726F7382 +S113217C73776F726B732F426F6F742F6964652F53 +S113218C2E2E2F2E2E2F2E2E2F2E2E2F536F75726A +S113219C63652F41524D434D335F4C4D33532F43A5 +S11321AC726F7373776F726B732F766563746F7260 +S11321BC732E630000800000002000000400000067 +S11321CC00A00000002000000500000000C000007A +S11321DC002000000600000000E0000000200000C9 +S11321EC07000000000001000020000008000000AF +S11321FC0020010000200000090000000040010044 +S113220C002000000A000000006001000020000013 +S113221C0B00000000800100002000000C000000F6 +S113222C00A00100002000000D00000000C001000F +S113223C002000000E00000000E00100002000005F +S113224C0F000000000002000080000010000000DD +S113225C0080020000800000110000000000030058 +S113226C00800000120000000080030000800000C9 +S113227C13000000433A2F576F726B2F736F667401 +S113228C776172652F4F70656E424C542F54617296 +S113229C6765742F44656D6F2F41524D434D335F09 +S11322AC4C4D33535F454B5F4C4D335338393632B9 +S11322BC5F43726F7373776F726B732F426F6F74AC +S11322CC2F6964652F2E2E2F2E2E2F2E2E2F2E2E71 +S11322DC2F536F757263652F41524D434D335F4CD1 +S11322EC4D33532F756172742E6300433A2F576F1D +S11322FC726B2F736F6674776172652F4F70656E96 +S113230C424C542F5461726765742F44656D6F2F62 +S113231C41524D434D335F4C4D33535F454B5F4CF2 +S113232C4D3353383936325F43726F7373776F7230 +S113233C6B732F426F6F742F6964652F2E2E2F2EA3 +S113234C2E2F2E2E2F2E2E2F536F757263652F4129 +S113235C524D434D335F4C4D33532F63616E2E639B +S112236C000800000800004F70656E424C5400DA +S104237C0458 +S903017F7C diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzp b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzp index 9dcebdf2..88f57cec 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzp +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzp @@ -1,7 +1,7 @@ - + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzs b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzs index 1175ae58..ca3b470e 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzs +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Boot/ide/lm3s8962_crossworks.hzs @@ -51,7 +51,7 @@ - + - + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.elf index b9776845..f326ea92 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.map index 582472d3..e67df9ac 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.map @@ -1,21 +1,21 @@ Archive member included because of file (symbol) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) (__vfprintf_int_nwp) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) (__vfscanf_int) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) (__getc) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (memcpy) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__umoddi3) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) (__getc) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (memcpy) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__aeabi_uldivmod) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) (__do_debug_operation_mempoll) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__errno) -C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) (__floatsisf) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__errno) +C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) (__aeabi_i2f) Discarded input sections @@ -120,6 +120,18 @@ Discarded input sections 0x00000000 0xc4 THUMB Debug/../../obj/adc.o .text.ADCPhaseDelayGet 0x00000000 0x4c THUMB Debug/../../obj/adc.o + .debug_frame 0x00000000 0x564 THUMB Debug/../../obj/adc.o + .debug_info 0x00000000 0x8f2 THUMB Debug/../../obj/adc.o + .debug_abbrev 0x00000000 0xf6 THUMB Debug/../../obj/adc.o + .debug_loc 0x00000000 0x6c8 THUMB Debug/../../obj/adc.o + .debug_aranges + 0x00000000 0x110 THUMB Debug/../../obj/adc.o + .debug_ranges 0x00000000 0x100 THUMB Debug/../../obj/adc.o + .debug_line 0x00000000 0x79b THUMB Debug/../../obj/adc.o + .debug_str 0x00000000 0x459 THUMB Debug/../../obj/adc.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/adc.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/adc.o .text 0x00000000 0x0 THUMB Debug/../../obj/comp.o .data 0x00000000 0x0 THUMB Debug/../../obj/comp.o .bss 0x00000000 0x0 THUMB Debug/../../obj/comp.o @@ -139,9 +151,21 @@ Discarded input sections .text.ComparatorIntDisable 0x00000000 0x74 THUMB Debug/../../obj/comp.o .text.ComparatorIntStatus - 0x00000000 0x88 THUMB Debug/../../obj/comp.o + 0x00000000 0x94 THUMB Debug/../../obj/comp.o .text.ComparatorIntClear 0x00000000 0x60 THUMB Debug/../../obj/comp.o + .debug_frame 0x00000000 0x19c THUMB Debug/../../obj/comp.o + .debug_info 0x00000000 0x274 THUMB Debug/../../obj/comp.o + .debug_abbrev 0x00000000 0xde THUMB Debug/../../obj/comp.o + .debug_loc 0x00000000 0x1f8 THUMB Debug/../../obj/comp.o + .debug_aranges + 0x00000000 0x60 THUMB Debug/../../obj/comp.o + .debug_ranges 0x00000000 0x50 THUMB Debug/../../obj/comp.o + .debug_line 0x00000000 0x225 THUMB Debug/../../obj/comp.o + .debug_str 0x00000000 0x1c1 THUMB Debug/../../obj/comp.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/comp.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/comp.o .text 0x00000000 0x0 THUMB Debug/../../obj/cpu.o .data 0x00000000 0x0 THUMB Debug/../../obj/cpu.o .bss 0x00000000 0x0 THUMB Debug/../../obj/cpu.o @@ -206,6 +230,18 @@ Discarded input sections 0x00000000 0x70 THUMB Debug/../../obj/epi.o .text.EPIIntUnregister 0x00000000 0x50 THUMB Debug/../../obj/epi.o + .debug_frame 0x00000000 0x430 THUMB Debug/../../obj/epi.o + .debug_info 0x00000000 0x6b0 THUMB Debug/../../obj/epi.o + .debug_abbrev 0x00000000 0xd1 THUMB Debug/../../obj/epi.o + .debug_loc 0x00000000 0x540 THUMB Debug/../../obj/epi.o + .debug_aranges + 0x00000000 0xd8 THUMB Debug/../../obj/epi.o + .debug_ranges 0x00000000 0xc8 THUMB Debug/../../obj/epi.o + .debug_line 0x00000000 0x50c THUMB Debug/../../obj/epi.o + .debug_str 0x00000000 0x36f THUMB Debug/../../obj/epi.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/epi.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/epi.o .text 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o .data 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o .bss 0x00000000 0x0 THUMB Debug/../../obj/ethernet.o @@ -213,7 +249,7 @@ Discarded input sections .text.EthernetInitExpClk 0x00000000 0x58 THUMB Debug/../../obj/ethernet.o .text.EthernetConfigSet - 0x00000000 0xd8 THUMB Debug/../../obj/ethernet.o + 0x00000000 0xd4 THUMB Debug/../../obj/ethernet.o .text.EthernetConfigGet 0x00000000 0x70 THUMB Debug/../../obj/ethernet.o .text.EthernetMACAddrSet @@ -227,7 +263,7 @@ Discarded input sections .text.EthernetPacketAvail 0x00000000 0x4c THUMB Debug/../../obj/ethernet.o .text.EthernetSpaceAvail - 0x00000000 0x54 THUMB Debug/../../obj/ethernet.o + 0x00000000 0x4c THUMB Debug/../../obj/ethernet.o .text.EthernetPacketGetInternal 0x00000000 0x1b0 THUMB Debug/../../obj/ethernet.o .text.EthernetPacketGetNonBlocking @@ -253,13 +289,25 @@ Discarded input sections .text.EthernetIntClear 0x00000000 0x5c THUMB Debug/../../obj/ethernet.o .text.EthernetPHYWrite - 0x00000000 0x8c THUMB Debug/../../obj/ethernet.o - .text.EthernetPHYRead 0x00000000 0x88 THUMB Debug/../../obj/ethernet.o + .text.EthernetPHYRead + 0x00000000 0x84 THUMB Debug/../../obj/ethernet.o .text.EthernetPHYPowerOff 0x00000000 0x3c THUMB Debug/../../obj/ethernet.o .text.EthernetPHYPowerOn 0x00000000 0x3c THUMB Debug/../../obj/ethernet.o + .debug_frame 0x00000000 0x454 THUMB Debug/../../obj/ethernet.o + .debug_info 0x00000000 0x6d3 THUMB Debug/../../obj/ethernet.o + .debug_abbrev 0x00000000 0x125 THUMB Debug/../../obj/ethernet.o + .debug_loc 0x00000000 0x578 THUMB Debug/../../obj/ethernet.o + .debug_aranges + 0x00000000 0xe0 THUMB Debug/../../obj/ethernet.o + .debug_ranges 0x00000000 0xd0 THUMB Debug/../../obj/ethernet.o + .debug_line 0x00000000 0x497 THUMB Debug/../../obj/ethernet.o + .debug_str 0x00000000 0x36a THUMB Debug/../../obj/ethernet.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/ethernet.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/ethernet.o .text 0x00000000 0x0 THUMB Debug/../../obj/flash.o .data 0x00000000 0x0 THUMB Debug/../../obj/flash.o .bss 0x00000000 0x0 THUMB Debug/../../obj/flash.o @@ -275,11 +323,11 @@ Discarded input sections .text.FlashErase 0x00000000 0x94 THUMB Debug/../../obj/flash.o .text.FlashProgram - 0x00000000 0x188 THUMB Debug/../../obj/flash.o + 0x00000000 0x180 THUMB Debug/../../obj/flash.o .text.FlashProtectGet 0x00000000 0x11c THUMB Debug/../../obj/flash.o .text.FlashProtectSet - 0x00000000 0x248 THUMB Debug/../../obj/flash.o + 0x00000000 0x24c THUMB Debug/../../obj/flash.o .text.FlashProtectSave 0x00000000 0x98 THUMB Debug/../../obj/flash.o .text.FlashUserGet @@ -300,6 +348,18 @@ Discarded input sections 0x00000000 0x34 THUMB Debug/../../obj/flash.o .text.FlashIntClear 0x00000000 0x20 THUMB Debug/../../obj/flash.o + .debug_frame 0x00000000 0x294 THUMB Debug/../../obj/flash.o + .debug_info 0x00000000 0x40b THUMB Debug/../../obj/flash.o + .debug_abbrev 0x00000000 0x1a0 THUMB Debug/../../obj/flash.o + .debug_loc 0x00000000 0x35c THUMB Debug/../../obj/flash.o + .debug_aranges + 0x00000000 0x98 THUMB Debug/../../obj/flash.o + .debug_ranges 0x00000000 0x88 THUMB Debug/../../obj/flash.o + .debug_line 0x00000000 0x38a THUMB Debug/../../obj/flash.o + .debug_str 0x00000000 0x2e0 THUMB Debug/../../obj/flash.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/flash.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/flash.o .text 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .data 0x00000000 0x0 THUMB Debug/../../obj/gpio.o .bss 0x00000000 0x0 THUMB Debug/../../obj/gpio.o @@ -308,21 +368,21 @@ Discarded input sections .text.GPIOGetIntNumber 0x00000000 0x194 THUMB Debug/../../obj/gpio.o .text.GPIODirModeGet - 0x00000000 0xa0 THUMB Debug/../../obj/gpio.o + 0x00000000 0xa4 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeSet - 0x00000000 0x124 THUMB Debug/../../obj/gpio.o + 0x00000000 0x108 THUMB Debug/../../obj/gpio.o .text.GPIOIntTypeGet - 0x00000000 0xc8 THUMB Debug/../../obj/gpio.o + 0x00000000 0xc4 THUMB Debug/../../obj/gpio.o .text.GPIOPadConfigGet - 0x00000000 0x174 THUMB Debug/../../obj/gpio.o + 0x00000000 0x16c THUMB Debug/../../obj/gpio.o .text.GPIOPinIntEnable 0x00000000 0x50 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntDisable 0x00000000 0x54 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntStatus - 0x00000000 0x5c THUMB Debug/../../obj/gpio.o + 0x00000000 0x58 THUMB Debug/../../obj/gpio.o .text.GPIOPinIntClear - 0x00000000 0x4c THUMB Debug/../../obj/gpio.o + 0x00000000 0x48 THUMB Debug/../../obj/gpio.o .text.GPIOPortIntRegister 0x00000000 0x64 THUMB Debug/../../obj/gpio.o .text.GPIOPortIntUnregister @@ -358,7 +418,7 @@ Discarded input sections .text.GPIOPinTypeEPI 0x00000000 0x68 THUMB Debug/../../obj/gpio.o .text.GPIOPinConfigure - 0x00000000 0xec THUMB Debug/../../obj/gpio.o + 0x00000000 0xe0 THUMB Debug/../../obj/gpio.o .text 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o .data 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o .bss 0x00000000 0x0 THUMB Debug/../../obj/hibernate.o @@ -421,6 +481,18 @@ Discarded input sections 0x00000000 0x48 THUMB Debug/../../obj/hibernate.o .text.HibernateIsActive 0x00000000 0x24 THUMB Debug/../../obj/hibernate.o + .debug_frame 0x00000000 0x440 THUMB Debug/../../obj/hibernate.o + .debug_info 0x00000000 0x467 THUMB Debug/../../obj/hibernate.o + .debug_abbrev 0x00000000 0x144 THUMB Debug/../../obj/hibernate.o + .debug_loc 0x00000000 0x584 THUMB Debug/../../obj/hibernate.o + .debug_aranges + 0x00000000 0xf8 THUMB Debug/../../obj/hibernate.o + .debug_ranges 0x00000000 0xe8 THUMB Debug/../../obj/hibernate.o + .debug_line 0x00000000 0x394 THUMB Debug/../../obj/hibernate.o + .debug_str 0x00000000 0x398 THUMB Debug/../../obj/hibernate.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/hibernate.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/hibernate.o .text 0x00000000 0x0 THUMB Debug/../../obj/i2c.o .data 0x00000000 0x0 THUMB Debug/../../obj/i2c.o .bss 0x00000000 0x0 THUMB Debug/../../obj/i2c.o @@ -474,7 +546,7 @@ Discarded input sections .text.I2CMasterControl 0x00000000 0xa0 THUMB Debug/../../obj/i2c.o .text.I2CMasterErr - 0x00000000 0x78 THUMB Debug/../../obj/i2c.o + 0x00000000 0x74 THUMB Debug/../../obj/i2c.o .text.I2CMasterDataPut 0x00000000 0x50 THUMB Debug/../../obj/i2c.o .text.I2CMasterDataGet @@ -485,6 +557,18 @@ Discarded input sections 0x00000000 0x50 THUMB Debug/../../obj/i2c.o .text.I2CSlaveDataGet 0x00000000 0x4c THUMB Debug/../../obj/i2c.o + .debug_frame 0x00000000 0x538 THUMB Debug/../../obj/i2c.o + .debug_info 0x00000000 0x69b THUMB Debug/../../obj/i2c.o + .debug_abbrev 0x00000000 0xe2 THUMB Debug/../../obj/i2c.o + .debug_loc 0x00000000 0x690 THUMB Debug/../../obj/i2c.o + .debug_aranges + 0x00000000 0x108 THUMB Debug/../../obj/i2c.o + .debug_ranges 0x00000000 0xf8 THUMB Debug/../../obj/i2c.o + .debug_line 0x00000000 0x53e THUMB Debug/../../obj/i2c.o + .debug_str 0x00000000 0x35d THUMB Debug/../../obj/i2c.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/i2c.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/i2c.o .text 0x00000000 0x0 THUMB Debug/../../obj/i2s.o .data 0x00000000 0x0 THUMB Debug/../../obj/i2s.o .bss 0x00000000 0x0 THUMB Debug/../../obj/i2s.o @@ -510,23 +594,23 @@ Discarded input sections .text.I2SRxDisable 0x00000000 0x48 THUMB Debug/../../obj/i2s.o .text.I2SRxDataGet - 0x00000000 0x54 THUMB Debug/../../obj/i2s.o + 0x00000000 0x50 THUMB Debug/../../obj/i2s.o .text.I2SRxDataGetNonBlocking - 0x00000000 0x60 THUMB Debug/../../obj/i2s.o + 0x00000000 0x5c THUMB Debug/../../obj/i2s.o .text.I2SRxConfigSet - 0x00000000 0xdc THUMB Debug/../../obj/i2s.o + 0x00000000 0xc0 THUMB Debug/../../obj/i2s.o .text.I2SRxFIFOLimitSet - 0x00000000 0x60 THUMB Debug/../../obj/i2s.o + 0x00000000 0x5c THUMB Debug/../../obj/i2s.o .text.I2SRxFIFOLimitGet - 0x00000000 0x48 THUMB Debug/../../obj/i2s.o - .text.I2SRxFIFOLevelGet 0x00000000 0x44 THUMB Debug/../../obj/i2s.o + .text.I2SRxFIFOLevelGet + 0x00000000 0x40 THUMB Debug/../../obj/i2s.o .text.I2STxRxEnable 0x00000000 0x60 THUMB Debug/../../obj/i2s.o .text.I2STxRxDisable 0x00000000 0x48 THUMB Debug/../../obj/i2s.o .text.I2STxRxConfigSet - 0x00000000 0x104 THUMB Debug/../../obj/i2s.o + 0x00000000 0xe8 THUMB Debug/../../obj/i2s.o .text.I2SMasterClockSelect 0x00000000 0x74 THUMB Debug/../../obj/i2s.o .text.I2SIntEnable @@ -534,13 +618,25 @@ Discarded input sections .text.I2SIntDisable 0x00000000 0x70 THUMB Debug/../../obj/i2s.o .text.I2SIntStatus - 0x00000000 0x5c THUMB Debug/../../obj/i2s.o + 0x00000000 0x54 THUMB Debug/../../obj/i2s.o .text.I2SIntClear - 0x00000000 0x68 THUMB Debug/../../obj/i2s.o + 0x00000000 0x64 THUMB Debug/../../obj/i2s.o .text.I2SIntRegister 0x00000000 0x70 THUMB Debug/../../obj/i2s.o .text.I2SIntUnregister 0x00000000 0x50 THUMB Debug/../../obj/i2s.o + .debug_frame 0x00000000 0x488 THUMB Debug/../../obj/i2s.o + .debug_info 0x00000000 0x5ad THUMB Debug/../../obj/i2s.o + .debug_abbrev 0x00000000 0xed THUMB Debug/../../obj/i2s.o + .debug_loc 0x00000000 0x5b0 THUMB Debug/../../obj/i2s.o + .debug_aranges + 0x00000000 0xe8 THUMB Debug/../../obj/i2s.o + .debug_ranges 0x00000000 0xd8 THUMB Debug/../../obj/i2s.o + .debug_line 0x00000000 0x419 THUMB Debug/../../obj/i2s.o + .debug_str 0x00000000 0x2ce THUMB Debug/../../obj/i2s.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/i2s.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/i2s.o .text 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o .data 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o .bss 0x00000000 0x0 THUMB Debug/../../obj/interrupt.o @@ -595,6 +691,18 @@ Discarded input sections 0x00000000 0x4c THUMB Debug/../../obj/mpu.o .text.MPUIntUnregister 0x00000000 0x24 THUMB Debug/../../obj/mpu.o + .debug_frame 0x00000000 0x17c THUMB Debug/../../obj/mpu.o + .debug_info 0x00000000 0x1c1 THUMB Debug/../../obj/mpu.o + .debug_abbrev 0x00000000 0xcb THUMB Debug/../../obj/mpu.o + .debug_loc 0x00000000 0x1d4 THUMB Debug/../../obj/mpu.o + .debug_aranges + 0x00000000 0x60 THUMB Debug/../../obj/mpu.o + .debug_ranges 0x00000000 0x50 THUMB Debug/../../obj/mpu.o + .debug_line 0x00000000 0x17c THUMB Debug/../../obj/mpu.o + .debug_str 0x00000000 0x193 THUMB Debug/../../obj/mpu.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/mpu.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/mpu.o .text 0x00000000 0x0 THUMB Debug/../../obj/pwm.o .data 0x00000000 0x0 THUMB Debug/../../obj/pwm.o .bss 0x00000000 0x0 THUMB Debug/../../obj/pwm.o @@ -614,9 +722,9 @@ Discarded input sections .text.PWMGenDisable 0x00000000 0x74 THUMB Debug/../../obj/pwm.o .text.PWMPulseWidthSet - 0x00000000 0xd4 THUMB Debug/../../obj/pwm.o + 0x00000000 0xd0 THUMB Debug/../../obj/pwm.o .text.PWMPulseWidthGet - 0x00000000 0xb8 THUMB Debug/../../obj/pwm.o + 0x00000000 0xb4 THUMB Debug/../../obj/pwm.o .text.PWMDeadBandEnable 0x00000000 0xd4 THUMB Debug/../../obj/pwm.o .text.PWMDeadBandDisable @@ -660,15 +768,27 @@ Discarded input sections .text.PWMFaultIntClearExt 0x00000000 0x60 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultConfigure - 0x00000000 0xec THUMB Debug/../../obj/pwm.o + 0x00000000 0xf4 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultTriggerSet 0x00000000 0x11c THUMB Debug/../../obj/pwm.o .text.PWMGenFaultTriggerGet 0x00000000 0xcc THUMB Debug/../../obj/pwm.o .text.PWMGenFaultStatus - 0x00000000 0xd8 THUMB Debug/../../obj/pwm.o + 0x00000000 0xe4 THUMB Debug/../../obj/pwm.o .text.PWMGenFaultClear - 0x00000000 0x128 THUMB Debug/../../obj/pwm.o + 0x00000000 0x134 THUMB Debug/../../obj/pwm.o + .debug_frame 0x00000000 0x60c THUMB Debug/../../obj/pwm.o + .debug_info 0x00000000 0x9c5 THUMB Debug/../../obj/pwm.o + .debug_abbrev 0x00000000 0xeb THUMB Debug/../../obj/pwm.o + .debug_loc 0x00000000 0x7a8 THUMB Debug/../../obj/pwm.o + .debug_aranges + 0x00000000 0x130 THUMB Debug/../../obj/pwm.o + .debug_ranges 0x00000000 0x120 THUMB Debug/../../obj/pwm.o + .debug_line 0x00000000 0x6d3 THUMB Debug/../../obj/pwm.o + .debug_str 0x00000000 0x451 THUMB Debug/../../obj/pwm.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/pwm.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/pwm.o .text 0x00000000 0x0 THUMB Debug/../../obj/qei.o .data 0x00000000 0x0 THUMB Debug/../../obj/qei.o .bss 0x00000000 0x0 THUMB Debug/../../obj/qei.o @@ -686,7 +806,7 @@ Discarded input sections .text.QEIDirectionGet 0x00000000 0x60 THUMB Debug/../../obj/qei.o .text.QEIErrorGet - 0x00000000 0x54 THUMB Debug/../../obj/qei.o + 0x00000000 0x5c THUMB Debug/../../obj/qei.o .text.QEIVelocityEnable 0x00000000 0x50 THUMB Debug/../../obj/qei.o .text.QEIVelocityDisable @@ -707,6 +827,18 @@ Discarded input sections 0x00000000 0x60 THUMB Debug/../../obj/qei.o .text.QEIIntClear 0x00000000 0x50 THUMB Debug/../../obj/qei.o + .debug_frame 0x00000000 0x2fc THUMB Debug/../../obj/qei.o + .debug_info 0x00000000 0x3dc THUMB Debug/../../obj/qei.o + .debug_abbrev 0x00000000 0xed THUMB Debug/../../obj/qei.o + .debug_loc 0x00000000 0x3b8 THUMB Debug/../../obj/qei.o + .debug_aranges + 0x00000000 0xa0 THUMB Debug/../../obj/qei.o + .debug_ranges 0x00000000 0x90 THUMB Debug/../../obj/qei.o + .debug_line 0x00000000 0x366 THUMB Debug/../../obj/qei.o + .debug_str 0x00000000 0x23b THUMB Debug/../../obj/qei.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/qei.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/qei.o .text 0x00000000 0x0 THUMB Debug/../../obj/ssi.o .data 0x00000000 0x0 THUMB Debug/../../obj/ssi.o .bss 0x00000000 0x0 THUMB Debug/../../obj/ssi.o @@ -742,6 +874,18 @@ Discarded input sections .text.SSIDMADisable 0x00000000 0x5c THUMB Debug/../../obj/ssi.o .text.SSIBusy 0x00000000 0x5c THUMB Debug/../../obj/ssi.o + .debug_frame 0x00000000 0x2d0 THUMB Debug/../../obj/ssi.o + .debug_info 0x00000000 0x455 THUMB Debug/../../obj/ssi.o + .debug_abbrev 0x00000000 0xe2 THUMB Debug/../../obj/ssi.o + .debug_loc 0x00000000 0x380 THUMB Debug/../../obj/ssi.o + .debug_aranges + 0x00000000 0x98 THUMB Debug/../../obj/ssi.o + .debug_ranges 0x00000000 0x88 THUMB Debug/../../obj/ssi.o + .debug_line 0x00000000 0x3f3 THUMB Debug/../../obj/ssi.o + .debug_str 0x00000000 0x269 THUMB Debug/../../obj/ssi.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/ssi.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/ssi.o .text 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o .data 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o .bss 0x00000000 0x0 THUMB Debug/../../obj/sysctl.o @@ -902,6 +1046,18 @@ Discarded input sections 0x00000000 0x44 THUMB Debug/../../obj/timer.o .text.TimerQuiesce 0x00000000 0x11c THUMB Debug/../../obj/timer.o + .debug_frame 0x00000000 0x4b0 THUMB Debug/../../obj/timer.o + .debug_info 0x00000000 0x6c7 THUMB Debug/../../obj/timer.o + .debug_abbrev 0x00000000 0xdc THUMB Debug/../../obj/timer.o + .debug_loc 0x00000000 0x5e8 THUMB Debug/../../obj/timer.o + .debug_aranges + 0x00000000 0xf0 THUMB Debug/../../obj/timer.o + .debug_ranges 0x00000000 0xe0 THUMB Debug/../../obj/timer.o + .debug_line 0x00000000 0x6b8 THUMB Debug/../../obj/timer.o + .debug_str 0x00000000 0x2f8 THUMB Debug/../../obj/timer.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/timer.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/timer.o .text 0x00000000 0x0 THUMB Debug/../../obj/uart.o .data 0x00000000 0x0 THUMB Debug/../../obj/uart.o .bss 0x00000000 0x0 THUMB Debug/../../obj/uart.o @@ -1027,6 +1183,18 @@ Discarded input sections 0x00000000 0x6c THUMB Debug/../../obj/udma.o .text.uDMAIntUnregister 0x00000000 0x28 THUMB Debug/../../obj/udma.o + .debug_frame 0x00000000 0x3b4 THUMB Debug/../../obj/udma.o + .debug_info 0x00000000 0x577 THUMB Debug/../../obj/udma.o + .debug_abbrev 0x00000000 0x182 THUMB Debug/../../obj/udma.o + .debug_loc 0x00000000 0x4c0 THUMB Debug/../../obj/udma.o + .debug_aranges + 0x00000000 0xd0 THUMB Debug/../../obj/udma.o + .debug_ranges 0x00000000 0xc0 THUMB Debug/../../obj/udma.o + .debug_line 0x00000000 0x415 THUMB Debug/../../obj/udma.o + .debug_str 0x00000000 0x3e2 THUMB Debug/../../obj/udma.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/udma.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/udma.o .text 0x00000000 0x0 THUMB Debug/../../obj/usb.o .data 0x00000000 0x0 THUMB Debug/../../obj/usb.o .bss 0x00000000 0x0 THUMB Debug/../../obj/usb.o @@ -1044,7 +1212,7 @@ Discarded input sections .text.USBHostSpeedGet 0x00000000 0x6c THUMB Debug/../../obj/usb.o .text.USBIntStatus - 0x00000000 0xe0 THUMB Debug/../../obj/usb.o + 0x00000000 0xd0 THUMB Debug/../../obj/usb.o .text.USBIntDisable 0x00000000 0x11c THUMB Debug/../../obj/usb.o .text.USBIntEnable @@ -1054,7 +1222,7 @@ Discarded input sections .text.USBIntEnableControl 0x00000000 0xac THUMB Debug/../../obj/usb.o .text.USBIntStatusControl - 0x00000000 0xb8 THUMB Debug/../../obj/usb.o + 0x00000000 0xa8 THUMB Debug/../../obj/usb.o .text.USBIntDisableEndpoint 0x00000000 0x84 THUMB Debug/../../obj/usb.o .text.USBIntEnableEndpoint @@ -1072,7 +1240,7 @@ Discarded input sections .text.USBDevEndpointStatusClear 0x00000000 0x17c THUMB Debug/../../obj/usb.o .text.USBHostEndpointDataToggle - 0x00000000 0x190 THUMB Debug/../../obj/usb.o + 0x00000000 0x174 THUMB Debug/../../obj/usb.o .text.USBEndpointDataToggleClear 0x00000000 0xf4 THUMB Debug/../../obj/usb.o .text.USBDevEndpointStall @@ -1088,19 +1256,19 @@ Discarded input sections .text.USBDevAddrGet 0x00000000 0x3c THUMB Debug/../../obj/usb.o .text.USBHostEndpointConfig - 0x00000000 0x274 THUMB Debug/../../obj/usb.o + 0x00000000 0x25c THUMB Debug/../../obj/usb.o .text.USBDevEndpointConfigSet - 0x00000000 0x1c0 THUMB Debug/../../obj/usb.o + 0x00000000 0x1b4 THUMB Debug/../../obj/usb.o .text.USBDevEndpointConfigGet - 0x00000000 0x204 THUMB Debug/../../obj/usb.o + 0x00000000 0x1fc THUMB Debug/../../obj/usb.o .text.USBFIFOConfigSet 0x00000000 0x140 THUMB Debug/../../obj/usb.o .text.USBFIFOConfigGet 0x00000000 0x148 THUMB Debug/../../obj/usb.o .text.USBEndpointDMAEnable - 0x00000000 0x78 THUMB Debug/../../obj/usb.o + 0x00000000 0x64 THUMB Debug/../../obj/usb.o .text.USBEndpointDMADisable - 0x00000000 0x78 THUMB Debug/../../obj/usb.o + 0x00000000 0x64 THUMB Debug/../../obj/usb.o .text.USBEndpointDataAvail 0x00000000 0xec THUMB Debug/../../obj/usb.o .text.USBEndpointDataGet @@ -1114,7 +1282,7 @@ Discarded input sections .text.USBEndpointDataSend 0x00000000 0xf8 THUMB Debug/../../obj/usb.o .text.USBFIFOFlush - 0x00000000 0x154 THUMB Debug/../../obj/usb.o + 0x00000000 0x14c THUMB Debug/../../obj/usb.o .text.USBHostRequestIN 0x00000000 0xd0 THUMB Debug/../../obj/usb.o .text.USBHostRequestStatus @@ -1148,13 +1316,25 @@ Discarded input sections .text.USBEndpointDMAChannel 0x00000000 0x108 THUMB Debug/../../obj/usb.o .text.USBHostMode - 0x00000000 0x44 THUMB Debug/../../obj/usb.o + 0x00000000 0x40 THUMB Debug/../../obj/usb.o .text.USBDevMode - 0x00000000 0x44 THUMB Debug/../../obj/usb.o + 0x00000000 0x40 THUMB Debug/../../obj/usb.o .text.USBPHYPowerOff 0x00000000 0x2c THUMB Debug/../../obj/usb.o .text.USBPHYPowerOn 0x00000000 0x2c THUMB Debug/../../obj/usb.o + .debug_frame 0x00000000 0xaa4 THUMB Debug/../../obj/usb.o + .debug_info 0x00000000 0x1106 THUMB Debug/../../obj/usb.o + .debug_abbrev 0x00000000 0x148 THUMB Debug/../../obj/usb.o + .debug_loc 0x00000000 0xd90 THUMB Debug/../../obj/usb.o + .debug_aranges + 0x00000000 0x208 THUMB Debug/../../obj/usb.o + .debug_ranges 0x00000000 0x1f8 THUMB Debug/../../obj/usb.o + .debug_line 0x00000000 0x1174 THUMB Debug/../../obj/usb.o + .debug_str 0x00000000 0x6d1 THUMB Debug/../../obj/usb.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/usb.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/usb.o .text 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o .data 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o .bss 0x00000000 0x0 THUMB Debug/../../obj/watchdog.o @@ -1193,6 +1373,18 @@ Discarded input sections 0x00000000 0x50 THUMB Debug/../../obj/watchdog.o .text.WatchdogStallDisable 0x00000000 0x50 THUMB Debug/../../obj/watchdog.o + .debug_frame 0x00000000 0x2fc THUMB Debug/../../obj/watchdog.o + .debug_info 0x00000000 0x351 THUMB Debug/../../obj/watchdog.o + .debug_abbrev 0x00000000 0xde THUMB Debug/../../obj/watchdog.o + .debug_loc 0x00000000 0x3b8 THUMB Debug/../../obj/watchdog.o + .debug_aranges + 0x00000000 0xa0 THUMB Debug/../../obj/watchdog.o + .debug_ranges 0x00000000 0x90 THUMB Debug/../../obj/watchdog.o + .debug_line 0x00000000 0x309 THUMB Debug/../../obj/watchdog.o + .debug_str 0x00000000 0x236 THUMB Debug/../../obj/watchdog.o + .comment 0x00000000 0x4f THUMB Debug/../../obj/watchdog.o + .ARM.attributes + 0x00000000 0x33 THUMB Debug/../../obj/watchdog.o .text 0x00000000 0x0 THUMB Debug/../../obj/can.o .data 0x00000000 0x0 THUMB Debug/../../obj/can.o .bss 0x00000000 0x0 THUMB Debug/../../obj/can.o @@ -1201,7 +1393,7 @@ Discarded input sections .text.CANDisable 0x00000000 0x58 THUMB Debug/../../obj/can.o .text.CANBitTimingGet - 0x00000000 0xd0 THUMB Debug/../../obj/can.o + 0x00000000 0xcc THUMB Debug/../../obj/can.o .text.CANBitRateSet 0x00000000 0x1b4 THUMB Debug/../../obj/can.o .text.CANIntRegister @@ -1217,740 +1409,749 @@ Discarded input sections .text.CANIntClear 0x00000000 0xec THUMB Debug/../../obj/can.o .text.CANRetrySet - 0x00000000 0x74 THUMB Debug/../../obj/can.o + 0x00000000 0x70 THUMB Debug/../../obj/can.o .text.CANRetryGet 0x00000000 0x5c THUMB Debug/../../obj/can.o .text.CANErrCntrGet - 0x00000000 0x80 THUMB Debug/../../obj/can.o + 0x00000000 0x7c THUMB Debug/../../obj/can.o .text.CANMessageClear 0x00000000 0xd8 THUMB Debug/../../obj/can.o - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.twodigit - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.month_name - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.checked_day_name - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_ch - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_str - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_nstr - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_digit - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigit - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigits_leading_blank - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_twodigit2 - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.put_formatted - 0x00000000 0x3ec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x3ec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__RAL_pow10 - 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__stdin_ungetc - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__print_padding - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__pre_padding - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xlltoa - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xltoa - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__xtoa - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.abs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.asctime_r - 0x00000000 0xfc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xf8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.asctime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atexit - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc._execute_at_exit_fns - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.bsearch - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_is_exact_power_of_two - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_round_power_of_two - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_count_leading_zeroes - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctl_ilogb - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_alloc - 0x00000000 0x108 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1e8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_free - 0x00000000 0xf0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xf0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.buddy_heap_init - 0x00000000 0xc0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x138 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isalpha - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isxdigit - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__strtoull - 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.__strtoul - 0x00000000 0xec C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xe4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ispunct - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isalnum - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isprint - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isgraph - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.iscntrl - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.tolower - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.toupper - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.isblank - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.div - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.itoa - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.labs - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ldiv - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_init - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_alloc - 0x00000000 0xb4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_free - 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.linked_heap_realloc - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.llabs - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.lldiv - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.lltoa - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localeconv - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.setlocale - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ltoa - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.malloc - 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.calloc - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.free - 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.realloc - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memccpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.mempcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memcmp - 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x88 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.memmove - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.qsort - 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x488 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.rand - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.snprintf - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.sprintf - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.srand - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.sscanf - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcasecmp - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcasestr - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcat - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strcspn - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strdup - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strftime - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncasecmp - 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xd0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncasestr - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xbc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncat - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strlcat - 0x00000000 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncmp - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strncpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strlcpy - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnlen - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strndup - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strnstr - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strpbrk - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strrchr - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strsep - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strspn - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strstr - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtod - 0x00000000 0x1bc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x2e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtof - 0x00000000 0x19c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtok - 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtok_r - 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtol - 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atol - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atoi - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atof - 0x00000000 0x14c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1cc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoll - 0x00000000 0xa4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.atoll - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoul - 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.strtoull - 0x00000000 0xb4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localtime_r - 0x00000000 0x190 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x188 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.difftime - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.checktm - 0x00000000 0x244 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x23c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.mktime - 0x00000000 0x1c0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x3b4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctime - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ctime_r - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gmtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gmtime_r - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.localtime - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.gettimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.settimeofday - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ulltoa - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.ultoa - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.utoa - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsnprintf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsprintf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.vsscanf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscat - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcschr - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscmp - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcscspn - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcslen - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsdup - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncat - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncmp - 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsncpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnlen - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsnstr - 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcspbrk - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsrchr - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcssep - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsspn - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcsstr - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcstok - 0x00000000 0x98 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wcstok_r - 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x90 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemcpy - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemccpy - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmempcpy - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemmove - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xb8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemcmp - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemchr - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x5c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .text.libc.wmemset - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.heap - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__crt_get_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.year_lengths - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.mon_name - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc.last.2692 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__atexitfns - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.invalid - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.str1.4 - 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.__RAL_rand_next - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.power - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.__RAL_mon_lengths - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc.last.3164 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc.last.5990 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc.last.5518 + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.day_name - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.month_names - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.asctime_buf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.__ctype - 0x00000000 0x104 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x104 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.__crt_set_time_of_day - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .bss.libc.atexitfn_count - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc.__ungot - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .data.libc._lconv - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .bss.libc._tm 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .rodata.libc.day_names - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.longjmp - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .debug_frame 0x00000000 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy - 0x00000000 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy_fast - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memcpy_small - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.memset - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.__aeabi_memset - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.setjmp - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strcpy - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strcmp - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) + 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) .text.libc.strlen - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2_asm.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r4 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r1 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r2 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r3 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r0 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r5 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_sp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r7 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r8 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r9 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_sl - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_r6 - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_lr - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_ip - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc._call_via_fp - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .debug_frame 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_asr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_div - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_lsl - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_lsr - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_mod - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_udivmod - 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_ldivmod - 0x00000000 0x58 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_cmp - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int64_ucmp - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.muldi3 - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_umod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_div - 0x00000000 0x310 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x320 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .rodata.libc.__aeabi_idiv - 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xa C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .rodata.libc.__aeabi_uidiv - 0x00000000 0x46 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x46 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__int32_mod - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_uidivmod - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__aeabi_idivmod - 0x00000000 0x4c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.ctl_count_leading_zeros_16 - 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_shi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_si - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_sqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uhi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) .text.libc.__gnu_thumb1_case_uqi - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc_asm.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio - 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.__do_nvdebug_operation - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_abort - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fopen - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgets - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fputc - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fputs - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fread - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fwrite - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fseek - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ftell - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_gets - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fflush - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fclose - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgetc - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getchar - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_putchar - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_puts - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_rewind - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_clearerr - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_feof - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ferror - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getch - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_time - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vprintf - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vfprintf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ungetc - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fgetpos - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_fsetpos - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_freopen - 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_perror - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_remove - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_rename - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_tmpfile - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_tmpnam - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getenv - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_system - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vfscanf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_vscanf - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_exit - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_enabled - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_kbhit - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_ioctl - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_runtime_error - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_break - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getargs - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_geti - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getu - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getl - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getul - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getf - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getd - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getll - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_getull - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_filesize - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_accept - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_bind - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_listen - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_shutdown - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_socket - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_htons - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_htonl - 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_loadsymbols - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .text.libdebugio.debug_unloadsymbols - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.getenv_buffer - 0x00000000 0x400 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x400 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.__dbgEnabled - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .bss.libdebugio.tmpnam_buffer - 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x100 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__errno - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__heap_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__heap_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__printf_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__printf_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__scanf_lock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .text.libc.__scanf_unlock - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .bss.libc.errno - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) - .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + .text.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .data.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .bss.libc 0x00000000 0x0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int32_to_float32 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .debug_frame 0x00000000 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int32_to_float64 - 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint32_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint32_to_float64 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int64_to_float32 - 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x94 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__int64_to_float64 - 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint64_to_float32 - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__uint64_to_float64 - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_int32 - 0x00000000 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_int64 - 0x00000000 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_uint32 - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_int32 - 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x54 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_int64 - 0x00000000 0x80 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x84 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_uint32 - 0x00000000 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x34 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_uint64 - 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_to_float64 - 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_to_float32 - 0x00000000 0x70 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x78 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_add - 0x00000000 0x138 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x140 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_mul - 0x00000000 0xd4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xe4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_div - 0x00000000 0x1e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_cmp - 0x00000000 0x44 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x48 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_fcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_add - 0x00000000 0x294 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x2b8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_mul - 0x00000000 0x16c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x180 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_div - 0x00000000 0x214 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_cmp - 0x00000000 0x64 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpeq - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmplt - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmple - 0x00000000 0x14 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpge - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x1c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__aeabi_dcmpgt - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_signbit - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isinf - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isnan - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isfinite - 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0xc C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isfinite - 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_isnormal - 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float32_classify - 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .text.libc.__float64_classify - 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float32_infinity - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float32_nan - 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float64_infinity - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) .rodata.libc.__float64_nan - 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x00000000 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) + .ARM.attributes + 0x00000000 0x1d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a(libm_asm.o) Memory Configuration @@ -1960,14 +2161,14 @@ CM3_System_Control_Space 0xe000e000 0x00001000 xw Peripherals 0x40020000 0x00100000 xw FiRM_Peripherals 0x40000000 0x00010000 xw SRAM 0x20000000 0x00010000 xw -FLASH 0x00004000 0x0003c000 xr +FLASH 0x00008000 0x00038000 xr *default* 0x00000000 0xffffffff Linker script and memory map - 0x00007538 __do_debug_operation = __do_debug_operation_mempoll - 0x00006afc __vfprintf = __vfprintf_int_nwp - 0x0000708c __vfscanf = __vfscanf_int + 0x0000b6f0 __do_debug_operation = __do_debug_operation_mempoll + 0x0000aab4 __vfprintf = __vfprintf_int_nwp + 0x0000b10c __vfscanf = __vfscanf_int 0xe000e000 __CM3_System_Control_Space_segment_start__ = 0xe000e000 0xe000f000 __CM3_System_Control_Space_segment_end__ = 0xe000f000 0x40020000 __Peripherals_segment_start__ = 0x40020000 @@ -1976,7 +2177,7 @@ Linker script and memory map 0x40010000 __FiRM_Peripherals_segment_end__ = 0x40010000 0x20000000 __SRAM_segment_start__ = 0x20000000 0x20010000 __SRAM_segment_end__ = 0x20010000 - 0x00004000 __FLASH_segment_start__ = 0x4000 + 0x00008000 __FLASH_segment_start__ = 0x8000 0x00040000 __FLASH_segment_end__ = 0x40000 0x00000100 __STACKSIZE__ = 0x100 0x00000000 __STACKSIZE_PROCESS__ = 0x0 @@ -1994,297 +2195,303 @@ Linker script and memory map 0x20000000 __vectors_ram_end__ = (__vectors_ram_start__ + SIZEOF (.vectors_ram)) 0x20000000 __vectors_ram_load_end__ = __vectors_ram_end__ 0x00000001 . = ASSERT (((__vectors_ram_end__ >= __SRAM_segment_start__) && (__vectors_ram_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .vectors_ram is too large to fit in SRAM memory segment) - 0x00004000 __vectors_load_start__ = ALIGN (__FLASH_segment_start__, 0x100) + 0x00008000 __vectors_load_start__ = ALIGN (__FLASH_segment_start__, 0x100) -.vectors 0x00004000 0xf4 - 0x00004000 __vectors_start__ = . +.vectors 0x00008000 0xf4 + 0x00008000 __vectors_start__ = . *(.vectors .vectors.*) - .vectors 0x00004000 0xf4 THUMB Debug/../../obj/vectors.o - 0x00004000 _vectors - 0x000040f4 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors)) - 0x000040f4 __vectors_load_end__ = __vectors_end__ + .vectors 0x00008000 0xf4 THUMB Debug/../../obj/vectors.o + 0x00008000 _vectors + 0x000080f4 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors)) + 0x000080f4 __vectors_load_end__ = __vectors_end__ 0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .vectors is too large to fit in FLASH memory segment) - 0x000040f4 __init_load_start__ = ALIGN (__vectors_end__, 0x4) + 0x000080f4 __init_load_start__ = ALIGN (__vectors_end__, 0x4) -.init 0x000040f4 0x114 - 0x000040f4 __init_start__ = . +.init 0x000080f4 0x118 + 0x000080f4 __init_start__ = . *(.init .init.*) - .init 0x000040f4 0x114 THUMB Debug/../../obj/cstart.o - 0x000040f4 _start - 0x00004172 exit - 0x00004196 reset_handler - 0x00004208 __init_end__ = (__init_start__ + SIZEOF (.init)) - 0x00004208 __init_load_end__ = __init_end__ + .init 0x000080f4 0x118 THUMB Debug/../../obj/cstart.o + 0x000080f4 _start + 0x00008176 exit + 0x0000819a reset_handler + 0x0000820c __init_end__ = (__init_start__ + SIZEOF (.init)) + 0x0000820c __init_load_end__ = __init_end__ 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .init is too large to fit in FLASH memory segment) - 0x00004208 __text_load_start__ = ALIGN (__init_end__, 0x4) + 0x0000820c __text_load_start__ = ALIGN (__init_end__, 0x4) -.text 0x00004208 0x3370 - 0x00004208 __text_start__ = . +.text 0x0000820c 0x3528 + 0x0000820c __text_start__ = . *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*) .glue_7 0x00000000 0x0 linker stubs .glue_7t 0x00000000 0x0 linker stubs .text.BootComInit - 0x00004208 0x1c THUMB Debug/../../obj/boot.o - 0x00004208 BootComInit + 0x0000820c 0x1c THUMB Debug/../../obj/boot.o + 0x0000820c BootComInit .text.BootComCheckActivationRequest - 0x00004224 0x1c THUMB Debug/../../obj/boot.o - 0x00004224 BootComCheckActivationRequest + 0x00008228 0x1c THUMB Debug/../../obj/boot.o + 0x00008228 BootComCheckActivationRequest .text.BootActivate - 0x00004240 0x10 THUMB Debug/../../obj/boot.o + 0x00008244 0x10 THUMB Debug/../../obj/boot.o .text.BootComUartInit - 0x00004250 0x64 THUMB Debug/../../obj/boot.o + 0x00008254 0x64 THUMB Debug/../../obj/boot.o .text.BootComUartCheckActivationRequest - 0x000042b4 0xdc THUMB Debug/../../obj/boot.o + 0x000082b8 0xdc THUMB Debug/../../obj/boot.o .text.UartReceiveByte - 0x00004390 0x44 THUMB Debug/../../obj/boot.o + 0x00008394 0x40 THUMB Debug/../../obj/boot.o .text.CanSetBittiming - 0x000043d4 0xc8 THUMB Debug/../../obj/boot.o + 0x000083d4 0xc8 THUMB Debug/../../obj/boot.o .text.BootComCanInit - 0x0000449c 0xac THUMB Debug/../../obj/boot.o + 0x0000849c 0xb0 THUMB Debug/../../obj/boot.o .text.BootComCanCheckActivationRequest - 0x00004548 0x78 THUMB Debug/../../obj/boot.o + 0x0000854c 0x74 THUMB Debug/../../obj/boot.o .text.IrqInterruptEnable - 0x000045c0 0x10 THUMB Debug/../../obj/irq.o - 0x000045c0 IrqInterruptEnable - .text.LedInit 0x000045d0 0x48 THUMB Debug/../../obj/led.o - 0x000045d0 LedInit + 0x000085c0 0x10 THUMB Debug/../../obj/irq.o + 0x000085c0 IrqInterruptEnable + .text.LedInit 0x000085d0 0x48 THUMB Debug/../../obj/led.o + 0x000085d0 LedInit .text.LedToggle - 0x00004618 0xa4 THUMB Debug/../../obj/led.o - 0x00004618 LedToggle - .text.main 0x000046bc 0x30 THUMB Debug/../../obj/main.o - 0x000046bc main - .text.Init 0x000046ec 0x38 THUMB Debug/../../obj/main.o + 0x00008618 0xa0 THUMB Debug/../../obj/led.o + 0x00008618 LedToggle + .text.main 0x000086b8 0x30 THUMB Debug/../../obj/main.o + 0x000086b8 main + .text.Init 0x000086e8 0x38 THUMB Debug/../../obj/main.o .text.__error__ - 0x00004724 0x24 THUMB Debug/../../obj/main.o - 0x00004724 __error__ + 0x00008720 0x24 THUMB Debug/../../obj/main.o + 0x00008720 __error__ .text.UnusedISR - 0x00004748 0x8 THUMB Debug/../../obj/vectors.o - 0x00004748 UnusedISR + 0x00008744 0x8 THUMB Debug/../../obj/vectors.o + 0x00008744 UnusedISR .text.TimeInit - 0x00004750 0x50 THUMB Debug/../../obj/time.o - 0x00004750 TimeInit - .text.TimeSet 0x000047a0 0x20 THUMB Debug/../../obj/time.o - 0x000047a0 TimeSet - .text.TimeGet 0x000047c0 0x18 THUMB Debug/../../obj/time.o - 0x000047c0 TimeGet + 0x0000874c 0x50 THUMB Debug/../../obj/time.o + 0x0000874c TimeInit + .text.TimeSet 0x0000879c 0x20 THUMB Debug/../../obj/time.o + 0x0000879c TimeSet + .text.TimeGet 0x000087bc 0x18 THUMB Debug/../../obj/time.o + 0x000087bc TimeGet .text.TimeISRHandler - 0x000047d8 0x24 THUMB Debug/../../obj/time.o - 0x000047d8 TimeISRHandler + 0x000087d4 0x24 THUMB Debug/../../obj/time.o + 0x000087d4 TimeISRHandler .text.CPUcpsie - 0x000047fc 0xc THUMB Debug/../../obj/cpu.o - 0x000047fc CPUcpsie + 0x000087f8 0xc THUMB Debug/../../obj/cpu.o + 0x000087f8 CPUcpsie .text.GPIOBaseValid - 0x00004808 0x118 THUMB Debug/../../obj/gpio.o + 0x00008804 0x118 THUMB Debug/../../obj/gpio.o .text.GPIODirModeSet - 0x00004920 0xcc THUMB Debug/../../obj/gpio.o - 0x00004920 GPIODirModeSet + 0x0000891c 0xcc THUMB Debug/../../obj/gpio.o + 0x0000891c GPIODirModeSet .text.GPIOPadConfigSet - 0x000049ec 0x2a0 THUMB Debug/../../obj/gpio.o - 0x000049ec GPIOPadConfigSet + 0x000089e8 0x26c THUMB Debug/../../obj/gpio.o + 0x000089e8 GPIOPadConfigSet .text.GPIOPinWrite - 0x00004c8c 0x50 THUMB Debug/../../obj/gpio.o - 0x00004c8c GPIOPinWrite + 0x00008c54 0x50 THUMB Debug/../../obj/gpio.o + 0x00008c54 GPIOPinWrite .text.GPIOPinTypeCAN - 0x00004cdc 0x68 THUMB Debug/../../obj/gpio.o - 0x00004cdc GPIOPinTypeCAN + 0x00008ca4 0x68 THUMB Debug/../../obj/gpio.o + 0x00008ca4 GPIOPinTypeCAN .text.GPIOPinTypeGPIOOutput - 0x00004d44 0x68 THUMB Debug/../../obj/gpio.o - 0x00004d44 GPIOPinTypeGPIOOutput + 0x00008d0c 0x68 THUMB Debug/../../obj/gpio.o + 0x00008d0c GPIOPinTypeGPIOOutput .text.GPIOPinTypeUART - 0x00004dac 0x68 THUMB Debug/../../obj/gpio.o - 0x00004dac GPIOPinTypeUART + 0x00008d74 0x68 THUMB Debug/../../obj/gpio.o + 0x00008d74 GPIOPinTypeUART .text.IntMasterEnable - 0x00004e14 0x18 THUMB Debug/../../obj/interrupt.o - 0x00004e14 IntMasterEnable + 0x00008ddc 0x18 THUMB Debug/../../obj/interrupt.o + 0x00008ddc IntMasterEnable .text.IntEnable - 0x00004e2c 0xf0 THUMB Debug/../../obj/interrupt.o - 0x00004e2c IntEnable + 0x00008df4 0xf0 THUMB Debug/../../obj/interrupt.o + 0x00008df4 IntEnable .text.IntDisable - 0x00004f1c 0xf0 THUMB Debug/../../obj/interrupt.o - 0x00004f1c IntDisable + 0x00008ee4 0xf0 THUMB Debug/../../obj/interrupt.o + 0x00008ee4 IntDisable .text.SysCtlPeripheralValid - 0x0000500c 0x288 THUMB Debug/../../obj/sysctl.o + 0x00008fd4 0x288 THUMB Debug/../../obj/sysctl.o .text.SysCtlPeripheralEnable - 0x00005294 0x7c THUMB Debug/../../obj/sysctl.o - 0x00005294 SysCtlPeripheralEnable + 0x0000925c 0x7c THUMB Debug/../../obj/sysctl.o + 0x0000925c SysCtlPeripheralEnable .text.SysCtlReset - 0x00005310 0x18 THUMB Debug/../../obj/sysctl.o - 0x00005310 SysCtlReset + 0x000092d8 0x18 THUMB Debug/../../obj/sysctl.o + 0x000092d8 SysCtlReset .text.SysCtlDelay - 0x00005328 0x8 THUMB Debug/../../obj/sysctl.o - 0x00005328 SysCtlDelay + 0x000092f0 0x8 THUMB Debug/../../obj/sysctl.o + 0x000092f0 SysCtlDelay .text.SysCtlClockSet - 0x00005330 0x28c THUMB Debug/../../obj/sysctl.o - 0x00005330 SysCtlClockSet + 0x000092f8 0x28c THUMB Debug/../../obj/sysctl.o + 0x000092f8 SysCtlClockSet .text.SysCtlClockGet - 0x000055bc 0x370 THUMB Debug/../../obj/sysctl.o - 0x000055bc SysCtlClockGet + 0x00009584 0x370 THUMB Debug/../../obj/sysctl.o + 0x00009584 SysCtlClockGet .text.SysTickEnable - 0x0000592c 0x24 THUMB Debug/../../obj/systick.o - 0x0000592c SysTickEnable + 0x000098f4 0x24 THUMB Debug/../../obj/systick.o + 0x000098f4 SysTickEnable .text.SysTickIntEnable - 0x00005950 0x24 THUMB Debug/../../obj/systick.o - 0x00005950 SysTickIntEnable + 0x00009918 0x24 THUMB Debug/../../obj/systick.o + 0x00009918 SysTickIntEnable .text.SysTickPeriodSet - 0x00005974 0x44 THUMB Debug/../../obj/systick.o - 0x00005974 SysTickPeriodSet + 0x0000993c 0x44 THUMB Debug/../../obj/systick.o + 0x0000993c SysTickPeriodSet .text.UARTBaseValid - 0x000059b8 0x4c THUMB Debug/../../obj/uart.o + 0x00009980 0x4c THUMB Debug/../../obj/uart.o .text.UARTConfigSetExpClk - 0x00005a04 0x1bc THUMB Debug/../../obj/uart.o - 0x00005a04 UARTConfigSetExpClk + 0x000099cc 0x1bc THUMB Debug/../../obj/uart.o + 0x000099cc UARTConfigSetExpClk .text.UARTEnable - 0x00005bc0 0x68 THUMB Debug/../../obj/uart.o - 0x00005bc0 UARTEnable + 0x00009b88 0x68 THUMB Debug/../../obj/uart.o + 0x00009b88 UARTEnable .text.UARTDisable - 0x00005c28 0x78 THUMB Debug/../../obj/uart.o - 0x00005c28 UARTDisable + 0x00009bf0 0x78 THUMB Debug/../../obj/uart.o + 0x00009bf0 UARTDisable .text.UARTCharGetNonBlocking - 0x00005ca0 0x54 THUMB Debug/../../obj/uart.o - 0x00005ca0 UARTCharGetNonBlocking + 0x00009c68 0x54 THUMB Debug/../../obj/uart.o + 0x00009c68 UARTCharGetNonBlocking .text.CANBaseValid - 0x00005cf4 0x4c THUMB Debug/../../obj/can.o + 0x00009cbc 0x4c THUMB Debug/../../obj/can.o .text.CANIntNumberGet - 0x00005d40 0x5c THUMB Debug/../../obj/can.o + 0x00009d08 0x5c THUMB Debug/../../obj/can.o .text.CANRegRead - 0x00005d9c 0xac THUMB Debug/../../obj/can.o + 0x00009d64 0xac THUMB Debug/../../obj/can.o .text.CANRegWrite - 0x00005e48 0x30 THUMB Debug/../../obj/can.o + 0x00009e10 0x30 THUMB Debug/../../obj/can.o .text.CANDataRegWrite - 0x00005e78 0x70 THUMB Debug/../../obj/can.o + 0x00009e40 0x70 THUMB Debug/../../obj/can.o .text.CANDataRegRead - 0x00005ee8 0x74 THUMB Debug/../../obj/can.o - .text.CANInit 0x00005f5c 0x164 THUMB Debug/../../obj/can.o - 0x00005f5c CANInit + 0x00009eb0 0x70 THUMB Debug/../../obj/can.o + .text.CANInit 0x00009f20 0x164 THUMB Debug/../../obj/can.o + 0x00009f20 CANInit .text.CANEnable - 0x000060c0 0x58 THUMB Debug/../../obj/can.o - 0x000060c0 CANEnable + 0x0000a084 0x58 THUMB Debug/../../obj/can.o + 0x0000a084 CANEnable .text.CANBitTimingSet - 0x00006118 0x1c4 THUMB Debug/../../obj/can.o - 0x00006118 CANBitTimingSet + 0x0000a0dc 0x1c0 THUMB Debug/../../obj/can.o + 0x0000a0dc CANBitTimingSet .text.CANStatusGet - 0x000062dc 0x134 THUMB Debug/../../obj/can.o - 0x000062dc CANStatusGet + 0x0000a29c 0x12c THUMB Debug/../../obj/can.o + 0x0000a29c CANStatusGet .text.CANMessageSet - 0x00006410 0x3a4 THUMB Debug/../../obj/can.o - 0x00006410 CANMessageSet + 0x0000a3c8 0x3a4 THUMB Debug/../../obj/can.o + 0x0000a3c8 CANMessageSet .text.CANMessageGet - 0x000067b4 0x348 THUMB Debug/../../obj/can.o - 0x000067b4 CANMessageGet + 0x0000a76c 0x348 THUMB Debug/../../obj/can.o + 0x0000a76c CANMessageGet .text.libc.__vfprintf_int_nwp - 0x00006afc 0x420 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - 0x00006afc __vfprintf_int_nwp + 0x0000aab4 0x460 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + 0x0000aab4 __vfprintf_int_nwp .text.libc.__ungetc - 0x00006f1c 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + 0x0000af14 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .text.libc.rd_int - 0x00006f3c 0x150 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + 0x0000af34 0x1d8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .text.libc.__vfscanf_int - 0x0000708c 0x3c8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - 0x0000708c __vfscanf_int + 0x0000b10c 0x504 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + 0x0000b10c __vfscanf_int .text.libc.__getc - 0x00007454 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00007454 __getc + 0x0000b610 0x24 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b610 __getc .text.libc.__putc - 0x0000747c 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x0000747c __putc + 0x0000b634 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b634 __putc .text.libc.isupper - 0x000074b4 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000074b4 isupper + 0x0000b66c 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b66c isupper .text.libc.islower - 0x000074c4 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000074c4 islower + 0x0000b67c 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b67c islower .text.libc.isdigit - 0x000074d4 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000074d4 isdigit + 0x0000b68c 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b68c isdigit .text.libc.__digit - 0x000074e4 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x000074e4 __digit + 0x0000b69c 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b69c __digit .text.libc.isspace - 0x00007520 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00007520 isspace + 0x0000b6d8 0x18 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000b6d8 isspace .text.libdebugio.__do_debug_operation_mempoll - 0x00007538 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - 0x00007538 __do_debug_operation_mempoll + 0x0000b6f0 0x3c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + 0x0000b6f0 __do_debug_operation_mempoll .text.libc.__debug_io_lock - 0x00007570 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - 0x00007570 __debug_io_lock + 0x0000b72c 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + 0x0000b72c __debug_io_lock .text.libc.__debug_io_unlock - 0x00007574 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - 0x00007574 __debug_io_unlock - 0x00007578 __text_end__ = (__text_start__ + SIZEOF (.text)) - 0x00007578 __text_load_end__ = __text_end__ + 0x0000b730 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) + 0x0000b730 __debug_io_unlock + 0x0000b734 __text_end__ = (__text_start__ + SIZEOF (.text)) + 0x0000b734 __text_load_end__ = __text_end__ .vfp11_veneer 0x00000000 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs .v4_bx 0x00000000 0x0 .v4_bx 0x00000000 0x0 linker stubs - 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .text is too large to fit in FLASH memory segment) - 0x00007578 __dtors_load_start__ = ALIGN (__text_end__, 0x4) -.dtors 0x00007578 0x0 - 0x00007578 __dtors_start__ = . +.iplt 0x00000000 0x0 + .iplt 0x00000000 0x0 THUMB Debug/../../obj/boot.o + 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .text is too large to fit in FLASH memory segment) + 0x0000b734 __dtors_load_start__ = ALIGN (__text_end__, 0x4) + +.dtors 0x0000b734 0x0 + 0x0000b734 __dtors_start__ = . *(SORT(.dtors.*)) *(.dtors) *(.fini_array .fini_array.*) - 0x00007578 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) - 0x00007578 __dtors_load_end__ = __dtors_end__ + 0x0000b734 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors)) + 0x0000b734 __dtors_load_end__ = __dtors_end__ 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .dtors is too large to fit in FLASH memory segment) - 0x00007578 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) + 0x0000b734 __ctors_load_start__ = ALIGN (__dtors_end__, 0x4) -.ctors 0x00007578 0x0 - 0x00007578 __ctors_start__ = . +.ctors 0x0000b734 0x0 + 0x0000b734 __ctors_start__ = . *(SORT(.ctors.*)) *(.ctors) *(.init_array .init_array.*) - 0x00007578 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) - 0x00007578 __ctors_load_end__ = __ctors_end__ + 0x0000b734 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors)) + 0x0000b734 __ctors_load_end__ = __ctors_end__ 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .ctors is too large to fit in FLASH memory segment) - 0x00007578 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) + 0x0000b734 __rodata_load_start__ = ALIGN (__ctors_end__, 0x4) -.rodata 0x00007578 0x31c - 0x00007578 __rodata_start__ = . +.rodata 0x0000b734 0x31c + 0x0000b734 __rodata_start__ = . *(.rodata .rodata.* .gnu.linkonce.r.*) .rodata.canBitNum2Mask - 0x00007578 0x4 THUMB Debug/../../obj/boot.o - .rodata 0x0000757c 0x6c THUMB Debug/../../obj/gpio.o - .rodata 0x000075e8 0x70 THUMB Debug/../../obj/interrupt.o + 0x0000b734 0x4 THUMB Debug/../../obj/boot.o + .rodata 0x0000b738 0x6c THUMB Debug/../../obj/gpio.o + .rodata 0x0000b7a4 0x70 THUMB Debug/../../obj/interrupt.o .rodata.g_pulRCGCRegs - 0x00007658 0xc THUMB Debug/../../obj/sysctl.o + 0x0000b814 0xc THUMB Debug/../../obj/sysctl.o .rodata.g_pulXtals - 0x00007664 0x5c THUMB Debug/../../obj/sysctl.o - .rodata 0x000076c0 0x6c THUMB Debug/../../obj/sysctl.o - .rodata 0x0000772c 0x6c THUMB Debug/../../obj/systick.o - .rodata 0x00007798 0x6c THUMB Debug/../../obj/uart.o - .rodata 0x00007804 0x68 THUMB Debug/../../obj/can.o + 0x0000b820 0x5c THUMB Debug/../../obj/sysctl.o + .rodata 0x0000b87c 0x6c THUMB Debug/../../obj/sysctl.o + .rodata 0x0000b8e8 0x6c THUMB Debug/../../obj/systick.o + .rodata 0x0000b954 0x6c THUMB Debug/../../obj/uart.o + .rodata 0x0000b9c0 0x68 THUMB Debug/../../obj/can.o .rodata.libc.str1.4 - 0x0000786c 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) + 0x0000ba28 0x8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .rodata.libc.__hex_lc - 0x00007874 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00007874 __hex_lc + 0x0000ba30 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000ba30 __hex_lc .rodata.libc.__hex_uc - 0x00007884 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - 0x00007884 __hex_uc - 0x00007894 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) - 0x00007894 __rodata_load_end__ = __rodata_end__ + 0x0000ba40 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + 0x0000ba40 __hex_uc + 0x0000ba50 __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata)) + 0x0000ba50 __rodata_load_end__ = __rodata_end__ + +.rel.dyn 0x00008000 0x0 + .rel.iplt 0x00000000 0x0 THUMB Debug/../../obj/boot.o 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .rodata is too large to fit in FLASH memory segment) - 0x00007894 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) + 0x0000ba50 __ARM.exidx_load_start__ = ALIGN (__rodata_end__, 0x4) -.ARM.exidx 0x00007894 0x0 - 0x00007894 __ARM.exidx_start__ = . - 0x00007894 __exidx_start = __ARM.exidx_start__ +.ARM.exidx 0x0000ba50 0x0 + 0x0000ba50 __ARM.exidx_start__ = . + 0x0000ba50 __exidx_start = __ARM.exidx_start__ *(.ARM.exidx .ARM.exidx.*) - 0x00007894 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) - 0x00007894 __exidx_end = __ARM.exidx_end__ - 0x00007894 __ARM.exidx_load_end__ = __ARM.exidx_end__ + 0x0000ba50 __ARM.exidx_end__ = (__ARM.exidx_start__ + SIZEOF (.ARM.exidx)) + 0x0000ba50 __exidx_end = __ARM.exidx_end__ + 0x0000ba50 __ARM.exidx_load_end__ = __ARM.exidx_end__ 0x00000001 . = ASSERT (((__ARM.exidx_end__ >= __FLASH_segment_start__) && (__ARM.exidx_end__ <= (__FLASH_segment_start__ + 0x40000))), error: .ARM.exidx is too large to fit in FLASH memory segment) - 0x00007894 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) + 0x0000ba50 __fast_load_start__ = ALIGN (__ARM.exidx_end__, 0x4) -.fast 0x20000000 0x0 load address 0x00007894 +.fast 0x20000000 0x0 load address 0x0000ba50 0x20000000 __fast_start__ = . *(.fast .fast.*) 0x20000000 __fast_end__ = (__fast_start__ + SIZEOF (.fast)) - 0x00007894 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) + 0x0000ba50 __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast)) 0x00000001 . = ASSERT ((((__fast_load_start__ + SIZEOF (.fast)) >= __FLASH_segment_start__) && ((__fast_load_start__ + SIZEOF (.fast)) <= (__FLASH_segment_start__ + 0x40000))), error: .fast is too large to fit in FLASH memory segment) .fast_run 0x20000000 0x0 @@ -2293,13 +2500,16 @@ Linker script and memory map 0x20000000 __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run)) 0x20000000 __fast_run_load_end__ = __fast_run_end__ 0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .fast_run is too large to fit in SRAM memory segment) - 0x00007894 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) + 0x0000ba50 __data_load_start__ = ALIGN ((__fast_load_start__ + SIZEOF (.fast)), 0x4) -.data 0x20000000 0x0 load address 0x00007894 +.data 0x20000000 0x0 load address 0x0000ba50 0x20000000 __data_start__ = . *(.data .data.* .gnu.linkonce.d.*) 0x20000000 __data_end__ = (__data_start__ + SIZEOF (.data)) - 0x00007894 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + 0x0000ba50 __data_load_end__ = (__data_load_start__ + SIZEOF (.data)) + +.igot.plt 0x00000000 0x0 + .igot.plt 0x00000000 0x0 THUMB Debug/../../obj/boot.o 0x00000001 . = ASSERT ((((__data_load_start__ + SIZEOF (.data)) >= __FLASH_segment_start__) && ((__data_load_start__ + SIZEOF (.data)) <= (__FLASH_segment_start__ + 0x40000))), error: .data is too large to fit in FLASH memory segment) .data_run 0x20000000 0x0 @@ -2313,33 +2523,33 @@ Linker script and memory map .bss 0x20000000 0x6c 0x20000000 __bss_start__ = . *(.bss .bss.* .gnu.linkonce.b.*) - .bss.xcpCtoRxInProgress.1268 + .bss.xcpCtoRxInProgress.4094 0x20000000 0x1 THUMB Debug/../../obj/boot.o *fill* 0x20000001 0x3 00 - .bss.xcpCtoReqPacket.1266 + .bss.xcpCtoReqPacket.4092 0x20000004 0x44 THUMB Debug/../../obj/boot.o - .bss.xcpCtoRxLength.1267 + .bss.xcpCtoRxLength.4093 0x20000048 0x1 THUMB Debug/../../obj/boot.o *fill* 0x20000049 0x3 00 - .bss.timer_counter_last.1248 + .bss.timer_counter_last.4074 0x2000004c 0x4 THUMB Debug/../../obj/led.o - .bss.led_toggle_state.1247 + .bss.led_toggle_state.4073 0x20000050 0x1 THUMB Debug/../../obj/led.o *fill* 0x20000051 0x3 00 - .bss.assert_failure_file.1254 + .bss.assert_failure_file.4080 0x20000054 0x4 THUMB Debug/../../obj/main.o - .bss.assert_failure_line.1255 + .bss.assert_failure_line.4081 0x20000058 0x4 THUMB Debug/../../obj/main.o .bss.millisecond_counter 0x2000005c 0x4 THUMB Debug/../../obj/time.o .bss.libc.__format_extender - 0x20000060 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + 0x20000060 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) 0x20000060 __format_extender .bss.libdebugio.dbgCommWord - 0x20000064 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x20000064 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x20000064 dbgCommWord .bss.libdebugio.dbgCntrlWord_mempoll - 0x20000068 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + 0x20000068 0x4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x20000068 dbgCntrlWord_mempoll *(COMMON) 0x2000006c __bss_end__ = (__bss_start__ + SIZEOF (.bss)) @@ -2390,14 +2600,14 @@ Linker script and memory map 0x200001ec __tbss_end__ = (__tbss_start__ + SIZEOF (.tbss)) 0x200001ec __tbss_load_end__ = __tbss_end__ 0x00000001 . = ASSERT (((__tbss_end__ >= __SRAM_segment_start__) && (__tbss_end__ <= (__SRAM_segment_start__ + 0x10000))), error: .tbss is too large to fit in SRAM memory segment) - 0x00007894 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + 0x0000ba50 __tdata_load_start__ = ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) -.tdata 0x200001ec 0x0 load address 0x00007894 +.tdata 0x200001ec 0x0 load address 0x0000ba50 0x200001ec __tdata_start__ = . *(.tdata .tdata.*) 0x200001ec __tdata_end__ = (__tdata_start__ + SIZEOF (.tdata)) - 0x00007894 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) - 0x00007894 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) + 0x0000ba50 __tdata_load_end__ = (__tdata_load_start__ + SIZEOF (.tdata)) + 0x0000ba50 __FLASH_segment_used_end__ = (ALIGN ((__data_load_start__ + SIZEOF (.data)), 0x4) + SIZEOF (.tdata)) 0x00000001 . = ASSERT ((((__tdata_load_start__ + SIZEOF (.tdata)) >= __FLASH_segment_start__) && ((__tdata_load_start__ + SIZEOF (.tdata)) <= (__FLASH_segment_start__ + 0x40000))), error: .tdata is too large to fit in FLASH memory segment) .tdata_run 0x200001ec 0x0 @@ -2438,164 +2648,97 @@ LOAD THUMB Debug/../../obj/udma.o LOAD THUMB Debug/../../obj/usb.o LOAD THUMB Debug/../../obj/watchdog.o LOAD THUMB Debug/../../obj/can.o -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le.a -LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcm_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libcpp_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_targetio_impl_v7m_t_le_eabi.a +LOAD C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a END GROUP OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/ide/../bin/demoprog_ek_lm3s8962.elf elf32-littlearm) -.debug_frame 0x00000000 0x8880 - .debug_frame 0x00000000 0x174 THUMB Debug/../../obj/boot.o - .debug_frame 0x00000174 0x7c THUMB Debug/../../obj/irq.o - .debug_frame 0x000001f0 0x60 THUMB Debug/../../obj/led.o - .debug_frame 0x00000250 0x80 THUMB Debug/../../obj/main.o - .debug_frame 0x000002d0 0x30 THUMB Debug/../../obj/vectors.o - .debug_frame 0x00000300 0xc0 THUMB Debug/../../obj/time.o - .debug_frame 0x000003c0 0x564 THUMB Debug/../../obj/adc.o - .debug_frame 0x00000924 0x19c THUMB Debug/../../obj/comp.o - .debug_frame 0x00000ac0 0x70 THUMB Debug/../../obj/cpu.o - .debug_frame 0x00000b30 0x430 THUMB Debug/../../obj/epi.o - .debug_frame 0x00000f60 0x454 THUMB Debug/../../obj/ethernet.o - .debug_frame 0x000013b4 0x294 THUMB Debug/../../obj/flash.o - .debug_frame 0x00001648 0x5e0 THUMB Debug/../../obj/gpio.o - .debug_frame 0x00001c28 0x440 THUMB Debug/../../obj/hibernate.o - .debug_frame 0x00002068 0x538 THUMB Debug/../../obj/i2c.o - .debug_frame 0x000025a0 0x488 THUMB Debug/../../obj/i2s.o - .debug_frame 0x00002a28 0x27c THUMB Debug/../../obj/interrupt.o - .debug_frame 0x00002ca4 0x17c THUMB Debug/../../obj/mpu.o - .debug_frame 0x00002e20 0x60c THUMB Debug/../../obj/pwm.o - .debug_frame 0x0000342c 0x2fc THUMB Debug/../../obj/qei.o - .debug_frame 0x00003728 0x2d0 THUMB Debug/../../obj/ssi.o - .debug_frame 0x000039f8 0x6d0 THUMB Debug/../../obj/sysctl.o - .debug_frame 0x000040c8 0x14c THUMB Debug/../../obj/systick.o - .debug_frame 0x00004214 0x4b0 THUMB Debug/../../obj/timer.o - .debug_frame 0x000046c4 0x718 THUMB Debug/../../obj/uart.o - .debug_frame 0x00004ddc 0x3b4 THUMB Debug/../../obj/udma.o - .debug_frame 0x00005190 0xaa4 THUMB Debug/../../obj/usb.o - .debug_frame 0x00005c34 0x2fc THUMB Debug/../../obj/watchdog.o - .debug_frame 0x00005f30 0x450 THUMB Debug/../../obj/can.o - .debug_frame 0x00006380 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_frame 0x000063c0 0x88 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_frame 0x00006448 0x128c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_frame 0x000076d4 0x120 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .debug_frame 0x000077f4 0x260 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .debug_frame 0x00007a54 0x78c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_frame 0x000081e0 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .debug_frame 0x00008280 0x600 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) +.debug_frame 0x00000000 0x3bf0 + .debug_frame 0x00000000 0x178 THUMB Debug/../../obj/boot.o + .debug_frame 0x00000178 0x7c THUMB Debug/../../obj/irq.o + .debug_frame 0x000001f4 0x60 THUMB Debug/../../obj/led.o + .debug_frame 0x00000254 0x80 THUMB Debug/../../obj/main.o + .debug_frame 0x000002d4 0x30 THUMB Debug/../../obj/vectors.o + .debug_frame 0x00000304 0xc0 THUMB Debug/../../obj/time.o + .debug_frame 0x000003c4 0x70 THUMB Debug/../../obj/cpu.o + .debug_frame 0x00000434 0x5e0 THUMB Debug/../../obj/gpio.o + .debug_frame 0x00000a14 0x27c THUMB Debug/../../obj/interrupt.o + .debug_frame 0x00000c90 0x6d0 THUMB Debug/../../obj/sysctl.o + .debug_frame 0x00001360 0x14c THUMB Debug/../../obj/systick.o + .debug_frame 0x000014ac 0x718 THUMB Debug/../../obj/uart.o + .debug_frame 0x00001bc4 0x450 THUMB Debug/../../obj/can.o + .debug_frame 0x00002014 0x40 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_frame 0x00002054 0x8c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_frame 0x000020e0 0x12e0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_frame 0x000033c0 0x790 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_frame 0x00003b50 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_info 0x00000000 0xa42e - .debug_info 0x00000000 0x304 THUMB Debug/../../obj/boot.o - .debug_info 0x00000304 0xd6 THUMB Debug/../../obj/cstart.o - .debug_info 0x000003da 0x8b THUMB Debug/../../obj/irq.o - .debug_info 0x00000465 0x96 THUMB Debug/../../obj/led.o - .debug_info 0x000004fb 0xe4 THUMB Debug/../../obj/main.o - .debug_info 0x000005df 0xc3 THUMB Debug/../../obj/vectors.o - .debug_info 0x000006a2 0xcc THUMB Debug/../../obj/time.o - .debug_info 0x0000076e 0x8cc THUMB Debug/../../obj/adc.o - .debug_info 0x0000103a 0x26b THUMB Debug/../../obj/comp.o - .debug_info 0x000012a5 0x110 THUMB Debug/../../obj/cpu.o - .debug_info 0x000013b5 0x698 THUMB Debug/../../obj/epi.o - .debug_info 0x00001a4d 0x6ba THUMB Debug/../../obj/ethernet.o - .debug_info 0x00002107 0x3f4 THUMB Debug/../../obj/flash.o - .debug_info 0x000024fb 0x901 THUMB Debug/../../obj/gpio.o - .debug_info 0x00002dfc 0x44b THUMB Debug/../../obj/hibernate.o - .debug_info 0x00003247 0x67d THUMB Debug/../../obj/i2c.o - .debug_info 0x000038c4 0x593 THUMB Debug/../../obj/i2s.o - .debug_info 0x00003e57 0x344 THUMB Debug/../../obj/interrupt.o - .debug_info 0x0000419b 0x1b8 THUMB Debug/../../obj/mpu.o - .debug_info 0x00004353 0x9a2 THUMB Debug/../../obj/pwm.o - .debug_info 0x00004cf5 0x3cb THUMB Debug/../../obj/qei.o - .debug_info 0x000050c0 0x445 THUMB Debug/../../obj/ssi.o - .debug_info 0x00005505 0x811 THUMB Debug/../../obj/sysctl.o - .debug_info 0x00005d16 0x127 THUMB Debug/../../obj/systick.o - .debug_info 0x00005e3d 0x6ac THUMB Debug/../../obj/timer.o - .debug_info 0x000064e9 0x93e THUMB Debug/../../obj/uart.o - .debug_info 0x00006e27 0x560 THUMB Debug/../../obj/udma.o - .debug_info 0x00007387 0x10c8 THUMB Debug/../../obj/usb.o - .debug_info 0x0000844f 0x340 THUMB Debug/../../obj/watchdog.o - .debug_info 0x0000878f 0x9b5 THUMB Debug/../../obj/can.o - .debug_info 0x00009144 0x36 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_info 0x0000917a 0x65 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_info 0x000091df 0xc63 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_info 0x00009e42 0x51f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_info 0x0000a361 0xcd C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) +.debug_info 0x00000000 0x45a6 + .debug_info 0x00000000 0x314 THUMB Debug/../../obj/boot.o + .debug_info 0x00000314 0xd6 THUMB Debug/../../obj/cstart.o + .debug_info 0x000003ea 0x8e THUMB Debug/../../obj/irq.o + .debug_info 0x00000478 0x98 THUMB Debug/../../obj/led.o + .debug_info 0x00000510 0xe7 THUMB Debug/../../obj/main.o + .debug_info 0x000005f7 0xbe THUMB Debug/../../obj/vectors.o + .debug_info 0x000006b5 0xd1 THUMB Debug/../../obj/time.o + .debug_info 0x00000786 0x116 THUMB Debug/../../obj/cpu.o + .debug_info 0x0000089c 0x92a THUMB Debug/../../obj/gpio.o + .debug_info 0x000011c6 0x35a THUMB Debug/../../obj/interrupt.o + .debug_info 0x00001520 0x844 THUMB Debug/../../obj/sysctl.o + .debug_info 0x00001d64 0x130 THUMB Debug/../../obj/systick.o + .debug_info 0x00001e94 0x967 THUMB Debug/../../obj/uart.o + .debug_info 0x000027fb 0x9d5 THUMB Debug/../../obj/can.o + .debug_info 0x000031d0 0x37 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_info 0x00003207 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_info 0x0000326f 0xd02 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_info 0x00003f71 0x55f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_info 0x000044d0 0xd6 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_abbrev 0x00000000 0x1a8e - .debug_abbrev 0x00000000 0x123 THUMB Debug/../../obj/boot.o - .debug_abbrev 0x00000123 0x14 THUMB Debug/../../obj/cstart.o - .debug_abbrev 0x00000137 0x43 THUMB Debug/../../obj/irq.o - .debug_abbrev 0x0000017a 0x58 THUMB Debug/../../obj/led.o - .debug_abbrev 0x000001d2 0x99 THUMB Debug/../../obj/main.o - .debug_abbrev 0x0000026b 0xb3 THUMB Debug/../../obj/vectors.o - .debug_abbrev 0x0000031e 0x80 THUMB Debug/../../obj/time.o - .debug_abbrev 0x0000039e 0xea THUMB Debug/../../obj/adc.o - .debug_abbrev 0x00000488 0xcf THUMB Debug/../../obj/comp.o - .debug_abbrev 0x00000557 0xa8 THUMB Debug/../../obj/cpu.o - .debug_abbrev 0x000005ff 0xc5 THUMB Debug/../../obj/epi.o - .debug_abbrev 0x000006c4 0x113 THUMB Debug/../../obj/ethernet.o - .debug_abbrev 0x000007d7 0x155 THUMB Debug/../../obj/flash.o - .debug_abbrev 0x0000092c 0xef THUMB Debug/../../obj/gpio.o - .debug_abbrev 0x00000a1b 0x100 THUMB Debug/../../obj/hibernate.o - .debug_abbrev 0x00000b1b 0xd6 THUMB Debug/../../obj/i2c.o - .debug_abbrev 0x00000bf1 0xde THUMB Debug/../../obj/i2s.o - .debug_abbrev 0x00000ccf 0x119 THUMB Debug/../../obj/interrupt.o - .debug_abbrev 0x00000de8 0xbc THUMB Debug/../../obj/mpu.o - .debug_abbrev 0x00000ea4 0xdc THUMB Debug/../../obj/pwm.o - .debug_abbrev 0x00000f80 0xde THUMB Debug/../../obj/qei.o - .debug_abbrev 0x0000105e 0xd6 THUMB Debug/../../obj/ssi.o - .debug_abbrev 0x00001134 0x139 THUMB Debug/../../obj/sysctl.o - .debug_abbrev 0x0000126d 0x81 THUMB Debug/../../obj/systick.o - .debug_abbrev 0x000012ee 0xcd THUMB Debug/../../obj/timer.o - .debug_abbrev 0x000013bb 0x104 THUMB Debug/../../obj/uart.o - .debug_abbrev 0x000014bf 0x150 THUMB Debug/../../obj/udma.o - .debug_abbrev 0x0000160f 0x100 THUMB Debug/../../obj/usb.o - .debug_abbrev 0x0000170f 0xcf THUMB Debug/../../obj/watchdog.o - .debug_abbrev 0x000017de 0x14b THUMB Debug/../../obj/can.o - .debug_abbrev 0x00001929 0x25 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_abbrev 0x0000194e 0x43 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_abbrev 0x00001991 0xa0 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_abbrev 0x00001a31 0x38 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_abbrev 0x00001a69 0x25 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) +.debug_abbrev 0x00000000 0xd72 + .debug_abbrev 0x00000000 0x132 THUMB Debug/../../obj/boot.o + .debug_abbrev 0x00000132 0x14 THUMB Debug/../../obj/cstart.o + .debug_abbrev 0x00000146 0x46 THUMB Debug/../../obj/irq.o + .debug_abbrev 0x0000018c 0x5e THUMB Debug/../../obj/led.o + .debug_abbrev 0x000001ea 0xa2 THUMB Debug/../../obj/main.o + .debug_abbrev 0x0000028c 0xb6 THUMB Debug/../../obj/vectors.o + .debug_abbrev 0x00000342 0xa1 THUMB Debug/../../obj/time.o + .debug_abbrev 0x000003e3 0xb4 THUMB Debug/../../obj/cpu.o + .debug_abbrev 0x00000497 0xfb THUMB Debug/../../obj/gpio.o + .debug_abbrev 0x00000592 0x147 THUMB Debug/../../obj/interrupt.o + .debug_abbrev 0x000006d9 0x1b6 THUMB Debug/../../obj/sysctl.o + .debug_abbrev 0x0000088f 0xa2 THUMB Debug/../../obj/systick.o + .debug_abbrev 0x00000931 0x116 THUMB Debug/../../obj/uart.o + .debug_abbrev 0x00000a47 0x189 THUMB Debug/../../obj/can.o + .debug_abbrev 0x00000bd0 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_abbrev 0x00000bf8 0x49 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_abbrev 0x00000c41 0xcb C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_abbrev 0x00000d0c 0x3e C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_abbrev 0x00000d4a 0x28 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_loc 0x00000000 0x95d1 +.debug_loc 0x00000000 0x40dc .debug_loc 0x00000000 0x1bc THUMB Debug/../../obj/boot.o .debug_loc 0x000001bc 0x84 THUMB Debug/../../obj/irq.o .debug_loc 0x00000240 0x64 THUMB Debug/../../obj/led.o .debug_loc 0x000002a4 0x90 THUMB Debug/../../obj/main.o .debug_loc 0x00000334 0x2c THUMB Debug/../../obj/vectors.o .debug_loc 0x00000360 0xe8 THUMB Debug/../../obj/time.o - .debug_loc 0x00000448 0x6c8 THUMB Debug/../../obj/adc.o - .debug_loc 0x00000b10 0x1f8 THUMB Debug/../../obj/comp.o - .debug_loc 0x00000d08 0x540 THUMB Debug/../../obj/epi.o - .debug_loc 0x00001248 0x578 THUMB Debug/../../obj/ethernet.o - .debug_loc 0x000017c0 0x35c THUMB Debug/../../obj/flash.o - .debug_loc 0x00001b1c 0x770 THUMB Debug/../../obj/gpio.o - .debug_loc 0x0000228c 0x584 THUMB Debug/../../obj/hibernate.o - .debug_loc 0x00002810 0x690 THUMB Debug/../../obj/i2c.o - .debug_loc 0x00002ea0 0x5b0 THUMB Debug/../../obj/i2s.o - .debug_loc 0x00003450 0x318 THUMB Debug/../../obj/interrupt.o - .debug_loc 0x00003768 0x1d4 THUMB Debug/../../obj/mpu.o - .debug_loc 0x0000393c 0x7a8 THUMB Debug/../../obj/pwm.o - .debug_loc 0x000040e4 0x3b8 THUMB Debug/../../obj/qei.o - .debug_loc 0x0000449c 0x380 THUMB Debug/../../obj/ssi.o - .debug_loc 0x0000481c 0x8cc THUMB Debug/../../obj/sysctl.o - .debug_loc 0x000050e8 0x1a4 THUMB Debug/../../obj/systick.o - .debug_loc 0x0000528c 0x5e8 THUMB Debug/../../obj/timer.o - .debug_loc 0x00005874 0x8f8 THUMB Debug/../../obj/uart.o - .debug_loc 0x0000616c 0x4c0 THUMB Debug/../../obj/udma.o - .debug_loc 0x0000662c 0xd90 THUMB Debug/../../obj/usb.o - .debug_loc 0x000073bc 0x3b8 THUMB Debug/../../obj/watchdog.o - .debug_loc 0x00007774 0x578 THUMB Debug/../../obj/can.o - .debug_loc 0x00007cec 0x2c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_loc 0x00007d18 0x6c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_loc 0x00007d84 0x1059 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_loc 0x00008ddd 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + .debug_loc 0x00000448 0x770 THUMB Debug/../../obj/gpio.o + .debug_loc 0x00000bb8 0x318 THUMB Debug/../../obj/interrupt.o + .debug_loc 0x00000ed0 0x8cc THUMB Debug/../../obj/sysctl.o + .debug_loc 0x0000179c 0x1a4 THUMB Debug/../../obj/systick.o + .debug_loc 0x00001940 0x8f8 THUMB Debug/../../obj/uart.o + .debug_loc 0x00002238 0x578 THUMB Debug/../../obj/can.o + .debug_loc 0x000027b0 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_loc 0x000027dd 0x79 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_loc 0x00002856 0x1092 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_loc 0x000038e8 0x7f4 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) -.debug_aranges 0x00000000 0x1d28 +.debug_aranges 0x00000000 0xf50 .debug_aranges 0x00000000 0x60 THUMB Debug/../../obj/boot.o .debug_aranges @@ -2611,203 +2754,107 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/P .debug_aranges 0x00000128 0x40 THUMB Debug/../../obj/time.o .debug_aranges - 0x00000168 0x110 THUMB Debug/../../obj/adc.o + 0x00000168 0x48 THUMB Debug/../../obj/cpu.o .debug_aranges - 0x00000278 0x60 THUMB Debug/../../obj/comp.o + 0x000001b0 0x128 THUMB Debug/../../obj/gpio.o .debug_aranges - 0x000002d8 0x48 THUMB Debug/../../obj/cpu.o + 0x000002d8 0x90 THUMB Debug/../../obj/interrupt.o .debug_aranges - 0x00000320 0xd8 THUMB Debug/../../obj/epi.o + 0x00000368 0x178 THUMB Debug/../../obj/sysctl.o .debug_aranges - 0x000003f8 0xe0 THUMB Debug/../../obj/ethernet.o + 0x000004e0 0x60 THUMB Debug/../../obj/systick.o .debug_aranges - 0x000004d8 0x98 THUMB Debug/../../obj/flash.o + 0x00000540 0x160 THUMB Debug/../../obj/uart.o .debug_aranges - 0x00000570 0x128 THUMB Debug/../../obj/gpio.o + 0x000006a0 0xe0 THUMB Debug/../../obj/can.o .debug_aranges - 0x00000698 0xf8 THUMB Debug/../../obj/hibernate.o + 0x00000780 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .debug_aranges - 0x00000790 0x108 THUMB Debug/../../obj/i2c.o + 0x000007a0 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .debug_aranges - 0x00000898 0xe8 THUMB Debug/../../obj/i2s.o + 0x000007d0 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .debug_aranges - 0x00000980 0x90 THUMB Debug/../../obj/interrupt.o + 0x00000cd8 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .debug_aranges - 0x00000a10 0x60 THUMB Debug/../../obj/mpu.o - .debug_aranges - 0x00000a70 0x130 THUMB Debug/../../obj/pwm.o - .debug_aranges - 0x00000ba0 0xa0 THUMB Debug/../../obj/qei.o - .debug_aranges - 0x00000c40 0x98 THUMB Debug/../../obj/ssi.o - .debug_aranges - 0x00000cd8 0x178 THUMB Debug/../../obj/sysctl.o - .debug_aranges - 0x00000e50 0x60 THUMB Debug/../../obj/systick.o - .debug_aranges - 0x00000eb0 0xf0 THUMB Debug/../../obj/timer.o - .debug_aranges - 0x00000fa0 0x160 THUMB Debug/../../obj/uart.o - .debug_aranges - 0x00001100 0xd0 THUMB Debug/../../obj/udma.o - .debug_aranges - 0x000011d0 0x208 THUMB Debug/../../obj/usb.o - .debug_aranges - 0x000013d8 0xa0 THUMB Debug/../../obj/watchdog.o - .debug_aranges - 0x00001478 0xe0 THUMB Debug/../../obj/can.o - .debug_aranges - 0x00001558 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_aranges - 0x00001578 0x30 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_aranges - 0x000015a8 0x508 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_aranges - 0x00001ab0 0x218 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_aranges - 0x00001cc8 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + 0x00000ef0 0x60 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_ranges 0x00000000 0x1ae8 +.debug_ranges 0x00000000 0xe10 .debug_ranges 0x00000000 0x50 THUMB Debug/../../obj/boot.o .debug_ranges 0x00000050 0x20 THUMB Debug/../../obj/irq.o .debug_ranges 0x00000070 0x18 THUMB Debug/../../obj/led.o .debug_ranges 0x00000088 0x20 THUMB Debug/../../obj/main.o .debug_ranges 0x000000a8 0x10 THUMB Debug/../../obj/vectors.o .debug_ranges 0x000000b8 0x30 THUMB Debug/../../obj/time.o - .debug_ranges 0x000000e8 0x100 THUMB Debug/../../obj/adc.o - .debug_ranges 0x000001e8 0x50 THUMB Debug/../../obj/comp.o - .debug_ranges 0x00000238 0x38 THUMB Debug/../../obj/cpu.o - .debug_ranges 0x00000270 0xc8 THUMB Debug/../../obj/epi.o - .debug_ranges 0x00000338 0xd0 THUMB Debug/../../obj/ethernet.o - .debug_ranges 0x00000408 0x88 THUMB Debug/../../obj/flash.o - .debug_ranges 0x00000490 0x118 THUMB Debug/../../obj/gpio.o - .debug_ranges 0x000005a8 0xe8 THUMB Debug/../../obj/hibernate.o - .debug_ranges 0x00000690 0xf8 THUMB Debug/../../obj/i2c.o - .debug_ranges 0x00000788 0xd8 THUMB Debug/../../obj/i2s.o - .debug_ranges 0x00000860 0x80 THUMB Debug/../../obj/interrupt.o - .debug_ranges 0x000008e0 0x50 THUMB Debug/../../obj/mpu.o - .debug_ranges 0x00000930 0x120 THUMB Debug/../../obj/pwm.o - .debug_ranges 0x00000a50 0x90 THUMB Debug/../../obj/qei.o - .debug_ranges 0x00000ae0 0x88 THUMB Debug/../../obj/ssi.o - .debug_ranges 0x00000b68 0x168 THUMB Debug/../../obj/sysctl.o - .debug_ranges 0x00000cd0 0x50 THUMB Debug/../../obj/systick.o - .debug_ranges 0x00000d20 0xe0 THUMB Debug/../../obj/timer.o - .debug_ranges 0x00000e00 0x150 THUMB Debug/../../obj/uart.o - .debug_ranges 0x00000f50 0xc0 THUMB Debug/../../obj/udma.o - .debug_ranges 0x00001010 0x1f8 THUMB Debug/../../obj/usb.o - .debug_ranges 0x00001208 0x90 THUMB Debug/../../obj/watchdog.o - .debug_ranges 0x00001298 0xd0 THUMB Debug/../../obj/can.o - .debug_ranges 0x00001368 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_ranges 0x00001378 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_ranges 0x00001398 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_ranges 0x00001890 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_ranges 0x00001a98 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_ranges 0x000000e8 0x38 THUMB Debug/../../obj/cpu.o + .debug_ranges 0x00000120 0x118 THUMB Debug/../../obj/gpio.o + .debug_ranges 0x00000238 0x80 THUMB Debug/../../obj/interrupt.o + .debug_ranges 0x000002b8 0x168 THUMB Debug/../../obj/sysctl.o + .debug_ranges 0x00000420 0x50 THUMB Debug/../../obj/systick.o + .debug_ranges 0x00000470 0x150 THUMB Debug/../../obj/uart.o + .debug_ranges 0x000005c0 0xd0 THUMB Debug/../../obj/can.o + .debug_ranges 0x00000690 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_ranges 0x000006a0 0x20 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_ranges 0x000006c0 0x4f8 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_ranges 0x00000bb8 0x208 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_ranges 0x00000dc0 0x50 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_line 0x00000000 0x8772 +.debug_line 0x00000000 0x34a6 .debug_line 0x00000000 0x1de THUMB Debug/../../obj/boot.o - .debug_line 0x000001de 0xe5 THUMB Debug/../../obj/cstart.o - .debug_line 0x000002c3 0xb3 THUMB Debug/../../obj/irq.o - .debug_line 0x00000376 0xab THUMB Debug/../../obj/led.o - .debug_line 0x00000421 0xc7 THUMB Debug/../../obj/main.o - .debug_line 0x000004e8 0x92 THUMB Debug/../../obj/vectors.o - .debug_line 0x0000057a 0xd9 THUMB Debug/../../obj/time.o - .debug_line 0x00000653 0x79b THUMB Debug/../../obj/adc.o - .debug_line 0x00000dee 0x225 THUMB Debug/../../obj/comp.o - .debug_line 0x00001013 0x103 THUMB Debug/../../obj/cpu.o - .debug_line 0x00001116 0x50c THUMB Debug/../../obj/epi.o - .debug_line 0x00001622 0x4a7 THUMB Debug/../../obj/ethernet.o - .debug_line 0x00001ac9 0x38a THUMB Debug/../../obj/flash.o - .debug_line 0x00001e53 0x777 THUMB Debug/../../obj/gpio.o - .debug_line 0x000025ca 0x394 THUMB Debug/../../obj/hibernate.o - .debug_line 0x0000295e 0x53e THUMB Debug/../../obj/i2c.o - .debug_line 0x00002e9c 0x419 THUMB Debug/../../obj/i2s.o - .debug_line 0x000032b5 0x2cc THUMB Debug/../../obj/interrupt.o - .debug_line 0x00003581 0x17c THUMB Debug/../../obj/mpu.o - .debug_line 0x000036fd 0x6e3 THUMB Debug/../../obj/pwm.o - .debug_line 0x00003de0 0x366 THUMB Debug/../../obj/qei.o - .debug_line 0x00004146 0x3f3 THUMB Debug/../../obj/ssi.o - .debug_line 0x00004539 0x7e7 THUMB Debug/../../obj/sysctl.o - .debug_line 0x00004d20 0x13c THUMB Debug/../../obj/systick.o - .debug_line 0x00004e5c 0x6c0 THUMB Debug/../../obj/timer.o - .debug_line 0x0000551c 0x73e THUMB Debug/../../obj/uart.o - .debug_line 0x00005c5a 0x415 THUMB Debug/../../obj/udma.o - .debug_line 0x0000606f 0x1178 THUMB Debug/../../obj/usb.o - .debug_line 0x000071e7 0x309 THUMB Debug/../../obj/watchdog.o - .debug_line 0x000074f0 0x622 THUMB Debug/../../obj/can.o - .debug_line 0x00007b12 0x75 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .debug_line 0x00007b87 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .debug_line 0x00007bfb 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .debug_line 0x000081ae 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .debug_line 0x000086fe 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_line 0x000001de 0x10f THUMB Debug/../../obj/cstart.o + .debug_line 0x000002ed 0xb3 THUMB Debug/../../obj/irq.o + .debug_line 0x000003a0 0xab THUMB Debug/../../obj/led.o + .debug_line 0x0000044b 0xc7 THUMB Debug/../../obj/main.o + .debug_line 0x00000512 0x92 THUMB Debug/../../obj/vectors.o + .debug_line 0x000005a4 0xd9 THUMB Debug/../../obj/time.o + .debug_line 0x0000067d 0x103 THUMB Debug/../../obj/cpu.o + .debug_line 0x00000780 0x773 THUMB Debug/../../obj/gpio.o + .debug_line 0x00000ef3 0x2cc THUMB Debug/../../obj/interrupt.o + .debug_line 0x000011bf 0x7e1 THUMB Debug/../../obj/sysctl.o + .debug_line 0x000019a0 0x13c THUMB Debug/../../obj/systick.o + .debug_line 0x00001adc 0x743 THUMB Debug/../../obj/uart.o + .debug_line 0x0000221f 0x627 THUMB Debug/../../obj/can.o + .debug_line 0x00002846 0x75 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .debug_line 0x000028bb 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .debug_line 0x0000292f 0x5b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .debug_line 0x00002ee2 0x550 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .debug_line 0x00003432 0x74 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) -.debug_str 0x00000000 0x4c5b - .debug_str 0x00000000 0x345 THUMB Debug/../../obj/boot.o - 0x35a (size before relaxing) - .debug_str 0x00000345 0xa6 THUMB Debug/../../obj/irq.o +.debug_str 0x00000000 0x2486 + .debug_str 0x00000000 0x356 THUMB Debug/../../obj/boot.o + 0x363 (size before relaxing) + .debug_str 0x00000356 0xa6 THUMB Debug/../../obj/irq.o 0x11c (size before relaxing) - .debug_str 0x000003eb 0xa2 THUMB Debug/../../obj/led.o + .debug_str 0x000003fc 0xa2 THUMB Debug/../../obj/led.o 0x118 (size before relaxing) - .debug_str 0x0000048d 0xa4 THUMB Debug/../../obj/main.o + .debug_str 0x0000049e 0xa4 THUMB Debug/../../obj/main.o 0x124 (size before relaxing) - .debug_str 0x00000531 0x8d THUMB Debug/../../obj/vectors.o - 0x103 (size before relaxing) - .debug_str 0x000005be 0xae THUMB Debug/../../obj/time.o + .debug_str 0x00000542 0x8d THUMB Debug/../../obj/vectors.o + 0x10c (size before relaxing) + .debug_str 0x000005cf 0xae THUMB Debug/../../obj/time.o 0x124 (size before relaxing) - .debug_str 0x0000066c 0x3ca THUMB Debug/../../obj/adc.o - 0x450 (size before relaxing) - .debug_str 0x00000a36 0xbb THUMB Debug/../../obj/comp.o - 0x1c1 (size before relaxing) - .debug_str 0x00000af1 0xbb THUMB Debug/../../obj/cpu.o + .debug_str 0x0000067d 0xbb THUMB Debug/../../obj/cpu.o 0x116 (size before relaxing) - .debug_str 0x00000bac 0x2bf THUMB Debug/../../obj/epi.o - 0x36f (size before relaxing) - .debug_str 0x00000e6b 0x2a3 THUMB Debug/../../obj/ethernet.o - 0x36a (size before relaxing) - .debug_str 0x0000110e 0x215 THUMB Debug/../../obj/flash.o - 0x2d7 (size before relaxing) - .debug_str 0x00001323 0x369 THUMB Debug/../../obj/gpio.o - 0x41b (size before relaxing) - .debug_str 0x0000168c 0x2eb THUMB Debug/../../obj/hibernate.o - 0x398 (size before relaxing) - .debug_str 0x00001977 0x2b1 THUMB Debug/../../obj/i2c.o - 0x35d (size before relaxing) - .debug_str 0x00001c28 0x216 THUMB Debug/../../obj/i2s.o - 0x2ce (size before relaxing) - .debug_str 0x00001e3e 0x187 THUMB Debug/../../obj/interrupt.o - 0x251 (size before relaxing) - .debug_str 0x00001fc5 0x110 THUMB Debug/../../obj/mpu.o - 0x193 (size before relaxing) - .debug_str 0x000020d5 0x3a0 THUMB Debug/../../obj/pwm.o - 0x451 (size before relaxing) - .debug_str 0x00002475 0x183 THUMB Debug/../../obj/qei.o - 0x23b (size before relaxing) - .debug_str 0x000025f8 0x1a4 THUMB Debug/../../obj/ssi.o - 0x269 (size before relaxing) - .debug_str 0x0000279c 0x4b8 THUMB Debug/../../obj/sysctl.o - 0x55d (size before relaxing) - .debug_str 0x00002c54 0x106 THUMB Debug/../../obj/systick.o + .debug_str 0x00000738 0x387 THUMB Debug/../../obj/gpio.o + 0x424 (size before relaxing) + .debug_str 0x00000abf 0x1a7 THUMB Debug/../../obj/interrupt.o + 0x25a (size before relaxing) + .debug_str 0x00000c66 0x4cf THUMB Debug/../../obj/sysctl.o + 0x566 (size before relaxing) + .debug_str 0x00001135 0x10f THUMB Debug/../../obj/systick.o 0x183 (size before relaxing) - .debug_str 0x00002d5a 0x240 THUMB Debug/../../obj/timer.o - 0x2f8 (size before relaxing) - .debug_str 0x00002f9a 0x373 THUMB Debug/../../obj/uart.o + .debug_str 0x00001244 0x396 THUMB Debug/../../obj/uart.o 0x463 (size before relaxing) - .debug_str 0x0000330d 0x347 THUMB Debug/../../obj/udma.o - 0x3e2 (size before relaxing) - .debug_str 0x00003654 0x5cc THUMB Debug/../../obj/usb.o - 0x6d1 (size before relaxing) - .debug_str 0x00003c20 0x1aa THUMB Debug/../../obj/watchdog.o - 0x236 (size before relaxing) - .debug_str 0x00003dca 0x3a9 THUMB Debug/../../obj/can.o - 0x5b9 (size before relaxing) - .debug_str 0x00004173 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) + .debug_str 0x000015da 0x3c4 THUMB Debug/../../obj/can.o + 0x5c2 (size before relaxing) + .debug_str 0x0000199e 0x68 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) 0xb1 (size before relaxing) - .debug_str 0x000041db 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) + .debug_str 0x00001a06 0x7c C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) 0xc5 (size before relaxing) - .debug_str 0x00004257 0x57f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) + .debug_str 0x00001a82 0x57f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) 0x655 (size before relaxing) - .debug_str 0x000047d6 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) + .debug_str 0x00002001 0x3b3 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) 0x3fc (size before relaxing) - .debug_str 0x00004b89 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .debug_str 0x000023b4 0xd2 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) 0x11b (size before relaxing) .comment 0x00000000 0x4e @@ -2818,110 +2865,56 @@ OUTPUT(C:/Work/software/OpenBLT/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/P .comment 0x00000000 0x4f THUMB Debug/../../obj/main.o .comment 0x00000000 0x4f THUMB Debug/../../obj/vectors.o .comment 0x00000000 0x4f THUMB Debug/../../obj/time.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/adc.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/comp.o .comment 0x00000000 0x4f THUMB Debug/../../obj/cpu.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/epi.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/ethernet.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/flash.o .comment 0x00000000 0x4f THUMB Debug/../../obj/gpio.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/hibernate.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/i2c.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/i2s.o .comment 0x00000000 0x4f THUMB Debug/../../obj/interrupt.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/mpu.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/pwm.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/qei.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/ssi.o .comment 0x00000000 0x4f THUMB Debug/../../obj/sysctl.o .comment 0x00000000 0x4f THUMB Debug/../../obj/systick.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/timer.o .comment 0x00000000 0x4f THUMB Debug/../../obj/uart.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/udma.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/usb.o - .comment 0x00000000 0x4f THUMB Debug/../../obj/watchdog.o .comment 0x00000000 0x4f THUMB Debug/../../obj/can.o - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) + .comment 0x00000000 0x4f C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) .ARM.attributes - 0x00000000 0x10 + 0x00000000 0x33 .ARM.attributes - 0x00000000 0x10 THUMB Debug/../../obj/boot.o + 0x00000000 0x33 THUMB Debug/../../obj/boot.o .ARM.attributes - 0x00000010 0x10 THUMB Debug/../../obj/cstart.o + 0x00000033 0x23 THUMB Debug/../../obj/cstart.o .ARM.attributes - 0x00000020 0x10 THUMB Debug/../../obj/irq.o + 0x00000056 0x33 THUMB Debug/../../obj/irq.o .ARM.attributes - 0x00000030 0x10 THUMB Debug/../../obj/led.o + 0x00000089 0x33 THUMB Debug/../../obj/led.o .ARM.attributes - 0x00000040 0x10 THUMB Debug/../../obj/main.o + 0x000000bc 0x33 THUMB Debug/../../obj/main.o .ARM.attributes - 0x00000050 0x10 THUMB Debug/../../obj/vectors.o + 0x000000ef 0x33 THUMB Debug/../../obj/vectors.o .ARM.attributes - 0x00000060 0x10 THUMB Debug/../../obj/time.o + 0x00000122 0x33 THUMB Debug/../../obj/time.o .ARM.attributes - 0x00000070 0x10 THUMB Debug/../../obj/adc.o + 0x00000155 0x33 THUMB Debug/../../obj/cpu.o .ARM.attributes - 0x00000080 0x10 THUMB Debug/../../obj/comp.o + 0x00000188 0x33 THUMB Debug/../../obj/gpio.o .ARM.attributes - 0x00000090 0x10 THUMB Debug/../../obj/cpu.o + 0x000001bb 0x33 THUMB Debug/../../obj/interrupt.o .ARM.attributes - 0x000000a0 0x10 THUMB Debug/../../obj/epi.o + 0x000001ee 0x33 THUMB Debug/../../obj/sysctl.o .ARM.attributes - 0x000000b0 0x10 THUMB Debug/../../obj/ethernet.o + 0x00000221 0x33 THUMB Debug/../../obj/systick.o .ARM.attributes - 0x000000c0 0x10 THUMB Debug/../../obj/flash.o + 0x00000254 0x33 THUMB Debug/../../obj/uart.o .ARM.attributes - 0x000000d0 0x10 THUMB Debug/../../obj/gpio.o + 0x00000287 0x33 THUMB Debug/../../obj/can.o .ARM.attributes - 0x000000e0 0x10 THUMB Debug/../../obj/hibernate.o + 0x000002ba 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfprintf_int_nwp.o) .ARM.attributes - 0x000000f0 0x10 THUMB Debug/../../obj/i2c.o + 0x000002e7 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(__vfscanf_int.o) .ARM.attributes - 0x00000100 0x10 THUMB Debug/../../obj/i2s.o + 0x00000314 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le_eabi.a(libc2.o) .ARM.attributes - 0x00000110 0x10 THUMB Debug/../../obj/interrupt.o + 0x00000341 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le_eabi.a(libdebugio.o) .ARM.attributes - 0x00000120 0x10 THUMB Debug/../../obj/mpu.o - .ARM.attributes - 0x00000130 0x10 THUMB Debug/../../obj/pwm.o - .ARM.attributes - 0x00000140 0x10 THUMB Debug/../../obj/qei.o - .ARM.attributes - 0x00000150 0x10 THUMB Debug/../../obj/ssi.o - .ARM.attributes - 0x00000160 0x10 THUMB Debug/../../obj/sysctl.o - .ARM.attributes - 0x00000170 0x10 THUMB Debug/../../obj/systick.o - .ARM.attributes - 0x00000180 0x10 THUMB Debug/../../obj/timer.o - .ARM.attributes - 0x00000190 0x10 THUMB Debug/../../obj/uart.o - .ARM.attributes - 0x000001a0 0x10 THUMB Debug/../../obj/udma.o - .ARM.attributes - 0x000001b0 0x10 THUMB Debug/../../obj/usb.o - .ARM.attributes - 0x000001c0 0x10 THUMB Debug/../../obj/watchdog.o - .ARM.attributes - 0x000001d0 0x10 THUMB Debug/../../obj/can.o - .ARM.attributes - 0x000001e0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfprintf_int_nwp.o) - .ARM.attributes - 0x000001f0 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(__vfscanf_int.o) - .ARM.attributes - 0x00000200 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2.o) - .ARM.attributes - 0x00000210 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc2_asm.o) - .ARM.attributes - 0x00000220 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_v7m_t_le.a(libc_asm.o) - .ARM.attributes - 0x00000230 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libdebugio_v7m_t_le.a(libdebugio.o) - .ARM.attributes - 0x00000240 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le.a(user_libc.o) - .ARM.attributes - 0x00000250 0x10 C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libm_v7m_t_le.a(libm_asm.o) + 0x0000036e 0x2d C:/Program Files (x86)/Rowley Associates Limited/CrossWorks for ARM 2.3/lib/libc_user_libc_v7m_t_le_eabi.a(user_libc.o) diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.srec index 2ba8d952..22031498 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/bin/demoprog_ek_lm3s8962.srec @@ -1,909 +1,937 @@ S02B0000433A2F576F726B2F736F6674776172652F4F70656E424C542F5461726765742F44656D6F2F41524DEF -S1134000EC010020974100004947000049470000A7 -S1134010494700004947000049470000494700005C -S1134020494700004947000049470000494700004C -S1134030494700004947000049470000D9470000AC -S1134040494700004947000049470000494700002C -S1134050494700004947000049470000494700001C -S1134060494700004947000049470000494700000C -S113407049470000494700004947000049470000FC -S113408049470000494700004947000049470000EC -S113409049470000494700004947000049470000DC -S11340A049470000494700004947000049470000CC -S11340B049470000494700004947000049470000BC -S11340C049470000494700004947000049470000AC -S11340D0494700004947000049470000494700009C -S11340E0494700004947000049470000494700008C -S10740F0EE11AA55CA -S11340F42A498D462A482B492B4A00F039F82B4883 -S11341042B492C4A00F034F82B482C492C4A00F053 -S11341142FF82C482C492D4A00F02AF82C482D4914 -S11341242D4A00F025F82D482D492E4A00F020F898 -S11341342D482E49002200F026F82D482D49091A4D -S1134144082903DB00220260043001601E481F4971 -S1134154884205D00268043003B4904703BCF7E7EF -S113416400208646EC4600200021234A9047FEE7BF -S1134174884207D0521A05D0037801300B700131FC -S1134184013AF9D17047884202D002700130FAE74B -S113419470471A481A490160AAE70000EC0100209C -S11341A49478000000000020000000200842000071 -S11341B40842000078750000947800000000002094 -S11341C40000002078750000787500007875000000 -S11341D47875000078750000787500007875000023 -S11341E47875000094780000000000206C00002022 -S11341F46C000020EC000020BD46000008ED00E047 -S10742040040000072 -S113420880B500AF44F25123C0F20003984744F24A -S11342189D43C0F20003984780BD00BF80B500AF3E -S113422844F2B523C0F20003984744F24953C0F25C -S11342380003984780BD00BF80B500AF45F2113335 -S1134248C0F20003984780BD90B500AF4FF001005D -S1134258C1F2000045F29523C0F2000398474FF0DD -S11342680100C2F2000045F29523C0F2000398470A -S11342784FF040204FF0030144F6AD53C0F2000361 -S1134288984745F2BD53C0F20003984703464FF4DC -S11342984040C4F2000019464FF461424FF06003F5 -S11342A845F60524C0F20004A04790BD80B500AFD0 -S11342B840F20003C2F200031B78002B1AD140F22B -S11342C80400C2F2000044F29133C0F2000398479C -S11342D80346012B56D140F20003C2F200034FF00B -S11342E801021A7040F24803C2F200034FF00002C0 -S11342F81A7047E040F24803C2F200031B7803F146 -S1134308010240F20403C2F20003D318184644F22F -S11343189133C0F2000398470346012B32D140F28F -S11343284803C2F200031B7803F10103DAB240F236 -S11343384803C2F200031A7040F20403C2F20003F5 -S11343481A7840F24803C2F200031B789A4219D142 -S113435840F20003C2F200034FF000021A7040F268 -S11343680403C2F200035B78FF2B0BD140F2040371 -S1134378C2F200039B78002B04D144F24123C0F21B -S11343880003984780BD00BF80B582B000AF386095 -S11343984FF44040C4F2000045F6A143C0F20003C4 -S11343A8984703467B607B68B3F1FF3F06D07B6880 -S11343B8DAB23B681A704FF0010301E04FF00003D2 -S11343C8184607F10807BD4680BD00BF80B585B013 -S11343D800AF4FF00403BB604FF010033B604EE0A6 -S11343E84FF008037B6043E03B6803F101034FF09F -S11343F8640202FB03F239687B68CB1803F10103FA -S1134408B2FBF3F3FB74FB7C402B2DD9FB7C4B2BC9 -S11344182AD83A687B68D31803F101024FF01003D5 -S1134428B3FBF2F102FB01F29B1A002B1CD17B684F -S1134438032B01D87B68BB603A687B68D31803F107 -S113444801034FF01002B2FBF3F3FB603B464FF05D -S11344580000C4F20400194646F21913C0F200031E -S113446898474FF001030FE07B6803F1FF337B604B -S11344787B68002BB8D13B6803F1FF333B603B6892 -S1134488002BADD14FF00003184607F11407BD46C1 -S113449880BD00BF90B585B000AF4FF00800C2F2F0 -S11344A8000045F29523C0F2000398474FF4E0401A -S11344B8C4F200004FF0030144F6DD43C0F20003E8 -S11344C898474FF48070C0F2100045F29523C0F26B -S11344D8000398474FF00000C4F2040045F65D73EA -S11344E8C0F20003984744F2D533C0F2000398475A -S11344F84FF00000C4F2040046F2C103C0F2000306 -S1134508984740F267633B6040F2FF737B604FF06B -S11345180803BB604FF00803FB603B464FF0000004 -S1134528C4F204004FF001011A464FF0020346F2A8 -S11345381144C0F20004A04707F11407BD4690BD1A -S113454890B588B000AF4FF00000C4F204004FF0FB -S1134558020146F2DD23C0F2000398470346FB61DB -S113456847F27853C0F200031B881A46FB691340CC -S1134578002B1CD03B46BB6107F108034FF0000039 -S1134588C4F204004FF001011A464FF0010346F249 -S1134598B574C0F20004A0473B78FF2B07D17B78A1 -S11345A8002B04D144F24123C0F20003984707F1D9 -S11345B82007BD4690BD00BF80B500AF44F6156323 -S11345C8C0F20003984780BD80B500AF4FF02000CB -S11345D8C2F2000045F29523C0F2000398474FF455 -S11345E8A040C4F202004FF0010144F64553C0F262 -S11345F8000398474FF4A040C4F202004FF00101B1 -S11346084FF0000244F68D43C0F20003984780BD82 -S113461880B581B000AF44F2C173C0F2000398477B -S113462803463B6040F24C03C2F200031B683A683D -S1134638D21A40F2F3139A4236D940F25003C2F226 -S113464800031B78002B14D140F25003C2F200037C -S11346584FF001021A704FF4A040C4F202004FF068 -S113466801014FF0010244F68D43C0F2000398475C -S113467813E040F25003C2F200034FF000021A7034 -S11346884FF4A040C4F202004FF001014FF00002C1 -S113469844F68D43C0F20003984740F24C03C2F23B -S11346A800033A681A6000E000BF07F10407BD463A -S11346B880BD00BF80B500AF44F2ED63C0F20003D3 -S11346C8984744F20923C0F20003984744F2196357 -S11346D8C0F20003984744F22523C0F20003984728 -S11346E8F4E700BF80B500AF4FF46070C0F2C010AB -S11346F845F23133C0F20003984744F2D153C0F273 -S11347080003984744F25173C0F20003984744F2F7 -S1134718C153C0F20003984780BD00BF80B482B083 -S113472800AF7860396040F25403C2F200037A683B -S11347381A6040F25803C2F200033A681A60FEE7AE -S113474880B400AFFEE700BF80B500AF45F2BD53AB -S1134758C0F200039847024644F6D353C1F26203F9 -S1134768A3FB02134FEA9313184645F67513C0F2D8 -S11347780003984745F62D13C0F20003984745F601 -S11347885113C0F2000398474FF0000044F2A1739C -S1134798C0F20003984780BD80B481B000AF386090 -S11347A840F25C03C2F200033A681A6007F1040796 -S11347B8BD4680BC704700BF80B400AF40F25C03C4 -S11347C8C2F200031B681846BD4680BC704700BF90 -S11347D880B400AF40F25C03C2F200031B6803F12B -S11347E8010240F25C03C2F200031A60BD4680BCB9 -S11347F8704700BFEFF3108062B67047234618462F -S113480880B481B000AF38603B68B3F1402F76D0F4 -S11348183A684FF40043C4F205039A426FD03A68E9 -S11348284FF4A043C4F200039A4268D03A684FF4A4 -S11348381043C4F205039A4261D03A684FF4C04366 -S1134848C4F200039A425AD03A684FF42043C4F29F -S113485805039A4253D03A684FF4E043C4F2000384 -S11348689A424CD03A684FF43043C4F205039A4252 -S113487845D03A684FF48043C4F202039A423ED0CA -S11348883A684FF44043C4F205039A4237D03A6871 -S11348984FF4A043C4F202039A4230D03A684FF46A -S11348A85043C4F205039A4229D03A684FF4C043EE -S11348B8C4F202039A4222D03A684FF46043C4F225 -S11348C805039A421BD03A684FF4E043C4F202034A -S11348D89A4214D03A684FF47043C4F205039A42DA -S11348E80DD03A684FF45043C4F203039A4206D0F9 -S11348F83A684FF00003C4F206039A4202D14FF01B -S1134908010301E04FF00003DBB2184607F1040786 -S1134918BD4680BC704700BF80B583B000AFB860A7 -S11349280B463A603B71B86844F60903C0F20003C9 -S113493898470346002B0AD147F27C50C0F2000086 -S11349484FF0E40144F22573C0F2000398473B6832 -S1134958002B10D03B68012B0DD03B68022B0AD0EA -S113496847F27C50C0F200004FF0E60144F2257390 -S1134978C0F200039847BB6803F580631A463B6896 -S113498803F00103DBB2002B06D0BB6803F5806398 -S113499819683B790B4307E0BB6803F58063196822 -S11349A83B796FEA03030B401360BB6803F5846328 -S11349B81A463B6803F00203002B06D0BB6803F5D4 -S11349C8846319683B790B4307E0BB6803F5846388 -S11349D819683B796FEA03030B40136007F10C076E -S11349E8BD4680BD80B584B000AFF8607A603B6096 -S11349F80B463B72F86844F60903C0F20003984773 -S1134A080346002B0AD147F27C50C0F200004FF451 -S1134A18DD7144F22573C0F2000398477B68012BCB -S1134A2813D07B68022B10D07B68042B0DD07B68D5 -S1134A380C2B0AD047F27C50C0F200004FF4DF710F -S1134A4844F22573C0F2000398473B68082B1CD036 -S1134A583B680A2B19D03B680C2B16D03B68092BF2 -S1134A6813D03B680B2B10D03B680D2B0DD03B6843 -S1134A78002B0AD047F27C50C0F2000040F2C51166 -S1134A8844F22573C0F200039847FB6803F5A0635A -S1134A981A467B6803F00103DBB2002B06D0FB68DF -S1134AA803F5A06319683B7A0B4307E0FB6803F539 -S1134AB8A06319683B7A6FEA03030B401360FB6831 -S1134AC803F5A06303F104031A467B6803F00203A9 -S1134AD8002B08D0FB6803F5A06303F104031968ED -S1134AE83B7A0B4309E0FB6803F5A06303F1040375 -S1134AF819683B7A6FEA03030B401360FB6803F5FC -S1134B08A1631A467B6803F00403002B06D0FB68F4 -S1134B1803F5A16319683B7A0B4307E0FB6803F5C7 -S1134B28A16319683B7A6FEA03030B401360FB68BF -S1134B3803F5A3631A467B6803F00803002B06D029 -S1134B48FB6803F5A36319683B7A0B4307E0FB682A -S1134B5803F5A36319683B7A6FEA03030B401360F8 -S1134B68FB6803F5A06303F10C031A463B6803F0E2 -S1134B780103DBB2002B08D0FB6803F5A06303F143 -S1134B880C0319683B7A0B4309E0FB6803F5A0633F -S1134B9803F10C0319683B7A6FEA03030B401360B3 -S1134BA8FB6803F5A2631A463B6803F00203002B73 -S1134BB806D0FB6803F5A26319683B7A0B4307E048 -S1134BC8FB6803F5A26319683B7A6FEA03030B4099 -S1134BD81360FB6803F5A26303F104031A463B68F8 -S1134BE803F00403002B08D0FB6803F5A26303F168 -S1134BF8040319683B7A0B4309E0FB6803F5A263D5 -S1134C0803F1040319683B7A6FEA03030B4013604A -S1134C18FB6803F5A26303F10C031A463B6803F02F -S1134C280803002B08D0FB6803F5A26303F10C0307 -S1134C3819683B7A0B4309E0FB6803F5A26303F1A7 -S1134C480C0319683B7A6FEA03030B401360FB6893 -S1134C5803F5A5631A463B68002B06D1FB6803F5E8 -S1134C68A56319683B7A0B4307E0FB6803F5A56362 -S1134C7819683B7A6FEA03030B40136007F11007C6 -S1134C88BD4680BD80B583B000AFB86013460A4600 -S1134C983A713B70B86844F60903C0F200039847B8 -S1134CA80346002B0AD147F27C50C0F200004FF4AF -S1134CB8517144F22573C0F2000398473B794FEAD7 -S1134CC883031A46BB68D3183A781A6007F10C07AD -S1134CD8BD4680BD90B582B000AF78600B463B708E -S1134CE8786844F60903C0F2000398470346002B8A -S1134CF80AD147F27C50C0F200004FF4647144F2C8 -S1134D082573C0F2000398473B78786819464FF03A -S1134D18020244F62113C0F2000398473B787868EE -S1134D2819464FF004024FF0080344F6ED14C0F29C -S1134D380004A04707F10807BD4690BD90B582B0AE -S1134D4800AF78600B463B70786844F60903C0F2FC -S1134D58000398470346002B0AD147F27C50C0F25F -S1134D68000040F2044144F22573C0F2000398475E -S1134D783B78786819464FF0010244F62113C0F2D3 -S1134D88000398473B78786819464FF001024FF0C2 -S1134D98080344F6ED14C0F20004A04707F108071D -S1134DA8BD4690BD90B582B000AF78600B463B70AD -S1134DB8786844F60903C0F2000398470346002BB9 -S1134DC80AD147F27C50C0F2000040F21F5144F26D -S1134DD82573C0F2000398473B78786819464FF06A -S1134DE8020244F62113C0F2000398473B7878681E -S1134DF819464FF001024FF0080344F6ED14C0F2CF -S1134E080004A04707F10807BD4690BD80B500AF70 -S1134E1844F2FD73C0F2000398470346DBB2184618 -S1134E2880BD00BF80B581B000AF38603B68462BB9 -S1134E380AD947F2E850C0F200004FF4D57144F2A1 -S1134E482573C0F2000398473B68042B0CD14EF637 -S1134E582453CEF200034EF62452CEF20002126816 -S1134E6842F480321A6051E03B68052B0CD14EF6AF -S1134E782453CEF200034EF62452CEF200021268F6 -S1134E8842F400321A6041E03B68062B0CD14EF61E -S1134E982453CEF200034EF62452CEF200021268D6 -S1134EA842F480221A6031E03B680F2B0CD14EF299 -S1134EB81003CEF200034EF21002CEF20002126882 -S1134EC842F002021A6021E03B680F2B0FD93B68BD -S1134ED82F2B0CD84FF46143CEF200033A68A2F1A9 -S1134EE810024FF0010101FA02F21A600EE03B6869 -S1134EF82F2B0BD94EF20413CEF200033A68A2F119 -S1134F0830024FF0010101FA02F21A6007F10407B6 -S1134F18BD4680BD80B581B000AF38603B68462B84 -S1134F280AD947F2E850C0F200004FF4F77144F28E -S1134F382573C0F2000398473B68042B0CD14EF646 -S1134F482453CEF200034EF62452CEF20002126825 -S1134F5822F480321A6051E03B68052B0CD14EF6DE -S1134F682453CEF200034EF62452CEF20002126805 -S1134F7822F400321A6041E03B68062B0CD14EF64D -S1134F882453CEF200034EF62452CEF200021268E5 -S1134F9822F480221A6031E03B680F2B0CD14EF2C8 -S1134FA81003CEF200034EF21002CEF20002126891 -S1134FB822F002021A6021E03B680F2B0FD93B68EC -S1134FC82F2B0CD84EF28013CEF200033A68A2F1CC -S1134FD810024FF0010101FA02F21A600EE03B6878 -S1134FE82F2B0BD94EF28413CEF200033A68A2F1A8 -S1134FF830024FF0010101FA02F21A6007F10407C6 -S1135008BD4680BD80B481B000AF38603A684FF0C7 -S11350180103C0F210039A4200F02B813A684FF062 -S11350280203C0F210039A4200F023813A684FF455 -S11350388073C0F210039A4200F01B813A684FF45F -S11350480073C0F210039A4200F013813A684FF4D7 -S11350588063C0F210039A4200F00B813A684FF45F -S11350688073C1F210039A4200F003813A684FF446 -S11350780073C1F210039A4200F0FB803A684FF4BF -S11350888063C1F210039A4200F0F3803A684FF447 -S11350988043C1F210039A4200F0EB803A684FF45F -S11350A8A043C2F210039A4200F0E3803A684FF03A -S11350B80103C2F200039A4200F0DB803A684FF021 -S11350C80203C2F200039A4200F0D3803A684FF018 -S11350D80403C2F200039A4200F0CB803A684FF00E -S11350E80803C2F200039A4200F0C3803A684FF002 -S11350F81003C2F200039A4200F0BB803A684FF0F2 -S11351082003C2F200039A4200F0B3803A684FF0D9 -S11351184003C2F200039A4200F0AB803A684FF0B1 -S11351288003C2F200039A4200F0A3803A684FF465 -S11351388073C2F200039A4200F09B803B68402BC4 -S113514800F097803B68B3F1102F00F092803A6822 -S11351584FF48043C1F200039A4200F08A803A680F -S11351684FF48053C1F210039A4200F082803A68E7 -S11351784FF48073C2F210039A427AD03A684FF01F -S11351888003C3F200039A4273D03A684FF01003C5 -S1135198C3F200039A426CD03B68B3F1101F68D085 -S11351A83A684FF48073C1F200039A4261D03A68B6 -S11351B84FF40073C1F200039A425AD03A684FF090 -S11351C81003C1F200039A4253D03A684FF0200307 -S11351D8C1F200039A424CD03A684FF02003C3F25C -S11351E800039A4245D03A684FF00103C1F2100314 -S11351F89A423ED03A684FF00203C1F210039A4231 -S113520837D03A684FF00403C1F210039A4230D001 -S11352183A684FF00803C1F210039A4229D03A6859 -S11352284FF00103C1F200039A4222D03A684FF0CA -S11352380203C1F200039A421BD03A684FF00403F8 -S1135248C1F200039A4214D03B68B3F1202F10D066 -S11352583A684FF00103C2F210039A4209D03B683E -S1135268082B06D03A684FF48053C0F210039A42D0 -S113527802D14FF0010301E04FF00003DBB21846FE -S113528807F10407BD4680BC704700BF80B581B0F4 -S113529800AF3860386845F20D03C0F20003984740 -S11352A80346002B0AD147F2C060C0F200004FF455 -S11352B8FC7144F22573C0F2000398473B684FEA37 -S11352C8137247F25863C0F2000353F822301A46A7 -S11352D83B684FEA137147F25863C0F2000353F86E -S11352E8213019683B684FEA03434FEA134338688F -S11352F800F4F8104FEA104003FA00F30B4313606C -S113530807F10407BD4680BD80B400AF4EF60C53C8 -S1135318CEF200034FF00402C0F2FA521A60FEE71C -S11353280138FDD1704700BF80B584B000AF386044 -S11353384FF46043C4F20F031B6803F0E043002BEF -S11353480CD04FF46043C4F20F031A684FF0000303 -S1135358C7F2FF031340B3F1805F03D13B68002B0E -S1135368C0F223814EF26003C4F20F031B68BB60D2 -S11353784EF27003C4F20F031B687B60BB6843F4EE -S11353880063BB60BB6823F48003BB607B6843F4A1 -S113539800637B604EF26003C4F20F03BA681A60BC -S11353A84EF27003C4F20F037A681A60BB6803F004 -S11353B80203002B04D03B6803F00203002B0AD03D -S11353C8BB6803F00103DBB2002B34D03B6803F065 -S11353D80103002B2FD13B6863F00303BA68134021 -S11353E8BB604EF26003C4F20F03BA681A607B68AC -S11353F8002B09DA7B6803F07003302B0CD07B6830 -S113540803F07003702B07D07B68002B0CDBBB68A0 -S113541803F03003302B07D14FF4805045F2293381 -S1135428C0F20003984706E04FF4002045F2293300 -S1135438C0F200039847BB6823F45E5323F070035B -S1135448BB603A6843F2F0731340BA681343BB6015 -S11354587A684DF68F73C7F6FF7313407B603A681A -S113546842F23003C8F2000313407A6813437B60A6 -S11354783B6803F008034FEAC3037A6813437B606D -S11354884EF25803C4F20F034FF040021A607B68CF -S1135498002B0CDA4EF27003C4F20F037A681A6018 -S11354A84EF26003C4F20F03BA681A600BE04EF2BE -S11354B86003C4F20F03BA681A604EF27003C4F2B0 -S11354C80F037A681A604FF0100045F22933C0F2CE -S11354D800039847BB6823F0F86323F00303BB6019 -S11354E83A684FF00303C0F2C0731340BA68134319 -S11354F8BB607B6823F0FC537B603B6803F0FC5380 -S11355087A6813437B603B6803F08043002B11D017 -S1135518BB6843F48003BB607B6823F480037B602F -S11355283A684FF00003C4F2400313407A68134307 -S11355387B6003E07B6823F080437B603B6803F473 -S11355480063002B1DD14FF40043FB600CE04EF2C6 -S11355585003C4F20F031B6803F04003002B07D168 -S1135568FB6803F1FF33FB60FB68002BEFD100E01D -S113557800BFBB6823F40063BB607B6823F400634B -S11355887B604EF26003C4F20F03BA681A604EF2ED -S11355987003C4F20F037A681A604FF0100045F2E2 -S11355A82933C0F20003984700E000BF07F1100751 -S11355B8BD4680BD80B484B000AF4EF26003C4F22F -S11355C80F031B68FB604EF27003C4F20F031B68E1 -S11355D87B607B68002B03DA7B6803F0700302E0CE -S11355E8FB6803F03003202B7CD0202B04D8002B3D -S11355F80CD0102B17D0E0E0602B00F0D680702B75 -S113560800F0D780302B00F0CC80D6E0FB6803F4A0 -S1135618F8634FEA931247F26463C0F2000353F845 -S11356282230BB60CCE04FF46043C4F20F031B6824 -S113563803F0E043002B0CD04FF46043C4F20F0393 -S11356481A684FF00003C7F2FF031340B3F1805FF9 -S113565805D14EF2C013C0F2E403BB6041E04FF43D -S11356686043C4F20F031A684FF00003C7F2FF0344 -S113567813404FF00002C1F2010293420AD14FF4E1 -S11356886043C4F20F031B684FEA03434FEA134312 -S1135698022B1AD04FF46043C4F20F031A684FF078 -S11356A80003C7F2FF0313404FF00002C1F20302E4 -S11356B8934210D14FF46043C4F20F031B684FEABE -S11356C803434FEA1343002B05D14FF4D853C0F2D8 -S11356D8B703BB6005E04FF41053C0F2F403BB609A -S11356E86EE06DE04FF46043C4F20F031B6803F0EF -S11356F8E043002B0CD04FF46043C4F20F031A6844 -S11357084FF00003C7F2FF031340B3F1805F05D1E4 -S113571843F67003C0F23903BB6041E04FF46043C1 -S1135728C4F20F031A684FF00003C7F2FF031340D3 -S11357384FF00002C1F2010293420AD14FF46043D0 -S1135748C4F20F031B684FEA03434FEA1343022BC7 -S11357581AD04FF46043C4F20F031A684FF00003E1 -S1135768C7F2FF0313404FF00002C1F20302934251 -S113577810D14FF46043C4F20F031B684FEA03438C -S11357884FEA1343002B05D14CF2C063C0F22D033A -S1135798BB6005E04FF41063C0F23D03BB600FE04B -S11357A80EE047F23053BB600AE04FF48003BB605D -S11357B806E04FF40043BB6002E04FF00003ABE0A7 -S11357C87B68002B04DA7B6803F40063002B07D0A2 -S11357D87B68002B5DDBFB6803F40063002B58D166 -S11357E84EF26403C4F20F031B683B604FF460433A -S11357F8C4F20F031B6803F0E043002B0CD04FF4F2 -S11358086043C4F20F031A684FF00003C7F2FF03A2 -S11358181340B3F1805F13D13A6843F6E073134041 -S11358284FEA531303F10203BA6802FB03F23B681D -S113583803F01F0303F10203B2FBF3F3BB6012E0AE -S11358483A6843F6E07313404FEA5313BA6802FB0D -S113585803F23B6803F01F0303F101034FEA430318 -S1135868B2FBF3F3BB603B6803F48043002B03D023 -S1135878BB684FEA5303BB603B6803F40043002B47 -S113588803D0BB684FEA9303BB60FB6843F480030F -S1135898FB60FB6803F48003002B3CD07B68002B7F -S11358A82EDA7B6803F08043002B1DD07B68002B25 -S11358B804DA7B6803F40063002B07D07B68002BB1 -S11358C812DBFB6803F40063002B0DD1BB684FEABD -S11358D843027B6803F0FE534FEA935303F1010339 -S11358E8B2FBF3F3BB6016E07B6803F0FC534FEAAA -S11358F8D35303F10103BA68B2FBF3F3BB600AE0C4 -S1135908FB6803F0F0634FEAD35303F10103BA6869 -S1135918B2FBF3F3BB60BB68184607F11007BD463A -S113592880BC704780B400AF4EF21003CEF200037F -S11359384EF21002CEF20002126842F005021A601A -S1135948BD4680BC704700BF80B400AF4EF2100360 -S1135958CEF200034EF21002CEF20002126842F0B8 -S113596802021A60BD4680BC704700BF80B581B092 -S113597800AF38603B68002B03D03B68B3F1807FED -S11359880AD947F22C70C0F200004FF0D00144F25B -S11359982573C0F2000398474EF21403CEF20003B5 -S11359A83A6802F1FF321A6007F10407BD4680BD68 -S11359B880B481B000AF38603A684FF44043C4F211 -S11359C800039A420DD03A684FF45043C4F20003DE -S11359D89A4206D03A684FF46043C4F200039A42EC -S11359E802D14FF0010301E04FF00003DBB2184687 -S11359F807F10407BD4680BC704700BF80B585B079 -S1135A0800AFF860B9607A603B60F86845F6B9138E -S1135A18C0F2000398470346002B0AD147F2987056 -S1135A28C0F2000040F20D1144F22573C0F20003E5 -S1135A3898477B68002B0AD147F29870C0F200009F -S1135A484FF4877144F22573C0F2000398474FF46A -S1135A586043C4F20F031B6803F0E043002B42D0F9 -S1135A684FF46043C4F20F031A684FF00003C7F2FF -S1135A78FF031340B3F1805F35D04FF46043C4F2A1 -S1135A880F031A684FF00003C7F2FF0313404FF0E7 -S1135A980002C1F2010293420AD14FF46043C4F2F6 -S1135AA80F031B684FEA03434FEA1343022B1AD030 -S1135AB84FF46043C4F20F031A684FF00003C7F2AF -S1135AC8FF0313404FF00002C1F2030293420DD1C9 -S1135AD84FF46043C4F20F031B684FEA03434FEAD1 -S1135AE81343002B02D14FF0100301E04FF00803D9 -S1135AF87A6802FB03F2BB689A420AD947F29870A3 -S1135B08C0F2000040F20F1144F22573C0F2000302 -S1135B189847F86845F62943C0F2000398477B681C -S1135B284FEA0312BB689A420ED9FB6803F13003AB -S1135B38FA6802F13002126842F020021A607B68A7 -S1135B484FEA53037B6009E0FB6803F13003FA680A -S1135B5802F13002126822F020021A60BB684FEA90 -S1135B68C3027B68B2FBF3F303F101034FEA530367 -S1135B783B61FB6803F124033A694FEA92121A6005 -S1135B88FB6803F128033A6902F03F021A60FB68D4 -S1135B9803F12C033A681A60FB6803F118034FF009 -S1135BA800021A60F86845F6C133C0F2000398474A -S1135BB807F11407BD4680BD80B581B000AF3860D9 -S1135BC8386845F6B913C0F2000398470346002B1A -S1135BD80AD147F29870C0F200004FF4CF7144F232 -S1135BE82573C0F2000398473B6803F12C033A6815 -S1135BF802F12C02126842F010021A603B6803F1A9 -S1135C0830031A463B6803F130031B6843F44073BE -S1135C1843F00103136007F10407BD4680BD00BFCC -S1135C2880B581B000AF3860386845F6B913C0F262 -S1135C38000398470346002B0AD147F29870C0F234 -S1135C4800004FF4DF7144F22573C0F20003984753 -S1135C5800BF3B6803F118031B6803F00803002B1B -S1135C68F7D13B6803F12C033A6802F12C0212685D -S1135C7822F010021A603B6803F130031A463B68AD -S1135C8803F130031B6823F4407323F0010313600A -S1135C9807F10407BD4680BD80B581B000AF386008 -S1135CA8386845F6B913C0F2000398470346002B39 -S1135CB80AD147F29870C0F2000040F2094144F258 -S1135CC82573C0F2000398473B6803F118031B6867 -S1135CD803F01003002B02D13B681B6801E04FF06E -S1135CE8FF33184607F10407BD4680BD80B481B070 -S1135CF800AF38603A684FF00003C4F204039A42D4 -S1135D080DD03A684FF48053C4F204039A4206D083 -S1135D183A684FF40053C4F204039A4202D14FF094 -S1135D28010301E04FF00003DBB2184607F1040752 -S1135D38BD4680BC704700BF80B482B000AF3860F5 -S1135D483A684FF48053C4F204039A420FD04FF4D4 -S1135D580053C4F204039A420DD04FF00003C4F276 -S1135D6804039A420BD14FF037037B600AE04FF0EB -S1135D7838037B6006E04FF039037B6002E04FF0A4 -S1135D88FF337B607B68184607F10807BD4680BC73 -S1135D98704700BF80B585B000AF38603B6823F416 -S1135DA87E6323F01F03184645F64153C0F20003EF -S1135DB8984703463B613B69B3F1FF3F0AD147F675 -S1135DC80400C0F200004FF0F90144F22573C0F258 -S1135DD8000398474EF20413CEF200031A683B6995 -S1135DE8A3F130034FF0010101FA03F31340FB6000 -S1135DF8FB68002B05D0386944F61D73C0F2000314 -S1135E0898473B681B684FF000037B6003E07B689E -S1135E1803F101037B607B68042BF8DD3B681B6896 -S1135E28BB60FB68002B05D0386944F62D63C0F2CB -S1135E3800039847BB68184607F11407BD4680BDA0 -S1135E4880B483B000AF786039607B683A681A60C0 -S1135E584FF00003BB6003E0BB6803F10103BB60C0 -S1135E68BB68042BF8DD07F10C07BD4680BC7047FE -S1135E7880B585B000AFB86079603A604FF0000330 -S1135E883B6125E03B69BA68D3181B78FB603B6922 -S1135E9803F101033B613A693B689A420CDA3B69B6 -S1135EA8BA68D3181B784FEA0323FA681343FB60D4 -S1135EB83B6903F101033B617B687A6802F10402E0 -S1135EC87A601846F96845F64963C0F200039847B2 -S1135ED83A693B689A42D5DB07F11407BD4680BD91 -S1135EE880B585B000AFB86079603A604FF00003C0 -S1135EF83B6126E07B687A6802F104027A601846FE -S1135F0845F69D53C0F2000398470346FB603B697E -S1135F18BA68D318FA68D2B21A703B6903F101035C -S1135F283B613A693B689A420BDA3B69BA68D31811 -S1135F38FA684FEA1222D2B21A703B6903F10103DC -S1135F483B613A693B689A42D4DB07F11407BD46C2 -S1135F5880BD00BF80B582B000AF3860386845F6B0 -S1135F68F543C0F2000398470346002B0AD147F6CD -S1135F780400C0F2000040F2D91144F22573C0F2C3 -S1135F880003984738684FF0010145F64963C0F2A9 -S1135F980003984700BF3B6803F12003184645F601 -S1135FA89D53C0F200039847034603F40043002BB3 -S1135FB8F1D13B6803F1240318464FF0B00145F6CC -S1135FC84963C0F2000398473B6803F13403184659 -S1135FD84FF0000145F64963C0F2000398473B6857 -S1135FE803F1380318464FF0000145F64963C0F23F -S1135FF8000398474FF001037B601DE000BF3B6836 -S113600803F12003184645F69D53C0F20003984750 -S1136018034603F40043002BF1D13B6803F120024B -S11360287B681046194645F64963C0F20003984751 -S11360387B6803F101037B607B68202BDEDD3B6812 -S113604803F1240318464FF00C0145F64963C0F2E6 -S1136058000398474FF001037B601DE000BF3B68D5 -S113606803F12003184645F69D53C0F200039847F0 -S1136078034603F40043002BF1D13B6803F12002EB -S11360887B681046194645F64963C0F200039847F1 -S11360987B6803F101037B607B68202BDEDD3B68B2 -S11360A803F10403184645F69D53C0F200039847CC -S11360B807F10807BD4680BD80B581B000AF3860E0 -S11360C8386845F6F543C0F2000398470346002BA9 -S11360D80AD147F60400C0F2000040F23A2144F223 -S11360E82573C0F200039847386845F69D53C0F2FB -S11360F800039847034623F001033868194645F618 -S11361084963C0F20003984707F10407BD4680BD00 -S113611880B584B000AF78603960786845F6F54397 -S1136128C0F2000398470346002B0AD147F604003F -S1136138C0F200004FF4597144F22573C0F2000311 -S113614898473B68002B0AD147F60400C0F20000C8 -S113615840F2653144F22573C0F2000398473B6866 -S11361681B68012B03D93B681B68102B0AD947F617 -S11361780400C0F2000040F26B3144F22573C0F20F -S1136188000398473B685B68002B03D03B685B6857 -S1136198082B0AD947F60400C0F200004FF45C71DA -S11361A844F22573C0F2000398473B689B68002BB0 -S11361B803D03B689B68042B0AD947F60400C0F255 -S11361C8000040F2753144F22573C0F20003984789 -S11361D83B68DB68B3F5806F03D83B68DB68002B4A -S11361E80AD147F60400C0F2000040F27B3144F2C1 -S11361F82573C0F200039847786845F69D53C0F2AA -S1136208000398470346FB60FB6843F04103786842 -S1136218194645F64963C0F2000398473B685B6832 -S113622803F1FF334FEA033303F4E043BB603B68F5 -S11362381B6803F1FF334FEA032303F47063BA685E -S11362481343BB603B689B6803F1FF334FEA831336 -S1136258DBB2BA681343BB603B68DB6803F1FF3306 -S113626803F03F03BA681343BB607B6803F10C0374 -S11362781846B96845F64963C0F2000398477B6835 -S113628803F118023B68DB6803F1FF334FEA931309 -S113629803F00F031046194645F64963C0F200039C -S11362A89847FB6823F04003FB60FB6803F0010395 -S11362B8DBB2002B03D0FB6823F00103FB60786892 -S11362C8F96845F64963C0F20003984707F11007D7 -S11362D8BD4680BD80B583B000AF7860396078680A -S11362E845F6F543C0F2000398470346002B0AD14C -S11362F847F60400C0F2000040F2925144F22573BC -S1136308C0F2000398473B68032B73D801A252F8E4 -S113631823F000BF2D6300005B630000916300005D -S1136328C76300007B6803F10403184645F69D53D0 -S1136338C0F2000398470346BB607B6803F104037B -S113634818466FF01F0145F64963C0F200039847E9 -S113635854E07B6803F58073184645F69D53C0F2F4 -S1136368000398470346BB607B6803F582731846AD -S113637845F69D53C0F20003984703464FEA03438A -S1136388BA681343BB6039E07B6803F59073184619 -S113639845F69D53C0F2000398470346BB607B68EB -S11363A803F59273184645F69D53C0F200039847C7 -S11363B803464FEA0343BA681343BB601EE07B6895 -S11363C803F5B073184645F69D53C0F20003984789 -S11363D80346BB607B6803F5B273184645F69D53C4 -S11363E8C0F20003984703464FEA0343BA681343CD -S11363F8BB6003E04FF00003BB6000BFBB681846F6 -S113640807F10C07BD4680BD80B588B000AFF860C1 -S1136418B9607A603B604FF00003FB74F86845F696 -S1136428F543C0F2000398470346002B0AD147F608 -S11364380400C0F2000040F25F6144F22573C0F228 -S113644800039847BB68202B02D8BB68002B0AD1ED -S113645847F60400C0F200004FF4CC6144F22573FF -S1136468C0F2000398473B68002B19D03B68012B06 -S113647816D03B68022B13D03B68032B10D03B6823 -S1136488012B0DD03B68042B0AD047F60400C0F258 -S1136498000040F2666144F22573C0F20003984795 -S11364A800BFFB6803F12003184645F69D53C0F26C -S11364B800039847034603F40043002BF1D17B689B -S11364C81A6840F2FF739A4205D87B689B6803F008 -S11364D80403002B03D04FF00103BB7402E04FF018 -S11364E80003BB744FF09303FB834FF000033B831B -S11364F84FF00003FB824FF00003BB824FF0000310 -S1136508BB834FF000037B833B68042B00F2498173 -S113651801A252F823F000BF356500004B65000066 -S11365285B6500006365000085650000BB8A43F471 -S11365388073BB824FF40053FB824FF00103FB745A -S113654826E0BB8A43F48073BB824FF00003FB82CE -S11365581EE04FF00003FB821AE04FF40053FB8265 -S11365684FF48053BB824FF6FF73BB8341F6FF732E -S11365787B83FB8B43F04003FB8309E04FF4005318 -S1136588FB824FF49053BB824FF00103FB7400BFAE -S11365987B689B6803F00803002B1ED0BB7C002B90 -S11365A80DD07B685B68BB837B685B684FEA1343E9 -S11365B89BB24FEAC3434FEAD3437B830DE04FF0CA -S11365C80003BB837B685B689BB24FEA83039BB27F -S11365D84FEAC3434FEAD3437B837B689B6803F04A -S11365E82803282B05D17B8B6FEA43436FEA534377 -S11365F87B837B689B6803F01803182B03D17B8B80 -S113660843F480437B837B689B6803F03803002B47 -S113661807D0BB8A43F48053BB82FB8B43F040030F -S1136628FB83FB8B43F02003FB83BB7C002B19D03B -S11366387B681B689AB23B8B13433B837B681B685C -S11366484FEA13439BB24FEAC3434FEAD3439AB288 -S1136658FB8A1343FB82FB8A6FEA83436FEA934303 -S1136668FB8213E07B681B689BB24FEA83039BB2EF -S11366784FEAC3434FEAD3439AB2FB8A1343FB82DC -S1136688FB8A6FEA43436FEA5343FB827B68DB6808 -S11366989BB203F00F039AB2BB8A1343BB827B6895 -S11366A89B6803F40073002B03D1BB8A43F0800377 -S11366B8BB827B689B6803F00103DBB2002B03D029 -S11366C8BB8A43F40063BB827B689B6803F00203C4 -S11366D8002B03D0BB8A43F48063BB82FB7C002B72 -S11366E80FD07B681969FB6803F13C031A467B6881 -S11366F8DB68084611461A4645F67963C0F200037A -S11367089847FB6803F12402FB8B1046194645F6AB -S11367184963C0F200039847FB6803F12802BB8B66 -S11367281046194645F64963C0F200039847FB68CA -S113673803F12C027B8B1046194645F64963C0F2D7 -S113674800039847FB6803F130023B8B1046194657 -S113675845F64963C0F200039847FB6803F1340225 -S1136768FB8A1046194645F64963C0F20003984768 -S1136778FB6803F13802BB8A1046194645F649639B -S1136788C0F200039847FB6803F12002BB6803F0DA -S11367983F031046194645F64963C0F2000398477B -S11367A800E000BF07F12007BD4680BD80B587B073 -S11367B800AFF860B9607A603B70F86845F6F54355 -S11367C8C0F2000398470346002B0AD147F6040099 -S11367D8C0F2000040F2C17144F22573C0F2000314 -S11367E89847BB68202B02D8BB68002B0AD147F610 -S11367F80400C0F2000040F2C27144F22573C0F2F2 -S1136808000398474FF073037B833B78002B03D036 -S11368187B8B43F008037B83FB6803F184027B8B47 -S11368281046194645F64963C0F200039847FB68C9 -S113683803F18002BB6803F03F031046194645F68E -S11368484963C0F20003984700BFFB6803F1800363 -S1136858184645F69D53C0F200039847034603F4CF -S11368680043002BF1D1FB6803F18803184645F671 -S11368789D53C0F20003984703463B83FB6803F12A -S11368888C03184645F69D53C0F200039847034607 -S1136898FB82FB6803F19003184645F69D53C0F24A -S11368A8000398470346BB82FB6803F19403184628 -S11368B845F69D53C0F20003984703467B82FB6864 -S11368C803F19803184645F69D53C0F20003984710 -S11368D803463B827B684FF000029A603B8A03F4CC -S11368E88073002B04D17B8A03F40053002B09D155 -S11368F83B8A03F48073002B0AD07B8A03F4005389 -S1136908002B05D17B689B6843F040027B689A6042 -S11369187B8A03F48043002B12D07B8A4FEAC3435B -S11369284FEAD3434FEA0342BB8A13431A467B68B0 -S11369381A607B689B6843F004027B689A6009E0EC -S11369487B8A4FEAC3434FEAD3434FEAA3031A4669 -S11369587B681A603B8A03F48043002B05D07B686C -S11369689B6843F480727B689A603B8A03F4805383 -S1136978002B54D07B8A03F48043002B1ED0FB8A5F -S11369884FEAC3434FEAD3434FEA03423B8B1343D3 -S11369981A467B685A607B685A686FF060439A426B -S11369A805D17B689B6803F04003002B22D17B68E8 -S11369B89B6843F008027B689A601BE0FB8A4FEAF5 -S11369C8C3434FEAD3434FEAA3031A467B685A608A -S11369D87B685A6840F2FF739A4205D17B689B68CA -S11369E803F04003002B05D17B689B6843F0080241 -S11369F87B689A60FB8A1BB2002B05DA7B689B686C -S1136A0843F028027B689A60FB8A03F48043002BD6 -S1136A1805D07B689B6843F018027B689A603B8AC0 -S1136A2803F40063002B05D07B689B6843F00102E4 -S1136A387B689A603B8A03F48063002B05D07B68EB -S1136A489B6843F002027B689A603B8A1BB2002B66 -S1136A5848DA3B8A03F00F027B68DA607B689B683C -S1136A6803F04003002B0FD17B681969FB6803F11D -S1136A789C031A467B68DB68084611461A4645F6A5 -S1136A88E963C0F200039847FB6803F184031846DE -S1136A984FF0040145F64963C0F200039847FB68C8 -S1136AA803F18002BB6803F03F031046194645F61C -S1136AB84963C0F20003984700BFFB6803F18003F1 -S1136AC8184645F69D53C0F200039847034603F45D -S1136AD80043002BF1D17B689B6843F080027B68FC -S1136AE89A6003E07B684FF00002DA6007F11C0744 -S1136AF8BD4680BD2DE9F04F86B006460D4602928C -S1136B084FF00003036047F67408C0F2000847F624 -S1136B188409C0F20009E9E105F10105252903D139 -S1136B282B464FF0000203E0304600F0A3FCDDE101 -S1136B381C4613F8010B1D46A0F120010B2913D89C -S1136B48DFE801F0061212091212120C1212120FC7 -S1136B5842F04002ECE742F08002E9E742F40042E6 -S1136B68E6E742F02002E3E768280CD16078682859 -S1136B7805D142F00802A07804F1030503E004F10A -S1136B88020542F0040278287AD8DFE810F0BD0143 -S1136B987900790079007900790079007900790021 -S1136BA87900790079007900790079007900790011 -S1136BB87900790079007900790079007900790001 -S1136BC879007900790079007900790079007900F1 -S1136BD879007900790079008900790079007900D1 -S1136BE879007900790079007900790079007900D1 -S1136BF879007900790079007900790079007900C1 -S1136C0879007900790079007900790079007900B0 -S1136C1879007900790079007900790079007900A0 -S1136C287900790079007900790079007900790090 -S1136C387900790079007900790079007900C80031 -S1136C487900790079007900790079007900790070 -S1136C58790079008F00DC007900790079007900E7 -S1136C68DC0079007900790079009800D500BA0031 -S1136C7879007900A4007900E10079007900CA005C -S1136C8840F26003C2F200031C68002C00F02E815D -S1136C984FF0FF33009302A901913146A04725E143 -S1136CA830464FF0250100F0E5FB1FE1029B03F19C -S1136CB8040202921978304600F0DCFB16E112F067 -S1136CC8080F029B03F1040202921B68326814BF86 -S1136CD81A701A600AE1029B03F1040202921C680A -S1136CE81CB947F66C04C0F200042178002900F0AE -S1136CF8FD80304600F0BEFB14F8011F0029F8D1CE -S1136D08F4E0029B03F1040102911B6802F080077E -S1136D18002F14BF2327002742F4807266E042F450 -S1136D28005212F0800F16D043F2780343F258074A -S1136D38782808BF1F4610E002F08007002F14BF10 -S1136D483027002709E042F480424FF0000704E0AE -S1136D584FF0000701E04FF0000712F4804F1DD0F8 -S1136D68029B03F1040102911B6812F0040F01D085 -S1136D781BB203E012F0080F18BFDBB2002B04DAD1 -S1136D88C3F100034FF02D0719E012F0200F14D1BE -S1136D9802F04001002918BF202710E0029B03F1EC -S1136DA8040102911B6812F0040F01D09BB206E0A3 -S1136DB812F0080F03D0DBB201E04FF02B07A0F16B -S1136DC85800202879D8DFE800F0117878787878A6 -S1136DD8787878787878457878787845787878788D -S1136DE878301178787878457878110033B94FF08D -S1136DF830038DF80C304FF0010460E04FF00004CC -S1136E0802F4005232B103F00F0119F8010003A98A -S1136E18605405E003F00F0118F8010003A9605459 -S1136E2804F101041B09EDD149E033B94FF03003F3 -S1136E388DF80C304FF0010441E04FF0000403F0EA -S1136E48070101F1300103AAA15404F10104DB088C -S1136E58F5D134E033B94FF030038DF80C304FF0EE -S1136E6801042CE04FF0000402F400424FF02C0B14 -S1136E784CF6CD4ACCF6CC4A5AB104F003010329A6 -S1136E8807D10DF1180C0CEB040101F80CBC04F14A -S1136E98010406A90819AAFB03C14FEAD10101EBB1 -S1136EA8810CA3EB4C0303F1300300F80C3C04F110 -S1136EB801040B460029DFD101E04FF00004FF2F45 -S1136EC804D9C7F30721304600F0D4FA1FB1F9B248 -S1136ED8304600F0CFFA012C08D403AF3C1914F85B -S1136EE8011D304600F0C6FABC42F8D129780029C1 -S1136EF87FF412AEB3682BB1326871688A423CBF22 -S1136F0800219954306801E04FF0FF3006B0BDE825 -S1136F18F08F00BF10B504460B783BB1B0F1FF3FCA -S1136F2806D04B6803F1FF334B6001E08B68984748 -S1136F38204610BD2DE9F04F82468B46904699466F -S1136F48099F4FF0FF3500E0354605F1010650462C -S1136F5800F07CFA044600F0DFFA0028F4D1B4F11A -S1136F68FF3F00F0848028F4C068002F3DDD18F04E -S1136F78800F0FD02B2C03D02D2C09D148F4806816 -S1136F8805F10206504600F061FA044607F1FF379E -S1136F98002F2ADD302C28D148F4007807F1FF3778 -S1136FA806F10105504600F051FA0446002F16DD9B -S1136FB8782801D0582812D1B9F1000F02D0B9F1BC -S1136FC8100F5CD128F4007807F1FF3706F10205A9 -S1136FD8504600F03BFA04464FF010094FE0B9F16F -S1136FE8000F08BF4FF0080949E0B9F1000F08BFC6 -S1136FF84FF00A09002F10DC4FF0000515E048F4A3 -S1137008007807F1FF3709FB050506F1010650462C -S113701800F01CFA044617B907E04FF000052046B3 -S1137028494600F05BFA0028E9DA20465146FFF7A2 -S113703871FF18F4007F1DD018F0010F1CD1DBF884 -S1137048003003F10402CBF800201B6808F49062B6 -S1137058B2F5906F08BF6D4218F0100F01D01D7083 -S11370680AE018F0080F14BF1D801D6004E04FF0FB -S1137078FF3601E06FF001063046BDE8F08F2E467A -S1137088B8E700BF2DE9F04F85B001908946049216 -S11370984FF0000BCDF808B04CF6CC4AC0F6CC4AF9 -S11370A84C4614F8016B002E00F0CB81252E35D008 -S11370B8304600F031FA08B918E02C4604F101050D -S11370C8207800F029FA0028F7D101E00BF1010B30 -S11370D8019800F0BBF9054600F01EFA0028F5D126 -S11370E828460199FFF716FFA146D9E7019800F051 -S11370F8ADF90546B04203D10BF1010BA146CFE728 -S11371080199FFF707FFB5F1FF3F40F09A81029A12 -S1137118002A08BF4FF0FF32029292E199F8013039 -S11371282A2B06BF09F102044FF001084FF00008AA -S11371384FF000050CE0554500F3838105EB850508 -S1137148A6F1300616EB450500F17B8148F02008CE -S1137158274604F101043E78A146304600F0B6F90A -S11371680028E8D108F02002002A08BF6FF0004583 -S11371784C2E05D17E7807F1020948F044080EE048 -S1137188682E0CD17E78682E05D148F01008BE7898 -S113719807F1030903E007F1020948F00808A6F11A -S11371A82506532E00F24D81DFE816F054004B01FA -S11371B84B014B014B014B014B014B014B014B0163 -S11371C84B014B014B014B014B014B014B014B0153 -S11371D84B014B014B014B014B014B014B014B0143 -S11371E84B014B014B014B014B014B014B014B0133 -S11371F84B014B014B014B014B014B014B014B0123 -S11372084B014B014B014B014B014B014B014B0112 -S11372184B012C014B014B014B014B014B014B0121 -S11372284B014B014B014B016B009C004B014B0183 -S11372384B014B01A7004B014B014B014B01B20021 -S1137248C900D4004B014B01DF004B0121014B0164 -S11372584B012C01019800F0F9F80446252802D1C5 -S11372680BF1010B1CE70199FFF754FEB4F1FF3F42 -S113727840F0E780029B002B08BF4FF0FF330293D6 -S1137288DFE008F02003002B08BF012518F00104F3 -S113729805D1049B03F1040204921E6801E04FF037 -S11372A80006002D00F0CD80002D13DD019800F0BC -S11372B8CDF8B0F1FF3F06D1029B002B08BF4FF079 -S11372C8FF330293BDE00CB906F8010B0BF1010B77 -S11372D8013DEBD1002C7FF4E3AE029B03F10103E3 -S11372E80293DDE648F080020095019804A94FF066 -S11372F80A03FFF71FFE04468EE048F0800200955B -S1137308019804A94FF00003FFF714FE044683E034 -S113731818F0010F7FF4C4AE049B03F10402049235 -S11373281B6818F0100F02D083F800B0B8E618F004 -S1137338080F14BFA3F800B0C3F800B0B0E648F0D3 -S113734880020095019804A94FF00803FFF7F2FDA5 -S1137358044661E028F01E020095019804A94FF044 -S11373681003FFF7E7FD044656E04FF0FF3404F13D -S11373780104019800F06AF8064600F0CDF80028E8 -S1137388F5D1B6F1FF3F2FD018F0010706D1049BC1 -S113739803F1040204921B68039302E04FF0000215 -S11373A80392002D11DC15E005F1FF351FB9039B8D -S11373B803F8016B039304F10104019800F046F803 -S11373C806463DB1B0F1FF3F04D0304600F0A4F8C2 -S11373D80028E9D030460199FFF79CFDE7B94FF042 -S11373E80002039B1A7017E04FF0FF3414E048F0D2 -S11373F880020095019804A94FF00A03FFF79AFD4B -S1137408044609E048F080020095019804A94FF069 -S11374181003FFF78FFD0446002C09DAB4F1FF3F8F -S11374280FD1029A002A08BF4FF0FF32029208E0F7 -S113743818F0010F03D1029A02F101020292A34447 -S11374482EE6029805B0BDE8F08F00BF00B50346EC -S113745802783AB14268107840B102F101025A60E8 -S11374685DF804FB436898475DF804FB4FF0FF3070 -S11374785DF804FB30B50446C8B2A16849B1236875 -S1137488626803F10105954208BF0020934238BFA2 -S1137498C854E3682BB121686268914201D221463D -S11374A89847236803F10103236030BDA0F141002C -S11374B819288CBF00200120704700BFA0F161008B -S11374C819288CBF00200120704700BFA0F13000AC -S11374D809288CBF00200120704700BF30B504463E -S11374E80D46FFF7F3FF10B1A4F130000FE020467A -S11374F8FFF7E4FF10B1A4F1570008E02046FFF7B6 -S1137508D5FF10B1A4F1370001E04FF0FF30A842D5 -S1137518A8BF4FF0FF3030BDA0F10903042B04D9F4 -S1137528202814BF0020012070474FF00100704745 -S113753830B504460D4600F017F840F26403C2F271 -S113754800031D6040F26803C2F200031C601A467F -S11375581368002BFCD100F009F840F26403C2F26E -S11375680003186830BD00BF704700BF704700BFF4 -S113757801000000433A2F576F726B2F736F6674C4 -S1137588776172652F4F70656E424C542F54617247 -S11375986765742F44656D6F2F41524D434D335FBA -S11375A84C4D33535F454B5F4C4D3353383936326A -S11375B85F43726F7373776F726B732F50726F6759 -S11375C82F6964652F2E2E2F6C69622F6472697679 -S11375D865726C69622F6770696F2E630000000022 -S11375E8433A2F576F726B2F736F667477617265A6 -S11375F82F4F70656E424C542F5461726765742F17 -S113760844656D6F2F41524D434D335F4C4D335399 -S11376185F454B5F4C4D3353383936325F43726F95 -S11376287373776F726B732F50726F672F6964650A -S11376382F2E2E2F6C69622F6472697665726C69BD -S1137648622F696E746572727570742E630000001F -S113765800E10F4004E10F4008E10F4040420F00F1 -S113766800201C0080841E0000802500999E36009E -S11376780040380000093D0000803E0000004B0037 -S1137688404B4C0000204E00808D5B0000C05D0024 -S11376980080700000127A0000007D008096980037 -S11376A8001BB7000080BB00C0E8CE00647ADA0093 -S11376B80024F4000000FA00433A2F576F726B2F2E -S11376C8736F6674776172652F4F70656E424C54A0 -S11376D82F5461726765742F44656D6F2F41524D45 -S11376E8434D335F4C4D33535F454B5F4C4D3353E0 -S11376F8383936325F43726F7373776F726B732FD7 -S113770850726F672F6964652F2E2E2F6C69622F54 -S11377186472697665726C69622F73797363746CC9 -S11377282E630000433A2F576F726B2F736F667482 -S1137738776172652F4F70656E424C542F54617295 -S11377486765742F44656D6F2F41524D434D335F08 -S11377584C4D33535F454B5F4C4D335338393632B8 -S11377685F43726F7373776F726B732F50726F67A7 -S11377782F6964652F2E2E2F6C69622F64726976C7 -S113778865726C69622F7379737469636B2E630015 -S1137798433A2F576F726B2F736F667477617265F4 -S11377A82F4F70656E424C542F5461726765742F65 -S11377B844656D6F2F41524D434D335F4C4D3353E8 -S11377C85F454B5F4C4D3353383936325F43726FE4 -S11377D87373776F726B732F50726F672F69646559 -S11377E82F2E2E2F6C69622F6472697665726C690C -S11377F8622F756172742E6300000000433A2F579C -S11378086F726B2F736F6674776172652F4F706533 -S11378186E424C542F5461726765742F44656D6FC2 -S11378282F41524D434D335F4C4D33535F454B5FAE -S11378384C4D3353383936325F43726F7373776FF5 -S1137848726B732F50726F672F6964652F2E2E2FFA -S11378586C69622F6472697665726C69622F636100 -S11378686E2E6300286E756C6C290000303132333B -S1137878343536373839616263646566303132339A -S10F788834353637383941424344454614 -S903419724 +S1138000EC0100209B8100004587000045870000AB +S1138010458700004587000045870000458700002C +S1138020458700004587000045870000458700001C +S1138030458700004587000045870000D58700007C +S113804045870000458700004587000045870000FC +S113805045870000458700004587000045870000EC +S113806045870000458700004587000045870000DC +S113807045870000458700004587000045870000CC +S113808045870000458700004587000045870000BC +S113809045870000458700004587000045870000AC +S11380A0458700004587000045870000458700009C +S11380B0458700004587000045870000458700008C +S11380C0458700004587000045870000458700007C +S11380D0458700004587000045870000458700006C +S11380E0458700004587000045870000458700005C +S10780F0EE11AA558A +S11380F42B49072291438D462A482B492B4A00F0E9 +S113810439F82B482B492C4A00F034F82B482C49D5 +S11381142C4A00F02FF82C482C492D4A00F02AF858 +S11381242C482D492D4A00F025F82D482D492E4A76 +S113813400F020F82D482E49002200F026F82D489E +S11381442D49091A082903DB002202600430016066 +S11381541E481F49884205D00268043003B490477E +S113816403BCF7E700208646EC4600200021234A9E +S11381749047FEE7884207D0521A05D003780130AD +S11381840B700131013AF9D17047884202D0027070 +S11381940130FAE770471A481A490160A8E7000059 +S11381A4EC01002050BA0000000000200000002070 +S11381B40C8200000C82000034B7000050BA0000A6 +S11381C4000000200000002034B7000034B7000091 +S11381D434B7000034B7000034B7000034B70000EB +S11381E434B7000034B7000050BA00000000002087 +S11381F46C0000206C000020EC000020B986000014 +S10B820408ED00E00080000019 +S113820C80B500AF48F25523C0F20003984748F2FA +S113821C9D43C0F20003984780BD00BF80B500AFFA +S113822C48F2B923C0F20003984748F24D53C0F208 +S113823C0003984780BD00BF80B500AF49F2D92335 +S113824CC0F20003984780BD98B500AF4FF0010011 +S113825CC1F2000049F25D23C0F2000398474FF0CD +S113826C0100C2F2000049F25D23C0F200039847FA +S113827C4FF040204FF0030148F67553C0F2000351 +S113828C984749F28553C0F20003984703464FF4CC +S113829C4040C4F2000019464FF461424FF06003B1 +S11382AC49F6CD14C0F20004A04798BD80B500AFC8 +S11382BC40F20003C2F200031B78002B1AD140F2E7 +S11382CC0400C2F2000048F29533C0F20003984750 +S11382DC0346012B56D140F20003C2F200034FF0C7 +S11382EC01021A7040F24803C2F200034FF000027C +S11382FC1A7047E040F24803C2F200031B7803F102 +S113830C010240F20403C2F20003D318184648F2E7 +S113831C9533C0F2000398470346012B32D140F247 +S113832C4803C2F200031B7803F10103DAB240F2F2 +S113833C4803C2F200031A7040F20403C2F20003B1 +S113834C1A7840F24803C2F200031B789A4219D1FE +S113835C40F20003C2F200034FF000021A7040F224 +S113836C0403C2F200035B78FF2B0BD140F204032D +S113837CC2F200039B78002B04D148F24523C0F2CF +S113838C0003984780BD00BF80B584B000AF78600F +S113839C4FF44040C4F2000049F66943C0F20003B4 +S11383AC9847F860FB68B3F1FF3F06D0FB68DAB27C +S11383BC7B681A704FF0010301E04FF0000318467C +S11383CC07F11007BD4680BD80B586B000AF4FF0F5 +S11383DC0403FB604FF010037B604FE04FF0080385 +S11383ECBB6044E07B6803F101034FF0640202FBC1 +S11383FC03F27968BB68CB1803F10103B2FBF3F306 +S113840CFB75FB7D402B2ED9FB7D4B2B2BD87A682F +S113841CBB68D31803F101024FF01003B3FBF2F164 +S113842C02FB01F29B1A002B1DD1BB68032B01D854 +S113843CBB68FB607A68BB68D31803F101034FF087 +S113844C1002B2FBF3F33B6107F104034FF000009D +S113845CC4F2040019464AF2DD03C0F20003984743 +S113846C4FF001030FE0BB6803F1FF33BB60BB6843 +S113847C002BB7D17B6803F1FF337B607B68002B47 +S113848CACD14FF00003184607F11807BD4680BD68 +S113849C90B587B000AF4FF00800C2F2000049F26B +S11384AC5D23C0F2000398474FF4E040C4F200008F +S11384BC4FF0030148F6A543C0F2000398474FF46C +S11384CC8070C0F2100049F25D23C0F2000398479B +S11384DC4FF00000C4F2040049F62173C0F200030B +S11384EC984748F2D533C0F2000398474FF0000088 +S11384FCC4F204004AF28503C0F20003984740F228 +S113850C67637B6040F2FF73BB604FF00803FB6052 +S113851C4FF008033B6107F104034FF00000C4F271 +S113852C04004FF001011A464FF002034AF2C93419 +S113853CC0F20004A04707F11C07BD4690BD00BF64 +S113854C90B589B000AF4FF00000C4F204004FF0B6 +S113855C02014AF29D23C0F200039847F8614BF2E2 +S113856C3473C0F200031B881A46FB691340002BBA +S113857C1CD03B46BB6107F108034FF00000C4F26A +S113858C04004FF001011A464FF001034AF26D74D6 +S113859CC0F20004A0473B78FF2B07D17B78002B5B +S11385AC04D148F24523C0F20003984707F124078D +S11385BCBD4690BD80B500AF48F6DD53C0F2000354 +S11385CC984780BD80B500AF4FF02000C2F2000088 +S11385DC49F25D23C0F2000398474FF4A040C4F263 +S11385EC02004FF0010148F60D53C0F20003984706 +S11385FC4FF4A040C4F202004FF001014FF000020E +S113860C48F65543C0F20003984780BD80B582B04C +S113861C00AF48F2BD73C0F200039847786040F293 +S113862C4C03C2F200031B687A68D21A40F2F313AB +S113863C9A4236D940F25003C2F200031B78002B45 +S113864C14D140F25003C2F200034FF001021A702D +S113865C4FF4A040C4F202004FF001014FF00102AC +S113866C48F65543C0F20003984713E040F2500318 +S113867CC2F200034FF000021A704FF4A040C4F28F +S113868C02004FF001014FF0000248F65543C0F2CE +S113869C0003984740F24C03C2F200037A681A6054 +S11386AC00E000BF07F10807BD4680BD80B500AFF0 +S11386BC48F2E963C0F20003984748F20D23C0F274 +S11386CC0003984748F21963C0F20003984748F234 +S11386DC2923C0F200039847F4E700BF80B500AF2C +S11386EC4FF46070C0F2C01049F2F923C0F20003D9 +S11386FC984748F2D153C0F20003984748F24D739F +S113870CC0F20003984748F2C153C0F200039847E3 +S113871C80BD00BF80B483B000AF7860396040F294 +S113872C5403C2F200037A681A6040F25803C2F28E +S113873C00033A681A60FEE780B400AFFEE700BF9E +S113874C80B500AF49F28553C0F200039847024646 +S113875C44F6D353C1F26203A3FB02134FEA9313FF +S113876C184649F63D13C0F20003984749F6F50341 +S113877CC0F20003984749F61913C0F20003984756 +S113878C4FF0000048F29D73C0F20003984780BD7F +S113879C80B483B000AF786040F25C03C2F2000393 +S11387AC7A681A6007F10C07BD4680BC704700BF9D +S11387BC80B400AF40F25C03C2F200031B6818469D +S11387CCBD4680BC704700BF80B400AF40F25C0370 +S11387DCC2F200031B6803F1010240F25C03C2F213 +S11387EC00031A60BD4680BC704700BFEFF31080D5 +S11387FC62B670472346184680B483B000AF7860E5 +S113880C7B68B3F1402F76D07A684FF40043C4F2FE +S113881C05039A426FD07A684FF4A043C4F2000364 +S113882C9A4268D07A684FF41043C4F205039A4212 +S113883C61D07A684FF4C043C4F200039A425AD010 +S113884C7A684FF42043C4F205039A4253D07A68F1 +S113885C4FF4E043C4F200039A424CD07A684FF4CC +S113886C3043C4F205039A4245D07A684FF48043EE +S113887CC4F202039A423ED07A684FF44043C4F2E5 +S113888C05039A4237D07A684FF4A043C4F202032A +S113889C9A4230D07A684FF45043C4F205039A429A +S11388AC29D07A684FF4C043C4F202039A4222D00E +S11388BC7A684FF46043C4F205039A421BD07A6879 +S11388CC4FF4E043C4F202039A4214D07A684FF492 +S11388DC7043C4F205039A420DD07A684FF45043A6 +S11388ECC4F203039A4206D07A684FF00003C4F230 +S11388FC06039A4202D14FF0010301E04FF000034A +S113890CDBB2184607F10C07BD4680BC704700BFAC +S113891C80B584B000AFF8600B467A60FB72F868DF +S113892C48F60503C0F2000398470346002B0AD10E +S113893C4BF23870C0F200004FF0E40148F221739E +S113894CC0F2000398477B68002B10D07B68012B86 +S113895C0DD07B68022B0AD04BF23870C0F20000A9 +S113896C4FF0E60148F22173C0F200039847FB680C +S113897C03F580631A467B6803F00103002B06D0D1 +S113898CFB6803F580631968FB7A0B4307E0FB680B +S113899C03F580631968FB7A6FEA03030B401360D9 +S11389ACFB6803F584631A467B6803F00203002B0F +S11389BC06D0FB6803F584631968FB7A0B4307E064 +S11389CCFB6803F584631968FB7A6FEA03030B40B5 +S11389DC136007F11007BD4680BD00BF80B584B09D +S11389EC00AFF8607A603B600B46FB72F86848F69F +S11389FC0503C0F2000398470346002B0AD14BF23F +S1138A0C3870C0F200004FF4DD7148F22173C0F2EB +S1138A1C000398477B68012B13D07B68022B10D082 +S1138A2C7B68042B0DD07B680C2B0AD04BF238706E +S1138A3CC0F200004FF4DF7148F22173C0F200035E +S1138A4C98473B68082B1CD03B680A2B19D03B6811 +S1138A5C0C2B16D03B68092B13D03B680B2B10D076 +S1138A6C3B680D2B0DD03B68002B0AD04BF23870B1 +S1138A7CC0F2000040F2C51148F22173C0F20003A9 +S1138A8C9847FB6803F5A0631A467B6803F001035F +S1138A9C002B06D0FB6803F5A0631968FB7A0B4323 +S1138AAC07E0FB6803F5A0631968FB7A6FEA03031C +S1138ABC0B401360FB6803F204531A467B6803F003 +S1138ACC0203002B06D0FB6803F204531968FB7AEB +S1138ADC0B4307E0FB6803F204531968FB7A6FEA53 +S1138AEC03030B401360FB6803F5A1631A467B6810 +S1138AFC03F00403002B06D0FB6803F5A16319688B +S1138B0CFB7A0B4307E0FB6803F5A1631968FB7A56 +S1138B1C6FEA03030B401360FB6803F5A3631A4667 +S1138B2C7B6803F00803002B06D0FB6803F5A363F2 +S1138B3C1968FB7A0B4307E0FB6803F5A363196818 +S1138B4CFB7A6FEA03030B401360FB6803F20C53CC +S1138B5C1A463B6803F00103002B06D0FB6803F2B2 +S1138B6C0C531968FB7A0B4307E0FB6803F20C53B4 +S1138B7C1968FB7A6FEA03030B401360FB6803F577 +S1138B8CA2631A463B6803F00203002B06D0FB6871 +S1138B9C03F5A2631968FB7A0B4307E0FB6803F542 +S1138BACA2631968FB7A6FEA03030B401360FB683A +S1138BBC03F214531A463B6803F00403002B06D04B +S1138BCCFB6803F214531968FB7A0B4307E0FB6848 +S1138BDC03F214531968FB7A6FEA03030B40136016 +S1138BECFB6803F21C531A463B6803F00803002B82 +S1138BFC06D0FB6803F21C531968FB7A0B4307E09D +S1138C0CFB6803F21C531968FB7A6FEA03030B40ED +S1138C1C1360FB6803F5A5631A463B68002B06D169 +S1138C2CFB6803F5A5631968FB7A0B4307E0FB6843 +S1138C3C03F5A5631968FB7A6FEA03030B40136011 +S1138C4C07F11007BD4680BD80B582B000AF7860D7 +S1138C5C13460A46FA70BB70786848F60503C0F2EE +S1138C6C000398470346002B0AD14BF23870C0F22C +S1138C7C00004FF4517148F22173C0F2000398477D +S1138C8CFB784FEA83031A467B68D318BA781A60C8 +S1138C9C07F10807BD4680BD90B583B000AF78607E +S1138CAC0B46FB70786848F60503C0F2000398473E +S1138CBC0346002B0AD14BF23870C0F200004FF47B +S1138CCC647148F22173C0F200039847FB7878680A +S1138CDC19464FF0020248F61D13C0F200039847E0 +S1138CECFB78786819464FF004024FF0080348F6F5 +S1138CFCE914C0F20004A04707F10C07BD4690BD6F +S1138D0C90B583B000AF78600B46FB70786848F67A +S1138D1C0503C0F2000398470346002B0AD14BF21B +S1138D2C3870C0F2000040F2044148F22173C0F2E2 +S1138D3C00039847FB78786819464FF0010248F60F +S1138D4C1D13C0F200039847FB78786819464FF05E +S1138D5C01024FF0080348F6E914C0F20004A047DE +S1138D6C07F10C07BD4690BD90B583B000AF786099 +S1138D7C0B46FB70786848F60503C0F2000398476D +S1138D8C0346002B0AD14BF23870C0F2000040F2BB +S1138D9C1F5148F22173C0F200039847FB7878689E +S1138DAC19464FF0020248F61D13C0F2000398470F +S1138DBCFB78786819464FF001024FF0080348F627 +S1138DCCE914C0F20004A04707F10C07BD4690BD9E +S1138DDC80B500AF48F2F973C0F20003984703461C +S1138DECDBB2184680BD00BF80B582B000AF78609E +S1138DFC7B68462B0AD94BF2A470C0F200004FF4E6 +S1138E0CD57148F22173C0F2000398477B68042B98 +S1138E1C0CD14EF62453CEF200034EF62452CEF26D +S1138E2C0002126842F480321A6051E07B68052B10 +S1138E3C0CD14EF62453CEF200034EF62452CEF24D +S1138E4C0002126842F400321A6041E07B68062B7F +S1138E5C0CD14EF62453CEF200034EF62452CEF22D +S1138E6C0002126842F480221A6031E07B680F2BF6 +S1138E7C0CD14EF21003CEF200034EF21002CEF2DD +S1138E8C0002126842F002021A6021E07B680F2B88 +S1138E9C0FD97B682F2B0CD84FF46143CEF200030F +S1138EAC7A68A2F110024FF0010101FA02F21A6081 +S1138EBC0EE07B682F2B0BD94EF20413CEF2000379 +S1138ECC7A68A2F130024FF0010101FA02F21A6041 +S1138EDC07F10807BD4680BD80B582B000AF78604D +S1138EEC7B68462B0AD94BF2A470C0F200004FF4F5 +S1138EFCF77148F22173C0F2000398477B68042B86 +S1138F0C0CD14EF62453CEF200034EF62452CEF27C +S1138F1C0002126822F480321A6051E07B68052B3F +S1138F2C0CD14EF62453CEF200034EF62452CEF25C +S1138F3C0002126822F400321A6041E07B68062BAE +S1138F4C0CD14EF62453CEF200034EF62452CEF23C +S1138F5C0002126822F480221A6031E07B680F2B25 +S1138F6C0CD14EF21003CEF200034EF21002CEF2EC +S1138F7C0002126822F002021A6021E07B680F2BB7 +S1138F8C0FD97B682F2B0CD84EF28013CEF2000332 +S1138F9C7A68A2F110024FF0010101FA02F21A6090 +S1138FAC0EE07B682F2B0BD94EF28413CEF2000308 +S1138FBC7A68A2F130024FF0010101FA02F21A6050 +S1138FCC07F10807BD4680BD80B483B000AF78605C +S1138FDC7A684FF00103C0F210039A4200F02B811F +S1138FEC7A684FF00203C0F210039A4200F0238116 +S1138FFC7A684FF48073C0F210039A4200F01B811C +S113900C7A684FF40073C0F210039A4200F0138193 +S113901C7A684FF48063C0F210039A4200F00B811B +S113902C7A684FF48073C1F210039A4200F0038102 +S113903C7A684FF40073C1F210039A4200F0FB807B +S113904C7A684FF48063C1F210039A4200F0F38003 +S113905C7A684FF48043C1F210039A4200F0EB801B +S113906C7A684FF4A043C2F210039A4200F0E380F2 +S113907C7A684FF00103C2F200039A4200F0DB80DD +S113908C7A684FF00203C2F200039A4200F0D380D4 +S113909C7A684FF00403C2F200039A4200F0CB80CA +S11390AC7A684FF00803C2F200039A4200F0C380BE +S11390BC7A684FF01003C2F200039A4200F0BB80AE +S11390CC7A684FF02003C2F200039A4200F0B38096 +S11390DC7A684FF04003C2F200039A4200F0AB806E +S11390EC7A684FF08003C2F200039A4200F0A38026 +S11390FC7A684FF48073C2F200039A4200F09B80AA +S113910C7B68402B00F097807B68B3F1102F00F044 +S113911C92807A684FF48043C1F200039A4200F0C3 +S113912C8A807A684FF48053C1F210039A4200F09B +S113913C82807A684FF48073C2F210039A427AD018 +S113914C7A684FF08003C3F200039A4273D07A68B2 +S113915C4FF01003C3F200039A426CD07B68B3F156 +S113916C101F68D07A684FF48073C1F200039A42DE +S113917C61D07A684FF40073C1F200039A425AD05A +S113918C7A684FF01003C1F200039A4253D07A6804 +S113919C4FF02003C1F200039A424CD07A684FF08E +S11391AC2003C3F200039A4245D07A684FF00103BE +S11391BCC1F210039A423ED07A684FF00203C1F216 +S11391CC10039A4237D07A684FF00403C1F21003AB +S11391DC9A4230D07A684FF00803C1F210039A42D5 +S11391EC29D07A684FF00103C1F200039A4222D0CD +S11391FC7A684FF00203C1F200039A421BD07A68DA +S113920C4FF00403C1F200039A4214D07B68B3F10B +S113921C202F10D07A684FF00103C2F210039A4247 +S113922C09D07B68082B06D07A684FF48053C0F2BF +S113923C10039A4202D14FF0010301E04FF00003F6 +S113924CDBB2184607F10C07BD4680BC704700BF63 +S113925C80B582B000AF7860786848F6D573C0F2F8 +S113926C000398470346002B0AD14BF67C00C0F24E +S113927C00004FF4FC7148F22173C0F200039847CC +S113928C7B684FEA13724BF61403C0F2000353F8D5 +S113929C22301A467B684FEA13714BF61403C0F262 +S11392AC000353F8213019687B684FEA03434FEAF3 +S11392BC1343786800F4F8104FEA104003FA00F3F3 +S11392CC0B43136007F10807BD4680BD80B400AFA3 +S11392DC4EF60C53CEF200034FF00402C0F2FA52D5 +S11392EC1A60FEE701387FF4FDAF704780B586B095 +S11392FC00AF78604FF46043C4F20F031B6803F0B3 +S113930CE043002B0CD04FF46043C4F20F031A68F3 +S113931C4FF00003C7F2FF031340B3F1805F03D196 +S113932C7B68002BC0F222814EF26003C4F20F035F +S113933C1B683B614EF27003C4F20F031B68FB60A5 +S113934C3B6943F400633B613B6923F480033B6159 +S113935CFB6843F40063FB604EF26003C4F20F033A +S113936C3A691A604EF27003C4F20F03FA681A6079 +S113937C3B6903F00203002B04D07B6803F0020367 +S113938C002B09D03B6903F00103002B34D07B681C +S113939C03F00103002B2FD17B6863F003033A69BC +S11393AC13403B614EF26003C4F20F033A691A6036 +S11393BCFB68002B09DAFB6803F07003302B0CD02C +S11393CCFB6803F07003702B07D0FB68002B0CDBDD +S11393DC3B6903F03003302B07D14FF4805049F232 +S11393ECF123C0F20003984706E04FF4002049F241 +S11393FCF123C0F2000398473B6923F45F5323F035 +S113940C30033B617A6843F2F07313403A691343B7 +S113941C3B61FA684DF68F73C7F6FF731340FB601C +S113942C7A6842F23003C8F200031340FA6813431B +S113943CFB607B6803F008034FEAC303FA68134329 +S113944CFB604EF25803C4F20F034FF040021A6053 +S113945CFB68002B0CDA4EF27003C4F20F03FA68AB +S113946C1A604EF26003C4F20F033A691A600BE0FF +S113947C4EF26003C4F20F033A691A604EF27003A1 +S113948CC4F20F03FA681A604FF0100049F2F1238A +S113949CC0F2000398473B6923F0F86323F00303FD +S11394AC3B617A684FF00303C0F2C07313403A690E +S11394BC13433B61FB6823F0FC53FB607B6803F0B4 +S11394CCFC53FA681343FB607B6803F08043002B66 +S11394DC11D03B6943F480033B61FB6823F48003A4 +S11394ECFB607A684FF00003C4F240031340FA683F +S11394FC1343FB6003E0FB6823F08043FB607B6851 +S113950C03F40063002B1DD14FF400437B610CE08A +S113951C4EF25003C4F20F031B6803F04003002BFC +S113952C07D17B6903F1FF337B617B69002BEFD19E +S113953C00E000BF3B6923F400633B61FB6823F448 +S113954C0063FB604EF26003C4F20F033A691A60C5 +S113955C4EF27003C4F20F03FA681A604FF0100055 +S113956C49F2F123C0F20003984700E000BF07F171 +S113957C1807BD4680BD00BF80B485B000AF4EF265 +S113958C6003C4F20F031B68FB604EF27003C4F259 +S113959C0F031B687B607B68002B03DA7B6803F08A +S11395AC700302E0FB6803F03003202B7CD0202BEB +S11395BC04D8002B0CD0102B17D0E0E0602B00F05B +S11395CCD680702B00F0D780302B00F0CC80D6E006 +S11395DCFB6803F4F8634FEA93124BF62003C0F2D2 +S11395EC000353F82230BB60CCE04FF46043C4F268 +S11395FC0F031B6803F0E043002B0CD04FF46043C3 +S113960CC4F20F031A684FF00003C7F2FF031340B0 +S113961CB3F1805F05D14EF2C013C0F2E403BB601A +S113962C41E04FF46043C4F20F031A684FF0000397 +S113963CC7F2FF0313404FF00002C1F20102934240 +S113964C0AD14FF46043C4F20F031B684FEA03437F +S113965C4FEA1343022B1AD04FF46043C4F20F03A6 +S113966C1A684FF00003C7F2FF0313404FF00002D7 +S113967CC1F20302934210D14FF46043C4F20F03BE +S113968C1B684FEA03434FEA1343002B05D14FF4F5 +S113969CD853C0F2B703BB6005E04FF41053C0F2CB +S11396ACF403BB606EE06DE04FF46043C4F20F034F +S11396BC1B6803F0E043002B0CD04FF46043C4F25E +S11396CC0F031A684FF00003C7F2FF031340B3F102 +S11396DC805F05D143F67003C0F23903BB6041E0EF +S11396EC4FF46043C4F20F031A684FF00003C7F23F +S11396FCFF0313404FF00002C1F2010293420AD15E +S113970C4FF46043C4F20F031B684FEA03434FEA60 +S113971C1343022B1AD04FF46043C4F20F031A689C +S113972C4FF00003C7F2FF0313404FF00002C1F2E5 +S113973C0302934210D14FF46043C4F20F031B682D +S113974C4FEA03434FEA1343002B05D14CF2C06399 +S113975CC0F22D03BB6005E04FF41063C0F23D036F +S113976CBB600FE00EE047F23053BB600AE04FF4ED +S113977C8003BB6006E04FF40043BB6002E04FF093 +S113978C0003ABE07B68002B04DA7B6803F4006312 +S113979C002B07D07B68002B5DDBFB6803F40063B4 +S11397AC002B58D14EF26403C4F20F031B683B60C8 +S11397BC4FF46043C4F20F031B6803F0E043002B27 +S11397CC0CD04FF46043C4F20F031A684FF000033B +S11397DCC7F2FF031340B3F1805F13D13A6843F629 +S11397ECE07313404FEA531303F10203BA6802FB0C +S11397FC03F23B6803F01F0303F10203B2FBF3F320 +S113980CBB6012E03A6843F6E07313404FEA53131B +S113981CBA6802FB03F23B6803F01F0303F1010374 +S113982C4FEA4303B2FBF3F3BB603B6803F480439E +S113983C002B03D0BB684FEA5303BB603B6803F4B3 +S113984C0043002B03D0BB684FEA9303BB60FB6857 +S113985C43F48003FB60FB6803F48003002B3CD0CF +S113986C7B68002B2EDA7B6803F08043002B1DD021 +S113987C7B68002B04DA7B6803F40063002B07D0AD +S113988C7B68002B12DBFB6803F40063002B0DD107 +S113989CBB684FEA43027B6803F0FE534FEA9353D1 +S11398AC03F10103B2FBF3F3BB6016E07B6803F036 +S11398BCFC534FEAD35303F10103BA68B2FBF3F33D +S11398CCBB600AE0FB6803F0F0634FEAD35303F187 +S11398DC0103BA68B2FBF3F3BB60BB68184607F12B +S11398EC1407BD4680BC704780B400AF4EF2100321 +S11398FCCEF200034EF21002CEF20002126842F0D5 +S113990C05021A60BD4680BC704700BF80B400AF2E +S113991C4EF21003CEF200034EF21002CEF200020D +S113992C126842F002021A60BD4680BC704700BF48 +S113993C80B582B000AF78607B68002B03D07B6865 +S113994CB3F1807F0AD94BF6E800C0F200004FF067 +S113995CD00148F22173C0F2000398474EF214036D +S113996CCEF200037A6802F1FF321A6007F108079D +S113997CBD4680BD80B483B000AF78607A684FF484 +S113998C4043C4F200039A420DD07A684FF450431A +S113999CC4F200039A4206D07A684FF46043C4F2CE +S11399AC00039A4202D14FF0010301E04FF000038F +S11399BCDBB2184607F10C07BD4680BC704700BFEC +S11399CC80B586B000AFF860B9607A603B60F86827 +S11399DC49F68113C0F2000398470346002B0AD1C1 +S11399EC4BF65410C0F2000040F20D1148F22173F2 +S11399FCC0F2000398477B68002B0AD14BF6541035 +S1139A0CC0F200004FF4877148F22173C0F20003D6 +S1139A1C98474FF46043C4F20F031B6803F0E04310 +S1139A2C002B42D04FF46043C4F20F031A684FF07A +S1139A3C0003C7F2FF031340B3F1805F35D04FF43A +S1139A4C6043C4F20F031A684FF00003C7F2FF031C +S1139A5C13404FF00002C1F2010293420AD14FF4B9 +S1139A6C6043C4F20F031B684FEA03434FEA1343EA +S1139A7C022B1AD04FF46043C4F20F031A684FF050 +S1139A8C0003C7F2FF0313404FF00002C1F20302BC +S1139A9C93420DD14FF46043C4F20F031B684FEA99 +S1139AAC03434FEA1343002B02D14FF0100301E0A0 +S1139ABC4FF008037A6802FB03F2BB689A420AD996 +S1139ACC4BF65410C0F2000040F20F1148F221730F +S1139ADCC0F200039847F86849F6F133C0F200036A +S1139AEC98477B684FEA0312BB689A420ED9FB680D +S1139AFC03F13003FA6802F13002126842F02002DA +S1139B0C1A607B684FEA53037B6009E0FB6803F13E +S1139B1C3003FA6802F13002126822F020021A6053 +S1139B2CBB684FEAC3027B68B2FBF3F303F1010396 +S1139B3C4FEA53037B61FB6803F124037A694FEA10 +S1139B4C92121A60FB6803F128037A6902F03F024F +S1139B5C1A60FB6803F12C033A681A60FB6803F182 +S1139B6C18034FF000021A60F86849F68933C0F202 +S1139B7C0003984707F11807BD4680BD80B582B035 +S1139B8C00AF7860786849F68113C0F200039847F7 +S1139B9C0346002B0AD14BF65410C0F200004FF4CC +S1139BACCF7148F22173C0F2000398477B6803F12C +S1139BBC2C037A6802F12C02126842F010021A602B +S1139BCC7B6803F130031A467B6803F130031B688E +S1139BDC43F4407343F00103136007F10807BD46D7 +S1139BEC80BD00BF80B582B000AF7860786849F65C +S1139BFC8113C0F2000398470346002B0AD14BF69D +S1139C0C5410C0F200004FF4DF7148F22173C0F21B +S1139C1C0003984700BF7B6803F118031B6803F02B +S1139C2C0803002BF7D17B6803F12C037A6802F14B +S1139C3C2C02126822F010021A607B6803F13003C4 +S1139C4C1A467B6803F130031B6823F4407323F03A +S1139C5C0103136007F10807BD4680BD80B582B0CF +S1139C6C00AF7860786849F68113C0F20003984716 +S1139C7C0346002B0AD14BF65410C0F2000040F2FC +S1139C8C094148F22173C0F2000398477B6803F141 +S1139C9C18031B6803F01003002B02D17B681B68AC +S1139CAC01E04FF0FF33184607F10807BD4680BDAD +S1139CBC80B483B000AF78607A684FF00003C4F2CC +S1139CCC04039A420DD07A684FF48053C4F204030F +S1139CDC9A4206D07A684FF40053C4F204039A42B1 +S1139CEC02D14FF0010301E04FF00003DBB2184640 +S1139CFC07F10C07BD4680BC704700BF80B485B02B +S1139D0C00AF78607A684FF48053C4F204039A422B +S1139D1C0FD04FF40053C4F204039A420DD04FF009 +S1139D2C0003C4F204039A420BD14FF03703FB60D7 +S1139D3C0AE04FF03803FB6006E04FF03903FB6098 +S1139D4C02E04FF0FF33FB60FB68184607F1140781 +S1139D5CBD4680BC704700BF80B586B000AF78604C +S1139D6C7B6823F47F6323F00F03184649F60953E9 +S1139D7CC0F20003984703467B617B69B3F1FF3F54 +S1139D8C0AD14BF6C010C0F200004FF0F90148F2B2 +S1139D9C2173C0F2000398474EF20413CEF2000371 +S1139DAC1A687B69A3F130034FF0010101FA03F344 +S1139DBC13403B613B69002B05D0786948F6E56399 +S1139DCCC0F2000398477B681B684FF00003BB602C +S1139DDC03E0BB6803F10103BB60BB68042BF8DD33 +S1139DEC7B681B68FB603B69002B05D0786948F6DF +S1139DFCF553C0F200039847FB68184607F118079F +S1139E0CBD4680BD80B485B000AF786039607B6896 +S1139E1C3A681A604FF00003FB6003E0FB6803F13F +S1139E2C0103FB60FB68042BF8DD07F11407BD4646 +S1139E3C80BC704780B586B000AFF860B9607A60BA +S1139E4C4FF000037B6125E07B69FA68D3181B781B +S1139E5C3B617B6903F101037B617A697B689A42FC +S1139E6C0CDA7B69FA68D3181B784FEA03233A6936 +S1139E7C13433B617B6903F101037B61BB68BA68E3 +S1139E8C02F10402BA601846396949F61163C0F24A +S1139E9C000398477A697B689A42D5DB07F1180767 +S1139EACBD4680BD80B586B000AFF860B9607A60FD +S1139EBC4FF000037B6125E0BB68BA6802F1040231 +S1139ECCBA60184649F66553C0F2000398473861E6 +S1139EDC7B69FA68D3183A69D2B21A707B6903F1B8 +S1139EEC01037B617A697B689A420BDA7B69FA68B5 +S1139EFCD3183A694FEA1222D2B21A707B6903F171 +S1139F0C01037B617A697B689A42D5DB07F11807F8 +S1139F1CBD4680BD80B584B000AF7860786849F6E2 +S1139F2CBD43C0F2000398470346002B0AD14BF6FD +S1139F3CC010C0F2000040F2D91148F22173C0F2F3 +S1139F4C0003984778684FF0010149F61163C0F299 +S1139F5C0003984700BF7B6803F12003184649F6B9 +S1139F6C6553C0F200039847034603F40043002BE7 +S1139F7CF1D17B6803F1240318464FF0B00149F684 +S1139F8C1163C0F2000398477B6803F1340318464D +S1139F9C4FF0000149F61163C0F2000398477B6847 +S1139FAC03F1380318464FF0000149F61163C0F26F +S1139FBC000398474FF00103FB601DE000BF7B6872 +S1139FCC03F12003184649F66553C0F20003984781 +S1139FDC034603F40043002BF1D17B6803F1200208 +S1139FECFB681046194649F61163C0F20003984702 +S1139FFCFB6803F10103FB60FB68202BDEDD7B684F +S113A00C03F1240318464FF00C0149F61163C0F216 +S113A01C000398474FF00103FB601DE000BF7B6811 +S113A02C03F12003184649F66553C0F20003984720 +S113A03C034603F40043002BF1D17B6803F12002A7 +S113A04CFB681046194649F61163C0F200039847A1 +S113A05CFB6803F10103FB60FB68202BDEDD7B68EE +S113A06C03F10403184649F66553C0F200039847FC +S113A07C07F11007BD4680BD80B582B000AF786093 +S113A08C786849F6BD43C0F2000398470346002B99 +S113A09C0AD14BF6C010C0F2000040F23A2148F24B +S113A0AC2173C0F200039847786849F66553C0F2EF +S113A0BC00039847034623F001037868194649F6D0 +S113A0CC1163C0F20003984707F10807BD4680BD31 +S113A0DC80B584B000AF78603960786849F6BD43C8 +S113A0ECC0F2000398470346002B0AD14BF6C0106C +S113A0FCC0F200004FF4597148F22173C0F200030E +S113A10C98473B68002B0AD14BF6C010C0F20000F4 +S113A11C40F2653148F22173C0F2000398473B6862 +S113A12C1B68012B03D93B681B68102B0AD94BF60F +S113A13CC010C0F2000040F26B3148F22173C0F23F +S113A14C000398473B685B68002B03D03B685B6853 +S113A15C082B0AD94BF6C010C0F200004FF45C7106 +S113A16C48F22173C0F2000398473B689B68002BAC +S113A17C03D03B689B68042B0AD94BF6C010C0F281 +S113A18C000040F2753148F22173C0F20003984785 +S113A19C3B68DB68B3F5806F03D83B68DB68002B46 +S113A1AC0AD14BF6C010C0F2000040F27B3148F2E9 +S113A1BC2173C0F200039847786849F66553C0F2DE +S113A1CC00039847F860FB6843F04103786819462C +S113A1DC49F61163C0F2000398473B685B6803F1CE +S113A1ECFF334FEA033303F4E043BB603B681B6863 +S113A1FC03F1FF334FEA032303F47063BA68134388 +S113A20CBB603B689B6803F1FF334FEA8313DBB2FB +S113A21CBA681343BB603B68DB6803F1FF3303F09C +S113A22C3F03BA681343BB607B6803F10C03184605 +S113A23CB96849F61163C0F2000398477B6803F1CF +S113A24C18023B68DB6803F1FF334FEA931303F006 +S113A25C0F031046194649F61163C0F200039847E0 +S113A26CFB6823F04003FB60FB6803F00103002B45 +S113A27C03D0FB6823F00103FB607868F96849F6A6 +S113A28C1163C0F20003984707F11007BD4680BD67 +S113A29C80B584B000AF78600B46FB70786849F6E3 +S113A2ACBD43C0F2000398470346002B0AD14BF67A +S113A2BCC010C0F2000040F2925148F22173C0F277 +S113A2CC00039847FB78032B6ED801A252F823F0B5 +S113A2DCEDA2000019A300004DA3000081A300000F +S113A2EC7B6803F10403184649F66553C0F2000376 +S113A2FC9847F8607B6803F1040318466FF01F015C +S113A30C49F61163C0F20003984751E07B6803F5EA +S113A31C8073184649F66553C0F200039847F860F9 +S113A32C7B6803F58273184649F66553C0F2000343 +S113A33C984703464FEA0343FA681343FB6037E03C +S113A34C7B6803F59073184649F66553C0F2000315 +S113A35C9847F8607B6803F59273184649F6655381 +S113A36CC0F20003984703464FEA0343FA681343C9 +S113A37CFB601DE07B6803F5B073184649F6655322 +S113A38CC0F200039847F8607B6803F5B273184673 +S113A39C49F66553C0F20003984703464FEA03435A +S113A3ACFA681343FB6003E04FF00003FB6000BF4B +S113A3BCFB68184607F11007BD4680BD80B588B010 +S113A3CC00AFF860B9607A60FB704FF00003FB7467 +S113A3DCF86849F6BD43C0F2000398470346002BC6 +S113A3EC0AD14BF6C010C0F2000040F25F6148F293 +S113A3FC2173C0F200039847BB68202B02D8BB68BA +S113A40C002B0AD14BF6C010C0F200004FF4CC6103 +S113A41C48F22173C0F200039847FB78002B19D043 +S113A42CFB78012B16D0FB78022B13D0FB78032B73 +S113A43C10D0FB78012B0DD0FB78042B0AD04BF6F3 +S113A44CC010C0F2000040F2666148F22173C0F201 +S113A45C0003984700BFFB6803F12003184649F634 +S113A46C6553C0F200039847034603F40043002BE2 +S113A47CF1D17B681A6840F2FF739A4205D87B6865 +S113A48C9B6803F00403002B03D04FF00103BB744F +S113A49C02E04FF00003BB744FF09303FB834FF0C7 +S113A4AC00033B834FF00003FB824FF00003BB829D +S113A4BC4FF00003BB834FF000037B83FB78042B2A +S113A4CC00F2488101A252F823F000BFEDA4000071 +S113A4DC03A5000013A500001BA500003DA500006A +S113A4ECBB8A43F48073BB824FF40053FB824FF05E +S113A4FC0103FB7426E0BB8A43F48073BB824FF0E8 +S113A50C0003FB821EE04FF00003FB821AE04FF4C1 +S113A51C0053FB824FF48053BB824FF6FF73BB8313 +S113A52C41F6FF737B83FB8B43F04003FB8309E011 +S113A53C4FF40053FB824FF49053BB824FF0010352 +S113A54CFB7400BF7B689B6803F00803002B1ED0D0 +S113A55CBB7C002B0DD07B685B68BB837B685B6822 +S113A56C4FEA13439BB24FEAC3434FEAD3437B8373 +S113A57C0DE04FF00003BB837B685B689BB24FEA32 +S113A58C83039BB24FEAC3434FEAD3437B837B6879 +S113A59C9B6803F02803282B05D17B8B6FEA43437C +S113A5AC6FEA53437B837B689B6803F01803182B77 +S113A5BC03D17B8B43F480437B837B689B6803F0E0 +S113A5CC3803002B07D0BB8A43F48053BB82FB8B2C +S113A5DC43F04003FB83FB8B43F02003FB83BB7CE6 +S113A5EC002B19D07B681B689AB23B8B13433B83BB +S113A5FC7B681B684FEA13439BB24FEAC3434FEA91 +S113A60CD3439AB2FB8A1343FB82FB8A6FEA8343DC +S113A61C6FEA9343FB8213E07B681B689BB24FEA9F +S113A62C83039BB24FEAC3434FEAD3439AB2FB8AE8 +S113A63C1343FB82FB8A6FEA43436FEA5343FB8267 +S113A64C7B68DB689BB203F00F039AB2BB8A13439B +S113A65CBB827B689B6803F40073002B03D1BB8A19 +S113A66C43F08003BB827B689B6803F00103002BDF +S113A67C03D0BB8A43F40063BB827B689B6803F002 +S113A68C0203002B03D0BB8A43F48063BB82FB7CA4 +S113A69C002B0FD07B681969FB6803F13C031A4645 +S113A6AC7B68DB68084611461A4649F64163C0F2DA +S113A6BC00039847FB6803F12402FB8B10461946F0 +S113A6CC49F61163C0F200039847FB6803F12802B2 +S113A6DCBB8B1046194649F61163C0F20003984728 +S113A6ECFB6803F12C027B8B1046194649F6116367 +S113A6FCC0F200039847FB6803F130023B8B104611 +S113A70C194649F61163C0F200039847FB6803F13C +S113A71C3402FB8A1046194649F61163C0F2000351 +S113A72C9847FB6803F13802BB8A1046194649F670 +S113A73C1163C0F200039847FB6803F12002BB6865 +S113A74C03F03F031046194649F61163C0F20003A7 +S113A75C984700E000BF07F12007BD4680BD00BF4D +S113A76C80B588B000AFF860B9607A60FB70F868A7 +S113A77C49F6BD43C0F2000398470346002B0AD1A7 +S113A78C4BF6C010C0F2000040F2C17148F22173C4 +S113A79CC0F200039847BB68202B02D8BB68002B7F +S113A7AC0AD14BF6C010C0F2000040F2C27148F25C +S113A7BC2173C0F2000398474FF07303FB83FB78BB +S113A7CC002B03D0FB8B43F00803FB83FB6803F1E2 +S113A7DC8402FB8B1046194649F61163C0F2000340 +S113A7EC9847FB6803F18002BB6803F03F031046F3 +S113A7FC194649F61163C0F20003984700BFFB6881 +S113A80C03F18003184649F66553C0F200039847D8 +S113A81C034603F40043002BF1D1FB6803F18803D6 +S113A82C184649F66553C0F2000398470346BB83A8 +S113A83CFB6803F18C03184649F66553C0F2000318 +S113A84C984703467B83FB6803F19003184649F64B +S113A85C6553C0F20003984703463B83FB6803F13E +S113A86C9403184649F66553C0F20003984703460F +S113A87CFB82FB6803F19803184649F66553C0F252 +S113A88C000398470346BB827B684FF000029A6032 +S113A89CBB8A03F48073002B04D1FB8A03F40053AA +S113A8AC002B09D1BB8A03F48073002B0AD0FB8ADA +S113A8BC03F40053002B05D17B689B6843F04002E2 +S113A8CC7B689A60FB8A03F48043002B12D0FB8ACA +S113A8DC4FEAC3434FEAD3434FEA03423B8B134340 +S113A8EC1A467B681A607B689B6843F004027B6899 +S113A8FC9A6009E0FB8A4FEAC3434FEAD3434FEA19 +S113A90CA3031A467B681A60BB8A03F48043002BAA +S113A91C05D07B689B6843F480727B689A60BB8A21 +S113A92C03F48053002B54D0FB8A03F48043002B94 +S113A93C1ED07B8B4FEAC3434FEAD3434FEA034207 +S113A94CBB8B13431A467B685A607B685A686FF05A +S113A95C60439A4205D17B689B6803F04003002B4B +S113A96C22D17B689B6843F008027B689A601BE0E9 +S113A97C7B8B4FEAC3434FEAD3434FEAA3031A46F4 +S113A98C7B685A607B685A6840F2FF739A4205D11F +S113A99C7B689B6803F04003002B05D17B689B68A4 +S113A9AC43F008027B689A607B8B1BB2002B05DAA0 +S113A9BC7B689B6843F028027B689A607B8B03F46A +S113A9CC8043002B05D07B689B6843F018027B689E +S113A9DC9A60BB8A03F40063002B05D07B689B68E8 +S113A9EC43F001027B689A60BB8A03F48063002BFA +S113A9FC05D07B689B6843F002027B689A60BB8A33 +S113AA0C1BB2002B48DABB8A03F00F027B68DA60B6 +S113AA1C7B689B6803F04003002B0FD17B6819699A +S113AA2CFB6803F19C031A467B68DB6808461146F5 +S113AA3C1A4649F6B163C0F200039847FB6803F168 +S113AA4C840318464FF0040149F61163C0F2000365 +S113AA5C9847FB6803F18002BB6803F03F03104680 +S113AA6C194649F61163C0F20003984700BFFB680E +S113AA7C03F18003184649F66553C0F20003984766 +S113AA8C034603F40043002BF1D17B689B6843F02D +S113AA9C80027B689A6003E07B684FF00002DA6006 +S113AAAC07F12007BD4680BD2DE9F04F89B006465D +S113AABC0D4603924FF00003036098464BF6302B7F +S113AACCC0F2000B4BF64020C0F2000002904CF692 +S113AADCCD49CCF6CC49F8E1252902D12B46424686 +S113AAEC03E0304600F0A0FDEFE1194613F8010B2A +S113AAFC1D46A0F120040B2C13D8DFE804F0061239 +S113AB0C12091212120C1212120F42F04002ECE74C +S113AB1C42F08002E9E742F40042E6E742F0200208 +S113AB2CE3E768280CD14878682805D142F008027C +S113AB3C887801F1030503E001F1020542F00402F7 +S113AB4C78287AD8DFE810F0D00179007900790000 +S113AB5C790079007900790079007900790079001D +S113AB6C790079007900790079007900790079000D +S113AB7C79007900790079007900790079007900FD +S113AB8C79007900790079007900790079007900ED +S113AB9C79008900790079007900790079007900CD +S113ABAC79007900790079007900790079007900CD +S113ABBC79007900790079007900790079007900BD +S113ABCC79007900790079007900790079007900AD +S113ABDC790079007900790079007900790079009D +S113ABEC790079007900790079007900790079008D +S113ABFC7900790079007900C8007900790079002E +S113AC0C79007900790079007900790079008F0056 +S113AC1CE3007900790079007900E3007900790088 +S113AC2C790079009800DC00BA0079007900A4005E +S113AC3C7900E70079007900D30040F26001C2F298 +S113AC4C00010C68002C00F040814FF0FF3300939E +S113AC5C03A901913146A04737E130464FF0250155 +S113AC6C00F0E2FC31E1039901F104000390304659 +S113AC7C097800F0D9FC28E112F0080F039800F1D0 +S113AC8C040203920168336814BF0B700B601CE15F +S113AC9C039800F10402039204681CB94BF62824AF +S113ACACC0F200042178002900F00F81304600F036 +S113ACBCBBFC14F8011F0029F8D106E1039B03F136 +S113ACCC040103911C6802F08007002F14BF232792 +S113ACDC002742F4807268E002F0800742F40052CC +S113ACEC43F25804002F14BF2746002714E002F047 +S113ACFC800743F27804002F14BF274600270BE08B +S113AD0C02F08004002C14BF3027002704E042F426 +S113AD1C8042474600E0474612F4804F1DD0039B07 +S113AD2C03F1040103911C6812F0040F01D024B246 +S113AD3C03E012F0080F18BFE4B2002C04DAC4F1DB +S113AD4C00044FF02D0719E012F0200F14D102F07B +S113AD5C4003002B18BF202710E0039B03F10401D0 +S113AD6C03911C6812F0040F01D0A4B206E012F097 +S113AD7C080F03D0E4B201E04FF02B07A0F1580008 +S113AD8C202877D8DFE800F011767676767676761A +S113AD9C76767676477676767647767676767632E5 +S113ADAC11767676764776761100234634B94FF0D1 +S113ADBC30048DF814404FF001045CE0444602F476 +S113ADCC0052DDF808C032B103F00F001CF800008B +S113ADDC05A9605405E003F00F001BF8000005A959 +S113ADEC605404F101041B09EDD144E0214634B94B +S113ADFC4FF030048DF814404FF001043BE044460E +S113AE0C01F0070000F1300005AAA05404F101047C +S113AE1CC908F5D12FE0214634B94FF030048DF830 +S113AE2C14404FF0010426E0444602F400424FF073 +S113AE3C2C0C5AB104F00303032B07D10DF1200A97 +S113AE4C0AEB040000F80CCC04F1010408AB18194B +S113AE5CA9FB01A34FEAD30303EB830AA1EB4A0139 +S113AE6C01F1300100F80C1C04F101041946002B0B +S113AE7CDFD100E04446FF2F04D93046C7F3072145 +S113AE8C00F0D2FB1FB13046F9B200F0CDFB012C1F +S113AE9C1BD405AF3C19C4EB070E6FEA0E0A0AF07B +S113AEAC010A304614F8011D00F0BEFBBC4220D14F +S113AEBC0BE014F8011D304600F0B6FB304614F8D4 +S113AECC011D00F0B1FBBC42F3D115F8011B0029A4 +S113AEDC7FF402AEB3682BB1326871688A423CBF0E +S113AEEC00219954306801E04FF0FF3009B0BDE8FF +S113AEFCF08FBAF1000FDCD0304614F8011D00F0CD +S113AF0C93FBBC42D5D1E0E710B504460B783BB1BA +S113AF1CB0F1FF3F06D0486800F1FF324A6001E00F +S113AF2C89688847204610BD2DE9F04F83B08146CF +S113AF3C019192461F46DDF830B04FF0FF3800E027 +S113AF4CA04608F10104484600F05CFB054600F0FD +S113AF5CBDFB0028F4D1B5F1FF3F00F095802AF435 +S113AF6CC066BBF1000F3ADD1AF0800F10D02B2D08 +S113AF7C03D02D2D09D146F4806608F1020448460D +S113AF8C00F040FB05460BF1FF3BBBF1000F26DD47 +S113AF9C302D24D146F4007A0BF1FF3B04F1010867 +S113AFAC484600F02FFB0546BBF1000F13DD782853 +S113AFBC01D058280FD10FB1102F6BD126F4007A81 +S113AFCC0BF1FF3B04F10208484600F01BFB05465D +S113AFDC4FF010075EE0002F08BF08275AE0002F3F +S113AFEC08BF0A27BBF1000F27DDA3444FF000086C +S113AFFC6FEA040A0AEB0B0000F0010A28463946F2 +S113B00C00F046FB00284CDA19E046F4007607FB06 +S113B01C080804F1010A5446484600F0F3FA0546C0 +S113B02C394600F035FB00285CDA08E0284639463E +S113B03C00F02EFB0028E8DA01E04FF00008284667 +S113B04C4946FFF761FF16F4007F20D016F0010F7C +S113B05C23D101990B6803F104020A60186806F401 +S113B06C9061B1F5906F08BFC8F1000816F0100F8D +S113B07C02D080F8008010E016F0080F14BFA0F87E +S113B08C0080C0F8008008E04FF0FF3405E06FF05A +S113B09C010402E044465646A4E7204603B0BDE84A +S113B0ACF08F46F4007607FB080804F101044846C7 +S113B0BC00F0A8FA05465C45C1D0BAF1000FB5D032 +S113B0CC394600F0E5FA0028B9DB46F4007607FBB4 +S113B0DC080804F10104484600F094FA05465C455E +S113B0ECA4D1ACE746F4007607FB08080AF1010486 +S113B0FC484600F087FA05465C4597D19FE700BFA8 +S113B10C2DE9F04F8DB005908A460CAB43F8042D15 +S113B11C04934FF0000503954CF6CC46C0F6CC4690 +S113B12CD04618F8014B002C00F01B82252C34D08F +S113B13C204600F0CBFAC0B118F8010B00F0C6FAA7 +S113B14C0028F9D108F1FF3A059F01E005F101054A +S113B15C384600F057FA044600F0B8FA0028F5D146 +S113B16C20460599FFF7D0FEDAE7059800F04AFA75 +S113B17CA04203D105F10105C246D1E70746059962 +S113B18CFFF7C2FEB7F1FF3F40F0EB81039A002AB0 +S113B19C08BF4FF0FF320392E3E19AF801102A2919 +S113B1AC06BF0AF102084FF0010B4FF0000B4FF0F1 +S113B1BC00070CE0B74200F3D48107EB8707A4F136 +S113B1CC300414EB470700F1CC814BF0200B18F83A +S113B1DC014BA146C246204600F052FA0028E9D1A0 +S113B1EC0BF02002002A08BF6FF000474C2C06D14C +S113B1FC98F8009008F1010A4BF0440B11E0682C0C +S113B20C0FD198F80090B9F1680F06D14BF0100BE0 +S113B21C98F8019008F1020A03E008F1010A4BF0D6 +S113B22C080BA9F12509B9F1530F00F29A81DFE853 +S113B23C19F054009801980198019801980198010B +S113B24C9801980198019801980198019801980126 +S113B25C9801980198019801980198019801980116 +S113B26C9801980198019801980198019801980106 +S113B27C98019801980198019801980198019801F6 +S113B28C98019801980198019801980198019801E6 +S113B29C98019801980198016B0198019801980103 +S113B2AC98019801980198019801980198016B00F4 +S113B2BCBC009801980198019801C7009801980165 +S113B2CC98019801D200E600F10098019801FC0065 +S113B2DC98016001980198016B01059800F092F9AE +S113B2EC252802D105F101051AE704460599FFF753 +S113B2FC0BFEB4F1FF3F40F03481039B002B08BFDD +S113B30C4FF0FF3303932CE10BF02002002A14BFFF +S113B31C3B4601231BF0010705D10B9C04F10401EE +S113B32C0B91246801E04FF00004002B00F019810C +S113B33C002B32DD03EB05086FEA050909EB080065 +S113B34C00F0010905F10105059800F05BF9B0F175 +S113B35CFF3F40F00A810CE0DDF8149001E0DDF8C9 +S113B36C149005F10105484600F04CF9B0F1FF3F8B +S113B37C06D1039B002B08BF4FF0FF330393F0E07F +S113B38C0FB904F8010B05F10105484600F03AF930 +S113B39CB0F1FF3F40F00381EBE7002F7FF4C0AE28 +S113B3AC039A02F101020392BAE6009705980499F4 +S113B3BC4BF080024FF00A03FFF7B6FD8146ADE077 +S113B3CC0097059804994BF080024FF00003FFF7A7 +S113B3DCABFD8146A2E01BF0010F7FF4A1AE0B9CE8 +S113B3EC04F104010B9120681BF0100F01D00570BF +S113B3FC96E61BF0080F14BF0580056090E60097D5 +S113B40C059804994BF080024FF00803FFF78CFD6C +S113B41C814683E00097059804992BF01E024FF0A7 +S113B42C1003FFF781FD814678E04FF0FF39DDF81A +S113B43C148009F10109404600F0E4F8044600F0D8 +S113B44C45F90028F5D14B46B4F1FF3F4ED01BF023 +S113B45C0101069178D10B9800F104020B92D0F8FB +S113B46C008073E00FB908F8014B09F10105A946F6 +S113B47C584600F0C7F80446B54223D0B0F1FF3F5C +S113B48C40F0A880DDF81CB0089D099E23E0CDF89F +S113B49C1CB00895069FDDF814B009960A9E07E0C7 +S113B4ACCDF81CB00895069FDDF814B009960A9ED9 +S113B4BC204600F00BF90028D4D0DDF81CB0089D10 +S113B4CC099E08E0DDF81CB0089D099E03E0DDF838 +S113B4DC1CB0089D099E20460599FFF715FD069A98 +S113B4ECE2B94FF0000388F8003017E04FF0FF3951 +S113B4FC14E00097059804994BF080024FF00A036E +S113B50CFFF712FD814609E00097059804994BF06A +S113B51C80024FF01003FFF707FD8146B9F1000FCD +S113B52C09DAB9F1FF3F1CD10398002808BF4FF08A +S113B53CFF30039015E01BF0010F03D1039C04F1C1 +S113B54C010403944D44EBE54FF00008002FC2DDD9 +S113B55CFF180A976FEA0903D91911F0010F96D055 +S113B56C24E003980DB0BDE8F08F0FB904F8010B7B +S113B57C45453FF412AFB9F1000F3FF4EDAE05F1C0 +S113B58C0105059800F03EF8B0F1FF3F3FF4F1AE31 +S113B59C0FB904F8010B45457FF4E1AEFDE60FB994 +S113B5AC04F8010B45457FF4DCAEF6E6204600F0CA +S113B5BC8DF800288FD1069808B908F8014B09F1C9 +S113B5CC0109059800F01EF80446B0F1FF3F7FF422 +S113B5DC67AF80E700F07AF800287FF478AF0FB9F2 +S113B5EC08F8014B05F10109584600F00BF8044624 +S113B5FCB0F1FF3F7FF45CAFDDF81CB0089D099EF1 +S113B60C69E700BF08B50346027832B1416808788F +S113B61C30B101F10101596008BD4068804708BD93 +S113B62C4FF0FF3008BD00BF38B50446806848B100 +S113B63C2368626803F10105954208BF0021934217 +S113B64C38BFC154E36833B120686268904202D2B7 +S113B65C084621469847216801F10101216038BD53 +S113B66CA0F1410019288CBF00200120704700BFB5 +S113B67CA0F1610019288CBF00200120704700BF85 +S113B68CA0F1300009288CBF00200120704700BFB6 +S113B69C38B504460D46FFF7F3FF10B1A4F13000A2 +S113B6AC0FE02046FFF7E4FF10B1A4F1570008E0C7 +S113B6BC2046FFF7D5FF10B1A4F1370001E04FF09D +S113B6CCFF30A842A8BF4FF0FF3038BDA0F10903EA +S113B6DC042B04D9202814BF0020012070474FF0FC +S113B6EC0100704738B504460D4600F019F840F2D5 +S113B6FC6403C2F200031D6044F0800440F268004D +S113B70CC2F200000460024611680029FCD100F06A +S113B71C09F840F26403C2F20003186838BD00BF94 +S10BB72C704700BF704700BF25 +S113B73401000000433A2F576F726B2F736F6674C6 +S113B744776172652F4F70656E424C542F54617249 +S113B7546765742F44656D6F2F41524D434D335FBC +S113B7644C4D33535F454B5F4C4D3353383936326C +S113B7745F43726F7373776F726B732F50726F675B +S113B7842F6964652F2E2E2F6C69622F647269767B +S113B79465726C69622F6770696F2E630000000024 +S113B7A4433A2F576F726B2F736F667477617265A8 +S113B7B42F4F70656E424C542F5461726765742F19 +S113B7C444656D6F2F41524D434D335F4C4D33539C +S113B7D45F454B5F4C4D3353383936325F43726F98 +S113B7E47373776F726B732F50726F672F6964650D +S113B7F42F2E2E2F6C69622F6472697665726C69C0 +S113B804622F696E746572727570742E6300000021 +S113B81400E10F4004E10F4008E10F4040420F00F3 +S113B82400201C0080841E0000802500999E3600A0 +S113B8340040380000093D0000803E0000004B0039 +S113B844404B4C0000204E00808D5B0000C05D0026 +S113B8540080700000127A0000007D008096980039 +S113B864001BB7000080BB00C0E8CE00647ADA0095 +S113B8740024F4000000FA00433A2F576F726B2F30 +S113B884736F6674776172652F4F70656E424C54A2 +S113B8942F5461726765742F44656D6F2F41524D47 +S113B8A4434D335F4C4D33535F454B5F4C4D3353E2 +S113B8B4383936325F43726F7373776F726B732FD9 +S113B8C450726F672F6964652F2E2E2F6C69622F57 +S113B8D46472697665726C69622F73797363746CCC +S113B8E42E630000433A2F576F726B2F736F667485 +S113B8F4776172652F4F70656E424C542F54617298 +S113B9046765742F44656D6F2F41524D434D335F0A +S113B9144C4D33535F454B5F4C4D335338393632BA +S113B9245F43726F7373776F726B732F50726F67A9 +S113B9342F6964652F2E2E2F6C69622F64726976C9 +S113B94465726C69622F7379737469636B2E630017 +S113B954433A2F576F726B2F736F667477617265F6 +S113B9642F4F70656E424C542F5461726765742F67 +S113B97444656D6F2F41524D434D335F4C4D3353EA +S113B9845F454B5F4C4D3353383936325F43726FE6 +S113B9947373776F726B732F50726F672F6964655B +S113B9A42F2E2E2F6C69622F6472697665726C690E +S113B9B4622F756172742E6300000000433A2F579E +S113B9C46F726B2F736F6674776172652F4F706536 +S113B9D46E424C542F5461726765742F44656D6FC5 +S113B9E42F41524D434D335F4C4D33535F454B5FB1 +S113B9F44C4D3353383936325F43726F7373776FF8 +S113BA04726B732F50726F672F6964652F2E2E2FFC +S113BA146C69622F6472697665726C69622F636102 +S113BA246E2E6300286E756C6C290000303132333D +S113BA34343536373839616263646566303132339C +S10FBA4434353637383941424344454616 +S903819BE0 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/ide/lm3s8962_crossworks.hzp b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/ide/lm3s8962_crossworks.hzp index 75e75957..7a10e423 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/ide/lm3s8962_crossworks.hzp +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/ide/lm3s8962_crossworks.hzp @@ -1,7 +1,7 @@ - + diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/memory.x index b42de017..199a5e5e 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_Crossworks/Prog/memory.x @@ -5,7 +5,7 @@ MEMORY Peripherals (wx) : ORIGIN = 0x40020000, LENGTH = 0x00100000 FiRM_Peripherals (wx) : ORIGIN = 0x40000000, LENGTH = 0x00010000 SRAM (wx) : ORIGIN = 0x20000000, LENGTH = 0x00010000 - FLASH (rx) : ORIGIN = 0x00004000, LENGTH = 0x00040000 - 0x4000 + FLASH (rx) : ORIGIN = 0x00008000, LENGTH = 0x00040000 - 0x8000 } @@ -19,7 +19,7 @@ SECTIONS __FiRM_Peripherals_segment_end__ = 0x40010000; __SRAM_segment_start__ = 0x20000000; __SRAM_segment_end__ = 0x20010000; - __FLASH_segment_start__ = 0x00004000; + __FLASH_segment_start__ = 0x00008000; __FLASH_segment_end__ = 0x00040000; __STACKSIZE__ = 256; diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.bin b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.bin index 653cf44e..f6c2d1f4 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.bin and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.bin differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.elf index fdc2ccec..d2500571 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.map index eacb8c9c..311dcaeb 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Boot/bin/openbtl_ek_lm3s8962.map @@ -7,40 +7,40 @@ start address 0x00000000 Program Header: LOAD off 0x00008000 vaddr 0x00000000 paddr 0x00000000 align 2**15 - filesz 0x00001ef2 memsz 0x00001ef2 flags r-x - LOAD off 0x00010000 vaddr 0x20000000 paddr 0x00001ef2 align 2**15 + filesz 0x00001eea memsz 0x00001eea flags r-x + LOAD off 0x00010000 vaddr 0x20000000 paddr 0x00001eea align 2**15 filesz 0x00000001 memsz 0x00000001 flags rw- - LOAD off 0x00010004 vaddr 0x20000004 paddr 0x00001ef8 align 2**15 + LOAD off 0x00010004 vaddr 0x20000004 paddr 0x00001ef0 align 2**15 filesz 0x00000000 memsz 0x000006f0 flags rw- private flags = 5000200: [Version5 EABI] [soft-float ABI] Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00001ef2 00000000 00000000 00008000 2**2 + 0 .text 00001eea 00000000 00000000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .data 00000001 20000000 00001ef2 00010000 2**0 + 1 .data 00000001 20000000 00001eea 00010000 2**0 CONTENTS, ALLOC, LOAD, DATA - 2 .bss 000006f0 20000004 00001ef8 00010004 2**2 + 2 .bss 000006f0 20000004 00001ef0 00010004 2**2 ALLOC - 3 .debug_info 00007ddc 00000000 00000000 00010001 2**0 + 3 .debug_info 00007e0a 00000000 00000000 00010001 2**0 CONTENTS, READONLY, DEBUGGING - 4 .debug_abbrev 00001d08 00000000 00000000 00017ddd 2**0 + 4 .debug_abbrev 00001d22 00000000 00000000 00017e0b 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000910 00000000 00000000 00019ae5 2**0 + 5 .debug_aranges 00000918 00000000 00000000 00019b2d 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_ranges 00000878 00000000 00000000 0001a3f5 2**0 + 6 .debug_ranges 00000880 00000000 00000000 0001a445 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 00002adc 00000000 00000000 0001ac6d 2**0 + 7 .debug_line 00002af8 00000000 00000000 0001acc5 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_str 00001dc8 00000000 00000000 0001d749 2**0 + 8 .debug_str 00001de4 00000000 00000000 0001d7bd 2**0 CONTENTS, READONLY, DEBUGGING - 9 .comment 00000030 00000000 00000000 0001f511 2**0 + 9 .comment 00000030 00000000 00000000 0001f5a1 2**0 CONTENTS, READONLY - 10 .ARM.attributes 00000033 00000000 00000000 0001f541 2**0 + 10 .ARM.attributes 00000033 00000000 00000000 0001f5d1 2**0 CONTENTS, READONLY - 11 .debug_frame 0000199c 00000000 00000000 0001f574 2**2 + 11 .debug_frame 000019ac 00000000 00000000 0001f604 2**2 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00004a64 00000000 00000000 00020f10 2**0 + 12 .debug_loc 00004a4c 00000000 00000000 00020fb0 2**0 CONTENTS, READONLY, DEBUGGING SYMBOL TABLE: 00000000 l d .text 00000000 .text @@ -59,13 +59,13 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 vectors.c 00000000 l df *ABS* 00000000 cstart.c 0000011c l F .text 00000000 zero_loop2 -00001c6e l F .text 00000000 zero_loop +00001c7e l F .text 00000000 zero_loop 00000000 l df *ABS* 00000000 main.c 00000000 l df *ABS* 00000000 flashlib.c 00000000 l df *ABS* 00000000 sysctl.c 000002b0 l F .text 000000e4 SysCtlPeripheralValid -00001cb0 l O .text 0000005c g_pulXtals -00001d28 l O .text 0000000c g_pulRCGCRegs +00001cc0 l O .text 0000005c g_pulXtals +00001d38 l O .text 0000000c g_pulRCGCRegs 00000000 l df *ABS* 00000000 interrupt.c 00000000 l df *ABS* 00000000 gpio.c 000007cc l F .text 00000040 GPIOBaseValid @@ -79,13 +79,13 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 boot.c 00000000 l df *ABS* 00000000 com.c 20000004 l O .bss 00000001 comEntryStateConnect -00001d9a l O .text 00000003 CSWTCH.9 +00001daa l O .text 00000003 CSWTCH.9 20000000 l O .data 00000001 comActiveInterface -20000005 l O .bss 00000040 xcpCtoReqPacket.4184 -00001d9d l O .text 00000003 CSWTCH.11 +00001dad l O .text 00000003 CSWTCH.11 +20000005 l O .bss 00000040 xcpCtoReqPacket.4186 00000000 l df *ABS* 00000000 xcp.c 00001348 l F .text 00000014 XcpSetCtoError -00001da0 l O .text 00000008 xcpStationId +00001db0 l O .text 00000008 xcpStationId 20000048 l O .bss 0000004c xcpInfo 00000000 l df *ABS* 00000000 backdoor.c 20000094 l O .bss 00000001 backdoorOpen @@ -96,30 +96,30 @@ SYMBOL TABLE: 200000a0 l O .bss 00000004 assert_failure_line 00000000 l df *ABS* 00000000 cpu.c 00000000 l df *ABS* 00000000 uart.c -200000a4 l O .bss 00000001 xcpCtoRxLength.4380 -200000a5 l O .bss 00000041 xcpCtoReqPacket.4379 -200000e6 l O .bss 00000001 xcpCtoRxInProgress.4381 +200000a4 l O .bss 00000041 xcpCtoReqPacket.4381 +200000e5 l O .bss 00000001 xcpCtoRxLength.4382 +200000e6 l O .bss 00000001 xcpCtoRxInProgress.4383 00000000 l df *ABS* 00000000 can.c 00000000 l df *ABS* 00000000 nvm.c 00000000 l df *ABS* 00000000 timer.c 200000e8 l O .bss 00000004 millisecond_counter 00000000 l df *ABS* 00000000 flash.c -00001900 l F .text 00000034 FlashGetSector -00001934 l F .text 0000004c FlashWriteBlock -00001980 l F .text 00000050 FlashSwitchBlock -000019d0 l F .text 00000080 FlashAddToBlock -00001df0 l O .text 000000d8 flashLayout +00001908 l F .text 00000034 FlashGetSector +0000193c l F .text 0000004c FlashWriteBlock +00001988 l F .text 00000050 FlashSwitchBlock +000019d8 l F .text 00000080 FlashAddToBlock +00001e00 l O .text 000000c0 flashLayout 200000ec l O .bss 00000204 bootBlockInfo 200002f0 l O .bss 00000204 blockInfo 00000000 l df *ABS* 00000000 00000200 l *ABS* 00000000 __STACKSIZE__ 0000124c g F .text 0000003c ComInit -00001a68 g F .text 00000048 FlashWrite +00001a70 g F .text 00000048 FlashWrite 00001600 g F .text 00000018 AssertFailure -00001858 g F .text 0000002c CanReceivePacket -00001c4c g F .text 00000040 reset_handler +00001860 g F .text 0000002c CanReceivePacket +00001c5c g F .text 00000040 reset_handler 00000c5c g F .text 00000098 CANInit -000018d4 g F .text 0000001c TimerUpdate +000018dc g F .text 0000001c TimerUpdate 00001388 g F .text 00000010 XcpPacketTransmitted 00001288 g F .text 0000003c ComTask 000003cc g F .text 00000008 SysCtlDelay @@ -128,53 +128,54 @@ SYMBOL TABLE: 00000cf4 g F .text 0000002c CANEnable 000015dc g F .text 00000020 BackDoorInit 000015fe g F .text 00000002 CopService -00001ef2 g .text 00000000 _etext +00001eea g .text 00000000 _etext +00001c48 g F .text 00000006 FlashGetUserProgBaseAddress 00000b1c g F .text 00000024 UARTSpaceAvail -000018c8 g F .text 0000000c TimerReset +000018d0 g F .text 0000000c TimerReset 00000b68 g F .text 0000002c UARTCharPutNonBlocking 00001236 g F .text 00000016 BootTask -00001b80 g F .text 00000044 FlashWriteChecksum +00001b88 g F .text 00000044 FlashWriteChecksum 000012c8 g F .text 00000030 ComTransmitPacket 00000394 g F .text 00000038 SysCtlPeripheralEnable 00001378 g F .text 00000010 XcpIsConnected -00001884 g F .text 00000004 NvmInit -00001a50 g F .text 00000018 FlashInit +0000188c g F .text 00000004 NvmInit +00001a58 g F .text 00000018 FlashInit 200004f4 g .bss 00000000 _ebss -00001c40 g F .text 0000000c UnusedISR +00001c50 g F .text 0000000c UnusedISR 000012c4 g F .text 00000002 ComFree -00001664 g F .text 00000028 UartInit -0000188c g F .text 00000004 NvmErase +0000166c g F .text 00000028 UartInit +00001894 g F .text 00000004 NvmErase 00000b40 g F .text 00000028 UARTCharGetNonBlocking 20000004 g .bss 00000000 _bss 00001398 g F .text 0000020c XcpPacketReceived -00001c0c g F .text 00000034 FlashDone +00001c14 g F .text 00000034 FlashDone 000000f0 g F .text 00000050 EntryFromProg 00000dfc g F .text 0000007c CANStatusGet -00001804 g F .text 00000054 CanTransmitPacket +0000180c g F .text 00000054 CanTransmitPacket 000001d8 g F .text 000000d8 FlashProgram 0000135c g F .text 0000001c XcpInit -00001ab0 g F .text 000000d0 FlashErase +00001ab8 g F .text 000000d0 FlashErase 00000154 g F .text 00000040 main 00000510 g F .text 000001ac SysCtlClockGet 00000a18 g F .text 00000034 UARTDisable -00001894 g F .text 00000012 NvmDone -0000168c g F .text 0000006c UartTransmitPacket -00001890 g F .text 00000004 NvmVerifyChecksum +0000189c g F .text 00000012 NvmDone +00001694 g F .text 0000006c UartTransmitPacket +00001898 g F .text 00000004 NvmVerifyChecksum 00001060 g F .text 000001bc CANMessageGet -00001640 g F .text 0000001e CpuMemCopy +00001648 g F .text 0000001e CpuMemCopy 00000960 g F .text 00000034 GPIOPinTypeCAN 00001318 g F .text 00000020 ComGetActiveInterfaceMaxTxLen -000016f8 g F .text 0000006c UartReceivePacket +00001700 g F .text 0000006c UartReceivePacket 00000744 g F .text 00000088 IntDisable 20000000 g .data 00000000 _data 000015fc g F .text 00000002 CopInit -0000165e g F .text 00000004 CpuReset -00001764 g F .text 000000a0 CanInit -00001888 g F .text 00000004 NvmWrite -00001618 g F .text 00000028 CpuStartUserProgram +00001666 g F .text 00000004 CpuReset +0000176c g F .text 000000a0 CanInit +00001890 g F .text 00000004 NvmWrite +00001618 g F .text 00000030 CpuStartUserProgram 00000d20 g F .text 000000dc CANBitTimingSet 200006f4 g .bss 00000000 _estack -00001bc4 g F .text 00000048 FlashVerifyChecksum +00001bcc g F .text 00000048 FlashVerifyChecksum 20000001 g .data 00000000 _edata 00000000 g O .text 000000f0 _vectab 00000994 g F .text 00000034 GPIOPinTypeUART @@ -184,12 +185,12 @@ SYMBOL TABLE: 0000080c g F .text 00000054 GPIODirModeSet 000015a4 g F .text 00000038 BackDoorCheck 200004f4 g .bss 00000000 _stack -000018f0 g F .text 00000010 TimerGet +000018f8 g F .text 00000010 TimerGet 00000e78 g F .text 000001e8 CANMessageSet 00000a4c g F .text 000000d0 UARTConfigSetExpClk 000003d4 g F .text 0000013c SysCtlClockSet 00000860 g F .text 00000100 GPIOPadConfigSet -000018a8 g F .text 00000020 TimerInit +000018b0 g F .text 00000020 TimerInit 00000194 g F .text 00000044 FlashClear 000009e8 g F .text 00000030 UARTEnable diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.elf b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.elf index a1352e33..0b8136a0 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.elf and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.elf differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.map b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.map index 5550c870..cec31757 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.map +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.map @@ -3,43 +3,43 @@ bin/demoprog_ek_lm3s8962.elf: file format elf32-littlearm bin/demoprog_ek_lm3s8962.elf architecture: arm, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED -start address 0x00004000 +start address 0x00008000 Program Header: - LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**15 - filesz 0x00005c2c memsz 0x00005c2c flags r-x - LOAD off 0x00008000 vaddr 0x20000000 paddr 0x20000000 align 2**15 + LOAD off 0x00008000 vaddr 0x00008000 paddr 0x00008000 align 2**15 + filesz 0x00001c2c memsz 0x00001c2c flags r-x + LOAD off 0x00010000 vaddr 0x20000000 paddr 0x20000000 align 2**15 filesz 0x00000000 memsz 0x00000158 flags rw- private flags = 5000202: [Version5 EABI] [soft-float ABI] [has entry point] Sections: Idx Name Size VMA LMA File off Algn - 0 .text 00001c2c 00004000 00004000 00004000 2**2 + 0 .text 00001c2c 00008000 00008000 00008000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .bss 00000158 20000000 20000000 00008000 2**2 + 1 .bss 00000158 20000000 20000000 00010000 2**2 ALLOC - 2 .debug_info 0000567c 00000000 00000000 00005c2c 2**0 + 2 .debug_info 0000567c 00000000 00000000 00009c2c 2**0 CONTENTS, READONLY, DEBUGGING - 3 .debug_abbrev 00000e6f 00000000 00000000 0000b2a8 2**0 + 3 .debug_abbrev 00000e6f 00000000 00000000 0000f2a8 2**0 CONTENTS, READONLY, DEBUGGING - 4 .debug_loc 00002f0d 00000000 00000000 0000c117 2**0 + 4 .debug_loc 00002f0d 00000000 00000000 00010117 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000730 00000000 00000000 0000f024 2**0 + 5 .debug_aranges 00000730 00000000 00000000 00013024 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_ranges 00000668 00000000 00000000 0000f754 2**0 + 6 .debug_ranges 00000668 00000000 00000000 00013754 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_line 00001b96 00000000 00000000 0000fdbc 2**0 + 7 .debug_line 00001b96 00000000 00000000 00013dbc 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_str 000015dd 00000000 00000000 00011952 2**0 + 8 .debug_str 000015dd 00000000 00000000 00015952 2**0 CONTENTS, READONLY, DEBUGGING - 9 .comment 00000030 00000000 00000000 00012f2f 2**0 + 9 .comment 00000030 00000000 00000000 00016f2f 2**0 CONTENTS, READONLY - 10 .ARM.attributes 00000033 00000000 00000000 00012f5f 2**0 + 10 .ARM.attributes 00000033 00000000 00000000 00016f5f 2**0 CONTENTS, READONLY - 11 .debug_frame 000012ac 00000000 00000000 00012f94 2**2 + 11 .debug_frame 000012ac 00000000 00000000 00016f94 2**2 CONTENTS, READONLY, DEBUGGING SYMBOL TABLE: -00004000 l d .text 00000000 .text +00008000 l d .text 00000000 .text 20000000 l d .bss 00000000 .bss 00000000 l d .debug_info 00000000 .debug_info 00000000 l d .debug_abbrev 00000000 .debug_abbrev @@ -57,7 +57,7 @@ SYMBOL TABLE: 20000044 l O .bss 00000001 xcpCtoRxLength.4543 20000045 l O .bss 00000001 xcpCtoRxInProgress.4544 00000000 l df *ABS* 00000000 cstart.c -00004368 l F .text 00000000 zero_loop +00008368 l F .text 00000000 zero_loop 00000000 l df *ABS* 00000000 irq.c 00000000 l df *ABS* 00000000 led.c 20000048 l O .bss 00000004 timer_counter_last.4524 @@ -67,70 +67,70 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 time.c 20000054 l O .bss 00000004 millisecond_counter 00000000 l df *ABS* 00000000 can.c -00004520 l F .text 00000024 CANBaseValid -00004544 l F .text 00000032 CANIntNumberGet -00004578 l F .text 0000001e CANRegWrite -00004598 l F .text 00000094 CANRegRead +00008520 l F .text 00000024 CANBaseValid +00008544 l F .text 00000032 CANIntNumberGet +00008578 l F .text 0000001e CANRegWrite +00008598 l F .text 00000094 CANRegRead 00000000 l df *ABS* 00000000 cpu.c 00000000 l df *ABS* 00000000 gpio.c -00004df0 l F .text 0000008a GPIOBaseValid +00008df0 l F .text 0000008a GPIOBaseValid 00000000 l df *ABS* 00000000 interrupt.c 00000000 l df *ABS* 00000000 sysctl.c -0000528c l F .text 00000154 SysCtlPeripheralValid -00005b7c l O .text 0000005c g_pulXtals -00005bf0 l O .text 0000000c g_pulRCGCRegs +0000928c l F .text 00000154 SysCtlPeripheralValid +00009b7c l O .text 0000005c g_pulXtals +00009bf0 l O .text 0000000c g_pulRCGCRegs 00000000 l df *ABS* 00000000 systick.c 00000000 l df *ABS* 00000000 uart.c -00005910 l F .text 00000026 UARTBaseValid +00009910 l F .text 00000026 UARTBaseValid 00000000 l df *ABS* 00000000 00000100 l *ABS* 00000000 __STACKSIZE__ -000044ac g F .text 0000000c __error__ -00004324 g F .text 00000060 reset_handler -0000462c g F .text 000000e0 CANInit -0000543c g F .text 00000008 SysCtlDelay -00004390 g F .text 0000000e IrqInterruptEnable -0000470c g F .text 00000044 CANEnable -00005c2c g .text 00000000 _etext -00005018 g F .text 00000030 GPIOPinWrite -000053e0 g F .text 00000046 SysCtlPeripheralEnable -00005428 g F .text 00000012 SysCtlReset +000084ac g F .text 0000000c __error__ +00008324 g F .text 00000060 reset_handler +0000862c g F .text 000000e0 CANInit +0000943c g F .text 00000008 SysCtlDelay +00008390 g F .text 0000000e IrqInterruptEnable +0000870c g F .text 00000044 CANEnable +00009c2c g .text 00000000 _etext +00009018 g F .text 00000030 GPIOPinWrite +000093e0 g F .text 00000046 SysCtlPeripheralEnable +00009428 g F .text 00000012 SysCtlReset 20000058 g .bss 00000000 _ebss -0000451c g F .text 00000002 UnusedISR -000043a0 g F .text 0000003a LedInit -0000450c g F .text 00000010 TimeISRHandler -00005afc g F .text 00000036 UARTCharGetNonBlocking +0000851c g F .text 00000002 UnusedISR +000083a0 g F .text 0000003a LedInit +0000850c g F .text 00000010 TimeISRHandler +00009afc g F .text 00000036 UARTCharGetNonBlocking 20000000 g .bss 00000000 _bss -000058e4 g F .text 0000002a SysTickPeriodSet -00004884 g F .text 000000b0 CANStatusGet -00004458 g F .text 00000052 main -00005600 g F .text 000002ba SysCtlClockGet -00005974 g F .text 00000044 UARTDisable -00004bcc g F .text 0000021a CANMessageGet -00005048 g F .text 0000004c GPIOPinTypeCAN -000040f4 g F .text 0000011e BootComInit -0000512c g F .text 00000010 IntMasterEnable -000044b8 g F .text 00000046 TimeInit -000051e4 g F .text 000000a8 IntDisable +000098e4 g F .text 0000002a SysTickPeriodSet +00008884 g F .text 000000b0 CANStatusGet +00008458 g F .text 00000052 main +00009600 g F .text 000002ba SysCtlClockGet +00009974 g F .text 00000044 UARTDisable +00008bcc g F .text 0000021a CANMessageGet +00009048 g F .text 0000004c GPIOPinTypeCAN +000080f4 g F .text 0000011e BootComInit +0000912c g F .text 00000010 IntMasterEnable +000084b8 g F .text 00000046 TimeInit +000091e4 g F .text 000000a8 IntDisable 20000000 g .text 00000000 _data -000043dc g F .text 0000007a LedToggle -00004750 g F .text 00000132 CANBitTimingSet +000083dc g F .text 0000007a LedToggle +00008750 g F .text 00000132 CANBitTimingSet 20000158 g .bss 00000000 _estack 20000000 g .text 00000000 _edata -00004000 g O .text 000000f4 _vectab -000050e0 g F .text 0000004c GPIOPinTypeUART -00005094 g F .text 0000004c GPIOPinTypeGPIOOutput -0000513c g F .text 000000a8 IntEnable -00004214 g F .text 0000010e BootComCheckActivationRequest -00004500 g F .text 0000000c TimeGet -00004de8 g F .text 00000008 CPUcpsie -00004e7c g F .text 0000006c GPIODirModeSet +00008000 g O .text 000000f4 _vectab +000090e0 g F .text 0000004c GPIOPinTypeUART +00009094 g F .text 0000004c GPIOPinTypeGPIOOutput +0000913c g F .text 000000a8 IntEnable +00008214 g F .text 0000010e BootComCheckActivationRequest +00008500 g F .text 0000000c TimeGet +00008de8 g F .text 00000008 CPUcpsie +00008e7c g F .text 0000006c GPIODirModeSet 20000058 g .bss 00000000 _stack -000058bc g F .text 00000012 SysTickEnable -000058d0 g F .text 00000012 SysTickIntEnable -00004934 g F .text 00000296 CANMessageSet -000059b8 g F .text 00000142 UARTConfigSetExpClk -00005444 g F .text 000001ba SysCtlClockSet -00004ee8 g F .text 0000012e GPIOPadConfigSet -00005938 g F .text 0000003c UARTEnable +000098bc g F .text 00000012 SysTickEnable +000098d0 g F .text 00000012 SysTickIntEnable +00008934 g F .text 00000296 CANMessageSet +000099b8 g F .text 00000142 UARTConfigSetExpClk +00009444 g F .text 000001ba SysCtlClockSet +00008ee8 g F .text 0000012e GPIOPadConfigSet +00009938 g F .text 0000003c UARTEnable diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.srec index 02075122..f0e199a1 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/bin/demoprog_ek_lm3s8962.srec @@ -1,453 +1,453 @@ S020000062696E2F64656D6F70726F675F656B5F6C6D3373383936322E7372656359 -S113400058010020254300001D4500001D45000007 -S11340101D4500001D4500001D4500001D45000014 -S11340201D4500001D4500001D4500001D45000004 -S11340301D4500001D4500001D4500000D45000004 -S11340401D4500001D4500001D4500001D450000E4 -S11340501D4500001D4500001D4500001D450000D4 -S11340601D4500001D4500001D4500001D450000C4 -S11340701D4500001D4500001D4500001D450000B4 -S11340801D4500001D4500001D4500001D450000A4 -S11340901D4500001D4500001D4500001D45000094 -S11340A01D4500001D4500001D4500001D45000084 -S11340B01D4500001D4500001D4500001D45000074 -S11340C01D4500001D4500001D4500001D45000064 -S11340D01D4500001D4500001D4500001D45000054 -S11340E01D4500001D4500001D4500001D45000044 -S11340F0EE11AA55F0B587B00120C1F2000045F2D7 -S1134100E134C0F20004A0470120C2F20000A0473D -S11341104FF04020032145F2E103C0F20003984729 -S113412045F20163C0F20003984701464FF4404052 -S1134130C4F200004FF46142602345F6B915C0F2A1 -S11341400005A8470820C2F20000A0474FF4E04051 -S1134150C4F20000032145F24903C0F2000398476A -S11341604FF48070C0F21000A0470020C4F2040095 -S113417044F22D63C0F200039847042303931026EE -S1134180019640F2A460082735463B46741CE218A9 -S1134190B0FBF2F14139C9B20A2918D8B5FBF2F1E2 -S11341A002FB01F1102912D102930196032B98BF4F -S11341B003931023B3FBF2F204920020C4F2040030 -S11341C001A944F25173C0F20003984704E0013B93 -S11341D0DDD16438013ED8D10024C4F20404204661 -S11341E044F20D73C0F20003984740F267630193F1 -S11341F003F5CC730293082303930493204601210F -S113420001AA022344F63514C0F20004A04707B003 -S1134210F0BD00BF10B588B040F24503C2F2000300 -S11342201B78EBB94FF44040C4F2000045F6FD237F -S1134230C0F200039847B0F1FF3F4BD040F20003B7 -S1134240C2F20003187040F24503C2F200030122D7 -S11342501A7040F24403C2F2000300221A7039E0DB -S113426040F24403C2F200031B785C1C4FF440404C -S1134270C4F2000045F6FD23C0F200039847B0F1F4 -S1134280FF3F27D040F20003C2F20003185540F26A -S11342904402C2F2000211780131C9B211701B78D4 -S11342A08B4217D140F24503C2F2000300221A7078 -S11342B040F20003C2F200035B78FF2B0AD140F204 -S11342C00003C2F200039B7823B945F22943C0F2EC -S11342D0000398470020C4F20400022144F6850339 -S11342E0C0F20003984710F0010F18D001AB0793F8 -S11342F00020C4F20400012103AA0B4644F6CD3485 -S1134300C0F20004A0479DF80430FF2B07D19DF8AC -S1134310053023B945F22943C0F20003984708B099 -S113432010BD00BF10B517498D4640F20002C2F21D -S1134330000240F20003C2F200039A4210D2131D9D -S11343400F4CE41A24F0030404340023104645F609 -S11343502C41C0F200015A581A500433A342FAD136 -S113436009480A494FF000028842B8BF40F8042BBC -S1134370FADB44F25943C0F20003984710BD00BF72 -S113438003000020580100200000002058000020F5 -S113439008B545F22D13C0F20003984708BD00BFCD -S11343A010B52020C2F2000045F2E133C0F2000350 -S11343B098474FF4A044C4F202042046012145F278 -S11343C09503C0F20003984720460121002245F2DC -S11343D01903C0F20003984710BD00BF10B544F2A2 -S11343E00153C0F200039847044640F24803C2F266 -S11343F000031B68C31AB3F5FA7F2BD340F24C03B6 -S1134400C2F200031B7883B940F24C03C2F20003EA -S113441001221A704FF4A040C4F20200114645F282 -S11344201903C0F2000398470FE040F24C03C2F2B4 -S1134430000300221A704FF4A040C4F202000121CC -S113444045F21903C0F20003984740F24803C2F250 -S113445000031C6010BD00BF08B54FF46070C0F2CB -S1134460C01045F24543C0F20003984744F2A1331B -S1134470C0F20003984744F2B943C0F200039847DE -S113448044F29133C0F20003984744F2F503C0F2BA -S11344900003984744F2DD35C0F2000544F21524C8 -S11344A0C0F20004A847A047FCE700BF40F2500355 -S11344B0C2F200031960FEE708B545F20163C0F2D9 -S11344C00003984744F6D353C1F26203A3FB0020D0 -S11344D0800945F6E503C0F20003984745F6BD039D -S11344E0C0F20003984745F6D103C0F20003984791 -S11344F040F25403C2F2000300221A6008BD00BF58 -S113450040F25403C2F200031868704740F25403A7 -S1134510C2F200031A6801321A607047FEE700BF56 -S113452020F480520023C4F204039A4208D04FF4CA -S11345300053C4F20403984214BF002001207047C2 -S1134540012070474FF48053C4F20403984210D002 -S11345504FF40053C4F20403984208D00023C4F279 -S1134560040398420CBF37204FF0FF3070473920C6 -S113457070473820704700BF82B001600023019368 -S1134580019B042B05DC019B01330193019B042B4C -S1134590F9DD02B0704700BF70B582B0044620F464 -S11345A07F6020F00F0044F24553C0F200039847A7 -S11345B00546B0F1FF3F10D145F63430C0F200009B -S11345C0F92144F2AD43C0F2000398474EF20413BC -S11345D0CEF200031B68002611E04EF20413CEF263 -S11345E000031B68A0F13002012101FA02F212EA71 -S11345F0030604D045F2E513C0F20003984723688C -S1134600002301930199042905DC019B01330193E3 -S1134610019B042BF9DD24682EB1284645F23D1395 -S1134620C0F200039847204602B070BD2DE9F8435C -S1134630804644F22153C0F20003984750B945F62E -S11346403430C0F2000040F2D91144F2AD43C0F25C -S1134650000398474046012144F27953C0F2000315 -S1134660984708F1200544F29956C0F200062C46FA -S11346702846B04710F4004FF9D108F12409484600 -S1134680B02144F27955C0F20005A84708F134007E -S11346900021A84708F138000021A847012644F268 -S11346A09955C0F2000544F27957C0F2000720463C -S11346B0A84710F4004FFAD120463146B8470136D6 -S11346C0212EF4D148460C2144F27953C0F2000360 -S11346D09847012644F29955C0F2000544F27957EF -S11346E0C0F200072046A84710F4004FFAD1204634 -S11346F03146B8470136212EF4D108F1040044F2C2 -S11347009953C0F200039847BDE8F88310B50446F6 -S113471044F22153C0F20003984750B945F63430AF -S1134720C0F2000040F23A2144F2AD43C0F200036B -S11347309847204644F29953C0F20003984720F06A -S11347400101204644F27953C0F20003984710BD9A -S1134750F8B505460C4644F22153C0F200039847CD -S113476050B945F63430C0F200004FF4597144F2A8 -S1134770AD43C0F20003984754B945F63430C0F253 -S1134780000040F2653144F2AD43C0F200039847A3 -S11347902368023B0E2B0AD945F63430C0F20000E0 -S11347A040F26B3144F2AD43C0F2000398476368B2 -S11347B0013B072B0AD945F63430C0F200004FF410 -S11347C05C7144F2AD43C0F200039847A368013B17 -S11347D0032B0AD945F63430C0F2000040F275319B -S11347E044F2AD43C0F200039847E368013BB3F5DC -S11347F0806F0AD345F63430C0F2000040F27B31BA -S113480044F2AD43C0F200039847284644F299535A -S1134810C0F2000398470746284647F0410144F296 -S11348207956C0F20006B0476368591E090301F4C3 -S1134830E0412368013B1B0203F470631943E368FE -S1134840013B03F03F031943A368013B9B01DBB227 -S113485005F10C001943B047E168013905F118006E -S1134860C1F38311B04717F0010F0CBF27F04001CB -S113487027F04101284644F27953C0F200039847D7 -S1134880F8BD00BF70B505460C4644F22153C0F292 -S11348900003984750B945F63430C0F2000040F2A6 -S11348A0925144F2AD43C0F200039847032C3ED822 -S11348B0DFE804F00213212F0435284644F299530B -S11348C0C0F200039847044628466FF01F0144F2E3 -S11348D07953C0F2000398472AE005F5807044F24A -S11348E09956C0F20006B047044605F58270B047F9 -S11348F044EA00441CE005F5907044F29956C0F275 -S11349000006B047044605F59270B04744EA0044F7 -S11349100EE005F5B07044F29956C0F20006B047B7 -S1134920044605F5B270B04744EA004400E00024B0 -S1134930204670BD2DE9F04F89B005460291164618 -S1134940984644F22153C0F20003984750B945F603 -S11349503430C0F2000040F25F6144F2AD43C0F273 -S113496000039847DDF8089009F1FF331F2B0AD99B -S113497045F63430C0F200004FF4CC6144F2AD434C -S1134980C0F200039847B8F1040F0AD945F6343051 -S1134990C0F2000040F2666144F2AD43C0F200038D -S11349A0984705F1200744F29959C0F200094C4692 -S11349B0B9463846A04710F4004FF9D13C46326856 -S11349C0B2F5006F3ABFB368C3F3800C4FF0010C2B -S11349D0B8F1040F00F2F680DFE808F0033711198C -S11349E0290001214FF480774FF4005E4FF0000955 -S11349F0CDF80490CDF80C904FF093082DE00021F1 -S1134A000F468E46019103914FF0930825E0002153 -S1134A104FF480574FF4005E41F6FF79CDF80490CF -S1134A2009F56049CDF80C904FF0D30815E0012149 -S1134A304FF490574FF4005E4FF00009CDF8049006 -S1134A40CDF80C904FF0930807E000214FF48077E5 -S1134A508E46019103914FF09308B36813F0080F49 -S1134A6017D0BCF1000F08D070681FFA80F9CDF898 -S1134A700C90C0F30C4001900BE07068800041F68C -S1134A80FC7900EA0909CDF804904FF00009CDF84B -S1134A900C9003F02800282802BFDDF8049049F4A4 -S1134AA00049CDF8049003F01800182802BFDDF87F -S1134AB0049049F48049CDF8049013F0380F1CBFDA -S1134AC047F480574FF0D30848F02008CDF81480FD -S1134AD0BCF1000F0BD01FFA82F9CDF81890C2F385 -S1134AE00C4242F4404242EA0E0207920BE092006A -S1134AF0C2F30C0242F4004242EA0E0207924FF063 -S1134B000009CDF81890F26802F00F0947EA090984 -S1134B1013F4007F04BF49F080091FFA89F913F0E8 -S1134B20010F18BF49F4006913F0020F18BF49F4CC -S1134B308069F1B1D6F810B005F13C089246002A1C -S1134B4017DD0127002644F27950C0F200000490DA -S1134B5040461BF80610BA452EDD02361BF8073016 -S1134B6041EA0321049A904708F104080237B24548 -S1134B70EEDC05F12400059944F27956C0F20006F2 -S1134B80B04705F128000399B04705F12C000199BD -S1134B90B04705F130000699B04705F13400079994 -S1134BA0B04705F138004946B0472046DDF8089083 -S1134BB009F03F01B04705E044F27953C0F2000325 -S1134BC09847D6E709B0BDE8F08F00BF2DE9F04F54 -S1134BD083B006468A4615461C4644F22152C0F26A -S1134BE00002904750B945F63430C0F2000040F25C -S1134BF0C17144F2AD43C0F2000398470AF1FF3398 -S1134C001F2B0AD945F63430C0F2000040F2C271BD -S1134C1044F2AD43C0F20003984706F1840B5846B2 -S1134C20002C14BF7B21732144F27957C0F2000792 -S1134C30B84706F180040AF03F0A20465146B847B7 -S1134C4044F29957C0F200072046B84710F4004FC9 -S1134C50FAD106F1880044F29957C0F20007B84728 -S1134C60019006F18C00B847814606F19000B847E0 -S1134C70009006F19400B847804606F19800B847C2 -S1134C800023AB6083B213F4807F03D118F4005F78 -S1134C9003D104E018F4005F01D14022AA601FFA96 -S1134CA088F818F480421FBFC8F30C08009FB9B2FB -S1134CB041EA08411FBF2960A96841F00401A960C5 -S1134CC004BFC8F38A01296013F4804F1EBFA9688A -S1134CD041F48071A96013F4805F31D09AB1C9F3B3 -S1134CE00C02019FB9B241EA02426A606FF060416E -S1134CF08A4203D1AA6812F0400F13D1AA6842F085 -S1134D000802AA600EE0C9F38A026A6040F2FF71E9 -S1134D108A4203D1AA6812F0400F03D1AA6842F074 -S1134D200802AA6019F4004F1EBFAA6842F02802C4 -S1134D30AA6019F4804F1EBFAA6842F01802AA6044 -S1134D4013F4006F1EBFAA6842F00102AA6013F4B4 -S1134D50806F1EBFAB6843F00203AB6010F4004FDA -S1134D6004BF0023EB603BD000F00F00E860AB68A9 -S1134D7013F0400F1CD12F6900979C368146B8B1BF -S1134D804FF00108002744F29953C0F20003019345 -S1134D903046019B9847009BD855C14508DD023732 -S1134DA0000A03F80800043608F10208B945EFDCEC -S1134DB05846042144F27956C0F20006B047204612 -S1134DC05146B04744F29956C0F200062046B04717 -S1134DD010F4004FFAD1AB6843F08003AB60FFE7F7 -S1134DE003B0BDE8F08F00BFEFF3108062B67047E8 -S1134DF020F480534FF40042C4F20502934218BFDA -S1134E00B3F1402F31D04FF4C041C4F200014FF44C -S1134E102042C4F20502934218BF8B4227D04FF4BC -S1134E208041C4F202014FF44042C4F205029342AD -S1134E3018BF8B421DD04FF4C041C4F202014FF49D -S1134E406042C4F20502934218BF8B4213D04FF460 -S1134E505042C4F203020023C4F20603984218BF6E -S1134E60904214BF002001207047012070470120A8 -S1134E707047012070470120704700BF70B5044699 -S1134E800E46154644F6F153C0F20003984748B95C -S1134E9045F64830C0F20000E42144F2AD43C0F2CC -S1134EA000039847022D09D945F64830C0F20000A6 -S1134EB0E62144F2AD43C0F20003984715F0010F18 -S1134EC004F58063D4F8002414BF3243B2431A605B -S1134ED015F0020F04F58463D4F8202414BF16439C -S1134EE022EA06061E6070BDF8B504460D46174654 -S1134EF01E4644F6F153C0F20003984750B945F6F4 -S1134F004830C0F200004FF4DD7144F2AD43C0F20A -S1134F100003984727F008027B1E042A18BF012BC0 -S1134F200AD945F64830C0F200004FF4DF7144F26C -S1134F30AD43C0F200039847A6F10803052B0BD933 -S1134F4056B145F64830C0F2000040F2C51144F2B3 -S1134F50AD43C0F20003984717F0010F04F5A063B6 -S1134F60D4F8002514BF2A43AA431A6017F0020F8D -S1134F7004F20453D4F8042514BF2A43AA431A6044 -S1134F8017F0040F04F5A163D4F8082514BF2A43CD -S1134F90AA431A6017F0080F04F5A363D4F8182580 -S1134FA014BF2A43AA431A6016F0010F04F20C53EB -S1134FB0D4F80C2514BF2A43AA431A6016F0020F32 -S1134FC004F5A263D4F8102514BF2A43AA431A6037 -S1134FD016F0040F04F21453D4F8142514BF2A4312 -S1134FE0AA431A6016F0080F04F21C53D4F81C25C7 -S1134FF014BF2A43AA431A602EB904F5A563D4F852 -S11350002825154305E004F5A563D4F8282522EAEC -S113501005051D60F8BD00BF70B504460D46164673 -S113502044F6F153C0F20003984750B945F64830AE -S1135030C0F200004FF4517144F2AD43C0F20003DA -S1135040984744F8256070BD38B505460C4644F6CB -S1135050F153C0F20003984750B945F64830C0F206 -S113506000004FF4647144F2AD43C0F2000398476A -S113507028462146022244F67D63C0F20003984785 -S1135080284621460422082344F6E964C0F20004B9 -S1135090A04738BD38B505460C4644F6F153C0F276 -S11350A00003984750B945F64830C0F2000040F27A -S11350B0044144F2AD43C0F2000398472846214618 -S11350C0012244F67D63C0F2000398472846214636 -S11350D00122082344F6E964C0F20004A04738BD65 -S11350E038B505460C4644F6F153C0F20003984720 -S11350F050B945F64830C0F2000040F21F5144F266 -S1135100AD43C0F20003984728462146022244F6E4 -S11351107D63C0F2000398472846214601220823F4 -S113512044F6E964C0F20004A04738BD08B544F66B -S1135130E953C0F200039847C0B208BD10B5044655 -S113514046280AD945F66030C0F200004FF4D57104 -S113515044F2AD43C0F200039847042C08D14EF644 -S11351602453CEF200031A6842F480321A6010BD50 -S1135170052C08D14EF62453CEF200031A6842F4EB -S113518000321A6010BD062C08D14EF62453CEF21C -S113519000031A6842F480221A6010BD0F2C08D153 -S11351A04EF21003CEF200031A6842F002021A60B3 -S11351B010BDA4F110031F2B08D8012202FA03F337 -S11351C04FF46142CEF20002136010BD2F2C08D9B7 -S11351D0303C012303FA04F44EF20413CEF200032C -S11351E01C6010BD10B5044646280AD945F6603047 -S11351F0C0F200004FF4F77144F2AD43C0F2000373 -S11352009847042C08D14EF62453CEF200031A68B2 -S113521022F480321A6010BD052C08D14EF62453B6 -S1135220CEF200031A6822F400321A6010BD062C74 -S113523008D14EF62453CEF200031A6822F48022D9 -S11352401A6010BD0F2C08D14EF21003CEF20003E9 -S11352501A6822F002021A6010BDA4F110031F2B79 -S113526008D8012202FA03F34EF28012CEF20002B1 -S1135270136010BD2F2C08D9303C012303FA04F429 -S11352804EF28413CEF200031C6010BD30B420F043 -S11352908053A3F58012013A4FF48071C0F21001DB -S11352A08B4218BF012A98BF012040F297804FF427 -S11352B00071C0F210014FF48062C0F210029342F8 -S11352C018BF8B4208BF012000F088804FF4A04132 -S11352D0C2F2100100F16042013A884218BF012A6B -S11352E098BF01207AD90422C2F20002904208BF7A -S11352F0012073D01022C2F20002904208BF0120A4 -S11353006CD02022C2F20002904208BF012065D076 -S113531020F480148021C2F200014FF48072C2F2A2 -S11353200002944218BF8B4208BF012056D020F0DF -S11353300052B0F1102F18BF402A08BF01204DD0F1 -S11353404FF48041C1F200018C4208BF012045D0D6 -S1135350B0F1101F08BF012040D04FF48075C1F296 -S113536000054FF40071C1F20001884218BFA84241 -S113537008BF012032D01025C1F200052021C1F25E -S113538000018A4218BFAA4208BF012026D0082182 -S1135390C1F2100188421CD000F170410139012989 -S11353A017D90421C1F200018C4214D0B0F1202F8E -S11353B013D00121C2F2100188420ED04FF4805064 -S11353C0C0F21000834218BF082A14BF0020012035 -S11353D004E0012002E0012000E0012030BC70471D -S11353E010B5044645F28D23C0F20003984750B926 -S11353F045F6D830C0F200004FF4FC7144F2AD43DE -S1135400C0F20003984745F6F033C0F20003220FC0 -S113541053F822301A68A1B2C4F3044401FA04F424 -S113542014431C6010BD00BF4EF60C53CEF20003B3 -S11354300422C0F2FA521A60FEE700BF01387FF47A -S1135440FDAF704770B504464FF46043C4F20F03D8 -S11354501B6813F0E04F0BD04FF46043C4F20F030A -S11354601A680023C7F2FF031340B3F1805F02D12F -S1135470002CC0F2C3804EF26002C4F20F02116825 -S11354804EF27003C4F20F031E6821F4800545F444 -S1135490006546F400601560186011F0020F02D038 -S11354A014F0020F05D011F0010F24D014F0010FF5 -S11354B021D164F003031D404EF26003C4F20F03D4 -S11354C01D60002804DA06F03003302B04D00BE012 -S11354D005F03003302B07D14FF4805045F23D43A3 -S11354E0C0F20003984706E04FF4002045F23D4324 -S11354F0C0F20003984725F45F5525F0300543F2C8 -S1135500F07323401D434DF68F73C7F6FF7333408A -S113551043F4006242F23003C8F200032340134311 -S113552004F008024EF25801C4F20F014020086052 -S113553053EAC2060AD54EF27003C4F20F031E608A -S11355404EF26003C4F20F031D6009E04EF26003E3 -S1135550C4F20F031D604EF27003C4F20F031E6009 -S1135560102045F23D42C0F20002904725F0F86059 -S113557020F003000323C0F2C0732340184326F035 -S1135580FC5604F0FC510E4314F0804F1FBF40F44E -S1135590800026F480050023C4F240031ABF234090 -S11355A01D4326F0804514F4006F17D14EF25003CA -S11355B0C4F20F031B6813F0400F0BD147F6FF73BF -S11355C04EF25001C4F20F010A6812F0400F01D1EB -S11355D0013BF9D120F4006025F400654EF260032C -S11355E0C4F20F0318604EF27003C4F20F031D607F -S11355F0102045F23D43C0F20003984770BD00BF40 -S113560030B44EF26003C4F20F0319684EF2700313 -S1135610C4F20F031A68002AB4BF02F0700301F049 -S11356203003202B71D003D87BB1102B16D037E177 -S1135630602B00F0C180702B00F0BB80302B08BFC2 -S113564003F5EA4300F0CF802AE145F67C33C0F24B -S11356500003C1F3841053F82030C4E04FF46043D6 -S1135660C4F20F031B6813F0E04F04BF4EF2C013E3 -S1135670C0F2E40300F0B7804FF46043C4F20F03B8 -S113568018680023C7F2FF030340B3F1805F00F002 -S113569096804FF46043C4F20F0318680023C7F2E6 -S11356A0FF0303400020C1F20100834208D14FF4FC -S11356B06043C4F20F031B689BB2022B00F084808A -S11356C04FF46043C4F20F0318680023C7F2FF03CA -S11356D003400020C1F2030083421CBF4FF4105367 -S11356E0C0F2F4037FD14FF46043C4F20F031C688B -S11356F0A4B24FF4D853C0F2B7034FF41050C0F221 -S1135700F400002C18BF03466DE04FF46043C4F26C -S11357100F031B6813F0E04F04BF43F67003C0F29D -S1135720390360D04FF46043C4F20F0318680023B8 -S1135730C7F2FF030340B3F1805F4AD04FF46043E4 -S1135740C4F20F0318680023C7F2FF0303400020CC -S1135750C1F20100834207D14FF46043C4F20F0346 -S11357601B689BB2022B39D04FF46043C4F20F0381 -S113577018680023C7F2FF0303400020C1F20300AE -S113578083421CBF4FF41063C0F23D032BD14FF48E -S11357906043C4F20F031C68A4B24CF2C063C0F2AD -S11357A02D034FF41060C0F23D00002C18BF0346D7 -S11357B019E04FF4004316E04FF4800313E04EF277 -S11357C0C013C0F2E4030EE04FF4D853C0F2B703A1 -S11357D009E043F67003C0F2390304E04CF2C063FD -S11357E0C0F22D03FFE7002A03DA12F4006F03D09E -S11357F058E011F4006F5AD14EF26400C4F20F0065 -S113580000684FF46044C4F20F04246814F0E04FBD -S11358100BD04FF46044C4F20F0425680024C7F28F -S1135820FF042C40B4F1805F0AD1C0F34814023461 -S113583004FB03F300F01F040234B3FBF4F309E0A8 -S1135840C0F3481404FB03F300F01F0401346400A4 -S1135850B3FBF4F310F4804F18BF5B0810F4004F4F -S113586018BF9B08002AA8BF41F4800112DA12F085 -S1135870804F09D012F4006F06D15B00C2F3865248 -S11358800132B3FBF2F016E0C2F3C5500130B3FBB2 -S1135890F0F010E0C1F3C3500130B3FBF0F00AE0C4 -S11358A0002008E011F4800FE1D1184603E011F460 -S11358B0800FEFD1184630BC704700BF4EF2100382 -S11358C0CEF200031A6842F005021A60704700BF66 -S11358D04EF21003CEF200031A6842F002021A607C -S11358E0704700BF10B5441EB4F1807F09D345F65C -S11358F0FC30C0F20000D02144F2AD43C0F20003FA -S113590098474EF21403CEF200031C6010BD00BF92 -S113591020F480524FF44043C4F200039A4208D06A -S11359204FF46043C4F20003984214BF00200120E6 -S113593070470120704700BF10B5044645F61113A7 -S1135940C0F20003984750B945F61440C0F2000075 -S11359504FF4CF7144F2AD43C0F200039847E36AB9 -S113596043F01003E362236B43F4407343F00103F9 -S1135970236310BD10B5044645F61113C0F20003AD -S1135980984750B945F61440C0F200004FF4DF7157 -S113599044F2AD43C0F200039847A36913F0080F23 -S11359A0FBD1E36A23F01003E362236B23F4407317 -S11359B023F00103236310BDF8B504460E461546D3 -S11359C01F4645F61112C0F20002904750B945F641 -S11359D01440C0F2000040F20D1144F2AD43C0F295 -S11359E00003984755B945F61440C0F200004FF43F -S11359F0877144F2AD43C0F2000398474FF460420C -S1135A00C4F20F02136813F0E04F08BF102340D014 -S1135A104FF46043C4F20F031A680023C7F2FF0374 -S1135A201340B3F1805F08BF102332D04FF46043BA -S1135A30C4F20F031A680023C7F2FF0313400022C5 -S1135A40C1F20102934209D14FF46043C4F20F033F -S1135A501B689BB2022B08BF10231AD04FF460437B -S1135A60C4F20F031A680023C7F2FF031340002295 -S1135A70C1F20302934218BF08230AD14FF46043D2 -S1135A80C4F20F031B689BB2002B0CBF1023082326 -S1135A90FFE705FB03F3B3420AD945F61440C0F20D -S1135AA0000040F20F1144F2AD43C0F200039847E6 -S1135AB0204645F67512C0F200029047B6EB051F6A -S1135AC0236B3DBF43F0200323636D0823F02003C1 -S1135AD028BF2363F600B6FBF5F50135EB096362D5 -S1135AE0C5F34505A562E7620023A361204645F698 -S1135AF03913C0F200039847F8BD00BF10B504463F -S1135B0045F61113C0F20003984750B945F6144006 -S1135B10C0F2000040F2094144F2AD43C0F2000378 -S1135B209847A36913F0100F0CBF20684FF0FF30A3 -S1135B3010BD00BF6C69622F6472697665726C690E -S1135B40622F63616E2E63006C69622F64726976E2 -S1135B5065726C69622F6770696F2E6300000000C4 -S1135B606C69622F6472697665726C69622F696E02 -S1135B70746572727570742E6300000040420F00E9 -S1135B8000201C0080841E0000802500999E3600A1 -S1135B900040380000093D0000803E0000004B003A -S1135BA0404B4C0000204E00808D5B0000C05D0027 -S1135BB00080700000127A0000007D00809698003A -S1135BC0001BB7000080BB00C0E8CE00647ADA0096 -S1135BD00024F4000000FA006C69622F6472697694 -S1135BE065726C69622F73797363746C2E63000041 -S1135BF000E10F4004E10F4008E10F406C69622F9F -S1135C006472697665726C69622F737973746963FF -S1135C106B2E63006C69622F6472697665726C69BD -S10F5C20622F756172742E630000000096 -S9034000BC +S113800058010020258300001D8500001D85000007 +S11380101D8500001D8500001D8500001D850000D4 +S11380201D8500001D8500001D8500001D850000C4 +S11380301D8500001D8500001D8500000D850000C4 +S11380401D8500001D8500001D8500001D850000A4 +S11380501D8500001D8500001D8500001D85000094 +S11380601D8500001D8500001D8500001D85000084 +S11380701D8500001D8500001D8500001D85000074 +S11380801D8500001D8500001D8500001D85000064 +S11380901D8500001D8500001D8500001D85000054 +S11380A01D8500001D8500001D8500001D85000044 +S11380B01D8500001D8500001D8500001D85000034 +S11380C01D8500001D8500001D8500001D85000024 +S11380D01D8500001D8500001D8500001D85000014 +S11380E01D8500001D8500001D8500001D85000004 +S11380F0EE11AA55F0B587B00120C1F2000049F293 +S1138100E134C0F20004A0470120C2F20000A047FD +S11381104FF04020032149F2E103C0F200039847E5 +S113812049F20163C0F20003984701464FF440400E +S1138130C4F200004FF46142602349F6B915C0F25D +S11381400005A8470820C2F20000A0474FF4E04011 +S1138150C4F20000032149F24903C0F20003984726 +S11381604FF48070C0F21000A0470020C4F2040055 +S113817048F22D63C0F200039847042303931026AA +S1138180019640F2A460082735463B46741CE21869 +S1138190B0FBF2F14139C9B20A2918D8B5FBF2F1A2 +S11381A002FB01F1102912D102930196032B98BF0F +S11381B003931023B3FBF2F204920020C4F20400F0 +S11381C001A948F25173C0F20003984704E0013B4F +S11381D0DDD16438013ED8D10024C4F20404204621 +S11381E048F20D73C0F20003984740F267630193AD +S11381F003F5CC73029308230393049320460121CF +S113820001AA022348F63514C0F20004A04707B0BF +S1138210F0BD00BF10B588B040F24503C2F20003C0 +S11382201B78EBB94FF44040C4F2000049F6FD233B +S1138230C0F200039847B0F1FF3F4BD040F2000377 +S1138240C2F20003187040F24503C2F20003012297 +S11382501A7040F24403C2F2000300221A7039E09B +S113826040F24403C2F200031B785C1C4FF440400C +S1138270C4F2000049F6FD23C0F200039847B0F1B0 +S1138280FF3F27D040F20003C2F20003185540F22A +S11382904402C2F2000211780131C9B211701B7894 +S11382A08B4217D140F24503C2F2000300221A7038 +S11382B040F20003C2F200035B78FF2B0AD140F2C4 +S11382C00003C2F200039B7823B949F22943C0F2A8 +S11382D0000398470020C4F20400022148F68503F5 +S11382E0C0F20003984710F0010F18D001AB0793B8 +S11382F00020C4F20400012103AA0B4648F6CD3441 +S1138300C0F20004A0479DF80430FF2B07D19DF86C +S1138310053023B949F22943C0F20003984708B055 +S113832010BD00BF10B517498D4640F20002C2F2DD +S1138330000240F20003C2F200039A4210D2131D5D +S11383400F4CE41A24F0030404340023104649F6C5 +S11383502C41C0F200015A581A500433A342FAD1F6 +S113836009480A494FF000028842B8BF40F8042B7C +S1138370FADB48F25943C0F20003984710BD00BF2E +S113838003000020580100200000002058000020B5 +S113839008B549F22D13C0F20003984708BD00BF89 +S11383A010B52020C2F2000049F2E133C0F200030C +S11383B098474FF4A044C4F202042046012149F234 +S11383C09503C0F20003984720460121002249F298 +S11383D01903C0F20003984710BD00BF10B548F25E +S11383E00153C0F200039847044640F24803C2F226 +S11383F000031B68C31AB3F5FA7F2BD340F24C0376 +S1138400C2F200031B7883B940F24C03C2F20003AA +S113841001221A704FF4A040C4F20200114649F23E +S11384201903C0F2000398470FE040F24C03C2F274 +S1138430000300221A704FF4A040C4F2020001218C +S113844049F21903C0F20003984740F24803C2F20C +S113845000031C6010BD00BF08B54FF46070C0F28B +S1138460C01049F24543C0F20003984748F2A133D3 +S1138470C0F20003984748F2B943C0F2000398479A +S113848048F29133C0F20003984748F2F503C0F272 +S11384900003984748F2DD35C0F2000548F2152480 +S11384A0C0F20004A847A047FCE700BF40F2500315 +S11384B0C2F200031960FEE708B549F20163C0F295 +S11384C00003984744F6D353C1F26203A3FB002090 +S11384D0800949F6E503C0F20003984749F6BD0355 +S11384E0C0F20003984749F6D103C0F2000398474D +S11384F040F25403C2F2000300221A6008BD00BF18 +S113850040F25403C2F200031868704740F2540367 +S1138510C2F200031A6801321A607047FEE700BF16 +S113852020F480520023C4F204039A4208D04FF48A +S11385300053C4F20403984214BF00200120704782 +S1138540012070474FF48053C4F20403984210D0C2 +S11385504FF40053C4F20403984208D00023C4F239 +S1138560040398420CBF37204FF0FF307047392086 +S113857070473820704700BF82B001600023019328 +S1138580019B042B05DC019B01330193019B042B0C +S1138590F9DD02B0704700BF70B582B0044620F424 +S11385A07F6020F00F0048F24553C0F20003984763 +S11385B00546B0F1FF3F10D149F63430C0F2000057 +S11385C0F92148F2AD43C0F2000398474EF2041378 +S11385D0CEF200031B68002611E04EF20413CEF223 +S11385E000031B68A0F13002012101FA02F212EA31 +S11385F0030604D049F2E513C0F200039847236848 +S1138600002301930199042905DC019B01330193A3 +S1138610019B042BF9DD24682EB1284649F23D1351 +S1138620C0F200039847204602B070BD2DE9F8431C +S1138630804648F22153C0F20003984750B949F6E6 +S11386403430C0F2000040F2D91148F2AD43C0F218 +S1138650000398474046012148F27953C0F20003D1 +S1138660984708F1200548F29956C0F200062C46B6 +S11386702846B04710F4004FF9D108F124094846C0 +S1138680B02148F27955C0F20005A84708F134003A +S11386900021A84708F138000021A847012648F224 +S11386A09955C0F2000548F27957C0F200072046F8 +S11386B0A84710F4004FFAD120463146B847013696 +S11386C0212EF4D148460C2148F27953C0F200031C +S11386D09847012648F29955C0F2000548F27957A7 +S11386E0C0F200072046A84710F4004FFAD12046F4 +S11386F03146B8470136212EF4D108F1040048F27E +S11387009953C0F200039847BDE8F88310B50446B6 +S113871048F22153C0F20003984750B949F6343067 +S1138720C0F2000040F23A2148F2AD43C0F2000327 +S11387309847204648F29953C0F20003984720F026 +S11387400101204648F27953C0F20003984710BD56 +S1138750F8B505460C4648F22153C0F20003984789 +S113876050B949F63430C0F200004FF4597148F260 +S1138770AD43C0F20003984754B949F63430C0F20F +S1138780000040F2653148F2AD43C0F2000398475F +S11387902368023B0E2B0AD949F63430C0F200009C +S11387A040F26B3148F2AD43C0F20003984763686E +S11387B0013B072B0AD949F63430C0F200004FF4CC +S11387C05C7148F2AD43C0F200039847A368013BD3 +S11387D0032B0AD949F63430C0F2000040F2753157 +S11387E048F2AD43C0F200039847E368013BB3F598 +S11387F0806F0AD349F63430C0F2000040F27B3176 +S113880048F2AD43C0F200039847284648F2995312 +S1138810C0F2000398470746284647F0410148F252 +S11388207956C0F20006B0476368591E090301F483 +S1138830E0412368013B1B0203F470631943E368BE +S1138840013B03F03F031943A368013B9B01DBB2E7 +S113885005F10C001943B047E168013905F118002E +S1138860C1F38311B04717F0010F0CBF27F040018B +S113887027F04101284648F27953C0F20003984793 +S1138880F8BD00BF70B505460C4648F22153C0F24E +S11388900003984750B949F63430C0F2000040F262 +S11388A0925148F2AD43C0F200039847032C3ED8DE +S11388B0DFE804F00213212F0435284648F29953C7 +S11388C0C0F200039847044628466FF01F0148F29F +S11388D07953C0F2000398472AE005F5807048F206 +S11388E09956C0F20006B047044605F58270B047B9 +S11388F044EA00441CE005F5907048F29956C0F231 +S11389000006B047044605F59270B04744EA0044B7 +S11389100EE005F5B07048F29956C0F20006B04773 +S1138920044605F5B270B04744EA004400E0002470 +S1138930204670BD2DE9F04F89B0054602911646D8 +S1138940984648F22153C0F20003984750B949F6BB +S11389503430C0F2000040F25F6148F2AD43C0F22F +S113896000039847DDF8089009F1FF331F2B0AD95B +S113897049F63430C0F200004FF4CC6148F2AD4304 +S1138980C0F200039847B8F1040F0AD949F634300D +S1138990C0F2000040F2666148F2AD43C0F2000349 +S11389A0984705F1200748F29959C0F200094C464E +S11389B0B9463846A04710F4004FF9D13C46326816 +S11389C0B2F5006F3ABFB368C3F3800C4FF0010CEB +S11389D0B8F1040F00F2F680DFE808F0033711194C +S11389E0290001214FF480774FF4005E4FF0000915 +S11389F0CDF80490CDF80C904FF093082DE00021B1 +S1138A000F468E46019103914FF0930825E0002113 +S1138A104FF480574FF4005E41F6FF79CDF804908F +S1138A2009F56049CDF80C904FF0D30815E0012109 +S1138A304FF490574FF4005E4FF00009CDF80490C6 +S1138A40CDF80C904FF0930807E000214FF48077A5 +S1138A508E46019103914FF09308B36813F0080F09 +S1138A6017D0BCF1000F08D070681FFA80F9CDF858 +S1138A700C90C0F30C4001900BE07068800041F64C +S1138A80FC7900EA0909CDF804904FF00009CDF80B +S1138A900C9003F02800282802BFDDF8049049F464 +S1138AA00049CDF8049003F01800182802BFDDF83F +S1138AB0049049F48049CDF8049013F0380F1CBF9A +S1138AC047F480574FF0D30848F02008CDF81480BD +S1138AD0BCF1000F0BD01FFA82F9CDF81890C2F345 +S1138AE00C4242F4404242EA0E0207920BE092002A +S1138AF0C2F30C0242F4004242EA0E0207924FF023 +S1138B000009CDF81890F26802F00F0947EA090944 +S1138B1013F4007F04BF49F080091FFA89F913F0A8 +S1138B20010F18BF49F4006913F0020F18BF49F48C +S1138B308069F1B1D6F810B005F13C089246002ADC +S1138B4017DD0127002648F27950C0F20000049096 +S1138B5040461BF80610BA452EDD02361BF80730D6 +S1138B6041EA0321049A904708F104080237B24508 +S1138B70EEDC05F12400059948F27956C0F20006AE +S1138B80B04705F128000399B04705F12C0001997D +S1138B90B04705F130000699B04705F13400079954 +S1138BA0B04705F138004946B0472046DDF8089043 +S1138BB009F03F01B04705E048F27953C0F20003E1 +S1138BC09847D6E709B0BDE8F08F00BF2DE9F04F14 +S1138BD083B006468A4615461C4648F22152C0F226 +S1138BE00002904750B949F63430C0F2000040F218 +S1138BF0C17148F2AD43C0F2000398470AF1FF3354 +S1138C001F2B0AD949F63430C0F2000040F2C27179 +S1138C1048F2AD43C0F20003984706F1840B58466E +S1138C20002C14BF7B21732148F27957C0F200074E +S1138C30B84706F180040AF03F0A20465146B84777 +S1138C4048F29957C0F200072046B84710F4004F85 +S1138C50FAD106F1880048F29957C0F20007B847E4 +S1138C60019006F18C00B847814606F19000B847A0 +S1138C70009006F19400B847804606F19800B84782 +S1138C800023AB6083B213F4807F03D118F4005F38 +S1138C9003D104E018F4005F01D14022AA601FFA56 +S1138CA088F818F480421FBFC8F30C08009FB9B2BB +S1138CB041EA08411FBF2960A96841F00401A96085 +S1138CC004BFC8F38A01296013F4804F1EBFA9684A +S1138CD041F48071A96013F4805F31D09AB1C9F373 +S1138CE00C02019FB9B241EA02426A606FF060412E +S1138CF08A4203D1AA6812F0400F13D1AA6842F045 +S1138D000802AA600EE0C9F38A026A6040F2FF71A9 +S1138D108A4203D1AA6812F0400F03D1AA6842F034 +S1138D200802AA6019F4004F1EBFAA6842F0280284 +S1138D30AA6019F4804F1EBFAA6842F01802AA6004 +S1138D4013F4006F1EBFAA6842F00102AA6013F474 +S1138D50806F1EBFAB6843F00203AB6010F4004F9A +S1138D6004BF0023EB603BD000F00F00E860AB6869 +S1138D7013F0400F1CD12F6900979C368146B8B17F +S1138D804FF00108002748F29953C0F20003019301 +S1138D903046019B9847009BD855C14508DD0237F2 +S1138DA0000A03F80800043608F10208B945EFDCAC +S1138DB05846042148F27956C0F20006B0472046CE +S1138DC05146B04748F29956C0F200062046B047D3 +S1138DD010F4004FFAD1AB6843F08003AB60FFE7B7 +S1138DE003B0BDE8F08F00BFEFF3108062B67047A8 +S1138DF020F480534FF40042C4F20502934218BF9A +S1138E00B3F1402F31D04FF4C041C4F200014FF40C +S1138E102042C4F20502934218BF8B4227D04FF47C +S1138E208041C4F202014FF44042C4F2050293426D +S1138E3018BF8B421DD04FF4C041C4F202014FF45D +S1138E406042C4F20502934218BF8B4213D04FF420 +S1138E505042C4F203020023C4F20603984218BF2E +S1138E60904214BF00200120704701207047012068 +S1138E707047012070470120704700BF70B5044659 +S1138E800E46154648F6F153C0F20003984748B918 +S1138E9049F64830C0F20000E42148F2AD43C0F284 +S1138EA000039847022D09D949F64830C0F2000062 +S1138EB0E62148F2AD43C0F20003984715F0010FD4 +S1138EC004F58063D4F8002414BF3243B2431A601B +S1138ED015F0020F04F58463D4F8202414BF16435C +S1138EE022EA06061E6070BDF8B504460D46174614 +S1138EF01E4648F6F153C0F20003984750B949F6AC +S1138F004830C0F200004FF4DD7148F2AD43C0F2C6 +S1138F100003984727F008027B1E042A18BF012B80 +S1138F200AD949F64830C0F200004FF4DF7148F224 +S1138F30AD43C0F200039847A6F10803052B0BD9F3 +S1138F4056B149F64830C0F2000040F2C51148F26B +S1138F50AD43C0F20003984717F0010F04F5A06376 +S1138F60D4F8002514BF2A43AA431A6017F0020F4D +S1138F7004F20453D4F8042514BF2A43AA431A6004 +S1138F8017F0040F04F5A163D4F8082514BF2A438D +S1138F90AA431A6017F0080F04F5A363D4F8182540 +S1138FA014BF2A43AA431A6016F0010F04F20C53AB +S1138FB0D4F80C2514BF2A43AA431A6016F0020FF2 +S1138FC004F5A263D4F8102514BF2A43AA431A60F7 +S1138FD016F0040F04F21453D4F8142514BF2A43D2 +S1138FE0AA431A6016F0080F04F21C53D4F81C2587 +S1138FF014BF2A43AA431A602EB904F5A563D4F812 +S11390002825154305E004F5A563D4F8282522EAAC +S113901005051D60F8BD00BF70B504460D46164633 +S113902048F6F153C0F20003984750B949F6483066 +S1139030C0F200004FF4517148F2AD43C0F2000396 +S1139040984744F8256070BD38B505460C4648F687 +S1139050F153C0F20003984750B949F64830C0F2C2 +S113906000004FF4647148F2AD43C0F20003984726 +S113907028462146022248F67D63C0F20003984741 +S1139080284621460422082348F6E964C0F2000475 +S1139090A04738BD38B505460C4648F6F153C0F232 +S11390A00003984750B949F64830C0F2000040F236 +S11390B0044148F2AD43C0F20003984728462146D4 +S11390C0012248F67D63C0F20003984728462146F2 +S11390D00122082348F6E964C0F20004A04738BD21 +S11390E038B505460C4648F6F153C0F200039847DC +S11390F050B949F64830C0F2000040F21F5148F21E +S1139100AD43C0F20003984728462146022248F6A0 +S11391107D63C0F2000398472846214601220823B4 +S113912048F6E964C0F20004A04738BD08B548F623 +S1139130E953C0F200039847C0B208BD10B5044615 +S113914046280AD949F66030C0F200004FF4D571C0 +S113915048F2AD43C0F200039847042C08D14EF600 +S11391602453CEF200031A6842F480321A6010BD10 +S1139170052C08D14EF62453CEF200031A6842F4AB +S113918000321A6010BD062C08D14EF62453CEF2DC +S113919000031A6842F480221A6010BD0F2C08D113 +S11391A04EF21003CEF200031A6842F002021A6073 +S11391B010BDA4F110031F2B08D8012202FA03F3F7 +S11391C04FF46142CEF20002136010BD2F2C08D977 +S11391D0303C012303FA04F44EF20413CEF20003EC +S11391E01C6010BD10B5044646280AD949F6603003 +S11391F0C0F200004FF4F77148F2AD43C0F200032F +S11392009847042C08D14EF62453CEF200031A6872 +S113921022F480321A6010BD052C08D14EF6245376 +S1139220CEF200031A6822F400321A6010BD062C34 +S113923008D14EF62453CEF200031A6822F4802299 +S11392401A6010BD0F2C08D14EF21003CEF20003A9 +S11392501A6822F002021A6010BDA4F110031F2B39 +S113926008D8012202FA03F34EF28012CEF2000271 +S1139270136010BD2F2C08D9303C012303FA04F4E9 +S11392804EF28413CEF200031C6010BD30B420F003 +S11392908053A3F58012013A4FF48071C0F210019B +S11392A08B4218BF012A98BF012040F297804FF4E7 +S11392B00071C0F210014FF48062C0F210029342B8 +S11392C018BF8B4208BF012000F088804FF4A041F2 +S11392D0C2F2100100F16042013A884218BF012A2B +S11392E098BF01207AD90422C2F20002904208BF3A +S11392F0012073D01022C2F20002904208BF012064 +S11393006CD02022C2F20002904208BF012065D036 +S113931020F480148021C2F200014FF48072C2F262 +S11393200002944218BF8B4208BF012056D020F09F +S11393300052B0F1102F18BF402A08BF01204DD0B1 +S11393404FF48041C1F200018C4208BF012045D096 +S1139350B0F1101F08BF012040D04FF48075C1F256 +S113936000054FF40071C1F20001884218BFA84201 +S113937008BF012032D01025C1F200052021C1F21E +S113938000018A4218BFAA4208BF012026D0082142 +S1139390C1F2100188421CD000F170410139012949 +S11393A017D90421C1F200018C4214D0B0F1202F4E +S11393B013D00121C2F2100188420ED04FF4805024 +S11393C0C0F21000834218BF082A14BF00200120F5 +S11393D004E0012002E0012000E0012030BC7047DD +S11393E010B5044649F28D23C0F20003984750B9E2 +S11393F049F6D830C0F200004FF4FC7148F2AD4396 +S1139400C0F20003984749F6F033C0F20003220F7C +S113941053F822301A68A1B2C4F3044401FA04F4E4 +S113942014431C6010BD00BF4EF60C53CEF2000373 +S11394300422C0F2FA521A60FEE700BF01387FF43A +S1139440FDAF704770B504464FF46043C4F20F0398 +S11394501B6813F0E04F0BD04FF46043C4F20F03CA +S11394601A680023C7F2FF031340B3F1805F02D1EF +S1139470002CC0F2C3804EF26002C4F20F021168E5 +S11394804EF27003C4F20F031E6821F4800545F404 +S1139490006546F400601560186011F0020F02D0F8 +S11394A014F0020F05D011F0010F24D014F0010FB5 +S11394B021D164F003031D404EF26003C4F20F0394 +S11394C01D60002804DA06F03003302B04D00BE0D2 +S11394D005F03003302B07D14FF4805049F23D435F +S11394E0C0F20003984706E04FF4002049F23D43E0 +S11394F0C0F20003984725F45F5525F0300543F288 +S1139500F07323401D434DF68F73C7F6FF7333404A +S113951043F4006242F23003C8F2000323401343D1 +S113952004F008024EF25801C4F20F014020086012 +S113953053EAC2060AD54EF27003C4F20F031E604A +S11395404EF26003C4F20F031D6009E04EF26003A3 +S1139550C4F20F031D604EF27003C4F20F031E60C9 +S1139560102049F23D42C0F20002904725F0F86015 +S113957020F003000323C0F2C0732340184326F0F5 +S1139580FC5604F0FC510E4314F0804F1FBF40F40E +S1139590800026F480050023C4F240031ABF234050 +S11395A01D4326F0804514F4006F17D14EF250038A +S11395B0C4F20F031B6813F0400F0BD147F6FF737F +S11395C04EF25001C4F20F010A6812F0400F01D1AB +S11395D0013BF9D120F4006025F400654EF26003EC +S11395E0C4F20F0318604EF27003C4F20F031D603F +S11395F0102049F23D43C0F20003984770BD00BFFC +S113960030B44EF26003C4F20F0319684EF27003D3 +S1139610C4F20F031A68002AB4BF02F0700301F009 +S11396203003202B71D003D87BB1102B16D037E137 +S1139630602B00F0C180702B00F0BB80302B08BF82 +S113964003F5EA4300F0CF802AE149F67C33C0F207 +S11396500003C1F3841053F82030C4E04FF4604396 +S1139660C4F20F031B6813F0E04F04BF4EF2C013A3 +S1139670C0F2E40300F0B7804FF46043C4F20F0378 +S113968018680023C7F2FF030340B3F1805F00F0C2 +S113969096804FF46043C4F20F0318680023C7F2A6 +S11396A0FF0303400020C1F20100834208D14FF4BC +S11396B06043C4F20F031B689BB2022B00F084804A +S11396C04FF46043C4F20F0318680023C7F2FF038A +S11396D003400020C1F2030083421CBF4FF4105327 +S11396E0C0F2F4037FD14FF46043C4F20F031C684B +S11396F0A4B24FF4D853C0F2B7034FF41050C0F2E1 +S1139700F400002C18BF03466DE04FF46043C4F22C +S11397100F031B6813F0E04F04BF43F67003C0F25D +S1139720390360D04FF46043C4F20F031868002378 +S1139730C7F2FF030340B3F1805F4AD04FF46043A4 +S1139740C4F20F0318680023C7F2FF03034000208C +S1139750C1F20100834207D14FF46043C4F20F0306 +S11397601B689BB2022B39D04FF46043C4F20F0341 +S113977018680023C7F2FF0303400020C1F203006E +S113978083421CBF4FF41063C0F23D032BD14FF44E +S11397906043C4F20F031C68A4B24CF2C063C0F26D +S11397A02D034FF41060C0F23D00002C18BF034697 +S11397B019E04FF4004316E04FF4800313E04EF237 +S11397C0C013C0F2E4030EE04FF4D853C0F2B70361 +S11397D009E043F67003C0F2390304E04CF2C063BD +S11397E0C0F22D03FFE7002A03DA12F4006F03D05E +S11397F058E011F4006F5AD14EF26400C4F20F0025 +S113980000684FF46044C4F20F04246814F0E04F7D +S11398100BD04FF46044C4F20F0425680024C7F24F +S1139820FF042C40B4F1805F0AD1C0F34814023421 +S113983004FB03F300F01F040234B3FBF4F309E068 +S1139840C0F3481404FB03F300F01F040134640064 +S1139850B3FBF4F310F4804F18BF5B0810F4004F0F +S113986018BF9B08002AA8BF41F4800112DA12F045 +S1139870804F09D012F4006F06D15B00C2F3865208 +S11398800132B3FBF2F016E0C2F3C5500130B3FB72 +S1139890F0F010E0C1F3C3500130B3FBF0F00AE084 +S11398A0002008E011F4800FE1D1184603E011F420 +S11398B0800FEFD1184630BC704700BF4EF2100342 +S11398C0CEF200031A6842F005021A60704700BF26 +S11398D04EF21003CEF200031A6842F002021A603C +S11398E0704700BF10B5441EB4F1807F09D349F618 +S11398F0FC30C0F20000D02148F2AD43C0F20003B6 +S113990098474EF21403CEF200031C6010BD00BF52 +S113991020F480524FF44043C4F200039A4208D02A +S11399204FF46043C4F20003984214BF00200120A6 +S113993070470120704700BF10B5044649F6111363 +S1139940C0F20003984750B949F61440C0F2000031 +S11399504FF4CF7148F2AD43C0F200039847E36A75 +S113996043F01003E362236B43F4407343F00103B9 +S1139970236310BD10B5044649F61113C0F2000369 +S1139980984750B949F61440C0F200004FF4DF7113 +S113999048F2AD43C0F200039847A36913F0080FDF +S11399A0FBD1E36A23F01003E362236B23F44073D7 +S11399B023F00103236310BDF8B504460E46154693 +S11399C01F4649F61112C0F20002904750B949F6F9 +S11399D01440C0F2000040F20D1148F2AD43C0F251 +S11399E00003984755B949F61440C0F200004FF4FB +S11399F0877148F2AD43C0F2000398474FF46042C8 +S1139A00C4F20F02136813F0E04F08BF102340D0D4 +S1139A104FF46043C4F20F031A680023C7F2FF0334 +S1139A201340B3F1805F08BF102332D04FF460437A +S1139A30C4F20F031A680023C7F2FF031340002285 +S1139A40C1F20102934209D14FF46043C4F20F03FF +S1139A501B689BB2022B08BF10231AD04FF460433B +S1139A60C4F20F031A680023C7F2FF031340002255 +S1139A70C1F20302934218BF08230AD14FF4604392 +S1139A80C4F20F031B689BB2002B0CBF10230823E6 +S1139A90FFE705FB03F3B3420AD949F61440C0F2C9 +S1139AA0000040F20F1148F2AD43C0F200039847A2 +S1139AB0204649F67512C0F200029047B6EB051F26 +S1139AC0236B3DBF43F0200323636D0823F0200381 +S1139AD028BF2363F600B6FBF5F50135EB09636295 +S1139AE0C5F34505A562E7620023A361204649F654 +S1139AF03913C0F200039847F8BD00BF10B50446FF +S1139B0049F61113C0F20003984750B949F61440BE +S1139B10C0F2000040F2094148F2AD43C0F2000334 +S1139B209847A36913F0100F0CBF20684FF0FF3063 +S1139B3010BD00BF6C69622F6472697665726C69CE +S1139B40622F63616E2E63006C69622F64726976A2 +S1139B5065726C69622F6770696F2E630000000084 +S1139B606C69622F6472697665726C69622F696EC2 +S1139B70746572727570742E6300000040420F00A9 +S1139B8000201C0080841E0000802500999E360061 +S1139B900040380000093D0000803E0000004B00FA +S1139BA0404B4C0000204E00808D5B0000C05D00E7 +S1139BB00080700000127A0000007D0080969800FA +S1139BC0001BB7000080BB00C0E8CE00647ADA0056 +S1139BD00024F4000000FA006C69622F6472697654 +S1139BE065726C69622F73797363746C2E63000001 +S1139BF000E10F4004E10F4008E10F406C69622F5F +S1139C006472697665726C69622F737973746963BF +S1139C106B2E63006C69622F6472697665726C697D +S10F9C20622F756172742E630000000056 +S90380007C diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/memory.x index 2016bd61..9bb1ade9 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_GCC/Prog/memory.x @@ -1,6 +1,6 @@ MEMORY { - FLASH (rx) : ORIGIN = 0x00004000, LENGTH = 240K + FLASH (rx) : ORIGIN = 0x00008000, LENGTH = 224K SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K } diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.out b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.out index 96df6081..338b0a74 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.out and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.out differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.sim b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.sim index 08ff93e4..c25d7256 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.sim and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.sim differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.srec index a7143b06..e1972825 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/bin/openbtl_ek_lm3s8962.srec @@ -1,21 +1,21 @@ S01B00006F70656E62746C5F656B5F6C6D3373383936322E737265632F -S1130000F80600200D170000F5230000F52300007A -S1130010F5230000F5230000F5230000F52300007C -S1130020F5230000F5230000F5230000F52300006C -S1130030F5230000F5230000F5230000F52300005C -S1130040F5230000F5230000F5230000F52300004C -S1130050F5230000F5230000F5230000F52300003C -S1130060F5230000F5230000F5230000F52300002C -S1130070F5230000F5230000F5230000F52300001C -S1130080F5230000F5230000F5230000F52300000C -S1130090F5230000F5230000F5230000F5230000FC -S11300A0F5230000F5230000F5230000F5230000EC -S11300B0F5230000F5230000F5230000F5230000DC -S11300C0F5230000F5230000F5230000F5230000CC -S11300D0F5230000F5230000F5230000F5230000BC -S11300E0F5230000F5230000F5230000F5230000AC -S11300F0044B9D46C046C046C046C04601F0CFFAF8 -S113010001F03CFEF80600202649884205D0264925 +S1130000F806002001170000E9230000E92300009E +S1130010E9230000E9230000E9230000E9230000AC +S1130020E9230000E9230000E9230000E92300009C +S1130030E9230000E9230000E9230000E92300008C +S1130040E9230000E9230000E9230000E92300007C +S1130050E9230000E9230000E9230000E92300006C +S1130060E9230000E9230000E9230000E92300005C +S1130070E9230000E9230000E9230000E92300004C +S1130080E9230000E9230000E9230000E92300003C +S1130090E9230000E9230000E9230000E92300002C +S11300A0E9230000E9230000E9230000E92300001C +S11300B0E9230000E9230000E9230000E92300000C +S11300C0E9230000E9230000E9230000E9230000FC +S11300D0E9230000E9230000E9230000E9230000EC +S11300E0E9230000E9230000E9230000E9230000DC +S11300F0044B9D46C046C046C046C04601F0C9FAFE +S113010001F036FEF80600202649884205D026492B S1130110884202D02549884201D10120704700203D S113012070472049884206D01F49884205D01F499C S1130130884204D005E037207047382070473920C2 @@ -250,341 +250,340 @@ S1130F700040380000093D0000803E0000004B00A6 S1130F80404B4C0000204E00808D5B0000C05D0093 S1130F900080700000127A0000007D0080969800A6 S1130FA0001BB7000080BB00C0E8CE00647ADA0002 -S1130FB00024F4000000FA004FF0FF305B490860A1 -S1130FC05B490860704770B504460D46164600F04C -S1130FD040F9FF2805D02819401E00F03AF9FF28EF -S1130FE001D1002070BD600A4002B0F5804F2B464D -S1130FF03246214603D14E48BDE870409AE04B4842 -S1131000BDE8704096E070B504460D4600F021F945 -S113101006462819401E00F01CF9FF2E01D0FF28B7 -S113102001D1002070BD01463046BDE87040E5E0C6 -S113103080B53F48016811F1010F01D1012002BDC3 +S1130FB00024F4000000FA004FF0FF305C490860A0 +S1130FC05C490860704770B504460D46164600F04B +S1130FD042F9FF2805D02819401E00F03CF9FF28EB +S1130FE001D1002070BD600A4002B0F5004F2B46CD +S1130FF03246214603D14F48BDE870409CE04C483E +S1131000BDE8704098E070B504460D4600F023F941 +S113101006462819401E00F01EF9FF2E01D0FF28B5 +S113102001D1002070BD01463046BDE87040E7E0C4 +S113103080B54048016811F1010F01D1012002BDC2 S1131040416882685118C26851180269511842698E S1131050511882695118C0694018C043401C00905F -S113106000AA042144F2F000FFF7ADFF02BD4FF4E3 -S1131070804001684268511882685118C26851184A -S113108002695118426951188069401844F2F0010C +S113106000AA042148F2F000FFF7ADFF02BD4FF4DF +S1131070004001684268511882685118C2685118CA +S113108002695118426951188069401848F2F00108 S11310900968081801D1012070470020704780B505 -S11310A02348016811F1010F03D000F081F80028F2 -S11310B008D01E48016811F1010F05D000F078F83E -S11310C0002801D1002002BD012002BD80B5CA055F -S11310D001D0002002BD02688A4201D1012002BD74 -S11310E001604FF40072001D00F080F9012002BD80 -S11310F038B504460D460E48844208D10B4C2946A7 -S11311002046FFF7E3FF00280DD1002032BDB5F5DE -S1131110804F01D10446F2E7204600F049F8002848 -S1131120EDD1002032BD204632BD00004400002035 -S1131130480200202DE9F0410746884614461D4622 -S11311404FEA58267602386810F1010F05D131466E -S11311503846FFF7BBFF00281DD03868B04205D0E1 -S113116031463846FFF7C4FF070014D03868A8EBAF -S11311700000C01900F10408FFF71DFC381DA8EB9E -S11311800000B0F5007F0AD306F500713846FFF77A -S1131190AFFF070001D1002008E007F1040814F8AC -S11311A0010B08F8010B6D1EE6D10120BDE8F081AA -S11311B0F8B504460125206800F04BF8FF2801D15A -S11311C00020F2BD002600E0761C802E14D2216897 -S11311D011EB860714EB860040680090FFF7EBFBE9 -S11311E00422394600A800F047F9002803D13868E2 -S11311F000998842E8D000252846F2BDF8B50D468E -S1131200854222D3022820D3142D1ED200F03CF8AC -S11312100446284600F038F80646284600F04CF804 -S11312208019401E001B401C850AADB2002600E058 -S1131230761CB6B23746AF4209DAFFF7BCFB04EBC3 -S1131240872000F0FDF80028F2D00020F2BD012034 -S1131250F2BD38B50446002501E06D1CEDB2122D37 -S113126010D2FFF7A8FB05EB450080000FF27801D0 -S113127042589442F1D34018416889188C42ECD208 -S1131280007A32BDFF2032BD38B50446002500E0A7 -S11312906D1CEDB2122D0CD2FFF78DFB05EB450052 -S11312A080000FF244014218127AA242F0D1405851 -S11312B032BD4FF0FF3032BD38B50446002500E0A2 -S11312C06D1CEDB2122D0CD2FFF775FB05EB45003A -S11312D00FF2140101EB8000017AA142F0D14068C1 -S11312E032BD002032BD000000400000002000009C -S11312F00200000000600000002000000300000065 -S113130000800000002000000400000000A0000095 -S1131310002000000500000000C0000000200000C4 -S11313200600000000E000000020000007000000AC -S1131330000001000020000008000000002001005F -S1131340002000000900000000400100002000000F -S11313500A00000000600100002000000B000000F3 -S113136000800100002000000C00000000A001002B -S1131370002000000D00000000C00100002000005B -S11313800E00000000E00100002000000F0000003B -S11313900000020000800000100000000080020035 -S11313A00080000011000000000003000080000025 -S11313B01200000000800300008000001300000001 -S11313C080B500F0E7F800280DD000F034F900F003 -S11313D086F905484FF48041016044F20400006836 -S11313E0BDE80240004701BD08ED00E070B50446C9 -S11313F00D46164605E015F8010B04F8010BFFF73E -S1131400DAFA3046461E80B20028F4D170BD00F0EE -S11314107DB910B450F8041B81B102681218001D84 -S113142050F8043BDC0744BFA9F10104E31852F867 -S1131430044B43F8044B091FF9D1EBE710BC704788 -S113144010B50446A00504D084210FF2DC00FFF798 -S1131450F3F9DFF8C000012141610460DFF8B8103E -S1131460816081688907FCD4C068C00702D54FF049 -S1131470FF3010BD002010BD70B504460D46164661 -S113148015F0030F04D0C8210FF29C00FFF7D4F924 -S113149016F0030F04D0C9210FF28C00FFF7CCF92A -S11314A0DFF8700001214161DFF870100968C90795 -S11314B026D5002E26D0E909C9010160184A06E0A4 -S11314C005F07C0154F8043B53502D1D361F15F0D4 -S11314D07C0F02D1016B002901D1002EF0D11149FA -S11314E00162016AC907FCD4E3E705602168416031 -S11314F00C4981608168C907FCD4241D2D1D361F49 -S1131500002EF2D1C068C00702D54FF0FF3070BD85 -S1131510002070BD00D00F40020042A4A0E10F40A3 -S113152000D10F40010042A4433A5C576F726B5CD8 -S1131530736F6674776172655C4F70656E424C546C -S11315405C5461726765745C44656D6F5C41524DB7 -S1131550434D335F4C4D33535F454B5F4C4D3353D9 -S1131560383936325F4941525C426F6F745C6C6942 -S1131570625C6472697665726C69625C666C6173E4 -S1131580686C69622E630000FFF716BDFFF71BBD90 -S1131590FFF739BDFFF76BBD80B5FFF749FD0028A4 -S11315A001D1002002BDBDE80140FFF778BD50F82D -S11315B0041B61B150F8042BD30744BFA9F1010304 -S11315C09A18002342F8043B091FFAD1EFE7704749 -S11315D010B582B00FF2E4000088ADF8000000F00E -S11315E0A1F800F0A1FA324C0120207000F022FB97 -S11315F0002020702F480078012802D100A800F0B4 -S1131600ABF813BD10B52A4C201D00F0DBFA0128FD -S113161004D101202070201D00F09EF8201D00F050 -S113162040FB012806D100202070201DBDE8104099 -S113163000F092B810BD704770B504460D461C4EBC -S11316403078012803D1C9B2204600F093FA3078EB -S1131650002804D12946C9B2204600F0FAFABDE8B0 -S1131660704000F073B812480078401E03D0401E4A -S1131670012802D903E00820704700207047402069 -S113168070470B480078401E03D0401E012802D941 -S113169003E0082070470020704740207047054849 -S11316A00121017070470348002101707047000058 -S11316B000000020F404002000F03FB8FF00000008 -S11316C080B500F00CF80F484CF24F314160002116 -S11316D08160052101600C480021016001BD0948B9 -S11316E000210160704707480068C00303D506481D -S11316F00168491C0160704780B5FFF7F4FF024898 -S1131700006802BD10E000E0F0040020044B9D4698 -S1131710C046C046C046C046FFF7C5FF00F02EFBDA -S1131720F8060020DFF8840300210180816480F83A -S11317304310A0F8441081707047DFF870030078FC -S1131740002801D10020704701207047DFF85C03B6 -S1131750002180F84310704710B50178D34CFF295D -S113176014D100F07FF894F84300012802D110202E -S113177000F070F8B4F94410012906DB012084F864 -S11317804300E01CBDE810404EE010BD2278012A61 -S1131790FBD1C92932D0CC293FD0CF293AD0D02986 -S11317A02FD0D12933D0D2292ED0F32917D0F42920 -S11317B00FD0F5290AD0F6290ED0FA2912D0FC2927 -S11317C013D0FD2914D0FE2915D029E000F0A0F88B -S11317D0C9E700F0BCF8C6E700F091F8C3E700F0F1 -S11317E0D6F8C0E700F079F8BDE700F074F8BAE77E -S11317F000F061F8B7E700F052F8B4E700F0EEF853 -S1131800B1E700F009F9AEE700F0D4F8ABE700F077 -S113181031F9A8E700F040F9A5E700F049F9A2E79B -S1131820202000F017F89EE789B2FFF705BF10B437 -S1131830002303E00478E318DBB2401C0C46611E6D -S1131840002CF7D11360012010BC70479748002189 -S1131850417070479549FE22CA7008710220A1F8B0 -S11318604400704710B5FFF7F1FF904C0120207041 -S1131870FF20E0701020207100206071FFF7F3FE5C -S1131880A071FFF7FEFEE071FFF7FBFE000A207275 -S113189001206072A0720820A4F8440010BD10B5A5 -S11318A0824C00202070FFF7D1FFFF20E070012060 -S11318B0A4F8440010BD7D48411CFF228A70002218 -S11318C0CA7042780A7100224A718A71CA7106216B -S11318D0A0F8441070470020BCE77448FF21C17091 -S11318E00FF2D011816400F2030100224A708A7061 -S11318F0CA7007224A600821A0F8441070476B4957 -S1131900FF22CA70406888640120A1F8440070472F -S1131910F8B504466678FFF7A6FE401EB04203DA27 -S11319202220BDE8F24095E7604D05F144073246B8 -S11319307968281DFFF75AFDFF20E8707868617800 -S1131940081878606078401CA5F84400F1BD70B5B3 -S11319500446FFF788FE401E6178884203DA22209D -S1131960BDE8704076E76168504D05F1440671604A -S11319706278281DFFF73AFDFF20E87070686178EF -S1131980081870606078401CA5F8440070BD38B534 -S1131990464CFF21E17004F20305E21D4168A06C8E -S11319A0FFF745FF68700020A870E8700820A4F8CD -S11319B0440031BD38B53D4CFF20E07004F203050E -S11319C000206870A870FFF74EFEE87000202871B0 -S11319D06871A8710720A4F8440031BD70B50546AC -S11319E0FFF741FE314C04F144066A1C411E706845 -S11319F0FFF7CCFD002803D13120BDE8704029E772 -S1131A00FF20E070FFF72FFE7168401E40187060E1 -S1131A100120A4F8440070BD38B50446FFF723FE46 -S1131A20801E6178884203DA2220BDE8324011E743 -S1131A301E48FF21C1700121A0F8441061780029DB -S1131A4007D1FFF7A9FD002813D13120BDE83240AA -S1131A5000E700F14405A21C6868FFF797FD002821 -S1131A6003D13120BDE83240F4E668686178081893 -S1131A70686031BD10B50D4C4168A06CFFF788FD5E -S1131A80002803D13120BDE81040E3E6FF20E070D8 -S1131A900120A4F8440010BD80B5FFF7B8FC03484A -S1131AA0FF21C1700121A0F8441001BD4C040020A5 -S1131AB03120CFE64F70656E424C540000B585B0BE -S1131AC00420029010200090642302E00098401E3D -S1131AD000900098002824D00820019001E0401EC6 -S1131AE0019001980028F1D000994118491C009AEE -S1131AF0521C5A43B2FBF1F2D2B2413A0B2AEED253 -S1131B001022B2FBF1F25143D1F11001E7D10428C4 -S1131B1000D20290039200A93548FEF7E1FB0120B0 -S1131B2000E0002005B000BD10B586B03148FEF7D6 -S1131B30F5FF2F4C2046FEF773FBFFF7BFFF01288C -S1131B4004D090210FF2B000FEF776FE2046FEF797 -S1131B50B2FB40F26760009040F2FF7001900820F1 -S1131B6002900390022300AA01212046FEF772FC92 -S1131B7006B010BD70B586B005460E461C4C01215A -S1131B802046FEF720FC800704D5AB210FF2680045 -S1131B90FEF752FE40F2E17000900020029003969E -S1131BA00495034600AA02212046FEF753FC0121B6 -S1131BB02046FEF708FC0546FEF7FDFEA807F6D40E -S1131BC006B070BD30B585B00446094D02212846E3 -S1131BD0FEF7F9FBC00701D4002007E004940123B9 -S1131BE000AA19462846FEF722FD012005B030BDA3 -S1131BF00000044000011000433A5C576F726B5CB4 -S1131C00736F6674776172655C4F70656E424C5495 -S1131C105C5461726765745C536F757263655C4193 -S1131C20524D434D335F4C4D33535C63616E2E63B1 -S1131C300000000080B53F48FEF770FFFFF71AF878 -S1131C4060234FF4614201463B48BDE8005000F078 -S1131C50B1B870B504460D46412D04DB57210FF28F -S1131C60E000FEF7E9FD284600F050F8012804D012 -S1131C705B210FF2CC00FEF7DFFD00260CE0FEF73F -S1131C809AFE305D00F042F8012804D064210FF27E -S1131C90B000FEF7D1FD761C2846B6B28642EED3DC -S1131CA070BD38B50546254C607800280AD1201D42 -S1131CB000F01FF8012803D101206070002020707B -S1131CC0002032BD20780019401D00F012F80128D0 -S1131CD0F6D12078421C22702079D2B28242EFD110 -S1131CE0201D411C2846FFF781FB00206070012065 -S1131CF032BD10B50446104800F00BF910F1010F85 -S1131D0002D02070012010BD002010BD10B50A4C77 -S1131D100146204600F011F9002803D1002010BD2F -S1131D20FEF749FE204600F0E1F80028F8D0012033 -S1131D3010BD00000100001000C000409804002005 -S1131D40433A5C576F726B5C736F6674776172654C -S1131D505C4F70656E424C545C5461726765745C90 -S1131D60536F757263655C41524D434D335F4C4D07 -S1131D7033535C756172742E6300000000F032F915 -S1131D80002801D000F030F9002000F041F900F003 -S1131D9065F90000DFF8CC11884207D0DFF8C811DC -S1131DA0884203D0DFF8C411884201D10120704772 -S1131DB000207047F8B504460E4617461D46FFF747 -S1131DC0E9FF002805D140F20D110FF2B810FEF71B -S1131DD033FD002F05D14FF487710FF2A810FEF7E1 -S1131DE02BFDDFF88C01016811F0E04F19D0DFF80A -S1131DF0841102680A40B2F1805F12D002680A407E -S1131E00DFF874319A4203D1026892B2022A08D0F0 -S1131E1002681140DFF86421914204D10068000493 -S1131E2001D1102000E008207843864205D240F218 -S1131E300F110FF25010FEF7FFFC204600F039F8A6 -S1131E4004F13000B6EB071F016804D241F0200111 -S1131E5001607F0802E021F020010160F000B0FB86 -S1131E60F7F0401C40088109616200F03F00A06265 -S1131E70E5620020A0612046BDE8F240FFE710B50E -S1131E800446FFF787FF002805D14FF4CF710FF206 -S1131E90F400FEF7D1FC04F12C00016841F01001BC -S1131EA0016004F13000016840F201321143016025 -S1131EB010BD10B50446FFF76DFF002805D14FF49F -S1131EC0DF710FF2C000FEF7B7FCA0690007FCD475 -S1131ED004F12C00016821F01001016004F13000CC -S1131EE00168DFF89C201140016010BD10B5044664 -S1131EF0FFF750FF002805D140F2E9310FF28400CA -S1131F00FEF79AFCA069400900F0010080F001008E -S1131F1010BD10B50446FFF73DFF002805D140F27F -S1131F2009410FF26000FEF787FCA069C00601D4E6 -S1131F30206810BD4FF0FF3010BD38B504460D4683 -S1131F40FFF728FF002805D140F25B410FF234006F -S1131F50FEF772FCA069800602D42560012032BD20 -S1131F60002032BD00C0004000D0004000E000402E -S1131F7000E00F400000FF7000000110000003109B -S1131F80FEFCFFFF433A5C576F726B5C736F6674C1 -S1131F90776172655C4F70656E424C545C5461723B -S1131FA06765745C44656D6F5C41524D434D335FAE -S1131FB04C4D33535F454B5F4C4D335338393632B8 -S1131FC05F4941525C426F6F745C6C69625C64721D -S1131FD0697665726C69625C756172746C69622E93 -S1131FE0630000000120704710B507497944183197 -S1131FF0064C7C44163404E00A68081D51188847CE -S11320000146A142F8D110BD3C0400005C0400006C -S113201080B500F005F800F023F800F02EF8FCE796 -S113202080B50A48FEF798FD0948FEF777FD0321BD -S11320304FF0402000F041F90648FEF76FFD032100 -S11320400548BDE8044000F01EB900008003C0014B -S113205001000020080000200070004000F098B942 -S113206080B5FEF7A7FCFFF72BFBFFF78DFAFFF710 -S1132070AFFABDE8014000F091B980B5FEF79BFCD2 -S1132080FFF731FBFFF7BEFABDE8014000F08FB95E -S1132090B0F1402F43D0DFF8581288423FD0DFF828 -S11320A0541288423BD0DFF85012884237D0DFF810 -S11320B04C12884233D0DFF8481288422FD0DFF820 -S11320C0441288422BD0DFF84012884227D0DFF830 -S11320D03C12884223D0DFF8381288421FD0DFF840 -S11320E0341288421BD0DFF83012884217D0DFF850 -S11320F02C12884213D0DFF8281288420FD0DFF860 -S1132100241288420BD0DFF82012884207D0DFF86F -S11321101C12884203D0DFF81812884201D1012032 -S113212070470020704770B506460C461546FFF709 -S1132130AFFF002804D1E4210FF2F810FEF77CFB76 -S1132140002D08D0012D06D0022D04D0E6210FF277 -S1132150E410FEF771FB06F58060E907016801D51C -S1132160214300E0A143016006F58460A9070168EA -S113217001D5214300E0A143016070BDF8B50446D8 -S11321800F4615461E46FFF783FF002805D14FF47E -S1132190DD710FF2A010FEF74FFB012D0BD0022DC5 -S11321A009D0042D07D00C2D05D04FF4DF710FF2A8 -S11321B08410FEF741FB082E11D00A2E0FD00C2EEE -S11321C00DD0092E0BD00B2E09D00D2E07D0002ECA -S11321D005D040F2C5110FF25C10FEF72DFBF84359 -S11321E004F5A061EA070A6801D53A4300E0024019 -S11321F00A6004F20451AA070A6801D53A4300E0D0 -S113220002400A6004F5A1616A070A6801D53A43ED -S113221000E002400A6004F5A3612A070A6801D5B8 -S11322203A4300E002400A6004F20C51F2070A68E3 -S113223001D53A4300E002400A6004F5A261B20706 -S11322400A6801D53A4300E002400A6004F21451DE -S113225072070A6801D53A4300E002400A6004F2BA -S11322601C5132070A6801D53A4300E002400A6073 -S113227004F5A561002E02D10868384301E00A681C -S113228010400860F1BD38B504460D46FFF700FF65 -S1132290002805D14FF464710FF29800FEF7CCFAD0 -S11322A0022229462046FFF73EFF0823042229463E -S11322B0204601B0BDE8304060E738B504460D461D -S11322C0FFF7E6FE002805D140F21F510FF264002B -S11322D0FEF7B2FA022229462046FFF724FF08231C -S11322E001222946204601B0BDE8304046E70000FF -S11322F00080054000500040009005400060004010 -S113230000A005400070004000B0054000400240BD -S113231000C005400050024000D00540006002406B -S113232000E005400070024000F0054000D003408A -S113233000000640433A5C576F726B5C736F6674BF -S1132340776172655C4F70656E424C545C54617287 -S11323506765745C44656D6F5C41524D434D335FFA -S11323604C4D33535F454B5F4C4D33533839363204 -S11323705F4941525C426F6F745C6C69625C647269 -S1132380697665726C69625C6770696F2E630000C0 -S11323900746384600F024F8FBE7000010B50F4C60 -S11323A001202070FFF7A8F96060BDE8104010B567 -S11323B0FFF782F901280FD0084C207801280BD1AF -S11323C0FFF79AF961683231884205D30020207002 -S11323D0BDE81040FEF7F4BF10BD0000E804002083 -S11323E080B5C046C046024A11001820ABBEFBE7C8 -S11323F02600020041210FF20800FEF71DBA00007A -S1132400433A5C576F726B5C736F66747761726585 -S11324105C4F70656E424C545C5461726765745CC9 -S1132420536F757263655C41524D434D335F4C4D40 -S113243033535C4941525C766563746F72732E63E7 -S1132440000000006BF1FFFFB00400004400002016 -S113245000000000BFEFFFFF440000001800000070 -S11324600000002000000000C046C046C046C04630 -S1132470FFF784FC040000000000000000000000DE +S11310A02448016811F1010F03D000F083F80028EF +S11310B008D01F48016811F1010F05D000F07AF83B +S11310C0002801D1002002BD012002BD4FF40040E0 +S11310D0704780B5CA0501D0002002BD02688A426B +S11310E001D1012002BD01604FF40072001D00F027 +S11310F077F9012002BD38B504460D460D488442F7 +S113110008D10B4C29462046FFF7E3FF00280DD1F8 +S1131110002032BDB5F5004F01D10446F2E7204668 +S113112000F048F80028EDD1002032BD204632BD41 +S113113044000020480200202DE9F041074688467B +S113114014461D464FEA58267602386810F1010FFE +S113115005D131463846FFF7BCFF00281DD038685A +S1131160B04205D031463846FFF7C5FF070014D01A +S11311703868A8EB0000C01900F10408FFF71BFC55 +S1131180381DA8EB0000B0F5007F0AD306F5007106 +S11311903846FFF7B0FF070001D1002008E007F14F +S11311A0040814F8010B08F8010B6D1EE6D10120A8 +S11311B0BDE8F081F8B504460125206800F04BF83D +S11311C0FF2801D10020F2BD002600E0761C802E0D +S11311D014D2216811EB860714EB86004068009056 +S11311E0FFF7E9FB0422394600A800F03FF9002884 +S11311F003D1386800998842E8D000252846F2BD1A +S1131200F8B50D46854222D3042820D3142D1ED2CE +S113121000F03CF80446284600F038F80646284614 +S113122000F04CF88019401E001B401C850AADB22A +S1131230002600E0761CB6B23746AF4209DAFFF763 +S1131240BAFB04EB872000F0F5F80028F2D0002068 +S1131250F2BD0120F2BD38B50446002501E06D1C45 +S1131260EDB2102D10D2FFF7A6FB05EB4500800070 +S11312700FF2780142589442F1D34018416889181A +S11312808C42ECD2007A32BDFF2032BD38B5044620 +S1131290002500E06D1CEDB2102D0CD2FFF78BFB86 +S11312A005EB450080000FF244014218127AA24275 +S11312B0F0D1405832BD4FF0FF3032BD38B504464E +S11312C0002500E06D1CEDB2102D0CD2FFF773FB6E +S11312D005EB45000FF2140101EB8000017AA142F5 +S11312E0F0D1406832BD002032BD00000080000013 +S11312F0002000000400000000A000000020000006 +S11313000500000000C000000020000006000000EE +S113131000E00000002000000700000000000100C1 +S11313200020000008000000002001000020000050 +S11313300900000000400100002000000A00000035 +S113134000600100002000000B000000008001008C +S1131350002000000C00000000A00100002000009C +S11313600D00000000C00100002000000E0000007D +S113137000E00100002000000F0000000000020057 +S113138000800000100000000080020000800000C7 +S113139011000000000003000080000012000000A3 +S11313A000800300008000001300000080B500F0FE +S11313B0EBF800280FD000F038F900F08AF9FFF7B5 +S11313C085FE0549084005490860FFF77FFE40682F +S11313D0BDE80240004701BD80FFFF1F08ED00E0AB +S11313E070B504460D46164605E015F8010B04F8E1 +S11313F0010BFFF7E0FA3046461E80B20028F4D114 +S113140070BD00F07DB910B450F8041B81B10268BE +S11314101218001D50F8043BDC0744BFA9F1010475 +S1131420E31852F8044B43F8044B091FF9D1EBE7D6 +S113143010BC704710B50446A00504D084210FF2F7 +S1131440DC00FFF7F9F9DFF8C00001214161046015 +S1131450DFF8B810816081688907FCD4C068C007D0 +S113146002D54FF0FF3010BD002010BD70B504460A +S11314700D46164615F0030F04D0C8210FF29C0048 +S1131480FFF7DAF916F0030F04D0C9210FF28C002C +S1131490FFF7D2F9DFF8700001214161DFF8701025 +S11314A00968C90726D5002E26D0E909C9010160BB +S11314B0184A06E005F07C0154F8043B53502D1DF6 +S11314C0361F15F07C0F02D1016B002901D1002ECB +S11314D0F0D111490162016AC907FCD4E3E7056050 +S11314E0216841600C4981608168C907FCD4241DCE +S11314F02D1D361F002EF2D1C068C00702D54FF053 +S1131500FF3070BD002070BD00D00F40020042A427 +S1131510A0E10F4000D10F40010042A4433A5C57C0 +S11315206F726B5C736F6674776172655C4F706524 +S11315306E424C545C5461726765745C44656D6FB3 +S11315405C41524D434D335F4C4D33535F454B5FCC +S11315504C4D3353383936325F4941525C426F6FD8 +S1131560745C6C69625C6472697665726C69625CF5 +S1131570666C6173686C69622E630000FFF71CBDC2 +S1131580FFF721BDFFF73FBDFFF771BD80B5FFF742 +S11315904FFD002801D1002002BDBDE80140FFF746 +S11315A07EBD50F8041B61B150F8042BD30744BF2F +S11315B0A9F101039A18002342F8043B091FFAD148 +S11315C0EFE7704710B582B00FF2E4000088ADF881 +S11315D0000000F0A1F800F0A1FA324C01202070C4 +S11315E000F022FB002020702F480078012802D14F +S11315F000A800F0ABF813BD10B52A4C201D00F074 +S1131600DBFA012804D101202070201D00F09EF88F +S1131610201D00F040FB012806D100202070201D71 +S1131620BDE8104000F092B810BD704770B5044694 +S11316300D461C4E3078012803D1C9B2204600F073 +S113164093FA3078002804D12946C9B2204600F024 +S1131650FAFABDE8704000F073B812480078401EF2 +S113166003D0401E012802D903E00820704700205F +S11316707047402070470B480078401E03D0401E3E +S1131680012802D903E00820704700207047402059 +S1131690704705480121017070470348002101701B +S11316A07047000000000020F404002000F03FB860 +S11316B0FF00000080B500F00CF80F484CF24F31E9 +S11316C0416000218160052101600C480021016016 +S11316D001BD094800210160704707480068C00344 +S11316E003D506480168491C0160704780B5FFF7BF +S11316F0F4FF0248006802BD10E000E0F00400209E +S1131700044B9D46C046C046C046C046FFF7C5FFD1 +S113171000F02EFBF8060020DFF88403002101808E +S1131720816480F84310A0F8441081707047DFF89A +S113173070030078002801D1002070470120704711 +S1131740DFF85C03002180F84310704710B501787E +S1131750D34CFF2914D100F07FF894F843000128FA +S113176002D1102000F070F8B4F94410012906DB0E +S1131770012084F84300E01CBDE810404EE010BD99 +S11317802278012AFBD1C92932D0CC293FD0CF29D4 +S11317903AD0D0292FD0D12933D0D2292ED0F32931 +S11317A017D0F4290FD0F5290AD0F6290ED0FA293A +S11317B012D0FC2913D0FD2914D0FE2915D029E01C +S11317C000F0A0F8C9E700F0BCF8C6E700F091F813 +S11317D0C3E700F0D6F8C0E700F079F8BDE700F001 +S11317E074F8BAE700F061F8B7E700F052F8B4E72C +S11317F000F0EEF8B1E700F009F9AEE700F0D4F834 +S1131800ABE700F031F9A8E700F040F9A5E700F0F4 +S113181049F9A2E7202000F017F89EE789B2FFF704 +S113182005BF10B4002303E00478E318DBB2401CC6 +S11318300C46611E002CF7D11360012010BC7047C8 +S113184097480021417070479549FE22CA7008717B +S11318500220A1F84400704710B5FFF7F1FF904C47 +S113186001202070FF20E0701020207100206071A2 +S1131870FFF7F3FEA071FFF7FEFEE071FFF7FBFE3A +S1131880000A207201206072A0720820A4F84400AB +S113189010BD10B5824C00202070FFF7D1FFFF204F +S11318A0E0700120A4F8440010BD7D48411CFF22D3 +S11318B08A700022CA7042780A7100224A718A71C1 +S11318C0CA710621A0F8441070470020BCE7744890 +S11318D0FF21C1700FF2D011816400F203010022D4 +S11318E04A708A70CA7007224A600821A0F844101E +S11318F070476B49FF22CA70406888640120A1F8D0 +S113190044007047F8B504466678FFF7A6FE401E0B +S1131910B04203DA2220BDE8F24095E7604D05F1BC +S1131920440732467968281DFFF75AFDFF20E87006 +S113193078686178081878606078401CA5F84400DD +S1131940F1BD70B50446FFF788FE401E61788842F9 +S113195003DA2220BDE8704076E76168504D05F156 +S1131960440671606278281DFFF73AFDFF20E87095 +S113197070686178081870606078401CA5F84400AD +S113198070BD38B5464CFF21E17004F20305E21D39 +S11319904168A06CFFF745FF68700020A870E870EC +S11319A00820A4F8440031BD38B53D4CFF20E07058 +S11319B004F2030500206870A870FFF74EFEE8707B +S11319C0002028716871A8710720A4F8440031BD73 +S11319D070B50546FFF741FE314C04F144066A1C1C +S11319E0411E7068FFF7CCFD002803D13120BDE80B +S11319F0704029E7FF20E070FFF72FFE7168401E5A +S1131A00401870600120A4F8440070BD38B5044645 +S1131A10FFF723FE801E6178884203DA2220BDE8A6 +S1131A20324011E71E48FF21C1700121A0F8441083 +S1131A306178002907D1FFF7A9FD002813D13120CF +S1131A40BDE8324000E700F14405A21C6868FFF7D6 +S1131A5097FD002803D13120BDE83240F4E66868E0 +S1131A6061780818686031BD10B50D4C4168A06CF0 +S1131A70FFF788FD002803D13120BDE81040E3E6DC +S1131A80FF20E0700120A4F8440010BD80B5FFF7EA +S1131A90B8FC0348FF21C1700121A0F8441001BD26 +S1131AA04C0400203120CFE64F70656E424C540048 +S1131AB000B585B00420029010200090642302E059 +S1131AC00098401E00900098002824D0082001901F +S1131AD001E0401E019001980028F1D000994118BE +S1131AE0491C009A521C5A43B2FBF1F2D2B2413A59 +S1131AF00B2AEED21022B2FBF1F25143D1F11001C4 +S1131B00E7D1042800D20290039200A93548FEF7D9 +S1131B10E7FB012000E0002005B000BD10B586B051 +S1131B203148FEF7FBFF2F4C2046FEF779FBFFF709 +S1131B30BFFF012804D090210FF2B000FEF77CFE15 +S1131B402046FEF7B8FB40F26760009040F2FF7059 +S1131B500190082002900390022300AA012120464C +S1131B60FEF778FC06B010BD70B586B005460E468B +S1131B701C4C01212046FEF726FC800704D5AB212E +S1131B800FF26800FEF758FE40F2E170009000206A +S1131B90029003960495034600AA02212046FEF70C +S1131BA059FC01212046FEF70EFC0546FEF703FF13 +S1131BB0A807F6D406B070BD30B585B00446094D0B +S1131BC002212846FEF7FFFBC00701D4002007E0EE +S1131BD00494012300AA19462846FEF728FD012093 +S1131BE005B030BD0000044000011000433A5C57CA +S1131BF06F726B5C736F6674776172655C4F70654E +S1131C006E424C545C5461726765745C536F7572B8 +S1131C1063655C41524D434D335F4C4D33535C63BC +S1131C20616E2E630000000080B53F48FEF776FF2A +S1131C30FFF720F860234FF4614201463B48BDE8BA +S1131C40005000F0B1B870B504460D46412D04DBD8 +S1131C5057210FF2E000FEF7EFFD284600F050F8A0 +S1131C60012804D05B210FF2CC00FEF7E5FD00262D +S1131C700CE0FEF7A0FE305D00F042F8012804D02D +S1131C8064210FF2B000FEF7D7FD761C2846B6B2E9 +S1131C908642EED370BD38B50546254C60780028E1 +S1131CA00AD1201D00F01FF8012803D10120607023 +S1131CB000202070002032BD20780019401D00F063 +S1131CC012F80128F6D12078421C22702079D2B271 +S1131CD08242EFD1201D411C2846FFF781FB0020E2 +S1131CE06070012032BD10B50446104800F00BF9B5 +S1131CF010F1010F02D02070012010BD002010BD92 +S1131D0010B50A4C0146204600F011F9002803D111 +S1131D10002010BDFEF74FFE204600F0E1F8002839 +S1131D20F8D0012010BD00000100001000C00040E8 +S1131D3098040020433A5C576F726B5C736F66744F +S1131D40776172655C4F70656E424C545C5461728D +S1131D506765745C536F757263655C41524D434DA6 +S1131D60335F4C4D33535C756172742E6300000015 +S1131D7000F032F9002801D000F030F9002000F022 +S1131D8041F900F065F90000DFF8CC11884207D072 +S1131D90DFF8C811884203D0DFF8C411884201D1AA +S1131DA00120704700207047F8B504460E461746D8 +S1131DB01D46FFF7E9FF002805D140F20D110FF28F +S1131DC0B810FEF739FD002F05D14FF487710FF2DB +S1131DD0A810FEF731FDDFF88C01016811F0E04F27 +S1131DE019D0DFF8841102680A40B2F1805F12D082 +S1131DF002680A40DFF874319A4203D1026892B251 +S1131E00022A08D002681140DFF86421914204D10B +S1131E100068000401D1102000E0082078438642C5 +S1131E2005D240F20F110FF25010FEF705FD2046C7 +S1131E3000F039F804F13000B6EB071F016804D252 +S1131E4041F0200101607F0802E021F020010160DF +S1131E50F000B0FBF7F0401C40088109616200F01B +S1131E603F00A062E5620020A0612046BDE8F24088 +S1131E70FFE710B50446FFF787FF002805D14FF4AC +S1131E80CF710FF2F400FEF7D7FC04F12C000168C7 +S1131E9041F01001016004F13000016840F20132A8 +S1131EA01143016010BD10B50446FFF76DFF002813 +S1131EB005D14FF4DF710FF2C000FEF7BDFCA0693D +S1131EC00007FCD404F12C00016821F0100101602A +S1131ED004F130000168DFF89C201140016010BD5E +S1131EE010B50446FFF750FF002805D140F2E93150 +S1131EF00FF28400FEF7A0FCA069400900F0010085 +S1131F0080F0010010BD10B50446FFF73DFF002826 +S1131F1005D140F209410FF26000FEF78DFCA06983 +S1131F20C00601D4206810BD4FF0FF3010BD38B595 +S1131F3004460D46FFF728FF002805D140F25B4117 +S1131F400FF23400FEF778FCA069800602D4256005 +S1131F50012032BD002032BD00C0004000D000404E +S1131F6000E0004000E00F400000FF70000001109E +S1131F7000000310FEFCFFFF433A5C576F726B5C7A +S1131F80736F6674776172655C4F70656E424C5412 +S1131F905C5461726765745C44656D6F5C41524D5D +S1131FA0434D335F4C4D33535F454B5F4C4D33537F +S1131FB0383936325F4941525C426F6F745C6C69E8 +S1131FC0625C6472697665726C69625C7561727474 +S1131FD06C69622E630000000120704710B5074948 +S1131FE079441831064C7C44163404E00A68081D10 +S1131FF0511888470146A142F8D110BD3C040000A5 +S11320005C04000080B500F005F800F023F800F04F +S11320102EF8FCE780B50A48FEF79EFD0948FEF756 +S11320207DFD03214FF0402000F041F90648FEF702 +S113203075FD03210548BDE8044000F01EB9000009 +S11320408003C0010100002008000020007000404F +S113205000F098B980B5FEF7ADFCFFF72BFBFFF756 +S11320608DFAFFF7AFFABDE8014000F091B980B5F1 +S1132070FEF7A1FCFFF731FBFFF7BEFABDE8014014 +S113208000F08FB9B0F1402F43D0DFF858128842E6 +S11320903FD0DFF8541288423BD0DFF85012884218 +S11320A037D0DFF84C12884233D0DFF84812884228 +S11320B02FD0DFF8441288422BD0DFF84012884238 +S11320C027D0DFF83C12884223D0DFF83812884248 +S11320D01FD0DFF8341288421BD0DFF83012884258 +S11320E017D0DFF82C12884213D0DFF82812884268 +S11320F00FD0DFF8241288420BD0DFF82012884278 +S113210007D0DFF81C12884203D0DFF81812884287 +S113211001D1012070470020704770B506460C4677 +S11321201546FFF7AFFF002804D1E4210FF2F810A1 +S1132130FEF782FB002D08D0012D06D0022D04D01D +S1132140E6210FF2E410FEF777FB06F58060E9075D +S1132150016801D5214300E0A143016006F58460D4 +S1132160A907016801D5214300E0A143016070BDC6 +S1132170F8B504460F4615461E46FFF783FF0028B0 +S113218005D14FF4DD710FF2A010FEF755FB012DC0 +S11321900BD0022D09D0042D07D00C2D05D04FF4FF +S11321A0DF710FF28410FEF747FB082E11D00A2EC0 +S11321B00FD00C2E0DD0092E0BD00B2E09D00D2EC6 +S11321C007D0002E05D040F2C5110FF25C10FEF7C7 +S11321D033FBF84304F5A061EA070A6801D53A43E2 +S11321E000E002400A6004F20451AA070A6801D51B +S11321F03A4300E002400A6004F5A1616A070A68F4 +S113220001D53A4300E002400A6004F5A3612A07BD +S11322100A6801D53A4300E002400A6004F20C5116 +S1132220F2070A6801D53A4300E002400A6004F567 +S1132230A261B2070A6801D53A4300E002400A608D +S113224004F2145172070A6801D53A4300E00240CF +S11322500A6004F21C5132070A6801D53A4300E0CF +S113226002400A6004F5A561002E02D108683843D3 +S113227001E00A6810400860F1BD38B504460D4617 +S1132280FFF700FF002805D14FF464710FF29800A6 +S1132290FEF7D2FA022229462046FFF73EFF082322 +S11322A004222946204601B0BDE8304060E738B535 +S11322B004460D46FFF7E6FE002805D140F21F5103 +S11322C00FF26400FEF7B8FA022229462046FFF70F +S11322D024FF082301222946204601B0BDE83040EE +S11322E046E7000000800540005000400090054093 +S11322F00060004000A005400070004000B00540B0 +S11323000040024000C005400050024000D005409B +S11323100060024000E005400070024000F005400B +S113232000D0034000000640433A5C576F726B5C78 +S1132330736F6674776172655C4F70656E424C545E +S11323405C5461726765745C44656D6F5C41524DA9 +S1132350434D335F4C4D33535F454B5F4C4D3353CB +S1132360383936325F4941525C426F6F745C6C6934 +S1132370625C6472697665726C69625C6770696FCD +S11323802E6300000746384600F024F8FBE70000FF +S113239010B50F4C01202070FFF7A8F96060BDE86C +S11323A0104010B5FFF782F901280FD0084C2078AF +S11323B001280BD1FFF79AF961683231884205D3BD +S11323C000202070BDE81040FEF7F0BF10BD0000F3 +S11323D0E804002080B5C046C046024A1100182017 +S11323E0ABBEFBE72600020041210FF20800FEF716 +S11323F023BA0000433A5C576F726B5C736F667468 +S1132400776172655C4F70656E424C545C546172C6 +S11324106765745C536F757263655C41524D434DDF +S1132420335F4C4D33535C4941525C766563746F42 +S113243072732E63000000006BF1FFFFB004000014 +S11324404400002000000000BFEFFFFF4400000034 +S1132450180000000000002000000000C046C04634 +S1132460C046C046FFF784FC0400000000000000E2 +S11324700000000000000000000000000000000058 S11324800000000000000000000000000000000048 S11324900000000000000000000000000000000038 -S11324A00000000000000000000000000000000028 -S10B24B0000000000000000020 -S90324696F +S10F24A00000000000000000000000002C +S903245D7B diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/lm3s8962.dep b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/lm3s8962.dep index 4b9f500a..875e7390 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/lm3s8962.dep +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/lm3s8962.dep @@ -6,41 +6,35 @@ Debug - $PROJ_DIR$\..\lib\driverlib\canlib.h - $PROJ_DIR$\..\lib\driverlib\debug.h - $PROJ_DIR$\..\lib\driverlib\canlib.c - $PROJ_DIR$\..\lib\driverlib\cpulib.c - $PROJ_DIR$\..\lib\driverlib\cpulib.h - $PROJ_DIR$\..\lib\driverlib\flashlib.c - $PROJ_DIR$\..\lib\driverlib\flashlib.h - $PROJ_DIR$\..\lib\driverlib\gpio.c - $PROJ_DIR$\..\lib\driverlib\gpio.h - $PROJ_DIR$\..\lib\driverlib\interrupt.c - $PROJ_DIR$\..\lib\driverlib\interrupt.h - $PROJ_DIR$\..\lib\driverlib\sysctl.c - $PROJ_DIR$\..\lib\driverlib\sysctl.h - $PROJ_DIR$\..\lib\driverlib\uartlib.c - $PROJ_DIR$\..\lib\driverlib\uartlib.h - $PROJ_DIR$\..\lib\inc\hw_can.h - $PROJ_DIR$\..\lib\inc\hw_flash.h - $PROJ_DIR$\..\lib\inc\hw_gpio.h - $PROJ_DIR$\..\lib\inc\hw_ints.h - $PROJ_DIR$\..\lib\inc\hw_memmap.h - $PROJ_DIR$\..\lib\inc\hw_nvic.h - $PROJ_DIR$\..\lib\inc\hw_sysctl.h - $PROJ_DIR$\..\lib\inc\hw_types.h - $PROJ_DIR$\..\lib\inc\hw_uart.h - $PROJ_DIR$\..\blt_conf.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c + $PROJ_DIR$\..\..\..\..\Source\assert.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\types.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.h + $PROJ_DIR$\..\..\..\..\Source\assert.h + $PROJ_DIR$\..\..\..\..\Source\backdoor.c + $PROJ_DIR$\..\..\..\..\Source\backdoor.h + $PROJ_DIR$\..\..\..\..\Source\boot.c + $PROJ_DIR$\..\..\..\..\Source\boot.h + $PROJ_DIR$\..\..\..\..\Source\com.c + $PROJ_DIR$\..\..\..\..\Source\com.h + $PROJ_DIR$\..\..\..\..\Source\cop.c + $PROJ_DIR$\..\..\..\..\Source\cop.h + $PROJ_DIR$\..\..\..\..\Source\plausibility.h + $PROJ_DIR$\..\..\..\..\Source\xcp.c + $PROJ_DIR$\..\..\..\..\Source\xcp.h $PROJ_DIR$\..\obj\boot.o $PROJ_DIR$\..\obj\com.o $PROJ_DIR$\..\obj\com.pbi + $PROJ_DIR$\..\obj\assert.pbi $PROJ_DIR$\..\obj\backdoor.pbi $PROJ_DIR$\..\obj\cop.o - $PROJ_DIR$\..\obj\assert.pbi $PROJ_DIR$\..\obj\backdoor.o - $PROJ_DIR$\..\obj\xcp.o $PROJ_DIR$\..\obj\cop.pbi $PROJ_DIR$\..\obj\xcp.pbi + $PROJ_DIR$\..\obj\xcp.o $PROJ_DIR$\..\obj\xcp.lst $PROJ_DIR$\..\obj\nvm.lst $PROJ_DIR$\..\obj\nvm.o @@ -61,10 +55,8 @@ $PROJ_DIR$\..\obj\flashlib.pbi $PROJ_DIR$\..\obj\cpulib.pbi $PROJ_DIR$\..\obj\gpio.pbi - $PROJ_DIR$\..\obj\interrupt.pbi - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\memory.x - $PROJ_DIR$\..\obj\sysctl.pbi $PROJ_DIR$\..\obj\uartlib.pbi + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\memory.x $PROJ_DIR$\..\obj\uart.o $PROJ_DIR$\..\obj\flash.pbi $PROJ_DIR$\..\obj\cpu.pbi @@ -89,36 +81,6 @@ $PROJ_DIR$\..\obj\assert.o $PROJ_DIR$\..\obj\assert.lst $PROJ_DIR$\..\obj\flash.lst - $PROJ_DIR$\..\hooks.c - $PROJ_DIR$\..\main.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s - $PROJ_DIR$\..\..\..\..\Source\assert.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\types.h - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.c - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.h - $PROJ_DIR$\..\..\..\..\Source\assert.h - $PROJ_DIR$\..\..\..\..\Source\backdoor.c - $PROJ_DIR$\..\..\..\..\Source\backdoor.h - $PROJ_DIR$\..\..\..\..\Source\boot.c - $PROJ_DIR$\..\..\..\..\Source\boot.h - $PROJ_DIR$\..\..\..\..\Source\com.c - $PROJ_DIR$\..\..\..\..\Source\com.h - $PROJ_DIR$\..\..\..\..\Source\cop.c - $PROJ_DIR$\..\..\..\..\Source\cop.h - $PROJ_DIR$\..\..\..\..\Source\plausibility.h - $PROJ_DIR$\..\..\..\..\Source\xcp.c - $PROJ_DIR$\..\..\..\..\Source\xcp.h $TOOLKIT_DIR$\lib\shb_l.a $PROJ_DIR$\..\obj\main.o $PROJ_DIR$\..\obj\backdoor.lst @@ -141,377 +103,60 @@ $PROJ_DIR$\..\bin\openbtl_ek_lm3s8962.srec $PROJ_DIR$\..\bin\openbtl_ek_lm3s8962.out $PROJ_DIR$\..\..\..\..\Source\file.h + $PROJ_DIR$\..\obj\interrupt.pbi + $PROJ_DIR$\..\lib\driverlib\cpulib.c + $PROJ_DIR$\..\lib\driverlib\debug.h + $PROJ_DIR$\..\lib\driverlib\canlib.h + $PROJ_DIR$\..\lib\driverlib\canlib.c + $PROJ_DIR$\..\lib\driverlib\cpulib.h + $PROJ_DIR$\..\lib\driverlib\flashlib.c + $PROJ_DIR$\..\lib\driverlib\flashlib.h + $PROJ_DIR$\..\lib\driverlib\gpio.c + $PROJ_DIR$\..\lib\driverlib\gpio.h + $PROJ_DIR$\..\lib\driverlib\interrupt.c + $PROJ_DIR$\..\lib\driverlib\interrupt.h + $PROJ_DIR$\..\lib\driverlib\sysctl.c + $PROJ_DIR$\..\lib\driverlib\sysctl.h + $PROJ_DIR$\..\lib\driverlib\uartlib.c + $PROJ_DIR$\..\lib\driverlib\uartlib.h + $PROJ_DIR$\..\lib\inc\hw_can.h + $PROJ_DIR$\..\lib\inc\hw_flash.h + $PROJ_DIR$\..\lib\inc\hw_gpio.h + $PROJ_DIR$\..\lib\inc\hw_ints.h + $PROJ_DIR$\..\lib\inc\hw_memmap.h + $PROJ_DIR$\..\lib\inc\hw_nvic.h + $PROJ_DIR$\..\lib\inc\hw_sysctl.h + $PROJ_DIR$\..\lib\inc\hw_types.h + $PROJ_DIR$\..\lib\inc\hw_uart.h + $PROJ_DIR$\..\blt_conf.h + $PROJ_DIR$\..\hooks.c + $PROJ_DIR$\..\main.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s + $PROJ_DIR$\..\obj\sysctl.pbi + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.h + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c - - $PROJ_DIR$\..\lib\driverlib\canlib.c - - - ICCARM - 129 126 - - - BICOMP - 124 - - - - - ICCARM - 15 18 20 19 22 0 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 - - - BICOMP - 15 18 20 19 22 0 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 - - - - - $PROJ_DIR$\..\lib\driverlib\cpulib.c - - - ICCARM - 41 46 - - - BICOMP - 53 - - - - - ICCARM - 4 - - - BICOMP - 4 - - - - - $PROJ_DIR$\..\lib\driverlib\flashlib.c - - - ICCARM - 42 47 - - - BICOMP - 52 - - - - - ICCARM - 16 18 21 22 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 6 10 - - - BICOMP - 16 18 21 22 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 6 10 - - - - - $PROJ_DIR$\..\lib\driverlib\gpio.c - - - ICCARM - 40 48 - - - BICOMP - 54 - - - - - ICCARM - 17 18 19 21 22 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 8 10 - - - BICOMP - 17 18 19 21 22 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 8 10 - - - - - $PROJ_DIR$\..\lib\driverlib\interrupt.c - - - ICCARM - 43 49 - - - BICOMP - 55 - - - - - ICCARM - 18 20 22 4 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 - - - BICOMP - 18 20 22 4 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 - - - - - $PROJ_DIR$\..\lib\driverlib\sysctl.c - - - ICCARM - 44 50 - - - BICOMP - 57 - - - - - ICCARM - 18 20 21 22 4 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 12 - - - BICOMP - 18 20 21 22 4 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 12 - - - - - $PROJ_DIR$\..\lib\driverlib\uartlib.c - - - ICCARM - 45 51 - - - BICOMP - 58 - - - - - ICCARM - 18 19 21 22 23 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 14 12 - - - BICOMP - 18 19 21 22 23 1 105 98 101 24 110 91 109 95 93 97 103 134 107 112 10 14 12 - - - [ROOT_NODE] ILINK - 133 131 + 95 93 - $PROJ_DIR$\..\obj\lm3s6965.pbd - - - BILINK - 30 28 68 27 33 61 53 60 52 54 116 55 69 62 57 70 63 58 71 34 - - - - - $PROJ_DIR$\..\bin\openbtl_ek_lm3s6965.out - - - OBJCOPY - 77 - - - - - ILINK - 56 80 31 25 26 29 38 46 65 39 47 48 117 49 114 37 50 67 59 51 66 32 113 123 76 122 - - - - - $PROJ_DIR$\..\hooks.c + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c ICCARM - 79 117 - - - BICOMP - 116 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - - - $PROJ_DIR$\..\main.c - - - ICCARM - 74 114 - - - BICOMP - 69 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 18 19 20 21 22 12 8 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 18 19 20 21 22 12 8 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c - - - ICCARM - 73 66 - - - BICOMP - 71 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s - - - AARM - 65 - - - - - $PROJ_DIR$\..\..\..\..\Source\assert.c - - - ICCARM - 81 80 - - - BICOMP - 30 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.c - - - ICCARM - 130 125 - - - BICOMP - 128 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 12 0 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 12 0 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c - - - ICCARM - 118 38 - - - BICOMP - 61 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c - - - ICCARM - 82 39 - - - BICOMP - 60 - - - - - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 6 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 6 - - - - - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c - - - ICCARM - 36 37 + 67 59 BICOMP @@ -521,34 +166,34 @@ ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 - $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c + $PROJ_DIR$\..\..\..\..\Source\assert.c ICCARM - 75 67 + 73 72 BICOMP - 70 + 22 ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 @@ -557,21 +202,21 @@ ICCARM - 119 59 + 81 51 BICOMP - 63 + 55 ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 12 14 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 110 112 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 19 22 12 14 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 110 112 @@ -580,21 +225,21 @@ ICCARM - 115 31 + 77 25 BICOMP - 28 + 23 ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 @@ -603,21 +248,21 @@ ICCARM - 72 25 + 64 19 BICOMP - 68 + 60 ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 @@ -626,7 +271,53 @@ ICCARM - 121 26 + 83 20 + + + BICOMP + 21 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 129 6 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 129 6 + + + + + $PROJ_DIR$\..\..\..\..\Source\cop.c + + + ICCARM + 82 24 + + + BICOMP + 26 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + + + $PROJ_DIR$\..\..\..\..\Source\xcp.c + + + ICCARM + 29 28 BICOMP @@ -636,57 +327,35 @@ ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 89 100 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 89 100 + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 - $PROJ_DIR$\..\..\..\..\Source\cop.c - - - ICCARM - 120 29 - - - BICOMP - 33 - - + $PROJ_DIR$\..\obj\lm3s6965.pbd - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + BILINK + 22 23 60 21 26 53 47 52 46 48 78 97 61 54 127 62 55 49 63 27 - $PROJ_DIR$\..\..\..\..\Source\xcp.c + $PROJ_DIR$\..\bin\openbtl_ek_lm3s6965.out - ICCARM - 35 32 - - - BICOMP - 34 + OBJCOPY + 69 - ICCARM - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 - - - BICOMP - 105 98 101 24 110 91 109 95 93 97 103 134 107 112 + ILINK + 50 72 25 19 20 24 32 40 57 33 41 42 79 43 76 31 44 59 51 45 58 28 75 85 68 84 @@ -695,17 +364,344 @@ ILINK - 131 + 93 OBJCOPY - 132 + 94 ILINK - 56 80 31 25 125 126 26 29 38 46 65 39 47 48 117 49 114 37 50 67 59 51 66 32 113 123 76 122 + 50 72 25 19 87 88 20 24 32 40 57 33 41 42 79 43 76 31 44 59 51 45 58 28 75 85 68 84 + + + + + $PROJ_DIR$\..\lib\driverlib\cpulib.c + + + ICCARM + 35 40 + + + BICOMP + 47 + + + + + ICCARM + 102 + + + BICOMP + 102 + + + + + $PROJ_DIR$\..\lib\driverlib\canlib.c + + + ICCARM + 91 88 + + + BICOMP + 86 + + + + + ICCARM + 113 116 118 117 120 100 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 + + + BICOMP + 113 116 118 117 120 100 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 + + + + + $PROJ_DIR$\..\lib\driverlib\flashlib.c + + + ICCARM + 36 41 + + + BICOMP + 46 + + + + + ICCARM + 114 116 119 120 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 104 108 + + + BICOMP + 114 116 119 120 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 104 108 + + + + + $PROJ_DIR$\..\lib\driverlib\gpio.c + + + ICCARM + 34 42 + + + BICOMP + 48 + + + + + ICCARM + 115 116 117 119 120 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 106 108 + + + BICOMP + 115 116 117 119 120 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 106 108 + + + + + $PROJ_DIR$\..\lib\driverlib\interrupt.c + + + ICCARM + 37 43 + + + BICOMP + 97 + + + + + ICCARM + 116 118 120 102 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 + + + BICOMP + 116 118 120 102 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 + + + + + $PROJ_DIR$\..\lib\driverlib\sysctl.c + + + ICCARM + 38 44 + + + BICOMP + 127 + + + + + ICCARM + 116 118 119 120 102 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 110 + + + BICOMP + 116 118 119 120 102 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 110 + + + + + $PROJ_DIR$\..\lib\driverlib\uartlib.c + + + ICCARM + 39 45 + + + BICOMP + 49 + + + + + ICCARM + 116 117 119 120 121 99 11 4 7 122 16 131 15 0 133 3 9 96 13 18 108 112 110 + + + + + $PROJ_DIR$\..\hooks.c + + + ICCARM + 71 79 + + + BICOMP + 78 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + + + $PROJ_DIR$\..\main.c + + + ICCARM + 66 76 + + + BICOMP + 61 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 116 117 118 119 120 110 106 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 116 117 118 119 120 110 106 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\vectors.c + + + ICCARM + 65 58 + + + BICOMP + 63 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s + + + AARM + 57 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\can.c + + + ICCARM + 92 87 + + + BICOMP + 90 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 110 100 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 110 100 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c + + + ICCARM + 80 32 + + + BICOMP + 53 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c + + + ICCARM + 74 33 + + + BICOMP + 52 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 104 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 117 120 104 + + + + + $PROJ_DIR$\..\..\..\..\Source\ARMCM3_LM3S\nvm.c + + + ICCARM + 30 31 + + + BICOMP + 54 + + + + + ICCARM + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 + + + BICOMP + 11 4 7 122 16 131 15 0 133 3 9 96 13 18 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dbgdt b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dbgdt index 2ba157d5..ed539418 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dbgdt +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dbgdt @@ -39,7 +39,7 @@ - + TabID-23054-22949 @@ -55,7 +55,7 @@ - 0 + 0 TabID-1035-22952 @@ -67,7 +67,7 @@ - 0 + 0 TabID-11783-22956 @@ -77,20 +77,20 @@ - 0 + 0 - TextEditor$WS_DIR$\..\main.c000004529642964TextEditor$WS_DIR$\..\..\..\..\Source\com.c0000013170017001TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c000008852605260TextEditor$WS_DIR$\..\..\..\..\Source\xcp.c000002131148111481TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.c0000010053825382TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c0000016963266326TextEditor$WS_DIR$\..\..\..\..\Source\plausibility.h0000017363006300TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c000003934593459TextEditor$WS_DIR$\..\blt_conf.h000006646894689TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h00000000TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s000006537953795100100000010000001 + TextEditor$WS_DIR$\..\main.c00000452964296400100000010000001 - iaridepm.enu1debuggergui.enu1-2-2698238-2-2240243125000241071125000694444-2-2698238-2-2240243125000241071125000694444-2-22411922-2-219242431002083241071125000241071 + iaridepm.enu1debuggergui.enu1-2-2698238-2-2240243125000241071125000694444-2-2698238-2-2240243125000241071125000694444-2-22411922-2-219242431002083241071125000241071 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dni b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dni index 7b1ea6f3..abc35429 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dni +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.dni @@ -9,7 +9,7 @@ TriggerName=main LimitSize=0 ByteLimit=50 [DebugChecksum] -Checksum=-1142168682 +Checksum=983363084 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.wsdt b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.wsdt index b1b94a29..a29d8b74 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.wsdt +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Boot/ide/settings/lm3s8962.wsdt @@ -25,7 +25,7 @@ - + TabID-17931-22022 @@ -37,7 +37,7 @@ - 0 + 0 TabID-24560-22511 @@ -47,20 +47,20 @@ TabID-23843-13527Debug LogDebug-Log - 0 + 0 - TextEditor$WS_DIR$\..\main.c000004529642964TextEditor$WS_DIR$\..\..\..\..\Source\com.c0000013170017001TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\timer.c000008852605260TextEditor$WS_DIR$\..\..\..\..\Source\xcp.c000002131148111481TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\uart.c0000010053825382TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\flash.c0000016963266326TextEditor$WS_DIR$\..\..\..\..\Source\plausibility.h0000017363006300TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.c000003934593459TextEditor$WS_DIR$\..\blt_conf.h000006646894689TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\cpu.h00000000TextEditor$WS_DIR$\..\..\..\..\Source\ARMCM3_LM3S\IAR\cstart.s000005037953795100100000010000001 + TextEditor$WS_DIR$\..\main.c00000452964296400100000010000001 - iaridepm.enu1-2-2796335-2-218716997396167659175521791667-2-21671922-2-21924169100208316765997396167659 + iaridepm.enu1-2-2796335-2-218716997396167659175521791667-2-21671922-2-21924169100208316765997396167659 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.out b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.out index 358b3e2a..be90affc 100644 Binary files a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.out and b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.out differ diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.srec b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.srec index ab9c937b..dd9ff913 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.srec +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/bin/demoprog_ek_lm3s8962.srec @@ -1,445 +1,445 @@ S01C000064656D6F70726F675F656B5F6C6D3373383936322E73726563C5 -S113400058040020815B00005F5B00005F5B0000E0 -S11340105F5B00005F5B00005F5B00005F5B0000B4 -S11340205F5B00005F5B00005F5B00005F5B0000A4 -S11340305F5B00005F5B00005F5B00009752000065 -S11340405F5B00005F5B00005F5B00005F5B000084 -S11340505F5B00005F5B00005F5B00005F5B000074 -S11340605F5B00005F5B00005F5B00005F5B000064 -S11340705F5B00005F5B00005F5B00005F5B000054 -S11340805F5B00005F5B00005F5B00005F5B000044 -S11340905F5B00005F5B00005F5B00005F5B000034 -S11340A05F5B00005F5B00005F5B00005F5B000024 -S11340B05F5B00005F5B00005F5B00005F5B000014 -S11340C05F5B00005F5B00005F5B00005F5B000004 -S11340D05F5B00005F5B00005F5B00005F5B0000F4 -S11340E05F5B00005F5B00005F5B00005F5B0000E4 -S10740F0EE11AA55CA -S11340F4DFF86017884207D0DFF85C17884203D0E2 -S1134104DFF85817884201D1012000E00020C0B232 -S11341147047DFF84017884208D0DFF83C1788421C -S113412406D0DFF83817884204D005E0372005E0CC -S1134134382003E0392001E05FF0FF30704770B5A8 -S113414482B00500280B0003FFF7E3FF040014F119 -S1134154010F04D1F921DFF8080700F09AFBDFF816 -S11341640407006801212200303A914011EA000654 -S1134174002E02D0200000F0DDFB2868002100910D -S113418402E00098401C009000980528F9DB2D6893 -S1134194002E02D0200000F08CFB280076BD81B0F4 -S11341A401600020009002E00098401C00900098F8 -S11341B40528F9DB01B07047F8B504000D001600BA -S11341C400270BE0395D7F1CB74203DA385D51EAFE -S11341D400217F1C2800FFF7E2FF2D1DB742F1DB0D -S11341E4F1BDF8B504000D00160000270AE028000C -S11341F4FFF7A5FF2D1D38557F1CB74202DA000ACC -S113420438557F1CB742F2DBF1BD38B504002000F9 -S1134214FFF76EFF002805D140F2D911DFF84006FC -S113422400F037FB01212000FFF7B9FF14F120004F -S1134234FFF785FF0004F9D4B02114F12400FFF73B -S1134244AEFF002114F13400FFF7A9FF002114F19B -S11342543800FFF7A4FF01250BE014F12000FFF759 -S11342646EFF0004F9D4290014F12000FFF797FF2E -S11342746D1C212DF1DB0C2114F12400FFF78FFFB9 -S113428401250BE014F12000FFF759FF0004F9D4D1 -S1134294290014F12000FFF782FF6D1C212DF1DBAE -S11342A4201DFFF74CFF31BD10B504002000FFF7BB -S11342B41FFF002805D140F23A21DFF8A40500F0DD -S11342C4E8FA2000FFF73BFF410849002000FFF70C -S11342D466FF10BD70B504000D002000FFF708FF51 -S11342E4002805D14FF45971DFF8740500F0D1FAB0 -S11342F4002D05D140F26531DFF8640500F0C9FAF8 -S11343042868801E0F2805D340F26B31DFF850056E -S113431400F0BFFA6868002802D06868092805D349 -S11343244FF45C71DFF8380500F0B3FAA86800288C -S113433402D0A868052805D340F27531DFF82005BA -S113434400F0A7FAE868B0F5806F02D8E86800289E -S113435405D140F27B31DFF8080500F09AFA200019 -S1134364FFF7EDFE060056F041012000FFF717FFAA -S11343746868401E000310F4E0412868401E0002EF -S113438410F470600143A868401E800110F0C0005E -S11343940143E868401E10F03F00014314F10C008F -S11343A4FFF7FDFEE868401E800910F00F0114F1C8 -S11343B41800FFF7F4FE36F04006F00701D576083E -S11343C4760031002000FFF7EAFE70BD38B5040022 -S11343D40D002000FFF78CFE002805D140F2925115 -S11343E4DFF87C0400F055FAEDB2002D05D0022D5F -S11343F419D00CD3032D22D02DE0201DFFF79FFEEE -S113440405007FF01F01201DFFF7C9FE24E014F509 -S11344148070FFF794FE050014F58270FFF78FFE99 -S113442455EA004518E014F59070FFF788FE05007E -S113443414F59270FFF783FE55EA00450CE014F579 -S1134444B070FFF77CFE050014F5B270FFF777FE39 -S113445455EA004500E00025280032BD2DE9FB4F54 -S1134464040015005FF000082000FFF741FE002857 -S113447405D140F25F61DFF8E80300F00AFA01981D -S1134484212802D20198002805D14FF4CC61DFF829 -S1134494D00300F0FEF99DF80800002819D09DF817 -S11344A40800012815D09DF80800022811D09DF8B1 -S11344B4080003280DD09DF80800012809D09DF8B0 -S11344C40800042805D040F26661DFF8940300F084 -S11344D4E0F914F12000FFF732FE0004F9D428684F -S11344E4B0F5006F02D2287A400701D5012000E01C -S11344F40020932600275FF000095FF0000A0021E2 -S1134504ADF800105FF0000B9DF80810002906D0E8 -S113451402291FD019D304292CD01ED331E05AF414 -S1134524807A4FF400595FF00108297A090732D5DB -S1134534C0B2002826D06968ADF800106968090C77 -S11345445FEAC14B5FEADB4B25E05AF4807A5FF003 -S11345540009EAE75FF00009E7E74FF400594FF474 -S1134564805A4FF6FF71ADF8001041F6FF7B56F008 -S11345744006DAE74FF400594FF4905A5FF001080B -S1134584D3E783E00021ADF80010696889005FEA8D -S1134594C14B5FEADB4B297A11F02801282901D1A8 -S11345A45BF4004B297A11F01801182901D15BF44A -S11345B4804B297A11F0380F03D05AF4805A56F0FC -S11345C4400656F02006C0B200280AD028680743E3 -S11345D42868000CC004C00C50EA090959F4404985 -S11345E407E028688000C004C00C50EA090959F4A3 -S11345F40049287B10F00F0050EA0A0AA8688005D5 -S113460401D45AF0800A287AC00701D55AF4006A02 -S1134614287A800701D55AF4806A5FFA88F8B8F1D9 -S1134624000F05D0EA6814F13C012869FFF7C4FDC2 -S1134634B6B2310014F12400FFF7B1FDBDF8001047 -S113464414F12800FFF7ABFD1FFA8BFB594614F154 -S11346542C00FFF7A4FDBFB2390014F13000FFF7BA -S11346649EFD1FFA89F9494614F13400FFF797FDBA -S11346741FFA8AFA514614F13800FFF790FD0198A5 -S113468410F03F0114F12000FFF789FDBDE8F78F16 -S11346942DE9F04704000D0016001F002000FFF769 -S11346A427FD002804D140F2C1716D4800F0F1F8EF -S11346B4212D01D2002D04D140F2C271684800F0CA -S11346C4E8F87321FFB2002F01D051F0080189B238 -S11346D414F18400FFF763FD15F03F0114F1800029 -S11346E4FFF75DFD14F18000FFF729FD0004F9D400 -S11346F414F18800FFF723FD070014F18C00FFF781 -S11347041EFD804614F19000FFF719FD814614F153 -S11347149400FFF714FD824614F19800FFF70FFD8F -S11347240021B160C10502D45FEA8A4104D4C10501 -S113473406D55FEA8A4103D4B16851F04001B160FF -S11347445FEA4A410ED51FFA8AFA5FEACA41C90CE4 -S11347541FFA89F959EA01413160B16851F0040141 -S1134764B16003E0CAF38A0189B23160410403D51C -S1134774B16851F48071B160C10436D55FEA4A412D -S113478415D51FFA88F85FEAC841C90CBFB257EAC5 -S11347940141716071687FF06042914202D1317AC3 -S11347A4490614D4B16851F00801B1600FE0C8F3AC -S11347B48A0189B27160716840F2FF72914202D138 -S11347C4317A490603D4B16851F00801B1605FEA53 -S11347D4084103D5B16851F02801B1605FEA48414A -S11347E403D5B16851F01801B160010503D5B1686E -S11347F451F00101B160410503D5B16851F00201E2 -S1134804B160010422D580B210F00F00F060307A58 -S1134814400605D4F26814F19C013069FFF7E1FC09 -S1134824042114F18400FFF7BAFC15F03F0114F1DC -S11348348000FFF7B4FC14F18000FFF780FC00044F -S1134844F9D4B06850F08000B06001E00020F0605A -S1134854BDE8F08700000440001004400020044038 -S11348647059000004E100E080B500F007F800F09E -S1134874B1F800F0C3F900F0B3F8FAE780B50748DB -S113488400F0C4FA00F0ACF900F0ECFC00F00AFD0E -S113489401BD034A106003480160FEE78003C001C0 -S11348A4480000204C00002080B500F0FFFCC0B29A -S11348B402BD10B50400472C04D34FF4D5713E480F -S11348C4FFF7E7FF042C06D13C48006850F480301D -S11348D43A4908602DE0052C06D13848006850F4A4 -S11348E400303649086024E0062C06D133480068B9 -S11348F450F48020314908601BE00F2C06D1304865 -S1134904006850F002002E49086012E0B4F110006F -S1134914202806D20120B4F11001884029490860F6 -S113492407E0302C05D30120B4F130018840264936 -S1134934086010BD10B50400472C04D34FF4F7717C -S11349441D48FFF7A6FF042C06D11C48006830F468 -S113495480301A4908602DE0052C06D117480068F8 -S113496430F400301549086024E0062C06D11348BD -S1134974006830F48020114908601BE00F2C06D134 -S11349840F48006830F002000D49086012E0B4F1E9 -S11349941000202806D20120B4F1100188400B49EC -S11349A4086007E0302C05D30120B4F130018840BD -S11349B40749086010BD00005058000024ED00E0D1 -S11349C410E000E000E100E004E100E080E100E048 -S11349D484E100E080B500F00DF800F0A6F801BD14 -S11349E480B500F01DF800F0C6F801BD80B500F0F4 -S11349F402FA01BD80B56F4800F0DDF96E4800F09D -S1134A04DAF903215FF0402000F0DCFD00F0ACFA99 -S1134A1460234FF461420100684800F024FE01BDA4 -S1134A2480B56748007800280BD1664800F02BF85D -S1134A34012827D1624801210170634800210170D3 -S1134A4420E0614800785F494018401C00F01BF8DE -S1134A54012817D15C480078401C5B4908705A4807 -S1134A6400785849097888420CD1554800210170CE -S1134A7454484078FF2805D152488078002801D151 -S1134A84FFF7B4FF01BD10B504004C4800F093FED9 -S1134A9410F1010F02D02070012000E0002010BDAD -S1134AA400B585B0042002901020009002E0009824 -S1134AB4401E00900098002834D00820019002E0A1 -S1134AC40198401E019001980028F0D00098401CE1 -S1134AD4642148430099019A5118491CB0FBF1F030 -S1134AE4C0B241380B28EBD210200099019A511816 -S1134AF4491CB0FBF1F201FB12000028E0D101983B -S1134B04042801D20198029010200099019A5118A6 -S1134B14491CB0FBF1F0039000A92C48FFF7DAFB21 -S1134B24012000E0002005B000BD00B585B0284890 -S1134B3400F041F90321274800F00DFD264800F058 -S1134B443AF92248FFF761FBFFF7AAFF1F48FFF772 -S1134B54ABFB40F26760009040F2FF7001900820C4 -S1134B64029008200390022300AA01211748FFF7AA -S1134B7475FC05B000BD00B587B002211348FFF7EA -S1134B8425FC16490988084211D000A8069001237F -S1134B9402AA01210D48FFF77BFD9DF80000FF28C0 -S1134BA405D19DF80100002801D1FFF71FFF07B0CC -S1134BB400BD0000010000100100002000C00040FE -S1134BC45500002000000020540000200000044090 -S1134BD40800002000700040000110003C5B00004D -S1134BE480B5174800F0E7F80121164800F0CFFC1F -S1134BF400220121134800F09AFC01BD10B500F015 -S1134C0445FB040010480068201AB0F5FA7F16D357 -S1134C140E480078002808D10C48012101700122B3 -S1134C240121084800F083FC07E0084800210170D2 -S1134C3400220121034800F07AFC0348046010BDFB -S1134C4420000020005002404400002056000020B0 -S1134C54DFF80C15884200F0A980DFF808158842B3 -S1134C6400F0A480DFF80015884200F09F80DFF88C -S1134C74FC14884200F09A80DFF8F414884200F0AF -S1134C849580DFF8F014884200F09080DFF8E8148F -S1134C94884200F08B80DFF8E414884200F08680B8 -S1134CA4DFF8DC14884200F08180DFF8D8148842ED -S1134CB47CD0DFF8D414884278D0DFF8D01488424A -S1134CC474D0DFF8CC14884270D0DFF8C81488425A -S1134CD46CD0DFF8C414884268D0DFF8C01488426A -S1134CE464D0DFF8BC14884260D0DFF8B81488427A -S1134CF45CD0DFF8B414884258D0402856D0B0F1C0 -S1134D04102F53D0DFF8A41488424FD0DFF8A01436 -S1134D1488424BD0DFF89C14884247D0DFF89814BB -S1134D24884243D0DFF8941488423FD0B0F1101F76 -S1134D343CD0DFF88C14884238D0DFF888148842D9 -S1134D4434D0DFF88414884230D0DFF880148842E9 -S1134D542CD0DFF87C14884228D0DFF878148842F9 -S1134D6424D0DFF87414884220D0DFF87014884209 -S1134D741CD0DFF86C14884218D0DFF86814884219 -S1134D8414D0DFF86414884210D0DFF86014884229 -S1134D940CD0B0F1202F09D0DFF85414884205D088 -S1134DA4082803D0DFF85014884201D1012000E020 -S1134DB40020C0B2704710B504002000FFF748FF7C -S1134DC4002805D14FF4FC71DFF82804FFF761FDD6 -S1134DD4200FDFF8281451F820000068A1B2220C37 -S1134DE412F01F0291400843210FDFF8102452F8F7 -S1134DF42110086010BDDFF81404DFF814140160F6 -S1134E04FEE700000138FDD17047704770B5040017 -S1134E14DFF80004006810F0E04F08D0DFF8F40372 -S1134E240068DFF8F4130840B0F1805F02D1002C6D -S1134E3400F19980DFF8C8030568DFF8E003066829 -S1134E4455F4006535F4800556F40066DFF8B003C4 -S1134E540560DFF8C8030660A80701D5A00708D5D4 -S1134E6415F0010014F0010191F00101C0B20842EF -S1134E741ED074F003000540DFF884030560002E9F -S1134E8407D516F07000302809D016F07000702889 -S1134E9405D0002E08D415F03000302804D14FF486 -S1134EA48050FFF7AFFF03E05FF40020FFF7AAFF91 -S1134EB4DFF86C03054043F2F07020400543DFF84B -S1134EC464030640DFF860032040064314F008003E -S1134ED456EAC006DFF82C0340210160002E06D5F3 -S1134EE4DFF838030660DFF81803056005E0DFF82F -S1134EF410030560DFF8240306601020FFF782FF27 -S1134F04DFF828030540DFF828032040054336F082 -S1134F14FC5614F0FC500643600008D555F4800593 -S1134F2436F48006DFF80C032040064301E036F033 -S1134F34804620050ED44FF4004000E0401E0028B3 -S1134F4404D0DFF8C41209684906F7D535F40065BE -S1134F5436F40066DFF8A8020560DFF8C0020660D4 -S1134F641020FFF74FFF70BD30B4DFF894020168DE -S1134F74DFF8A8020268002A02D512F0700001E0EA -S1134F8411F0300000280DD010283AD020286FD01A -S1134F94302800F0A480602800F0A480702800F079 -S1134FA4A480A5E0C1F38410DFF88C3253F8200008 -S1134FB4DFF88832134013F1004F05D0002A00F1C2 -S1134FC4AA800B0500F1A780DFF874321B68DFF8B0 -S1134FD44442246814F0E04F09D0DFF838422468CE -S1134FE4DFF834522C40B4F1805F40F08380C3F383 -S1134FF44814A41C604313F01F04A41CB0FBF4F075 -S113500481E0DFF81002006810F0E04F08D0DFF808 -S113501404020068DFF800321840B0F1805F02D166 -S1135024DFF8200223E0DFF8EC010068DFF8E83160 -S11350341840DFF81432984205D1DFF8D80100682B -S113504480B202280ED0DFF8CC010068DFF8C83142 -S11350541840DFF8F831984207D1DFF8B801006846 -S1135064000402D1DFF8E80101E0DFF8E8019FE77A -S1135074DFF8A001006810F0E04F08D0DFF89401D5 -S11350840068DFF894311840B0F1805F02D1DFF892 -S1135094C80123E0DFF87C010068DFF87C311840A4 -S11350A4DFF8A431984205D1DFF86801006880B2C2 -S11350B402280ED0DFF85C010068DFF85C31184088 -S11350C4DFF88831984207D1DFF84801006800040A -S11350D402D1DFF8880101E0DFF8840168E747F2D0 -S11350E4305065E75FF4800062E74FF400405FE707 -S11350F4002032E0C3F34814604313F01F04641C1B -S11351046400B0FBF4F05C0400D540081B0400D533 -S1135114800851F480014B021FD5002A18D553008E -S113512410D5DFF81831134013F1004F03D0002ACF -S113513408D4090506D44000C2F38651491CB0FBC7 -S1135144F1F00AE0C2F3C551491CB0FBF1F004E0EC -S1135154C1F3C351491CB0FBF1F030BC70470000EB -S113516401001000020010000001100000021000F1 -S113517400041000000110100002101000041010AC -S113518400401010005010200100002002000020F4 -S1135194040000200800002010000020200000204B -S11351A44000002080000020000100200040001086 -S11351B40010101000011020800000301000003096 -S11351C40001001000020010100000102000001064 -S11351D42000003001001010020010100400101010 -S11351E40800101001000010020000100400001058 -S11351F401001020B058000000101000945B00005F -S113520460E00F4058E00F4050E00F400CED00E028 -S11352140400FA0500E00F400000FF7070E00F4046 -S11352240FC8FFFF8FDFFF7F30200080FCFF3FF8B3 -S11352340300C00700004040285A00000008008012 -S113524464E00F40C0E1E40000000110000003101A -S1135254001BB7000024F40070383900C0C62D00C8 -S113526400093D0080B5FFF77FFE4FF47A71B0FB6F -S1135274F1F000F0D5FA00F0C5FA00F0CAFA002003 -S113528400F001F801BD064908607047044800684D -S1135294704703480068401C0149086070470000D7 -S11352A45000002080B5FFF7FFFA01BDEFF3108032 -S11352B462B67047B0F1402F43D0DFF84013884200 -S11352C43FD0DFF83C1388423BD0DFF838138842E0 -S11352D437D0DFF83413884233D0DFF830138842F0 -S11352E42FD0DFF82C1388422BD0DFF82813884200 -S11352F427D0DFF82413884223D0DFF82013884210 -S11353041FD0DFF81C1388421BD0DFF8181388421F -S113531417D0DFF81413884213D0DFF8101388422F -S11353240FD0DFF80C1388420BD0DFF8081388423F -S113533407D0DFF80413884203D0DFF8001388424F -S113534401D1012000E00020C0B2704770B5040010 -S11353540D0016002000FFF7ADFF002804D1E4215E -S1135364DFF8DC02FFF795FA002E08D0012E06D0F0 -S1135374022E04D0E621DFF8C802FFF78AFAF00708 -S113538405D514F580600068EDB2284304E014F5F3 -S113539480600068EDB2A84314F580610860B0072A -S11353A405D514F584600068EDB2284304E014F5CF -S11353B484600068EDB2A84314F58461086070BD8C -S11353C4F8B504000D0017001E002000FFF772FF5B -S11353D4002805D14FF4DD71DFF86402FFF759FAB0 -S11353E4012F0BD0022F09D0042F07D00C2F05D086 -S11353F44FF4DF71DFF84802FFF74BFA082E11D09F -S11354040A2E0FD00C2E0DD0092E0BD00B2E09D042 -S11354140D2E07D0002E05D040F2C511DFF820026E -S1135424FFF737FAF80705D514F5A0600068EDB264 -S1135434284304E014F5A0600068EDB2A84314F511 -S1135444A0610860B80704D5D4F80405EDB2284374 -S113545403E0D4F80405EDB2A843C4F804057807BE -S113546405D514F5A1600068EDB2284304E014F5F1 -S1135474A1600068EDB2A84314F5A161086038077F -S113548405D514F5A3600068EDB2284304E014F5CF -S1135494A3600068EDB2A84314F5A3610860F007A3 -S11354A404D5D4F80C05EDB2284303E0D4F80C0574 -S11354B4EDB2A843C4F80C05B00705D514F5A260F1 -S11354C40068EDB2284304E014F5A2600068EDB26C -S11354D4A84314F5A2610860700704D5D4F8140530 -S11354E4EDB2284303E0D4F81405EDB2A843C4F89C -S11354F41405300704D5D4F81C05EDB2284303E0A1 -S1135504D4F81C05EDB2A843C4F81C05002E05D13B -S113551414F5A5600068EDB2284304E014F5A56011 -S11355240068EDB2A84314F5A5610860F1BD70B537 -S113553404000D0016002000FFF7BCFE002805D16E -S11355444FF45171DFF8F800FFF7A3F9EDB2F6B2A6 -S113555444F8256070BD38B504000D002000FFF741 -S1135564A9FE002805D14FF46471DFF8D400FFF7D5 -S113557490F902222900C9B22000FFF7E7FE0823AC -S113558404222900C9B22000FFF71AFF31BD38B53F -S113559404000D002000FFF78DFE002804D140F222 -S11355A404412748FFF775F901222900C9B22000F4 -S11355B4FFF7CCFE082301222900C9B22000FFF71B -S11355C4FFFE31BD38B504000D002000FFF772FE64 -S11355D4002804D140F21F511948FFF75AF9022256 -S11355E42900C9B22000FFF7B1FE082301222900D3 -S11355F4C9B22000FFF7E4FE31BD0000008005407D -S113560400500040009005400060004000A00540A8 -S11356140070004000B005400040024000C0054056 -S11356240050024000D005400060024000E0054004 -S11356340070024000F0054000D003400000064022 -S1135644CC590000DFF89811884207D0DFF8941190 -S1135654884203D0DFF89011884201D1012000E090 -S11356640020C0B27047F8B504000E0017001D00F6 -S11356742000FFF7E7FF002805D140F20D11DFF801 -S11356846C01FFF706F9002F05D14FF48771DFF899 -S11356945C01FFF7FEF8DFF85801006810F0E04FF2 -S11356A427D0DFF84C010068DFF848110840B0F156 -S11356B4805F1ED0DFF838010068DFF83811084035 -S11356C4DFF83411884205D1DFF82401006880B280 -S11356D402280ED0DFF818010068DFF8181108401A -S11356E4DFF81811884206D1DFF8040100680004C9 -S11356F401D1102000E0082000FB07F0864205D207 -S113570440F20F11DFF8E400FFF7C3F8200000F0C3 -S113571438F8B6EB071F05D2206B50F02000206345 -S11357247F0803E0206B30F020002063F000B0FB1E -S1135734F7F0401C4008810961624021B0FBF1F29A -S113574402FB1102A262E5620020A061200000F0C5 -S113575401F8F1BD10B504002000FFF773FF002821 -S113576405D14FF4CF71DFF88400FFF792F8E06AB3 -S113577450F01000E062206B40F2013108432063D2 -S113578410BD10B504002000FFF75CFF002805D10C -S11357944FF4DF71DFF85400FFF77BF8A0690007CA -S11357A4FCD4E06A30F01000E062206BDFF85010A3 -S11357B40840206310BD10B504002000FFF742FF29 -S11357C4002804D140F209410848FFF762F8A069AF -S11357D4C00601D4206801E05FF0FF3010BD000072 -S11357E400C0004000D0004000E00040845A0000A3 -S11357F400E00F400000FF700000011000000310DF -S1135804FEFCFFFF0E48006850F005000C490860D8 -S113581470470B48006850F002000949086070475B -S113582410B50400002C02D0B4F1807F03D9D02138 -S11358340448FFF72EF8601E0349086010BD0000F9 -S113584410E000E01059000014E000E0433A5C5713 -S11358546F726B5C736F6674776172655C4F7065AD -S11358646E424C545C5461726765745C44656D6F3C -S11358745C41524D434D335F4C4D33535F454B5F55 -S11358844C4D3353383936325F4941525C50726F50 -S1135894675C6C69625C6472697665726C69625C8B -S11358A4696E746572727570742E6300433A5C5742 -S11358B46F726B5C736F6674776172655C4F70654D -S11358C46E424C545C5461726765745C44656D6FDC -S11358D45C41524D434D335F4C4D33535F454B5FF5 -S11358E44C4D3353383936325F4941525C50726FF0 -S11358F4675C6C69625C6472697665726C69625C2B -S113590473797363746C2E6300000000433A5C572C -S11359146F726B5C736F6674776172655C4F7065EC -S11359246E424C545C5461726765745C44656D6F7B -S11359345C41524D434D335F4C4D33535F454B5F94 -S11359444C4D3353383936325F4941525C50726F8F -S1135954675C6C69625C6472697665726C69625CCA -S11359647379737469636B2E63000000433A5C5764 -S11359746F726B5C736F6674776172655C4F70658C -S11359846E424C545C5461726765745C44656D6F1B -S11359945C41524D434D335F4C4D33535F454B5F34 -S11359A44C4D3353383936325F4941525C50726F2F -S11359B4675C6C69625C6472697665726C69625C6A -S11359C463616E2E63000000433A5C576F726B5C34 -S11359D4736F6674776172655C4F70656E424C5484 -S11359E45C5461726765745C44656D6F5C41524DCF -S11359F4434D335F4C4D33535F454B5F4C4D3353F1 -S1135A04383936325F4941525C50726F675C6C6955 -S1135A14625C6472697665726C69625C6770696FF2 -S1135A242E63000040420F0000201C0080841E00EE -S1135A3400802500999E36000040380000093D008E -S1135A4400803E0000004B00404B4C0000204E0000 -S1135A54808D5B0000C05D000080700000127A003D -S1135A6400007D0080969800001BB7000080BB00F6 -S1135A74C0E8CE00647ADA000024F4000000FA00DE -S1135A84433A5C576F726B5C736F667477617265CB -S1135A945C4F70656E424C545C5461726765745C0F -S1135AA444656D6F5C41524D434D335F4C4D3353EC -S1135AB45F454B5F4C4D3353383936325F4941525D -S1135AC45C50726F675C6C69625C6472697665725F -S1135AD46C69625C756172742E63000010B50749C9 -S1135AE479441831064C7C44163404E00A68081DD1 -S1135AF4511888470146A142F8D110BD2C0000007A -S1135B043800000050F8041B61B150F8042BD3078B -S1135B1444BFA9F101039A18002342F8043B091F66 -S1135B24FAD1EFE770470000DDFFFFFF58000000E3 -S1135B3400000020000000000100000000F009F84B -S1135B44002801D0FFF7CAFF0020FEF78DFE00F005 -S1135B5402F80120704700F001B8FEE70746384612 -S1135B6400F002F8FBE7000080B5C046C046024AD4 -S1135B7411001820ABBEFBE726000200034B9D4630 -S1135B84C046C046C046C046FFF7D8FF58040020AC -S10F5B9400E10F4004E10F4008E10F4065 -S9035B8120 +S113800058040020819B00005F9B00005F9B0000E0 +S11380105F9B00005F9B00005F9B00005F9B000074 +S11380205F9B00005F9B00005F9B00005F9B000064 +S11380305F9B00005F9B00005F9B00009792000025 +S11380405F9B00005F9B00005F9B00005F9B000044 +S11380505F9B00005F9B00005F9B00005F9B000034 +S11380605F9B00005F9B00005F9B00005F9B000024 +S11380705F9B00005F9B00005F9B00005F9B000014 +S11380805F9B00005F9B00005F9B00005F9B000004 +S11380905F9B00005F9B00005F9B00005F9B0000F4 +S11380A05F9B00005F9B00005F9B00005F9B0000E4 +S11380B05F9B00005F9B00005F9B00005F9B0000D4 +S11380C05F9B00005F9B00005F9B00005F9B0000C4 +S11380D05F9B00005F9B00005F9B00005F9B0000B4 +S11380E05F9B00005F9B00005F9B00005F9B0000A4 +S10780F0EE11AA558A +S11380F4DFF86017884207D0DFF85C17884203D0A2 +S1138104DFF85817884201D1012000E00020C0B2F2 +S11381147047DFF84017884208D0DFF83C178842DC +S113812406D0DFF83817884204D005E0372005E08C +S1138134382003E0392001E05FF0FF30704770B568 +S113814482B00500280B0003FFF7E3FF040014F1D9 +S1138154010F04D1F921DFF8080700F09AFBDFF8D6 +S11381640407006801212200303A914011EA000614 +S1138174002E02D0200000F0DDFB286800210091CD +S113818402E00098401C009000980528F9DB2D6853 +S1138194002E02D0200000F08CFB280076BD81B0B4 +S11381A401600020009002E00098401C00900098B8 +S11381B40528F9DB01B07047F8B504000D0016007A +S11381C400270BE0395D7F1CB74203DA385D51EABE +S11381D400217F1C2800FFF7E2FF2D1DB742F1DBCD +S11381E4F1BDF8B504000D00160000270AE02800CC +S11381F4FFF7A5FF2D1D38557F1CB74202DA000A8C +S113820438557F1CB742F2DBF1BD38B504002000B9 +S1138214FFF76EFF002805D140F2D911DFF84006BC +S113822400F037FB01212000FFF7B9FF14F120000F +S1138234FFF785FF0004F9D4B02114F12400FFF7FB +S1138244AEFF002114F13400FFF7A9FF002114F15B +S11382543800FFF7A4FF01250BE014F12000FFF719 +S11382646EFF0004F9D4290014F12000FFF797FFEE +S11382746D1C212DF1DB0C2114F12400FFF78FFF79 +S113828401250BE014F12000FFF759FF0004F9D491 +S1138294290014F12000FFF782FF6D1C212DF1DB6E +S11382A4201DFFF74CFF31BD10B504002000FFF77B +S11382B41FFF002805D140F23A21DFF8A40500F09D +S11382C4E8FA2000FFF73BFF410849002000FFF7CC +S11382D466FF10BD70B504000D002000FFF708FF11 +S11382E4002805D14FF45971DFF8740500F0D1FA70 +S11382F4002D05D140F26531DFF8640500F0C9FAB8 +S11383042868801E0F2805D340F26B31DFF850052E +S113831400F0BFFA6868002802D06868092805D309 +S11383244FF45C71DFF8380500F0B3FAA86800284C +S113833402D0A868052805D340F27531DFF820057A +S113834400F0A7FAE868B0F5806F02D8E86800285E +S113835405D140F27B31DFF8080500F09AFA2000D9 +S1138364FFF7EDFE060056F041012000FFF717FF6A +S11383746868401E000310F4E0412868401E0002AF +S113838410F470600143A868401E800110F0C0001E +S11383940143E868401E10F03F00014314F10C004F +S11383A4FFF7FDFEE868401E800910F00F0114F188 +S11383B41800FFF7F4FE36F04006F00701D57608FE +S11383C4760031002000FFF7EAFE70BD38B50400E2 +S11383D40D002000FFF78CFE002805D140F29251D5 +S11383E4DFF87C0400F055FAEDB2002D05D0022D1F +S11383F419D00CD3032D22D02DE0201DFFF79FFEAE +S113840405007FF01F01201DFFF7C9FE24E014F5C9 +S11384148070FFF794FE050014F58270FFF78FFE59 +S113842455EA004518E014F59070FFF788FE05003E +S113843414F59270FFF783FE55EA00450CE014F539 +S1138444B070FFF77CFE050014F5B270FFF777FEF9 +S113845455EA004500E00025280032BD2DE9FB4F14 +S1138464040015005FF000082000FFF741FE002817 +S113847405D140F25F61DFF8E80300F00AFA0198DD +S1138484212802D20198002805D14FF4CC61DFF8E9 +S1138494D00300F0FEF99DF80800002819D09DF8D7 +S11384A40800012815D09DF80800022811D09DF871 +S11384B4080003280DD09DF80800012809D09DF870 +S11384C40800042805D040F26661DFF8940300F044 +S11384D4E0F914F12000FFF732FE0004F9D428680F +S11384E4B0F5006F02D2287A400701D5012000E0DC +S11384F40020932600275FF000095FF0000A0021A2 +S1138504ADF800105FF0000B9DF80810002906D0A8 +S113851402291FD019D304292CD01ED331E05AF4D4 +S1138524807A4FF400595FF00108297A090732D59B +S1138534C0B2002826D06968ADF800106968090C37 +S11385445FEAC14B5FEADB4B25E05AF4807A5FF0C3 +S11385540009EAE75FF00009E7E74FF400594FF434 +S1138564805A4FF6FF71ADF8001041F6FF7B56F0C8 +S11385744006DAE74FF400594FF4905A5FF00108CB +S1138584D3E783E00021ADF80010696889005FEA4D +S1138594C14B5FEADB4B297A11F02801282901D168 +S11385A45BF4004B297A11F01801182901D15BF40A +S11385B4804B297A11F0380F03D05AF4805A56F0BC +S11385C4400656F02006C0B200280AD028680743A3 +S11385D42868000CC004C00C50EA090959F4404945 +S11385E407E028688000C004C00C50EA090959F463 +S11385F40049287B10F00F0050EA0A0AA868800595 +S113860401D45AF0800A287AC00701D55AF4006AC2 +S1138614287A800701D55AF4806A5FFA88F8B8F199 +S1138624000F05D0EA6814F13C012869FFF7C4FD82 +S1138634B6B2310014F12400FFF7B1FDBDF8001007 +S113864414F12800FFF7ABFD1FFA8BFB594614F114 +S11386542C00FFF7A4FDBFB2390014F13000FFF77A +S11386649EFD1FFA89F9494614F13400FFF797FD7A +S11386741FFA8AFA514614F13800FFF790FD019865 +S113868410F03F0114F12000FFF789FDBDE8F78FD6 +S11386942DE9F04704000D0016001F002000FFF729 +S11386A427FD002804D140F2C1716D4800F0F1F8AF +S11386B4212D01D2002D04D140F2C271684800F08A +S11386C4E8F87321FFB2002F01D051F0080189B2F8 +S11386D414F18400FFF763FD15F03F0114F18000E9 +S11386E4FFF75DFD14F18000FFF729FD0004F9D4C0 +S11386F414F18800FFF723FD070014F18C00FFF741 +S11387041EFD804614F19000FFF719FD814614F113 +S11387149400FFF714FD824614F19800FFF70FFD4F +S11387240021B160C10502D45FEA8A4104D4C105C1 +S113873406D55FEA8A4103D4B16851F04001B160BF +S11387445FEA4A410ED51FFA8AFA5FEACA41C90CA4 +S11387541FFA89F959EA01413160B16851F0040101 +S1138764B16003E0CAF38A0189B23160410403D5DC +S1138774B16851F48071B160C10436D55FEA4A41ED +S113878415D51FFA88F85FEAC841C90CBFB257EA85 +S11387940141716071687FF06042914202D1317A83 +S11387A4490614D4B16851F00801B1600FE0C8F36C +S11387B48A0189B27160716840F2FF72914202D1F8 +S11387C4317A490603D4B16851F00801B1605FEA13 +S11387D4084103D5B16851F02801B1605FEA48410A +S11387E403D5B16851F01801B160010503D5B1682E +S11387F451F00101B160410503D5B16851F00201A2 +S1138804B160010422D580B210F00F00F060307A18 +S1138814400605D4F26814F19C013069FFF7E1FCC9 +S1138824042114F18400FFF7BAFC15F03F0114F19C +S11388348000FFF7B4FC14F18000FFF780FC00040F +S1138844F9D4B06850F08000B06001E00020F0601A +S1138854BDE8F087000004400010044000200440F8 +S11388647099000004E100E080B500F007F800F01E +S1138874B1F800F0C3F900F0B3F8FAE780B507489B +S113888400F0C4FA00F0ACF900F0ECFC00F00AFDCE +S113889401BD034A106003480160FEE78003C00180 +S11388A4480000204C00002080B500F0FFFCC0B25A +S11388B402BD10B50400472C04D34FF4D5713E48CF +S11388C4FFF7E7FF042C06D13C48006850F48030DD +S11388D43A4908602DE0052C06D13848006850F464 +S11388E400303649086024E0062C06D13348006879 +S11388F450F48020314908601BE00F2C06D1304825 +S1138904006850F002002E49086012E0B4F110002F +S1138914202806D20120B4F11001884029490860B6 +S113892407E0302C05D30120B4F1300188402649F6 +S1138934086010BD10B50400472C04D34FF4F7713C +S11389441D48FFF7A6FF042C06D11C48006830F428 +S113895480301A4908602DE0052C06D117480068B8 +S113896430F400301549086024E0062C06D113487D +S1138974006830F48020114908601BE00F2C06D1F4 +S11389840F48006830F002000D49086012E0B4F1A9 +S11389941000202806D20120B4F1100188400B49AC +S11389A4086007E0302C05D30120B4F1300188407D +S11389B40749086010BD00005098000024ED00E051 +S11389C410E000E000E100E004E100E080E100E008 +S11389D484E100E080B500F00DF800F0A6F801BDD4 +S11389E480B500F01DF800F0C6F801BD80B500F0B4 +S11389F402FA01BD80B56F4800F0DDF96E4800F05D +S1138A04DAF903215FF0402000F0DCFD00F0ACFA59 +S1138A1460234FF461420100684800F024FE01BD64 +S1138A2480B56748007800280BD1664800F02BF81D +S1138A34012827D162480121017063480021017093 +S1138A4420E0614800785F494018401C00F01BF89E +S1138A54012817D15C480078401C5B4908705A48C7 +S1138A6400785849097888420CD15548002101708E +S1138A7454484078FF2805D152488078002801D111 +S1138A84FFF7B4FF01BD10B504004C4800F093FE99 +S1138A9410F1010F02D02070012000E0002010BD6D +S1138AA400B585B0042002901020009002E00098E4 +S1138AB4401E00900098002834D00820019002E061 +S1138AC40198401E019001980028F0D00098401CA1 +S1138AD4642148430099019A5118491CB0FBF1F0F0 +S1138AE4C0B241380B28EBD210200099019A5118D6 +S1138AF4491CB0FBF1F201FB12000028E0D10198FB +S1138B04042801D20198029010200099019A511866 +S1138B14491CB0FBF1F0039000A92C48FFF7DAFBE1 +S1138B24012000E0002005B000BD00B585B0284850 +S1138B3400F041F90321274800F00DFD264800F018 +S1138B443AF92248FFF761FBFFF7AAFF1F48FFF732 +S1138B54ABFB40F26760009040F2FF700190082084 +S1138B64029008200390022300AA01211748FFF76A +S1138B7475FC05B000BD00B587B002211348FFF7AA +S1138B8425FC16490988084211D000A8069001233F +S1138B9402AA01210D48FFF77BFD9DF80000FF2880 +S1138BA405D19DF80100002801D1FFF71FFF07B08C +S1138BB400BD0000010000100100002000C00040BE +S1138BC45500002000000020540000200000044050 +S1138BD40800002000700040000110003C9B0000CD +S1138BE480B5174800F0E7F80121164800F0CFFCDF +S1138BF400220121134800F09AFC01BD10B500F0D5 +S1138C0445FB040010480068201AB0F5FA7F16D317 +S1138C140E480078002808D10C4801210170012273 +S1138C240121084800F083FC07E008480021017092 +S1138C3400220121034800F07AFC0348046010BDBB +S1138C442000002000500240440000205600002070 +S1138C54DFF80C15884200F0A980DFF80815884273 +S1138C6400F0A480DFF80015884200F09F80DFF84C +S1138C74FC14884200F09A80DFF8F414884200F06F +S1138C849580DFF8F014884200F09080DFF8E8144F +S1138C94884200F08B80DFF8E414884200F0868078 +S1138CA4DFF8DC14884200F08180DFF8D8148842AD +S1138CB47CD0DFF8D414884278D0DFF8D01488420A +S1138CC474D0DFF8CC14884270D0DFF8C81488421A +S1138CD46CD0DFF8C414884268D0DFF8C01488422A +S1138CE464D0DFF8BC14884260D0DFF8B81488423A +S1138CF45CD0DFF8B414884258D0402856D0B0F180 +S1138D04102F53D0DFF8A41488424FD0DFF8A014F6 +S1138D1488424BD0DFF89C14884247D0DFF898147B +S1138D24884243D0DFF8941488423FD0B0F1101F36 +S1138D343CD0DFF88C14884238D0DFF88814884299 +S1138D4434D0DFF88414884230D0DFF880148842A9 +S1138D542CD0DFF87C14884228D0DFF878148842B9 +S1138D6424D0DFF87414884220D0DFF870148842C9 +S1138D741CD0DFF86C14884218D0DFF868148842D9 +S1138D8414D0DFF86414884210D0DFF860148842E9 +S1138D940CD0B0F1202F09D0DFF85414884205D048 +S1138DA4082803D0DFF85014884201D1012000E0E0 +S1138DB40020C0B2704710B504002000FFF748FF3C +S1138DC4002805D14FF4FC71DFF82804FFF761FD96 +S1138DD4200FDFF8281451F820000068A1B2220CF7 +S1138DE412F01F0291400843210FDFF8102452F8B7 +S1138DF42110086010BDDFF81404DFF814140160B6 +S1138E04FEE700000138FDD17047704770B50400D7 +S1138E14DFF80004006810F0E04F08D0DFF8F40332 +S1138E240068DFF8F4130840B0F1805F02D1002C2D +S1138E3400F19980DFF8C8030568DFF8E0030668E9 +S1138E4455F4006535F4800556F40066DFF8B00384 +S1138E540560DFF8C8030660A80701D5A00708D594 +S1138E6415F0010014F0010191F00101C0B20842AF +S1138E741ED074F003000540DFF884030560002E5F +S1138E8407D516F07000302809D016F07000702849 +S1138E9405D0002E08D415F03000302804D14FF446 +S1138EA48050FFF7AFFF03E05FF40020FFF7AAFF51 +S1138EB4DFF86C03054043F2F07020400543DFF80B +S1138EC464030640DFF860032040064314F00800FE +S1138ED456EAC006DFF82C0340210160002E06D5B3 +S1138EE4DFF838030660DFF81803056005E0DFF8EF +S1138EF410030560DFF8240306601020FFF782FFE7 +S1138F04DFF828030540DFF828032040054336F042 +S1138F14FC5614F0FC500643600008D555F4800553 +S1138F2436F48006DFF80C032040064301E036F0F3 +S1138F34804620050ED44FF4004000E0401E002873 +S1138F4404D0DFF8C41209684906F7D535F400657E +S1138F5436F40066DFF8A8020560DFF8C002066094 +S1138F641020FFF74FFF70BD30B4DFF8940201689E +S1138F74DFF8A8020268002A02D512F0700001E0AA +S1138F8411F0300000280DD010283AD020286FD0DA +S1138F94302800F0A480602800F0A480702800F039 +S1138FA4A480A5E0C1F38410DFF88C3253F82000C8 +S1138FB4DFF88832134013F1004F05D0002A00F182 +S1138FC4AA800B0500F1A780DFF874321B68DFF870 +S1138FD44442246814F0E04F09D0DFF8384224688E +S1138FE4DFF834522C40B4F1805F40F08380C3F343 +S1138FF44814A41C604313F01F04A41CB0FBF4F035 +S113900481E0DFF81002006810F0E04F08D0DFF8C8 +S113901404020068DFF800321840B0F1805F02D126 +S1139024DFF8200223E0DFF8EC010068DFF8E83120 +S11390341840DFF81432984205D1DFF8D8010068EB +S113904480B202280ED0DFF8CC010068DFF8C83102 +S11390541840DFF8F831984207D1DFF8B801006806 +S1139064000402D1DFF8E80101E0DFF8E8019FE73A +S1139074DFF8A001006810F0E04F08D0DFF8940195 +S11390840068DFF894311840B0F1805F02D1DFF852 +S1139094C80123E0DFF87C010068DFF87C31184064 +S11390A4DFF8A431984205D1DFF86801006880B282 +S11390B402280ED0DFF85C010068DFF85C31184048 +S11390C4DFF88831984207D1DFF8480100680004CA +S11390D402D1DFF8880101E0DFF8840168E747F290 +S11390E4305065E75FF4800062E74FF400405FE7C7 +S11390F4002032E0C3F34814604313F01F04641CDB +S11391046400B0FBF4F05C0400D540081B0400D5F3 +S1139114800851F480014B021FD5002A18D553004E +S113912410D5DFF81831134013F1004F03D0002A8F +S113913408D4090506D44000C2F38651491CB0FB87 +S1139144F1F00AE0C2F3C551491CB0FBF1F004E0AC +S1139154C1F3C351491CB0FBF1F030BC70470000AB +S113916401001000020010000001100000021000B1 +S1139174000410000001101000021010000410106C +S113918400401010005010200100002002000020B4 +S1139194040000200800002010000020200000200B +S11391A44000002080000020000100200040001046 +S11391B40010101000011020800000301000003056 +S11391C40001001000020010100000102000001024 +S11391D420000030010010100200101004001010D0 +S11391E40800101001000010020000100400001018 +S11391F401001020B098000000101000949B00009F +S113920460E00F4058E00F4050E00F400CED00E0E8 +S11392140400FA0500E00F400000FF7070E00F4006 +S11392240FC8FFFF8FDFFF7F30200080FCFF3FF873 +S11392340300C00700004040289A00000008008092 +S113924464E00F40C0E1E4000000011000000310DA +S1139254001BB7000024F40070383900C0C62D0088 +S113926400093D0080B5FFF77FFE4FF47A71B0FB2F +S1139274F1F000F0D5FA00F0C5FA00F0CAFA0020C3 +S113928400F001F801BD064908607047044800680D +S1139294704703480068401C014908607047000097 +S11392A45000002080B5FFF7FFFA01BDEFF31080F2 +S11392B462B67047B0F1402F43D0DFF840138842C0 +S11392C43FD0DFF83C1388423BD0DFF838138842A0 +S11392D437D0DFF83413884233D0DFF830138842B0 +S11392E42FD0DFF82C1388422BD0DFF828138842C0 +S11392F427D0DFF82413884223D0DFF820138842D0 +S11393041FD0DFF81C1388421BD0DFF818138842DF +S113931417D0DFF81413884213D0DFF810138842EF +S11393240FD0DFF80C1388420BD0DFF808138842FF +S113933407D0DFF80413884203D0DFF8001388420F +S113934401D1012000E00020C0B2704770B50400D0 +S11393540D0016002000FFF7ADFF002804D1E4211E +S1139364DFF8DC02FFF795FA002E08D0012E06D0B0 +S1139374022E04D0E621DFF8C802FFF78AFAF007C8 +S113938405D514F580600068EDB2284304E014F5B3 +S113939480600068EDB2A84314F580610860B007EA +S11393A405D514F584600068EDB2284304E014F58F +S11393B484600068EDB2A84314F58461086070BD4C +S11393C4F8B504000D0017001E002000FFF772FF1B +S11393D4002805D14FF4DD71DFF86402FFF759FA70 +S11393E4012F0BD0022F09D0042F07D00C2F05D046 +S11393F44FF4DF71DFF84802FFF74BFA082E11D05F +S11394040A2E0FD00C2E0DD0092E0BD00B2E09D002 +S11394140D2E07D0002E05D040F2C511DFF820022E +S1139424FFF737FAF80705D514F5A0600068EDB224 +S1139434284304E014F5A0600068EDB2A84314F5D1 +S1139444A0610860B80704D5D4F80405EDB2284334 +S113945403E0D4F80405EDB2A843C4F8040578077E +S113946405D514F5A1600068EDB2284304E014F5B1 +S1139474A1600068EDB2A84314F5A161086038073F +S113948405D514F5A3600068EDB2284304E014F58F +S1139494A3600068EDB2A84314F5A3610860F00763 +S11394A404D5D4F80C05EDB2284303E0D4F80C0534 +S11394B4EDB2A843C4F80C05B00705D514F5A260B1 +S11394C40068EDB2284304E014F5A2600068EDB22C +S11394D4A84314F5A2610860700704D5D4F81405F0 +S11394E4EDB2284303E0D4F81405EDB2A843C4F85C +S11394F41405300704D5D4F81C05EDB2284303E061 +S1139504D4F81C05EDB2A843C4F81C05002E05D1FB +S113951414F5A5600068EDB2284304E014F5A560D1 +S11395240068EDB2A84314F5A5610860F1BD70B5F7 +S113953404000D0016002000FFF7BCFE002805D12E +S11395444FF45171DFF8F800FFF7A3F9EDB2F6B266 +S113955444F8256070BD38B504000D002000FFF701 +S1139564A9FE002805D14FF46471DFF8D400FFF795 +S113957490F902222900C9B22000FFF7E7FE08236C +S113958404222900C9B22000FFF71AFF31BD38B5FF +S113959404000D002000FFF78DFE002804D140F2E2 +S11395A404412748FFF775F901222900C9B22000B4 +S11395B4FFF7CCFE082301222900C9B22000FFF7DB +S11395C4FFFE31BD38B504000D002000FFF772FE24 +S11395D4002804D140F21F511948FFF75AF9022216 +S11395E42900C9B22000FFF7B1FE08230122290093 +S11395F4C9B22000FFF7E4FE31BD0000008005403D +S113960400500040009005400060004000A0054068 +S11396140070004000B005400040024000C0054016 +S11396240050024000D005400060024000E00540C4 +S11396340070024000F0054000D0034000000640E2 +S1139644CC990000DFF89811884207D0DFF8941110 +S1139654884203D0DFF89011884201D1012000E050 +S11396640020C0B27047F8B504000E0017001D00B6 +S11396742000FFF7E7FF002805D140F20D11DFF8C1 +S11396846C01FFF706F9002F05D14FF48771DFF859 +S11396945C01FFF7FEF8DFF85801006810F0E04FB2 +S11396A427D0DFF84C010068DFF848110840B0F116 +S11396B4805F1ED0DFF838010068DFF838110840F5 +S11396C4DFF83411884205D1DFF82401006880B240 +S11396D402280ED0DFF818010068DFF818110840DA +S11396E4DFF81811884206D1DFF804010068000489 +S11396F401D1102000E0082000FB07F0864205D2C7 +S113970440F20F11DFF8E400FFF7C3F8200000F083 +S113971438F8B6EB071F05D2206B50F02000206305 +S11397247F0803E0206B30F020002063F000B0FBDE +S1139734F7F0401C4008810961624021B0FBF1F25A +S113974402FB1102A262E5620020A061200000F085 +S113975401F8F1BD10B504002000FFF773FF0028E1 +S113976405D14FF4CF71DFF88400FFF792F8E06A73 +S113977450F01000E062206B40F201310843206392 +S113978410BD10B504002000FFF75CFF002805D1CC +S11397944FF4DF71DFF85400FFF77BF8A06900078A +S11397A4FCD4E06A30F01000E062206BDFF8501063 +S11397B40840206310BD10B504002000FFF742FFE9 +S11397C4002804D140F209410848FFF762F8A0696F +S11397D4C00601D4206801E05FF0FF3010BD000032 +S11397E400C0004000D0004000E00040849A000023 +S11397F400E00F400000FF7000000110000003109F +S1139804FEFCFFFF0E48006850F005000C49086098 +S113981470470B48006850F002000949086070471B +S113982410B50400002C02D0B4F1807F03D9D021F8 +S11398340448FFF72EF8601E0349086010BD0000B9 +S113984410E000E01099000014E000E0433A5C5793 +S11398546F726B5C736F6674776172655C4F70656D +S11398646E424C545C5461726765745C44656D6FFC +S11398745C41524D434D335F4C4D33535F454B5F15 +S11398844C4D3353383936325F4941525C50726F10 +S1139894675C6C69625C6472697665726C69625C4B +S11398A4696E746572727570742E6300433A5C5702 +S11398B46F726B5C736F6674776172655C4F70650D +S11398C46E424C545C5461726765745C44656D6F9C +S11398D45C41524D434D335F4C4D33535F454B5FB5 +S11398E44C4D3353383936325F4941525C50726FB0 +S11398F4675C6C69625C6472697665726C69625CEB +S113990473797363746C2E6300000000433A5C57EC +S11399146F726B5C736F6674776172655C4F7065AC +S11399246E424C545C5461726765745C44656D6F3B +S11399345C41524D434D335F4C4D33535F454B5F54 +S11399444C4D3353383936325F4941525C50726F4F +S1139954675C6C69625C6472697665726C69625C8A +S11399647379737469636B2E63000000433A5C5724 +S11399746F726B5C736F6674776172655C4F70654C +S11399846E424C545C5461726765745C44656D6FDB +S11399945C41524D434D335F4C4D33535F454B5FF4 +S11399A44C4D3353383936325F4941525C50726FEF +S11399B4675C6C69625C6472697665726C69625C2A +S11399C463616E2E63000000433A5C576F726B5CF4 +S11399D4736F6674776172655C4F70656E424C5444 +S11399E45C5461726765745C44656D6F5C41524D8F +S11399F4434D335F4C4D33535F454B5F4C4D3353B1 +S1139A04383936325F4941525C50726F675C6C6915 +S1139A14625C6472697665726C69625C6770696FB2 +S1139A242E63000040420F0000201C0080841E00AE +S1139A3400802500999E36000040380000093D004E +S1139A4400803E0000004B00404B4C0000204E00C0 +S1139A54808D5B0000C05D000080700000127A00FD +S1139A6400007D0080969800001BB7000080BB00B6 +S1139A74C0E8CE00647ADA000024F4000000FA009E +S1139A84433A5C576F726B5C736F6674776172658B +S1139A945C4F70656E424C545C5461726765745CCF +S1139AA444656D6F5C41524D434D335F4C4D3353AC +S1139AB45F454B5F4C4D3353383936325F4941521D +S1139AC45C50726F675C6C69625C6472697665721F +S1139AD46C69625C756172742E63000010B5074989 +S1139AE479441831064C7C44163404E00A68081D91 +S1139AF4511888470146A142F8D110BD2C0000003A +S1139B043800000050F8041B61B150F8042BD3074B +S1139B1444BFA9F101039A18002342F8043B091F26 +S1139B24FAD1EFE770470000DDFFFFFF58000000A3 +S1139B3400000020000000000100000000F009F80B +S1139B44002801D0FFF7CAFF0020FEF78DFE00F0C5 +S1139B5402F80120704700F001B8FEE707463846D2 +S1139B6400F002F8FBE7000080B5C046C046024A94 +S1139B7411001820ABBEFBE726000200034B9D46F0 +S1139B84C046C046C046C046FFF7D8FF580400206C +S10F9B9400E10F4004E10F4008E10F4025 +S9039B81E0 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/lm3s8962.dep b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/lm3s8962.dep index 954c9b64..de77e3a5 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/lm3s8962.dep +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/lm3s8962.dep @@ -30,6 +30,66 @@ $PROJ_DIR$\..\lib\driverlib\i2s.c $PROJ_DIR$\..\lib\driverlib\i2s.h $PROJ_DIR$\..\lib\driverlib\interrupt.c + $PROJ_DIR$\..\led.h + $PROJ_DIR$\..\main.c + $PROJ_DIR$\..\time.c + $PROJ_DIR$\..\time.h + $PROJ_DIR$\..\vectors.c + $PROJ_DIR$\..\obj\mpu.pbi + $PROJ_DIR$\..\obj\interrupt.pbi + $PROJ_DIR$\..\obj\pwm.pbi + $PROJ_DIR$\..\obj\i2c.lst + $PROJ_DIR$\..\obj\stm32f10x_i2c.pbi + $PROJ_DIR$\..\obj\qei.pbi + $PROJ_DIR$\..\obj\stm32f10x_crc.o + $PROJ_DIR$\..\obj\flash.lst + $PROJ_DIR$\..\obj\ssi.pbi + $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.srec + $PROJ_DIR$\..\obj\stm32f10x_cec.o + $PROJ_DIR$\..\obj\stm32f10x_can.o + $PROJ_DIR$\..\obj\misc.o + $PROJ_DIR$\..\obj\stm32f10x_bkp.o + $PROJ_DIR$\..\obj\core_cm3.o + $PROJ_DIR$\..\obj\cstart.o + $PROJ_DIR$\..\obj\stm32f10x_fsmc.o + $PROJ_DIR$\..\obj\stm32f10x_adc.pbi + $TOOLKIT_DIR$\lib\dl7M_tln.a + $TOOLKIT_DIR$\lib\rt7M_tl.a + $PROJ_DIR$\..\obj\stm32f10x_dbgmcu.pbi + $PROJ_DIR$\..\obj\stm32f10x_bkp.pbi + $PROJ_DIR$\..\obj\stm32f10x_can.pbi + $PROJ_DIR$\..\obj\stm32f10x_cec.pbi + $PROJ_DIR$\..\obj\stm32f10x_crc.pbi + $PROJ_DIR$\..\obj\stm32f10x_dac.pbi + $PROJ_DIR$\..\obj\stm32f10x_dma.pbi + $PROJ_DIR$\..\obj\stm32f10x_exti.pbi + $PROJ_DIR$\..\obj\uart.lst + $PROJ_DIR$\..\obj\sysctl.lst + $PROJ_DIR$\..\obj\qei.lst + $PROJ_DIR$\..\obj\udma.lst + $PROJ_DIR$\..\obj\usb.lst + $PROJ_DIR$\..\obj\cpu.o + $PROJ_DIR$\..\obj\epi.o + $PROJ_DIR$\..\obj\ssi.lst + $PROJ_DIR$\..\obj\pwm.lst + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c $PROJ_DIR$\..\lib\driverlib\interrupt.h $PROJ_DIR$\..\lib\driverlib\mpu.c $PROJ_DIR$\..\lib\driverlib\mpu.h @@ -83,66 +143,6 @@ $PROJ_DIR$\..\irq.c $PROJ_DIR$\..\irq.h $PROJ_DIR$\..\led.c - $PROJ_DIR$\..\led.h - $PROJ_DIR$\..\main.c - $PROJ_DIR$\..\time.c - $PROJ_DIR$\..\time.h - $PROJ_DIR$\..\vectors.c - $PROJ_DIR$\..\obj\interrupt.pbi - $PROJ_DIR$\..\obj\mpu.pbi - $PROJ_DIR$\..\obj\pwm.pbi - $PROJ_DIR$\..\bin\demoprog_ek_lm3s6965.srec - $PROJ_DIR$\..\obj\ssi.pbi - $PROJ_DIR$\..\obj\stm32f10x_crc.o - $PROJ_DIR$\..\obj\i2c.lst - $PROJ_DIR$\..\obj\qei.pbi - $PROJ_DIR$\..\obj\stm32f10x_i2c.pbi - $PROJ_DIR$\..\obj\flash.lst - $PROJ_DIR$\..\obj\stm32f10x_cec.o - $PROJ_DIR$\..\obj\stm32f10x_can.o - $PROJ_DIR$\..\obj\misc.o - $PROJ_DIR$\..\obj\stm32f10x_bkp.o - $PROJ_DIR$\..\obj\core_cm3.o - $PROJ_DIR$\..\obj\cstart.o - $PROJ_DIR$\..\obj\stm32f10x_fsmc.o - $PROJ_DIR$\..\obj\stm32f10x_adc.pbi - $TOOLKIT_DIR$\lib\dl7M_tln.a - $TOOLKIT_DIR$\lib\rt7M_tl.a - $PROJ_DIR$\..\obj\stm32f10x_dbgmcu.pbi - $PROJ_DIR$\..\obj\stm32f10x_bkp.pbi - $PROJ_DIR$\..\obj\stm32f10x_can.pbi - $PROJ_DIR$\..\obj\stm32f10x_cec.pbi - $PROJ_DIR$\..\obj\stm32f10x_crc.pbi - $PROJ_DIR$\..\obj\stm32f10x_dac.pbi - $PROJ_DIR$\..\obj\stm32f10x_dma.pbi - $PROJ_DIR$\..\obj\stm32f10x_exti.pbi - $PROJ_DIR$\..\obj\uart.lst - $PROJ_DIR$\..\obj\sysctl.lst - $PROJ_DIR$\..\obj\qei.lst - $PROJ_DIR$\..\obj\udma.lst - $PROJ_DIR$\..\obj\usb.lst - $PROJ_DIR$\..\obj\cpu.o - $PROJ_DIR$\..\obj\epi.o - $PROJ_DIR$\..\obj\ssi.lst - $PROJ_DIR$\..\obj\pwm.lst - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_bkp.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_adc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_can.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_cec.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dac.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dbgmcu.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_dma.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_i2c.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_iwdg.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_pwr.c - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_sdio.c $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_spi.c @@ -283,11 +283,11 @@ ICCARM - 49 57 58 65 5 8 24 + 109 117 118 125 5 8 84 BICOMP - 49 57 58 65 5 8 24 + 109 117 118 125 5 8 84 @@ -306,11 +306,11 @@ ICCARM - 47 57 58 65 0 8 24 + 107 117 118 125 0 8 84 BICOMP - 47 57 58 65 0 8 24 + 107 117 118 125 0 8 84 @@ -329,11 +329,11 @@ ICCARM - 48 57 59 58 65 4 8 24 + 108 117 119 118 125 4 8 84 BICOMP - 48 57 59 58 65 4 8 24 + 108 117 119 118 125 4 8 84 @@ -342,7 +342,7 @@ ICCARM - 193 115 + 193 62 BICOMP @@ -365,7 +365,7 @@ ICCARM - 196 116 + 196 63 BICOMP @@ -375,11 +375,11 @@ ICCARM - 50 57 58 65 8 10 24 + 110 117 118 125 8 10 84 BICOMP - 50 57 58 65 8 10 24 + 110 117 118 125 8 10 84 @@ -398,11 +398,11 @@ ICCARM - 51 57 58 65 8 12 34 24 + 111 117 118 125 8 12 94 84 BICOMP - 51 57 58 65 8 12 34 24 + 111 117 118 125 8 12 94 84 @@ -411,7 +411,7 @@ ICCARM - 91 233 + 36 233 BICOMP @@ -421,11 +421,7 @@ ICCARM - 52 57 63 65 8 14 24 - - - BICOMP - 52 57 63 65 8 14 24 + 112 117 123 125 8 14 84 @@ -444,11 +440,11 @@ ICCARM - 53 57 58 63 65 8 16 24 + 113 117 118 123 125 8 16 84 BICOMP - 53 57 58 63 65 8 16 24 + 113 117 118 123 125 8 16 84 @@ -467,7 +463,7 @@ ICCARM - 54 57 63 65 8 18 34 24 + 114 117 123 125 8 18 94 84 @@ -476,7 +472,7 @@ ICCARM - 88 236 + 32 236 BICOMP @@ -486,11 +482,11 @@ ICCARM - 55 57 58 63 65 8 20 34 24 + 115 117 118 123 125 8 20 94 84 BICOMP - 55 57 58 63 65 8 20 34 24 + 115 117 118 123 125 8 20 94 84 @@ -509,11 +505,11 @@ ICCARM - 56 57 58 65 8 22 24 + 116 117 118 125 8 22 84 BICOMP - 56 57 58 65 8 22 24 + 116 117 118 125 8 22 84 @@ -526,17 +522,17 @@ BICOMP - 82 + 30 ICCARM - 57 59 65 7 8 24 + 117 119 125 7 8 84 BICOMP - 57 59 65 7 8 24 + 117 119 125 7 8 84 @@ -549,337 +545,6 @@ - - $PROJ_DIR$\..\lib\driverlib\mpu.c - - - ICCARM - 228 239 - - - BICOMP - 83 - - - - - ICCARM - 57 59 65 8 24 26 - - - BICOMP - 57 59 65 8 24 26 - - - - - $PROJ_DIR$\..\lib\driverlib\pwm.c - - - ICCARM - 118 240 - - - BICOMP - 84 - - - - - ICCARM - 57 58 60 63 65 8 24 28 - - - BICOMP - 57 58 60 63 65 8 24 28 - - - - - $PROJ_DIR$\..\lib\driverlib\qei.c - - - ICCARM - 112 241 - - - BICOMP - 89 - - - - - ICCARM - 57 58 61 65 8 24 30 - - - BICOMP - 57 58 61 65 8 24 30 - - - - - $PROJ_DIR$\..\lib\driverlib\ssi.c - - - ICCARM - 117 242 - - - BICOMP - 86 - - - - - ICCARM - 57 58 62 65 8 24 32 34 - - - BICOMP - 57 58 62 65 8 24 32 34 - - - - - $PROJ_DIR$\..\lib\driverlib\sysctl.c - - - ICCARM - 111 243 - - - BICOMP - 149 - - - - - ICCARM - 57 59 63 65 7 8 24 34 - - - BICOMP - 57 59 63 65 7 8 24 34 - - - - - $PROJ_DIR$\..\lib\driverlib\systick.c - - - ICCARM - 227 244 - - - BICOMP - 150 - - - - - ICCARM - 57 59 65 8 24 36 - - - BICOMP - 57 59 65 8 24 36 - - - - - $PROJ_DIR$\..\lib\driverlib\timer.c - - - ICCARM - 212 160 - - - BICOMP - 209 - - - - - ICCARM - 57 58 64 65 8 24 38 - - - BICOMP - 57 58 64 65 8 24 38 - - - - - $PROJ_DIR$\..\lib\driverlib\uart.c - - - ICCARM - 110 245 - - - BICOMP - 151 - - - - - ICCARM - 57 58 63 65 66 8 24 40 34 - - - BICOMP - 57 58 63 65 66 8 24 40 34 - - - - - $PROJ_DIR$\..\lib\driverlib\udma.c - - - ICCARM - 113 246 - - - BICOMP - 152 - - - - - ICCARM - 65 67 8 24 42 - - - BICOMP - 65 67 8 24 42 - - - - - $PROJ_DIR$\..\lib\driverlib\usb.c - - - ICCARM - 114 247 - - - BICOMP - 153 - - - - - ICCARM - 57 58 65 68 8 24 42 44 - - - BICOMP - 57 58 65 68 8 24 42 44 - - - - - $PROJ_DIR$\..\lib\driverlib\watchdog.c - - - ICCARM - 232 248 - - - BICOMP - 154 - - - - - ICCARM - 57 58 65 69 8 24 46 - - - BICOMP - 57 58 65 69 8 24 46 - - - - - $PROJ_DIR$\..\boot.c - - - ICCARM - 205 185 - - - BICOMP - 161 - - - - - ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - - - $PROJ_DIR$\..\cstart.s - - - AARM - 97 - - - - - $PROJ_DIR$\..\irq.c - - - ICCARM - 213 182 - - - BICOMP - 145 - - - - - ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - - - $PROJ_DIR$\..\led.c - - - ICCARM - 207 184 - - - BICOMP - 146 - - - - - ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 - - - $PROJ_DIR$\..\main.c @@ -895,11 +560,11 @@ ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 @@ -918,11 +583,11 @@ ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 @@ -941,11 +606,11 @@ ICCARM - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 BICOMP - 73 260 71 75 77 80 57 58 59 63 65 34 16 40 4 24 36 + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 @@ -954,11 +619,11 @@ ICCARM - 95 + 42 BICOMP - 103 + 50 @@ -971,7 +636,7 @@ BICOMP - 99 + 46 @@ -980,11 +645,11 @@ ICCARM - 93 + 40 BICOMP - 104 + 51 @@ -993,11 +658,11 @@ ICCARM - 92 + 39 BICOMP - 105 + 52 @@ -1006,11 +671,11 @@ ICCARM - 87 + 35 BICOMP - 106 + 53 @@ -1023,20 +688,7 @@ BICOMP - 107 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c - - - ICCARM - 94 - - - BICOMP - 179 + 54 @@ -1049,7 +701,20 @@ BICOMP - 102 + 49 + + + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\misc.c + + + ICCARM + 41 + + + BICOMP + 179 @@ -1062,7 +727,7 @@ BICOMP - 108 + 55 @@ -1075,20 +740,7 @@ BICOMP - 109 - - - - - $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c - - - ICCARM - 96 - - - BICOMP - 178 + 56 @@ -1105,12 +757,25 @@ + + $PROJ_DIR$\..\lib\stdperiphlib\CMSIS\CM3\CoreSupport\core_cm3.c + + + ICCARM + 43 + + + BICOMP + 178 + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_fsmc.c ICCARM - 98 + 45 BICOMP @@ -1140,7 +805,7 @@ BICOMP - 90 + 33 @@ -1183,6 +848,337 @@ + + $PROJ_DIR$\..\lib\driverlib\mpu.c + + + ICCARM + 228 239 + + + BICOMP + 29 + + + + + ICCARM + 117 119 125 8 84 86 + + + BICOMP + 117 119 125 8 84 86 + + + + + $PROJ_DIR$\..\lib\driverlib\pwm.c + + + ICCARM + 65 240 + + + BICOMP + 31 + + + + + ICCARM + 117 118 120 123 125 8 84 88 + + + BICOMP + 117 118 120 123 125 8 84 88 + + + + + $PROJ_DIR$\..\lib\driverlib\qei.c + + + ICCARM + 59 241 + + + BICOMP + 34 + + + + + ICCARM + 117 118 121 125 8 84 90 + + + BICOMP + 117 118 121 125 8 84 90 + + + + + $PROJ_DIR$\..\lib\driverlib\ssi.c + + + ICCARM + 64 242 + + + BICOMP + 37 + + + + + ICCARM + 117 118 122 125 8 84 92 94 + + + BICOMP + 117 118 122 125 8 84 92 94 + + + + + $PROJ_DIR$\..\lib\driverlib\sysctl.c + + + ICCARM + 58 243 + + + BICOMP + 149 + + + + + ICCARM + 117 119 123 125 7 8 84 94 + + + BICOMP + 117 119 123 125 7 8 84 94 + + + + + $PROJ_DIR$\..\lib\driverlib\systick.c + + + ICCARM + 227 244 + + + BICOMP + 150 + + + + + ICCARM + 117 119 125 8 84 96 + + + BICOMP + 117 119 125 8 84 96 + + + + + $PROJ_DIR$\..\lib\driverlib\timer.c + + + ICCARM + 212 160 + + + BICOMP + 209 + + + + + ICCARM + 117 118 124 125 8 84 98 + + + BICOMP + 117 118 124 125 8 84 98 + + + + + $PROJ_DIR$\..\lib\driverlib\uart.c + + + ICCARM + 57 245 + + + BICOMP + 151 + + + + + ICCARM + 117 118 123 125 126 8 84 100 94 + + + BICOMP + 117 118 123 125 126 8 84 100 94 + + + + + $PROJ_DIR$\..\lib\driverlib\udma.c + + + ICCARM + 60 246 + + + BICOMP + 152 + + + + + ICCARM + 125 127 8 84 102 + + + BICOMP + 125 127 8 84 102 + + + + + $PROJ_DIR$\..\lib\driverlib\usb.c + + + ICCARM + 61 247 + + + BICOMP + 153 + + + + + ICCARM + 117 118 125 128 8 84 102 104 + + + BICOMP + 117 118 125 128 8 84 102 104 + + + + + $PROJ_DIR$\..\lib\driverlib\watchdog.c + + + ICCARM + 232 248 + + + BICOMP + 154 + + + + + ICCARM + 117 118 125 129 8 84 106 + + + BICOMP + 117 118 125 129 8 84 106 + + + + + $PROJ_DIR$\..\boot.c + + + ICCARM + 205 185 + + + BICOMP + 161 + + + + + ICCARM + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + BICOMP + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + + + $PROJ_DIR$\..\cstart.s + + + AARM + 44 + + + + + $PROJ_DIR$\..\irq.c + + + ICCARM + 213 182 + + + BICOMP + 145 + + + + + ICCARM + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + BICOMP + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + + + $PROJ_DIR$\..\led.c + + + ICCARM + 207 184 + + + BICOMP + 146 + + + + + ICCARM + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + BICOMP + 133 260 131 135 24 27 117 118 119 123 125 94 16 100 4 84 96 + + + $PROJ_DIR$\..\lib\stdperiphlib\STM32F10x_StdPeriph_Driver\src\stm32f10x_rtc.c @@ -1302,7 +1298,7 @@ ILINK - 155 229 185 201 230 115 97 116 226 233 234 235 236 237 238 182 184 183 239 240 241 242 243 244 189 160 245 246 247 159 248 181 101 217 100 + 155 229 185 201 230 62 44 63 226 233 234 235 236 237 238 182 184 183 239 240 241 242 243 244 189 160 245 246 247 159 248 181 48 217 47 @@ -1320,7 +1316,7 @@ BILINK - 249 161 250 251 252 253 254 255 256 257 258 82 145 146 211 83 84 89 86 149 150 190 209 151 152 153 206 154 + 249 161 250 251 252 253 254 255 256 257 258 30 145 146 211 29 31 34 37 149 150 190 209 151 152 153 206 154 @@ -1329,13 +1325,13 @@ OBJCOPY - 85 + 38 ILINK - 155 229 185 230 115 97 116 226 233 234 235 236 237 238 182 184 183 239 240 241 242 243 244 189 160 245 246 247 159 248 181 101 217 100 + 155 229 185 230 62 44 63 226 233 234 235 236 237 238 182 184 183 239 240 241 242 243 244 189 160 245 246 247 159 248 181 48 217 47 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/settings/lm3s8962.wsdt b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/settings/lm3s8962.wsdt index 47dd1485..9de7e936 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/settings/lm3s8962.wsdt +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/ide/settings/lm3s8962.wsdt @@ -24,7 +24,7 @@ - + TabID-30499-23628 @@ -36,7 +36,7 @@ - 0 + 0 TabID-20859-24014 @@ -46,7 +46,7 @@ - 0 + 0 @@ -59,7 +59,7 @@ - iaridepm.enu1-2-2722394-2-2240243125000241071206250718254-2-22411922-2-219242431002083241071125000241071 + iaridepm.enu1-2-2722394-2-2240243125000241071206250718254-2-22411922-2-219242431002083241071125000241071 diff --git a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/memory.x b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/memory.x index b3131fd0..99d161e5 100644 --- a/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/memory.x +++ b/Target/Demo/ARMCM3_LM3S_EK_LM3S8962_IAR/Prog/memory.x @@ -1,7 +1,7 @@ /*-Specials-*/ -define symbol __ICFEDIT_intvec_start__ = 0x00004000; +define symbol __ICFEDIT_intvec_start__ = 0x00008000; /*-Memory Regions-*/ -define symbol __ICFEDIT_region_ROM_start__ = 0x00004000; +define symbol __ICFEDIT_region_ROM_start__ = 0x00008000; define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF; diff --git a/Target/Source/ARMCM3_LM3S/Crossworks/memory.x b/Target/Source/ARMCM3_LM3S/Crossworks/memory.x index ccf0216a..51f63c78 100644 --- a/Target/Source/ARMCM3_LM3S/Crossworks/memory.x +++ b/Target/Source/ARMCM3_LM3S/Crossworks/memory.x @@ -2,7 +2,7 @@ MEMORY { UNPLACED_SECTIONS (wx) : ORIGIN = 0x100000000, LENGTH = 0 SRAM (wx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 - FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00006000 + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 } @@ -11,7 +11,7 @@ SECTIONS __SRAM_segment_start__ = 0x20000000; __SRAM_segment_end__ = 0x20002000; __FLASH_segment_start__ = 0x00000000; - __FLASH_segment_end__ = 0x00006000; + __FLASH_segment_end__ = 0x00008000; __STACKSIZE__ = 512; __STACKSIZE_PROCESS__ = 0; diff --git a/Target/Source/ARMCM3_LM3S/GCC/memory.x b/Target/Source/ARMCM3_LM3S/GCC/memory.x index d6cd9cc5..62a4c71a 100644 --- a/Target/Source/ARMCM3_LM3S/GCC/memory.x +++ b/Target/Source/ARMCM3_LM3S/GCC/memory.x @@ -1,6 +1,6 @@ MEMORY { - FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 24K + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 8K } diff --git a/Target/Source/ARMCM3_LM3S/IAR/memory.x b/Target/Source/ARMCM3_LM3S/IAR/memory.x index b7295d17..508b57fe 100644 --- a/Target/Source/ARMCM3_LM3S/IAR/memory.x +++ b/Target/Source/ARMCM3_LM3S/IAR/memory.x @@ -2,7 +2,7 @@ define symbol __ICFEDIT_intvec_start__ = 0x00000000; /*-Memory Regions-*/ define symbol __ICFEDIT_region_ROM_start__ = 0x00000000; -define symbol __ICFEDIT_region_ROM_end__ = 0x00005FFF; +define symbol __ICFEDIT_region_ROM_end__ = 0x00007FFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_end__ = 0x20001FFF; /*-Sizes-*/ diff --git a/Target/Source/ARMCM3_LM3S/cpu.c b/Target/Source/ARMCM3_LM3S/cpu.c index 210b122f..b1b4552f 100644 --- a/Target/Source/ARMCM3_LM3S/cpu.c +++ b/Target/Source/ARMCM3_LM3S/cpu.c @@ -40,25 +40,14 @@ /**************************************************************************************** * Macro definitions ****************************************************************************************/ -#if (BOOT_FILE_SYS_ENABLE > 0) - /** \brief Pointer to the user program's reset vector. Note that this needs to be - * changed in case the reserved memory for the bootloader is more than 0x6000. - */ - #define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr) 0x00006004) - /** \brief Pointer to the user program's vector table. Note that this needs to be - * changed in case the reserved memory for the bootloader is more than 0x6000. - */ - #define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)0x00006000) -#else - /** \brief Pointer to the user program's reset vector. Note that this needs to be - * changed in case the reserved memory for the bootloader is more than 0x2000. - */ - #define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr) 0x00004004) - /** \brief Pointer to the user program's vector table. Note that this needs to be - * changed in case the reserved memory for the bootloader is more than 0x2000. - */ - #define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)0x00004000) -#endif +/** \brief Pointer to the user program's reset vector. Note that this needs to be + * changed in case the reserved memory for the bootloader is more than 0x6000. + */ +#define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr)(FlashGetUserProgBaseAddress() + 0x00000004)) +/** \brief Pointer to the user program's vector table. Note that this needs to be + * changed in case the reserved memory for the bootloader is more than 0x6000. + */ +#define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)FlashGetUserProgBaseAddress()) /**************************************************************************************** diff --git a/Target/Source/ARMCM3_LM3S/flash.c b/Target/Source/ARMCM3_LM3S/flash.c index 229ddff4..5508c28e 100644 --- a/Target/Source/ARMCM3_LM3S/flash.c +++ b/Target/Source/ARMCM3_LM3S/flash.c @@ -111,20 +111,14 @@ static blt_addr FlashGetSectorSize(blt_int8u sector); */ static const tFlashSector flashLayout[] = { -#if (BOOT_FILE_SYS_ENABLE > 0) - /* the size of the bootloader with support for firmware update from a locally attached - * storage disk is larger so the start address of the user program is at a different - * location. + /* space is reserved for a bootloader configuration with all supported communication + * interfaces enabled. when for example only UART is needed, than the space required + * for the bootloader can be made a lot smaller here. */ /* { 0x00000000, 0x02000, 0}, flash sector 0 - reserved for bootloader */ /* { 0x00002000, 0x02000, 1}, flash sector 1 - reserved for bootloader */ /* { 0x00004000, 0x02000, 2}, flash sector 2 - reserved for bootloader */ -#else - /* { 0x00000000, 0x02000, 0}, flash sector 0 - 8kb */ - /*{ 0x00002000, 0x02000, 1}, flash sector 1 - 8kb */ - { 0x00004000, 0x02000, 2}, /* flash sector 2 - 8kb */ -#endif - { 0x00006000, 0x02000, 3}, /* flash sector 3 - 8kb */ + /* { 0x00006000, 0x02000, 3}, flash sector 3 - reserved for bootloader */ #if (BOOT_NVM_SIZE_KB > 32) { 0x00008000, 0x02000, 4}, /* flash sector 4 - 8kb */ { 0x0000A000, 0x02000, 5}, /* flash sector 5 - 8kb */ @@ -392,6 +386,18 @@ blt_bool FlashDone(void) } /*** end of FlashDone ***/ +/************************************************************************************//** +** \brief Obtains the base address of the flash memory available to the user program. +** This is basically the first address in the flashLayout table. +** \return Base address. +** +****************************************************************************************/ +blt_addr FlashGetUserProgBaseAddress(void) +{ + return flashLayout[0].sector_start; +} /*** end of FlashGetUserProgBaseAddress ***/ + + /************************************************************************************//** ** \brief Copies data currently in flash to the block->data and sets the ** base address. diff --git a/Target/Source/ARMCM3_LM3S/flash.h b/Target/Source/ARMCM3_LM3S/flash.h index 2642a0eb..418975be 100644 --- a/Target/Source/ARMCM3_LM3S/flash.h +++ b/Target/Source/ARMCM3_LM3S/flash.h @@ -36,12 +36,13 @@ /**************************************************************************************** * Function prototypes ****************************************************************************************/ -void FlashInit(void); -blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data); -blt_bool FlashErase(blt_addr addr, blt_int32u len); -blt_bool FlashWriteChecksum(void); -blt_bool FlashVerifyChecksum(void); -blt_bool FlashDone(void); +void FlashInit(void); +blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data); +blt_bool FlashErase(blt_addr addr, blt_int32u len); +blt_bool FlashWriteChecksum(void); +blt_bool FlashVerifyChecksum(void); +blt_bool FlashDone(void); +blt_addr FlashGetUserProgBaseAddress(void); #endif /* FLASH_H */ diff --git a/Target/Source/backdoor.c b/Target/Source/backdoor.c index dad1e70e..ee451aea 100644 --- a/Target/Source/backdoor.c +++ b/Target/Source/backdoor.c @@ -43,9 +43,18 @@ #if (BOOT_BACKDOOR_HOOKS_ENABLE == 0) #ifndef BACKDOOR_ENTRY_TIMEOUT_MS /** \brief Sets the time in milliseconds that the backdoor is open, but allow an - * override for this time. + * override for this time. note that this time should be at least 2.5 times + * as long as the time that is configured in Microboot's XCP settings for the + * connect command response. This is the last entry on XCP Timeouts tab. By + * default the connect command response is configured as 20ms by Microboot, + * except for TCP/IP where it is 300ms due to accomodate for worldwide + * network latency. */ - #define BACKDOOR_ENTRY_TIMEOUT_MS (50) + #if (BOOT_COM_NET_ENABLE == 1) + #define BACKDOOR_ENTRY_TIMEOUT_MS (750) + #else + #define BACKDOOR_ENTRY_TIMEOUT_MS (50) + #endif #endif #endif diff --git a/Target/Source/net.c b/Target/Source/net.c new file mode 100644 index 00000000..80931bab --- /dev/null +++ b/Target/Source/net.c @@ -0,0 +1,316 @@ +/************************************************************************************//** +* \file Source\net.c +* \brief Bootloader TCP/IP network communication interface source file. +* \ingroup Core +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +* modify it under the terms of the GNU General Public License as published by the Free +* Software Foundation, either version 3 of the License, or (at your option) any later +* version. +* +* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +* PURPOSE. See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with OpenBLT. +* If not, see . +* +* A special exception to the GPL is included to allow you to distribute a combined work +* that includes OpenBLT without being obliged to provide the source code for any +* proprietary components. The exception text is included at the bottom of the license +* file . +* +* \endinternal +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ +#if (BOOT_COM_NET_ENABLE > 0) +#include "netdev.h" +#include "uip.h" +#include "uip_arp.h" +#endif + + +#if (BOOT_COM_NET_ENABLE > 0) +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +/** \brief Delta time for the uIP periodic timer. */ +#define NET_UIP_PERIODIC_TIMER_MS (500) +/** \brief Delta time for the uIP ARP timer. */ +#define NET_UIP_ARP_TIMER_MS (10000) +/** \brief Macro for accessing the Ethernet header information in the buffer */ +#define NET_UIP_HEADER_BUF ((struct uip_eth_hdr *)&uip_buf[0]) + + +/**************************************************************************************** +* Hook functions +****************************************************************************************/ +#if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) +extern void NetIpAddressHook(blt_int8u *ipAddrArray); +#endif +#if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) +extern void NetNetworkMaskHook(blt_int8u *netMaskArray); +#endif + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +static void NetServerTask(void); + + +/**************************************************************************************** +* Local data declarations +****************************************************************************************/ +/** \brief Holds the time out value of the uIP periodic timer. */ +static blt_int32u periodicTimerTimeOut; +/** \brief Holds the time out value of the uIP ARP timer. */ +static blt_int32u ARPTimerTimeOut; + + +/************************************************************************************//** +** \brief Initializes the TCP/IP network communication interface. +** \return none. +** +****************************************************************************************/ +void NetInit(void) +{ + uip_ipaddr_t ipaddr; + #if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) + blt_int8u ipAddrArray[4]; + #endif + #if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) + blt_int8u netMaskArray[4]; + #endif + + /* initialize the network device */ + netdev_init(); + /* initialize the uIP TCP/IP stack. */ + uip_init(); + /* set the IP address */ + #if (BOOT_COM_NET_IPADDR_HOOK_ENABLE > 0) + NetIpAddressHook(ipAddrArray); + uip_ipaddr(ipaddr, ipAddrArray[0], ipAddrArray[1], ipAddrArray[2], ipAddrArray[3]); + #else + uip_ipaddr(ipaddr, BOOT_COM_NET_IPADDR0, BOOT_COM_NET_IPADDR1, BOOT_COM_NET_IPADDR2, + BOOT_COM_NET_IPADDR3); + #endif + uip_sethostaddr(ipaddr); + /* set the network mask */ + #if (BOOT_COM_NET_NETMASK_HOOK_ENABLE > 0) + NetNetworkMaskHook(netMaskArray); + uip_ipaddr(ipaddr, netMaskArray[0], netMaskArray[1], netMaskArray[2], netMaskArray[3]); + #else + uip_ipaddr(ipaddr, BOOT_COM_NET_NETMASK0, BOOT_COM_NET_NETMASK1, BOOT_COM_NET_NETMASK2, + BOOT_COM_NET_NETMASK3); + #endif + uip_setnetmask(ipaddr); + /* set the MAC address */ + netdev_setmacaddr(); + /* initialize the timer variables */ + periodicTimerTimeOut = TimerGet() + NET_UIP_PERIODIC_TIMER_MS; + ARPTimerTimeOut = TimerGet() + NET_UIP_ARP_TIMER_MS; + /* start listening on the configured port for XCP transfers on TCP/IP */ + uip_listen(HTONS(BOOT_COM_NET_PORT)); +} /*** end of NetInit ***/ + + +/************************************************************************************//** +** \brief Transmits a packet formatted for the communication interface. +** \param data Pointer to byte array with data that it to be transmitted. +** \param len Number of bytes that are to be transmitted. +** \return none. +** +****************************************************************************************/ +void NetTransmitPacket(blt_int8u *data, blt_int8u len) +{ + uip_tcp_appstate_t *s; + blt_int16u cnt; + + /* get pointer to application state */ + s = &(uip_conn->appstate); + + /* add the dto counter first */ + *(blt_int32u*)&(s->dto_data[0]) = s->dto_counter; + /* copy the actual XCP response */ + for (cnt=0; cntdto_data[cnt+4] = data[cnt]; + } + /* set the length of the TCP/IP packet */ + s->dto_len = len + 4; + /* submit it for transmission */ + uip_send(s->dto_data, s->dto_len); + /* update dto counter for the next transmission */ + s->dto_counter++; +} /*** end of NetTransmitPacket ***/ + + +/************************************************************************************//** +** \brief Receives a communication interface packet if one is present. +** \param data Pointer to byte array where the data is to be stored. +** \return BLT_TRUE if a packet was received, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool NetReceivePacket(blt_int8u *data) +{ + /* run the TCP/IP server task function, which will handle the reception and + * transmission of XCP packets + */ + NetServerTask(); + + /* packet reception and transmission is completely handled by the NetServerTask so + * always return BLT_FALSE here. + */ + return BLT_FALSE; +} /*** end of NetReceivePacket ***/ + + +/************************************************************************************//** +** \brief The uIP network application that implements XCP on TCP/IP. Note that this +** application make use of the fact that XCP is request/response based. So +** no new request will come in when a response is pending for transmission, +** if so, the transmission of the pending response is aborted. +** \return none. +** +****************************************************************************************/ +void NetApp(void) +{ + uip_tcp_appstate_t *s; + blt_int8u *newDataPtr; + + /* get pointer to application state */ + s = &(uip_conn->appstate); + + if (uip_connected()) + { + /* init the dto counter and reset the pending dto data length */ + s->dto_counter = 1; + s->dto_len = 0; + return; + } + + if (uip_acked()) + { + /* dto sent so set the pending dto data length to zero */ + s->dto_len = 0; + } + + if (uip_rexmit()) + { + /* retransmit the currently pending dto response */ + if (s->dto_len > 0) + { + /* resend the last pending dto response */ + uip_send(s->dto_data, s->dto_len); + } + } + + if (uip_newdata()) + { + /* XCP is request/response. this means is a new request comes in when a response + * transmission is still pending, the XCP master either re-initialized or sent + * the request again because of a response time-out. Either way the pending response + * should be cancelled before handling the new request. + */ + s->dto_len = 0; + /* the first 4 bytes contain a counter value in which we are not really interested */ + newDataPtr = uip_appdata; + XcpPacketReceived(&newDataPtr[4]); + } +} /*** end of NetApp ***/ + + +/************************************************************************************//** +** \brief Runs the TCP/IP server task. +** \return none. +** +****************************************************************************************/ +static void NetServerTask(void) +{ + blt_int32u connection; + blt_int32u packetLen; + + /* check for an RX packet and read it. */ + packetLen = netdev_read(); + if(packetLen > 0) + { + /* set uip_len for uIP stack usage */ + uip_len = (blt_int16u)packetLen; + + /* process incoming IP packets here. */ + if(NET_UIP_HEADER_BUF->type == htons(UIP_ETHTYPE_IP)) + { + uip_arp_ipin(); + uip_input(); + /* if the above function invocation resulted in data that + * should be sent out on the network, the global variable + * uip_len is set to a value > 0. + */ + if(uip_len > 0) + { + uip_arp_out(); + netdev_send(); + uip_len = 0; + } + } + /* process incoming ARP packets here. */ + else if(NET_UIP_HEADER_BUF->type == htons(UIP_ETHTYPE_ARP)) + { + uip_arp_arpin(); + + /* if the above function invocation resulted in data that + * should be sent out on the network, the global variable + * uip_len is set to a value > 0. + */ + if(uip_len > 0) + { + netdev_send(); + uip_len = 0; + } + } + } + + /* process TCP/IP Periodic Timer here. */ + if (TimerGet() >= periodicTimerTimeOut) + { + periodicTimerTimeOut += NET_UIP_PERIODIC_TIMER_MS; + for (connection = 0; connection < UIP_CONNS; connection++) + { + uip_periodic(connection); + /* If the above function invocation resulted in data that + * should be sent out on the network, the global variable + * uip_len is set to a value > 0. + */ + if(uip_len > 0) + { + uip_arp_out(); + netdev_send(); + uip_len = 0; + } + } + } + + /* process ARP Timer here. */ + if (TimerGet() >= ARPTimerTimeOut) + { + ARPTimerTimeOut += NET_UIP_ARP_TIMER_MS; + uip_arp_timer(); + } +} /*** end of NetServerTask ***/ +#endif /* BOOT_COM_NET_ENABLE > 0 */ + + +/*********************************** end of net.c **************************************/ diff --git a/Target/Source/net.h b/Target/Source/net.h new file mode 100644 index 00000000..2020a732 --- /dev/null +++ b/Target/Source/net.h @@ -0,0 +1,71 @@ +/************************************************************************************//** +* \file Source\net.h +* \brief Bootloader TCP/IP network communication interface header file. +* \ingroup Core +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2014 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT is free software: you can redistribute it and/or +* modify it under the terms of the GNU General Public License as published by the Free +* Software Foundation, either version 3 of the License, or (at your option) any later +* version. +* +* OpenBLT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +* PURPOSE. See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with OpenBLT. +* If not, see . +* +* A special exception to the GPL is included to allow you to distribute a combined work +* that includes OpenBLT without being obliged to provide the source code for any +* proprietary components. The exception text is included at the bottom of the license +* file . +* +* \endinternal +****************************************************************************************/ +#ifndef NET_H +#define NET_H + +#if (BOOT_COM_NET_ENABLE > 0) +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +#ifndef UIP_APPCALL +#define UIP_APPCALL NetApp +#endif /* UIP_APPCALL */ + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +/** \brief Define the uip_tcp_appstate_t datatype. This is the state of our tcp/ip + * application, and the memory required for this state is allocated together + * with each TCP connection. One application state for each TCP connection. + */ +typedef struct net_state +{ + blt_int32u dto_counter; + blt_int8u dto_data[BOOT_COM_NET_TX_MAX_DATA + 4]; /* +4 for counter overhead */ + blt_int16u dto_len; +} uip_tcp_appstate_t; + + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void NetInit(void); +void NetApp(void); +void NetTransmitPacket(blt_int8u *data, blt_int8u len); +blt_bool NetReceivePacket(blt_int8u *data); +#endif /* BOOT_COM_NET_ENABLE > 0 */ + + +#endif /* NET_H */ +/*********************************** end of net.h **************************************/ diff --git a/Target/Source/plausibility.h b/Target/Source/plausibility.h index 54b05fbf..76ff1f16 100644 --- a/Target/Source/plausibility.h +++ b/Target/Source/plausibility.h @@ -323,52 +323,20 @@ #error "BOOT_COM_NET_NETMASK3 must be >= 0" #endif - #ifndef BOOT_COM_NET_MACADDR0 - #error "BOOT_COM_NET_MACADDR0 is missing in blt_conf.h" + #ifndef BOOT_COM_NET_PORT + #error "BOOT_COM_NET_PORT is missing in blt_conf.h" #endif - #if (BOOT_COM_NET_MACADDR0 < 0) - #error "BOOT_COM_NET_MACADDR0 must be >= 0" + #if (BOOT_COM_NET_PORT < 0) + #error "BOOT_COM_NET_PORT must be >= 0" #endif - #ifndef BOOT_COM_NET_MACADDR1 - #error "BOOT_COM_NET_MACADDR1 is missing in blt_conf.h" + #ifndef BOOT_COM_NET_IPADDR_HOOK_ENABLE + #define BOOT_COM_NET_IPADDR_HOOK_ENABLE (0) #endif - #if (BOOT_COM_NET_MACADDR1 < 0) - #error "BOOT_COM_NET_MACADDR1 must be >= 0" - #endif - - #ifndef BOOT_COM_NET_MACADDR2 - #error "BOOT_COM_NET_MACADDR2 is missing in blt_conf.h" - #endif - - #if (BOOT_COM_NET_MACADDR2 < 0) - #error "BOOT_COM_NET_MACADDR2 must be >= 0" - #endif - - #ifndef BOOT_COM_NET_MACADDR3 - #error "BOOT_COM_NET_MACADDR3 is missing in blt_conf.h" - #endif - - #if (BOOT_COM_NET_MACADDR3 < 0) - #error "BOOT_COM_NET_MACADDR3 must be >= 0" - #endif - - #ifndef BOOT_COM_NET_MACADDR4 - #error "BOOT_COM_NET_MACADDR4 is missing in blt_conf.h" - #endif - - #if (BOOT_COM_NET_MACADDR4 < 0) - #error "BOOT_COM_NET_MACADDR4 must be >= 0" - #endif - - #ifndef BOOT_COM_NET_MACADDR5 - #error "BOOT_COM_NET_MACADDR5 is missing in blt_conf.h" - #endif - - #if (BOOT_COM_NET_MACADDR5 < 0) - #error "BOOT_COM_NET_MACADDR5 must be >= 0" + #ifndef BOOT_COM_NET_NETMASK_HOOK_ENABLE + #define BOOT_COM_NET_NETMASK_HOOK_ENABLE (0) #endif #endif /* BOOT_COM_USB_ENABLE > 0 */ diff --git a/Target/Source/third_party/uip/README b/Target/Source/third_party/uip/README new file mode 100644 index 00000000..909f6520 --- /dev/null +++ b/Target/Source/third_party/uip/README @@ -0,0 +1,13 @@ +uIP is a very small implementation of the TCP/IP stack that is written +by Adam Dunkels . More information can be obtained +at the uIP homepage at http://www.sics.se/~adam/uip/. + +This is version $Name: uip-1-0 $. + +The directory structure look as follows: + +apps/ - Example applications +doc/ - Documentation +lib/ - Library code used by some applications +uip/ - uIP TCP/IP stack code +unix/ - uIP as a user space process under FreeBSD or Linux diff --git a/Target/Source/third_party/uip/apps/README b/Target/Source/third_party/uip/apps/README new file mode 100644 index 00000000..f8892095 --- /dev/null +++ b/Target/Source/third_party/uip/apps/README @@ -0,0 +1,2 @@ +This directory contains a few example applications. They are not all +heavily tested, however. diff --git a/Target/Source/third_party/uip/apps/dhcpc/Makefile.dhcpc b/Target/Source/third_party/uip/apps/dhcpc/Makefile.dhcpc new file mode 100644 index 00000000..6a1580d1 --- /dev/null +++ b/Target/Source/third_party/uip/apps/dhcpc/Makefile.dhcpc @@ -0,0 +1 @@ +APP_SOURCES += dhcpc.c timer.c diff --git a/Target/Source/third_party/uip/apps/dhcpc/dhcpc.c b/Target/Source/third_party/uip/apps/dhcpc/dhcpc.c new file mode 100644 index 00000000..9c881859 --- /dev/null +++ b/Target/Source/third_party/uip/apps/dhcpc/dhcpc.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2005, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $ + */ + +#include +#include + +#include "uip.h" +#include "dhcpc.h" +#include "uip_timer.h" +#include "pt.h" + +#define STATE_INITIAL 0 +#define STATE_SENDING 1 +#define STATE_OFFER_RECEIVED 2 +#define STATE_CONFIG_RECEIVED 3 + +static struct dhcpc_state s; + +struct dhcp_msg { + u8_t op, htype, hlen, hops; + u8_t xid[4]; + u16_t secs, flags; + u8_t ciaddr[4]; + u8_t yiaddr[4]; + u8_t siaddr[4]; + u8_t giaddr[4]; + u8_t chaddr[16]; +#ifndef UIP_CONF_DHCP_LIGHT + u8_t sname[64]; + u8_t file[128]; +#endif + u8_t options[312]; +}; + +#define BOOTP_BROADCAST 0x8000 + +#define DHCP_REQUEST 1 +#define DHCP_REPLY 2 +#define DHCP_HTYPE_ETHERNET 1 +#define DHCP_HLEN_ETHERNET 6 +#define DHCP_MSG_LEN 236 + +#define DHCPC_SERVER_PORT 67 +#define DHCPC_CLIENT_PORT 68 + +#define DHCPDISCOVER 1 +#define DHCPOFFER 2 +#define DHCPREQUEST 3 +#define DHCPDECLINE 4 +#define DHCPACK 5 +#define DHCPNAK 6 +#define DHCPRELEASE 7 + +#define DHCP_OPTION_SUBNET_MASK 1 +#define DHCP_OPTION_ROUTER 3 +#define DHCP_OPTION_DNS_SERVER 6 +#define DHCP_OPTION_REQ_IPADDR 50 +#define DHCP_OPTION_LEASE_TIME 51 +#define DHCP_OPTION_MSG_TYPE 53 +#define DHCP_OPTION_SERVER_ID 54 +#define DHCP_OPTION_REQ_LIST 55 +#define DHCP_OPTION_END 255 + +static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23}; +static const u8_t magic_cookie[4] = {99, 130, 83, 99}; +/*---------------------------------------------------------------------------*/ +static u8_t * +add_msg_type(u8_t *optptr, u8_t type) +{ + *optptr++ = DHCP_OPTION_MSG_TYPE; + *optptr++ = 1; + *optptr++ = type; + return optptr; +} +/*---------------------------------------------------------------------------*/ +static u8_t * +add_server_id(u8_t *optptr) +{ + *optptr++ = DHCP_OPTION_SERVER_ID; + *optptr++ = 4; + memcpy(optptr, s.serverid, 4); + return optptr + 4; +} +/*---------------------------------------------------------------------------*/ +static u8_t * +add_req_ipaddr(u8_t *optptr) +{ + *optptr++ = DHCP_OPTION_REQ_IPADDR; + *optptr++ = 4; + memcpy(optptr, s.ipaddr, 4); + return optptr + 4; +} +/*---------------------------------------------------------------------------*/ +static u8_t * +add_req_options(u8_t *optptr) +{ + *optptr++ = DHCP_OPTION_REQ_LIST; + *optptr++ = 3; + *optptr++ = DHCP_OPTION_SUBNET_MASK; + *optptr++ = DHCP_OPTION_ROUTER; + *optptr++ = DHCP_OPTION_DNS_SERVER; + return optptr; +} +/*---------------------------------------------------------------------------*/ +static u8_t * +add_end(u8_t *optptr) +{ + *optptr++ = DHCP_OPTION_END; + return optptr; +} +/*---------------------------------------------------------------------------*/ +static void +create_msg(register struct dhcp_msg *m) +{ + m->op = DHCP_REQUEST; + m->htype = DHCP_HTYPE_ETHERNET; + m->hlen = s.mac_len; + m->hops = 0; + memcpy(m->xid, xid, sizeof(m->xid)); + m->secs = 0; + m->flags = HTONS(BOOTP_BROADCAST); /* Broadcast bit. */ + /* uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/ + memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr)); + memset(m->yiaddr, 0, sizeof(m->yiaddr)); + memset(m->siaddr, 0, sizeof(m->siaddr)); + memset(m->giaddr, 0, sizeof(m->giaddr)); + memcpy(m->chaddr, s.mac_addr, s.mac_len); + memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len); +#ifndef UIP_CONF_DHCP_LIGHT + memset(m->sname, 0, sizeof(m->sname)); + memset(m->file, 0, sizeof(m->file)); +#endif + + memcpy(m->options, magic_cookie, sizeof(magic_cookie)); +} +/*---------------------------------------------------------------------------*/ +static void +send_discover(void) +{ + u8_t *end; + struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; + + create_msg(m); + + end = add_msg_type(&m->options[4], DHCPDISCOVER); + end = add_req_options(end); + end = add_end(end); + + uip_send(uip_appdata, end - (u8_t *)uip_appdata); +} +/*---------------------------------------------------------------------------*/ +static void +send_request(void) +{ + u8_t *end; + struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; + + create_msg(m); + + end = add_msg_type(&m->options[4], DHCPREQUEST); + end = add_server_id(end); + end = add_req_ipaddr(end); + end = add_end(end); + + uip_send(uip_appdata, end - (u8_t *)uip_appdata); +} +/*---------------------------------------------------------------------------*/ +static u8_t +parse_options(u8_t *optptr, int len) +{ + u8_t *end = optptr + len; + u8_t type = 0; + + while(optptr < end) { + switch(*optptr) { + case DHCP_OPTION_SUBNET_MASK: + memcpy(s.netmask, optptr + 2, 4); + break; + case DHCP_OPTION_ROUTER: + memcpy(s.default_router, optptr + 2, 4); + break; + case DHCP_OPTION_DNS_SERVER: + memcpy(s.dnsaddr, optptr + 2, 4); + break; + case DHCP_OPTION_MSG_TYPE: + type = *(optptr + 2); + break; + case DHCP_OPTION_SERVER_ID: + memcpy(s.serverid, optptr + 2, 4); + break; + case DHCP_OPTION_LEASE_TIME: + memcpy(s.lease_time, optptr + 2, 4); + break; + case DHCP_OPTION_END: + return type; + } + + optptr += optptr[1] + 2; + } + return type; +} +/*---------------------------------------------------------------------------*/ +static u8_t +parse_msg(void) +{ + struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; + + if(m->op == DHCP_REPLY && + memcmp(m->xid, xid, sizeof(xid)) == 0 && + memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) { + memcpy(s.ipaddr, m->yiaddr, 4); + return parse_options(&m->options[4], uip_datalen()); + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(handle_dhcp(void)) +{ + PT_BEGIN(&s.pt); + + /* try_again:*/ + s.state = STATE_SENDING; + s.ticks = CLOCK_SECOND; + + do { + send_discover(); + timer_set(&s.timer, s.ticks); + PT_YIELD(&s.pt); + PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer)); + + if(uip_newdata() && parse_msg() == DHCPOFFER) { + s.state = STATE_OFFER_RECEIVED; + break; + } + + if(s.ticks < CLOCK_SECOND * 60) { + s.ticks *= 2; + } + } while(s.state != STATE_OFFER_RECEIVED); + + s.ticks = CLOCK_SECOND; + + do { + send_request(); + timer_set(&s.timer, s.ticks); + PT_YIELD(&s.pt); + PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer)); + + if(uip_newdata() && parse_msg() == DHCPACK) { + s.state = STATE_CONFIG_RECEIVED; + break; + } + + if(s.ticks <= CLOCK_SECOND * 10) { + s.ticks += CLOCK_SECOND; + } else { + PT_RESTART(&s.pt); + } + } while(s.state != STATE_CONFIG_RECEIVED); + +#if 0 + printf("Got IP address %d.%d.%d.%d\n", + uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr), + uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr)); + printf("Got netmask %d.%d.%d.%d\n", + uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask), + uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask)); + printf("Got DNS server %d.%d.%d.%d\n", + uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr), + uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr)); + printf("Got default router %d.%d.%d.%d\n", + uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router), + uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router)); + printf("Lease expires in %ld seconds\n", + ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1])); +#endif + + dhcpc_configured(&s); + + /* timer_stop(&s.timer);*/ + + /* + * PT_END restarts the thread so we do this instead. Eventually we + * should reacquire expired leases here. + */ + while(1) { + PT_YIELD(&s.pt); + } + + PT_END(&s.pt); +} +/*---------------------------------------------------------------------------*/ +void +dhcpc_init(const void *mac_addr, int mac_len) +{ + uip_ipaddr_t addr; + + s.mac_addr = mac_addr; + s.mac_len = mac_len; + + s.state = STATE_INITIAL; + uip_ipaddr(addr, 255,255,255,255); + s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT)); + if(s.conn != NULL) { + uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT)); + } + PT_INIT(&s.pt); +} +/*---------------------------------------------------------------------------*/ +void +dhcpc_appcall(void) +{ + handle_dhcp(); +} +/*---------------------------------------------------------------------------*/ +void +dhcpc_request(void) +{ + u16_t ipaddr[2]; + + if(s.state == STATE_INITIAL) { + uip_ipaddr(ipaddr, 0,0,0,0); + uip_sethostaddr(ipaddr); + /* handle_dhcp(PROCESS_EVENT_NONE, NULL);*/ + } +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/apps/dhcpc/dhcpc.h b/Target/Source/third_party/uip/apps/dhcpc/dhcpc.h new file mode 100644 index 00000000..0d65e921 --- /dev/null +++ b/Target/Source/third_party/uip/apps/dhcpc/dhcpc.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2005, Swedish Institute of Computer Science + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $ + */ +#ifndef __DHCPC_H__ +#define __DHCPC_H__ + +#include "uip_timer.h" +#include "pt.h" + +struct dhcpc_state { + struct pt pt; + char state; + struct uip_udp_conn *conn; + struct timer timer; + u16_t ticks; + const void *mac_addr; + int mac_len; + + u8_t serverid[4]; + + u16_t lease_time[2]; + u16_t ipaddr[2]; + u16_t netmask[2]; + u16_t dnsaddr[2]; + u16_t default_router[2]; +}; + +void dhcpc_init(const void *mac_addr, int mac_len); +void dhcpc_request(void); + +void dhcpc_appcall(void); + +void dhcpc_configured(const struct dhcpc_state *s); + +typedef struct dhcpc_state uip_udp_appstate_t; +#define UIP_UDP_APPCALL dhcpc_appcall + + +#endif /* __DHCPC_H__ */ diff --git a/Target/Source/third_party/uip/apps/hello-world/Makefile.hello-world b/Target/Source/third_party/uip/apps/hello-world/Makefile.hello-world new file mode 100644 index 00000000..b94a4fb6 --- /dev/null +++ b/Target/Source/third_party/uip/apps/hello-world/Makefile.hello-world @@ -0,0 +1 @@ +APP_SOURCES += hello-world.c diff --git a/Target/Source/third_party/uip/apps/hello-world/hello-world.c b/Target/Source/third_party/uip/apps/hello-world/hello-world.c new file mode 100644 index 00000000..bdc5a0bb --- /dev/null +++ b/Target/Source/third_party/uip/apps/hello-world/hello-world.c @@ -0,0 +1,100 @@ +/** + * \addtogroup helloworld + * @{ + */ + +/** + * \file + * An example of how to write uIP applications + * with protosockets. + * \author + * Adam Dunkels + */ + +/* + * This is a short example of how to write uIP applications using + * protosockets. + */ + +/* + * We define the application state (struct hello_world_state) in the + * hello-world.h file, so we need to include it here. We also include + * uip.h (since this cannot be included in hello-world.h) and + * , since we use the memcpy() function in the code. + */ +#include "hello-world.h" +#include "uip.h" +#include + +/* + * Declaration of the protosocket function that handles the connection + * (defined at the end of the code). + */ +static int handle_connection(struct hello_world_state *s); +/*---------------------------------------------------------------------------*/ +/* + * The initialization function. We must explicitly call this function + * from the system initialization code, some time after uip_init() is + * called. + */ +void +hello_world_init(void) +{ + /* We start to listen for connections on TCP port 1000. */ + uip_listen(HTONS(1000)); +} +/*---------------------------------------------------------------------------*/ +/* + * In hello-world.h we have defined the UIP_APPCALL macro to + * hello_world_appcall so that this funcion is uIP's application + * function. This function is called whenever an uIP event occurs + * (e.g. when a new connection is established, new data arrives, sent + * data is acknowledged, data needs to be retransmitted, etc.). + */ +void +hello_world_appcall(void) +{ + /* + * The uip_conn structure has a field called "appstate" that holds + * the application state of the connection. We make a pointer to + * this to access it easier. + */ + struct hello_world_state *s = &(uip_conn->appstate); + + /* + * If a new connection was just established, we should initialize + * the protosocket in our applications' state structure. + */ + if(uip_connected()) { + PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); + } + + /* + * Finally, we run the protosocket function that actually handles + * the communication. We pass it a pointer to the application state + * of the current connection. + */ + handle_connection(s); +} +/*---------------------------------------------------------------------------*/ +/* + * This is the protosocket function that handles the communication. A + * protosocket function must always return an int, but must never + * explicitly return - all return statements are hidden in the PSOCK + * macros. + */ +static int +handle_connection(struct hello_world_state *s) +{ + PSOCK_BEGIN(&s->p); + + PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n\r"); + PSOCK_READTO(&s->p, '\n'); + strncpy(s->name, s->inputbuffer, sizeof(s->name)); + PSOCK_SEND_STR(&s->p, "Hello "); + PSOCK_SEND_STR(&s->p, s->name); + PSOCK_CLOSE(&s->p); + + PSOCK_END(&s->p); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/apps/hello-world/hello-world.h b/Target/Source/third_party/uip/apps/hello-world/hello-world.h new file mode 100644 index 00000000..35a85ea2 --- /dev/null +++ b/Target/Source/third_party/uip/apps/hello-world/hello-world.h @@ -0,0 +1,52 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup helloworld Hello, world + * @{ + * + * A small example showing how to write applications with + * \ref psock "protosockets". + */ + +/** + * \file + * Header file for an example of how to write uIP applications + * with protosockets. + * \author + * Adam Dunkels + */ + +#ifndef __HELLO_WORLD_H__ +#define __HELLO_WORLD_H__ + +/* Since this file will be included by uip.h, we cannot include uip.h + here. But we might need to include uipopt.h if we need the u8_t and + u16_t datatypes. */ +#include "uipopt.h" + +#include "psock.h" + +/* Next, we define the uip_tcp_appstate_t datatype. This is the state + of our application, and the memory required for this state is + allocated together with each TCP connection. One application state + for each TCP connection. */ +typedef struct hello_world_state { + struct psock p; + char inputbuffer[10]; + char name[40]; +} uip_tcp_appstate_t; + +/* Finally we define the application function to be called by uIP. */ +void hello_world_appcall(void); +#ifndef UIP_APPCALL +#define UIP_APPCALL hello_world_appcall +#endif /* UIP_APPCALL */ + +void hello_world_init(void); + +#endif /* __HELLO_WORLD_H__ */ +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/httpd/httpd.c b/Target/Source/third_party/uip/apps/httpd/httpd.c new file mode 100644 index 00000000..37f8d6e9 --- /dev/null +++ b/Target/Source/third_party/uip/apps/httpd/httpd.c @@ -0,0 +1,324 @@ +//***************************************************************************** +// HTTP server. +// Adam Dunkels +// +// Copyright (c) 2001, Adam Dunkels. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote +// products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This file is part of the uIP TCP/IP stack. +// +//***************************************************************************** + +#include "uip.h" +#include "httpd.h" + +//***************************************************************************** +// +// Macro for easy access to buffer data +// +//***************************************************************************** +#define BUF_APPDATA ((u8_t *)uip_appdata) + +//***************************************************************************** +// +// Definitions of HTTP Server States +// +//***************************************************************************** +#define HTTP_NOGET 0 +#define HTTP_FILE 1 +#define HTTP_TEXT 2 +#define HTTP_FUNC 3 +#define HTTP_END 4 + +//***************************************************************************** +// +// Global for keeping up with web server state. +// +//***************************************************************************** +struct httpd_state *hs; + +//***************************************************************************** +// +// Default Web Page - allocated in three segments to allow easy update of a +// counter that is incremented each time the page is sent. +// +//***************************************************************************** +static const char page_not_found[] = +"HTTP/1.0 404 OK\r\n" +"Server: UIP/1.0 (http://www.sics.se/~adam/uip/)\r\n" +"Content-type: text/html\r\n\r\n" +"" +"" + "" + "Page Not Found!" + "" + "" + "Page Not Found!" + "" +""; + +//***************************************************************************** +// +// Default Web Page - allocated in three segments to allow easy update of a +// counter that is incremented each time the page is sent. +// +//***************************************************************************** +static const char default_page_buf1of3[] = +"HTTP/1.0 200 OK\r\n" +"Server: UIP/1.0 (http://www.sics.se/~adam/uip/)\r\n" +"Content-type: text/html\r\n\r\n" +"" +"" + "" + "Welcome to the uIP web server!" + "" + "" + "
" + "

µIP Web Server

" + "

This web page is served by a small web server running on top of " + "the µIP embedded TCP/IP " + "stack." + "


" + "

The µIP stack is running on a " + "Texas Instruments " + "Stellaris® Ethernet Evaluation Kit" + "


" + "

This page has been sent "; +static char default_page_buf2of3[] = + "00001"; +static const char default_page_buf3of3[] = + " times since reset!" + "

" + "" +""; + +//***************************************************************************** +// +// Increment the view count. This routine will increment the 5-digit ascii +// counter that is sent with the web page. +// +//***************************************************************************** +static void +httpd_inc_page_count(void) +{ + // + // Increment the 'ones' digit. If it wraps, then increment the 'tens' + // digit. + // + default_page_buf2of3[4]++; + if(default_page_buf2of3[4] == 0x3a) + { + default_page_buf2of3[4] = 0x30; + default_page_buf2of3[3]++; + } + + // + // If the 'tens' digit wraps, increment the 'hundreds' digit. + // + if(default_page_buf2of3[3] == 0x3a) + { + default_page_buf2of3[3] = 0x30; + default_page_buf2of3[2]++; + } + + // + // If the 'hundreds' digit wraps, increment the 'thousands' digit. + // + if(default_page_buf2of3[2] == 0x3a) + { + default_page_buf2of3[2] = 0x30; + default_page_buf2of3[1]++; + } + + // + // If the 'thousands' digit wraps, increment the 'ten-thousands' digit. + // + if(default_page_buf2of3[1] == 0x3a) + { + default_page_buf2of3[1] = 0x30; + default_page_buf2of3[0]++; + } + + // + // If the 'ten-thousands' digit wrapped, start over. + // + if(default_page_buf2of3[0] == 0x3a) + { + default_page_buf2of3[0] = 0x30; + } +} + +//***************************************************************************** +// +// Initialize the web server. +// +// Starts to listen for incoming connection requests on TCP port 80. +// +//***************************************************************************** +void +httpd_init(void) +{ + // + // Listen to port 80. + // + uip_listen(HTONS(80)); +} + +//***************************************************************************** +// +// HTTP Application Callback Function +// +//***************************************************************************** +void +httpd_appcall(void) +{ + switch(uip_conn->lport) + { + // + // This is the web server: + // + case HTONS(80): + { + // + // Pick out the application state from the uip_conn structure. + // + hs = (struct httpd_state *)&(uip_conn->appstate); + + // + // We use the uip_ test functions to deduce why we were + // called. If uip_connected() is non-zero, we were called + // because a remote host has connected to us. If + // uip_newdata() is non-zero, we were called because the + // remote host has sent us new data, and if uip_acked() is + // non-zero, the remote host has acknowledged the data we + // previously sent to it. */ + if(uip_connected()) + { + // + // Since we have just been connected with the remote host, we + // reset the state for this connection. The ->count variable + // contains the amount of data that is yet to be sent to the + // remote host, and the ->state is set to HTTP_NOGET to signal + // that we haven't received any HTTP GET request for this + // connection yet. + // + hs->state = HTTP_NOGET; + hs->count = 0; + return; + } + else if(uip_poll()) + { + // + // If we are polled ten times, we abort the connection. This is + // because we don't want connections lingering indefinately in + // the system. + // + if(hs->count++ >= 10) + { + uip_abort(); + } + return; + } + else if(uip_newdata() && hs->state == HTTP_NOGET) + { + // + // This is the first data we receive, and it should contain a + // GET. + // + // Check for GET. + // + if(BUF_APPDATA[0] != 'G' || + BUF_APPDATA[1] != 'E' || + BUF_APPDATA[2] != 'T' || + BUF_APPDATA[3] != ' ') + { + // + // If it isn't a GET, we abort the connection. + // + uip_abort(); + return; + } + + // + // Check to see what we should send. + // + if((BUF_APPDATA[4] == '/') && + (BUF_APPDATA[5] == ' ')) + { + // + // Send buffer 1 + // + uip_send(default_page_buf1of3, + sizeof(default_page_buf1of3) - 1); + } + else + { + uip_send(page_not_found, + sizeof(page_not_found) - 1); + hs->count = 3; + } + } + else if(uip_acked()) + { + hs->count++; + if(hs->count == 1) + { + uip_send(default_page_buf2of3, + sizeof(default_page_buf2of3) - 1); + } + else if(hs->count == 2) + { + uip_send(default_page_buf3of3, + sizeof(default_page_buf3of3) - 1); + } + else if(hs->count == 3) + { + httpd_inc_page_count(); + uip_close(); + } + else + { + uip_close(); + } + } + // + // Finally, return to uIP. Our outgoing packet will soon be on its + // way... + // + return; + } + + default: + { + // + // Should never happen. + // + uip_abort(); + break; + } + } +} diff --git a/Target/Source/third_party/uip/apps/httpd/httpd.h b/Target/Source/third_party/uip/apps/httpd/httpd.h new file mode 100644 index 00000000..16d7e5d9 --- /dev/null +++ b/Target/Source/third_party/uip/apps/httpd/httpd.h @@ -0,0 +1,58 @@ +//***************************************************************************** +// HTTP server header file. +// Adam Dunkels +// +// Copyright (c) 2001, Adam Dunkels. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote +// products derived from this software without specific prior +// written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This file is part of the uIP TCP/IP stack. +// +//***************************************************************************** + +#ifndef __HTTPD_H__ +#define __HTTPD_H__ + +//***************************************************************************** +// +// Web Server Application Entry Points. +// +//***************************************************************************** +void httpd_init(void); +void httpd_appcall(void); + +//***************************************************************************** +// +// Web Server Application State Variable Definition. +// +//***************************************************************************** +struct httpd_state +{ + u8_t state; + u16_t count; +}; + +#endif // __HTTPD_H__ diff --git a/Target/Source/third_party/uip/apps/resolv/Makefile.resolv b/Target/Source/third_party/uip/apps/resolv/Makefile.resolv new file mode 100644 index 00000000..1f6a9f24 --- /dev/null +++ b/Target/Source/third_party/uip/apps/resolv/Makefile.resolv @@ -0,0 +1 @@ +APP_SOURCES += resolv.c diff --git a/Target/Source/third_party/uip/apps/resolv/resolv.c b/Target/Source/third_party/uip/apps/resolv/resolv.c new file mode 100644 index 00000000..4b8dd9af --- /dev/null +++ b/Target/Source/third_party/uip/apps/resolv/resolv.c @@ -0,0 +1,464 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup resolv DNS resolver + * @{ + * + * The uIP DNS resolver functions are used to lookup a hostname and + * map it to a numerical IP address. It maintains a list of resolved + * hostnames that can be queried with the resolv_lookup() + * function. New hostnames can be resolved using the resolv_query() + * function. + * + * When a hostname has been resolved (or found to be non-existant), + * the resolver code calls a callback function called resolv_found() + * that must be implemented by the module that uses the resolver. + */ + +/** + * \file + * DNS host name to IP address resolver. + * \author Adam Dunkels + * + * This file implements a DNS host name to IP address resolver. + */ + +/* + * Copyright (c) 2002-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $ + * + */ + +#include "resolv.h" +#include "uip.h" + +#include + +#ifndef NULL +#define NULL (void *)0 +#endif /* NULL */ + +/** \internal The maximum number of retries when asking for a name. */ +#define MAX_RETRIES 8 + +/** \internal The DNS message header. */ +struct dns_hdr { + u16_t id; + u8_t flags1, flags2; +#define DNS_FLAG1_RESPONSE 0x80 +#define DNS_FLAG1_OPCODE_STATUS 0x10 +#define DNS_FLAG1_OPCODE_INVERSE 0x08 +#define DNS_FLAG1_OPCODE_STANDARD 0x00 +#define DNS_FLAG1_AUTHORATIVE 0x04 +#define DNS_FLAG1_TRUNC 0x02 +#define DNS_FLAG1_RD 0x01 +#define DNS_FLAG2_RA 0x80 +#define DNS_FLAG2_ERR_MASK 0x0f +#define DNS_FLAG2_ERR_NONE 0x00 +#define DNS_FLAG2_ERR_NAME 0x03 + u16_t numquestions; + u16_t numanswers; + u16_t numauthrr; + u16_t numextrarr; +}; + +/** \internal The DNS answer message structure. */ +struct dns_answer { + /* DNS answer record starts with either a domain name or a pointer + to a name already present somewhere in the packet. */ + u16_t type; + u16_t class; + u16_t ttl[2]; + u16_t len; + uip_ipaddr_t ipaddr; +}; + +struct namemap { +#define STATE_UNUSED 0 +#define STATE_NEW 1 +#define STATE_ASKING 2 +#define STATE_DONE 3 +#define STATE_ERROR 4 + u8_t state; + u8_t tmr; + u8_t retries; + u8_t seqno; + u8_t err; + char name[32]; + uip_ipaddr_t ipaddr; +}; + +#ifndef UIP_CONF_RESOLV_ENTRIES +#define RESOLV_ENTRIES 4 +#else /* UIP_CONF_RESOLV_ENTRIES */ +#define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES +#endif /* UIP_CONF_RESOLV_ENTRIES */ + + +static struct namemap names[RESOLV_ENTRIES]; + +static u8_t seqno; + +static struct uip_udp_conn *resolv_conn = NULL; + + +/*---------------------------------------------------------------------------*/ +/** \internal + * Walk through a compact encoded DNS name and return the end of it. + * + * \return The end of the name. + */ +/*---------------------------------------------------------------------------*/ +static unsigned char * +parse_name(unsigned char *query) +{ + unsigned char n; + + do { + n = *query++; + + while(n > 0) { + /* printf("%c", *query);*/ + ++query; + --n; + }; + /* printf(".");*/ + } while(*query != 0); + /* printf("\n");*/ + return query + 1; +} +/*---------------------------------------------------------------------------*/ +/** \internal + * Runs through the list of names to see if there are any that have + * not yet been queried and, if so, sends out a query. + */ +/*---------------------------------------------------------------------------*/ +static void +check_entries(void) +{ + register struct dns_hdr *hdr; + char *query, *nptr, *nameptr; + static u8_t i; + static u8_t n; + register struct namemap *namemapptr; + + for(i = 0; i < RESOLV_ENTRIES; ++i) { + namemapptr = &names[i]; + if(namemapptr->state == STATE_NEW || + namemapptr->state == STATE_ASKING) { + if(namemapptr->state == STATE_ASKING) { + if(--namemapptr->tmr == 0) { + if(++namemapptr->retries == MAX_RETRIES) { + namemapptr->state = STATE_ERROR; + resolv_found(namemapptr->name, NULL); + continue; + } + namemapptr->tmr = namemapptr->retries; + } else { + /* printf("Timer %d\n", namemapptr->tmr);*/ + /* Its timer has not run out, so we move on to next + entry. */ + continue; + } + } else { + namemapptr->state = STATE_ASKING; + namemapptr->tmr = 1; + namemapptr->retries = 0; + } + hdr = (struct dns_hdr *)uip_appdata; + memset(hdr, 0, sizeof(struct dns_hdr)); + hdr->id = htons(i); + hdr->flags1 = DNS_FLAG1_RD; + hdr->numquestions = HTONS(1); + query = (char *)uip_appdata + 12; + nameptr = namemapptr->name; + --nameptr; + /* Convert hostname into suitable query format. */ + do { + ++nameptr; + nptr = query; + ++query; + for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) { + *query = *nameptr; + ++query; + ++n; + } + *nptr = n; + } while(*nameptr != 0); + { + static unsigned char endquery[] = + {0,0,1,0,1}; + memcpy(query, endquery, 5); + } + uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata)); + break; + } + } +} +/*---------------------------------------------------------------------------*/ +/** \internal + * Called when new UDP data arrives. + */ +/*---------------------------------------------------------------------------*/ +static void +newdata(void) +{ + char *nameptr; + struct dns_answer *ans; + struct dns_hdr *hdr; + static u8_t nquestions, nanswers; + static u8_t i; + register struct namemap *namemapptr; + + hdr = (struct dns_hdr *)uip_appdata; + /* printf("ID %d\n", htons(hdr->id)); + printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE); + printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK); + printf("Num questions %d, answers %d, authrr %d, extrarr %d\n", + htons(hdr->numquestions), + htons(hdr->numanswers), + htons(hdr->numauthrr), + htons(hdr->numextrarr)); + */ + + /* The ID in the DNS header should be our entry into the name + table. */ + i = htons(hdr->id); + namemapptr = &names[i]; + if(i < RESOLV_ENTRIES && + namemapptr->state == STATE_ASKING) { + + /* This entry is now finished. */ + namemapptr->state = STATE_DONE; + namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK; + + /* Check for error. If so, call callback to inform. */ + if(namemapptr->err != 0) { + namemapptr->state = STATE_ERROR; + resolv_found(namemapptr->name, NULL); + return; + } + + /* We only care about the question(s) and the answers. The authrr + and the extrarr are simply discarded. */ + nquestions = htons(hdr->numquestions); + nanswers = htons(hdr->numanswers); + + /* Skip the name in the question. XXX: This should really be + checked agains the name in the question, to be sure that they + match. */ + nameptr = parse_name((char *)uip_appdata + 12) + 4; + + while(nanswers > 0) { + /* The first byte in the answer resource record determines if it + is a compressed record or a normal one. */ + if(*nameptr & 0xc0) { + /* Compressed name. */ + nameptr +=2; + /* printf("Compressed anwser\n");*/ + } else { + /* Not compressed name. */ + nameptr = parse_name((char *)nameptr); + } + + ans = (struct dns_answer *)nameptr; + /* printf("Answer: type %x, class %x, ttl %x, length %x\n", + htons(ans->type), htons(ans->class), (htons(ans->ttl[0]) + << 16) | htons(ans->ttl[1]), htons(ans->len));*/ + + /* Check for IP address type and Internet class. Others are + discarded. */ + if(ans->type == HTONS(1) && + ans->class == HTONS(1) && + ans->len == HTONS(4)) { + /* printf("IP address %d.%d.%d.%d\n", + htons(ans->ipaddr[0]) >> 8, + htons(ans->ipaddr[0]) & 0xff, + htons(ans->ipaddr[1]) >> 8, + htons(ans->ipaddr[1]) & 0xff);*/ + /* XXX: we should really check that this IP address is the one + we want. */ + namemapptr->ipaddr[0] = ans->ipaddr[0]; + namemapptr->ipaddr[1] = ans->ipaddr[1]; + + resolv_found(namemapptr->name, namemapptr->ipaddr); + return; + } else { + nameptr = nameptr + 10 + htons(ans->len); + } + --nanswers; + } + } + +} +/*---------------------------------------------------------------------------*/ +/** \internal + * The main UDP function. + */ +/*---------------------------------------------------------------------------*/ +void +resolv_appcall(void) +{ + if(uip_udp_conn->rport == HTONS(53)) { + if(uip_poll()) { + check_entries(); + } + if(uip_newdata()) { + newdata(); + } + } +} +/*---------------------------------------------------------------------------*/ +/** + * Queues a name so that a question for the name will be sent out. + * + * \param name The hostname that is to be queried. + */ +/*---------------------------------------------------------------------------*/ +void +resolv_query(char *name) +{ + static u8_t i; + static u8_t lseq, lseqi; + register struct namemap *nameptr; + + lseq = lseqi = 0; + + for(i = 0; i < RESOLV_ENTRIES; ++i) { + nameptr = &names[i]; + if(nameptr->state == STATE_UNUSED) { + break; + } + if(seqno - nameptr->seqno > lseq) { + lseq = seqno - nameptr->seqno; + lseqi = i; + } + } + + if(i == RESOLV_ENTRIES) { + i = lseqi; + nameptr = &names[i]; + } + + /* printf("Using entry %d\n", i);*/ + + strcpy(nameptr->name, name); + nameptr->state = STATE_NEW; + nameptr->seqno = seqno; + ++seqno; +} +/*---------------------------------------------------------------------------*/ +/** + * Look up a hostname in the array of known hostnames. + * + * \note This function only looks in the internal array of known + * hostnames, it does not send out a query for the hostname if none + * was found. The function resolv_query() can be used to send a query + * for a hostname. + * + * \return A pointer to a 4-byte representation of the hostname's IP + * address, or NULL if the hostname was not found in the array of + * hostnames. + */ +/*---------------------------------------------------------------------------*/ +u16_t * +resolv_lookup(char *name) +{ + static u8_t i; + struct namemap *nameptr; + + /* Walk through the list to see if the name is in there. If it is + not, we return NULL. */ + for(i = 0; i < RESOLV_ENTRIES; ++i) { + nameptr = &names[i]; + if(nameptr->state == STATE_DONE && + strcmp(name, nameptr->name) == 0) { + return nameptr->ipaddr; + } + } + return NULL; +} +/*---------------------------------------------------------------------------*/ +/** + * Obtain the currently configured DNS server. + * + * \return A pointer to a 4-byte representation of the IP address of + * the currently configured DNS server or NULL if no DNS server has + * been configured. + */ +/*---------------------------------------------------------------------------*/ +u16_t * +resolv_getserver(void) +{ + if(resolv_conn == NULL) { + return NULL; + } + return resolv_conn->ripaddr; +} +/*---------------------------------------------------------------------------*/ +/** + * Configure which DNS server to use for queries. + * + * \param dnsserver A pointer to a 4-byte representation of the IP + * address of the DNS server to be configured. + */ +/*---------------------------------------------------------------------------*/ +void +resolv_conf(u16_t *dnsserver) +{ + if(resolv_conn != NULL) { + uip_udp_remove(resolv_conn); + } + + resolv_conn = uip_udp_new(dnsserver, HTONS(53)); +} +/*---------------------------------------------------------------------------*/ +/** + * Initalize the resolver. + */ +/*---------------------------------------------------------------------------*/ +void +resolv_init(void) +{ + static u8_t i; + + for(i = 0; i < RESOLV_ENTRIES; ++i) { + names[i].state = STATE_DONE; + } + +} +/*---------------------------------------------------------------------------*/ + +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/resolv/resolv.h b/Target/Source/third_party/uip/apps/resolv/resolv.h new file mode 100644 index 00000000..722c528f --- /dev/null +++ b/Target/Source/third_party/uip/apps/resolv/resolv.h @@ -0,0 +1,75 @@ +/** + * \addtogroup resolv + * @{ + */ +/** + * \file + * DNS resolver code header file. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2002-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $ + * + */ +#ifndef __RESOLV_H__ +#define __RESOLV_H__ + +typedef int uip_udp_appstate_t; +void resolv_appcall(void); +#define UIP_UDP_APPCALL resolv_appcall + +#include "uipopt.h" + +/** + * Callback function which is called when a hostname is found. + * + * This function must be implemented by the module that uses the DNS + * resolver. It is called when a hostname is found, or when a hostname + * was not found. + * + * \param name A pointer to the name that was looked up. \param + * ipaddr A pointer to a 4-byte array containing the IP address of the + * hostname, or NULL if the hostname could not be found. + */ +void resolv_found(char *name, u16_t *ipaddr); + +/* Functions. */ +void resolv_conf(u16_t *dnsserver); +u16_t *resolv_getserver(void); +void resolv_init(void); +u16_t *resolv_lookup(char *name); +void resolv_query(char *name); + +#endif /* __RESOLV_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/apps/smtp/Makefile.smtp b/Target/Source/third_party/uip/apps/smtp/Makefile.smtp new file mode 100644 index 00000000..74223d41 --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/Makefile.smtp @@ -0,0 +1 @@ +APP_SOURCES += smtp.c smtp-strings.c memb.c diff --git a/Target/Source/third_party/uip/apps/smtp/makestrings b/Target/Source/third_party/uip/apps/smtp/makestrings new file mode 100644 index 00000000..5e797584 --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/makestrings @@ -0,0 +1,40 @@ +#!/usr/bin/perl + + +sub stringify { + my $name = shift(@_); + open(OUTPUTC, "> $name.c"); + open(OUTPUTH, "> $name.h"); + + open(FILE, "$name"); + + while() { + if(/(.+) "(.+)"/) { + $var = $1; + $data = $2; + + $datan = $data; + $datan =~ s/\\r/\r/g; + $datan =~ s/\\n/\n/g; + $datan =~ s/\\01/\01/g; + $datan =~ s/\\0/\0/g; + + printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); + printf(OUTPUTC "/* \"$data\" */\n"); + printf(OUTPUTC "{"); + for($j = 0; $j < length($datan); $j++) { + printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); + } + printf(OUTPUTC "};\n"); + + printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); + + } + } + close(OUTPUTC); + close(OUTPUTH); +} +stringify("smtp-strings"); + +exit 0; + diff --git a/Target/Source/third_party/uip/apps/smtp/smtp-strings b/Target/Source/third_party/uip/apps/smtp/smtp-strings new file mode 100644 index 00000000..5f9b72cf --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/smtp-strings @@ -0,0 +1,11 @@ +smtp_220 "220" +smtp_helo "HELO " +smtp_mail_from "MAIL FROM: " +smtp_rcpt_to "RCPT TO: " +smtp_data "DATA\r\n" +smtp_to "To: " +smtp_from "From: " +smtp_subject "Subject: " +smtp_quit "QUIT\r\n" +smtp_crnl "\r\n" +smtp_crnlperiodcrnl "\r\n.\r\n" \ No newline at end of file diff --git a/Target/Source/third_party/uip/apps/smtp/smtp-strings.c b/Target/Source/third_party/uip/apps/smtp/smtp-strings.c new file mode 100644 index 00000000..7c1190c1 --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/smtp-strings.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2004, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: smtp-strings.c,v 1.3 2006/06/11 21:46:37 adam Exp $ + */ +const char smtp_220[4] = +/* "220" */ +{0x32, 0x32, 0x30, }; +const char smtp_helo[6] = +/* "HELO " */ +{0x48, 0x45, 0x4c, 0x4f, 0x20, }; +const char smtp_mail_from[12] = +/* "MAIL FROM: " */ +{0x4d, 0x41, 0x49, 0x4c, 0x20, 0x46, 0x52, 0x4f, 0x4d, 0x3a, 0x20, }; +const char smtp_rcpt_to[10] = +/* "RCPT TO: " */ +{0x52, 0x43, 0x50, 0x54, 0x20, 0x54, 0x4f, 0x3a, 0x20, }; +const char smtp_data[7] = +/* "DATA\r\n" */ +{0x44, 0x41, 0x54, 0x41, 0xd, 0xa, }; +const char smtp_to[5] = +/* "To: " */ +{0x54, 0x6f, 0x3a, 0x20, }; +const char smtp_cc[5] = +/* "Cc: " */ +{0x43, 0x63, 0x3a, 0x20, }; +const char smtp_from[7] = +/* "From: " */ +{0x46, 0x72, 0x6f, 0x6d, 0x3a, 0x20, }; +const char smtp_subject[10] = +/* "Subject: " */ +{0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x20, }; +const char smtp_quit[7] = +/* "QUIT\r\n" */ +{0x51, 0x55, 0x49, 0x54, 0xd, 0xa, }; +const char smtp_crnl[3] = +/* "\r\n" */ +{0xd, 0xa, }; +const char smtp_crnlperiodcrnl[6] = +/* "\r\n.\r\n" */ +{0xd, 0xa, 0x2e, 0xd, 0xa, }; diff --git a/Target/Source/third_party/uip/apps/smtp/smtp-strings.h b/Target/Source/third_party/uip/apps/smtp/smtp-strings.h new file mode 100644 index 00000000..800598c7 --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/smtp-strings.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2004, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: smtp-strings.h,v 1.3 2006/06/11 21:46:37 adam Exp $ + */ +extern const char smtp_220[4]; +extern const char smtp_helo[6]; +extern const char smtp_mail_from[12]; +extern const char smtp_rcpt_to[10]; +extern const char smtp_data[7]; +extern const char smtp_to[5]; +extern const char smtp_cc[5]; +extern const char smtp_from[7]; +extern const char smtp_subject[10]; +extern const char smtp_quit[7]; +extern const char smtp_crnl[3]; +extern const char smtp_crnlperiodcrnl[6]; diff --git a/Target/Source/third_party/uip/apps/smtp/smtp.c b/Target/Source/third_party/uip/apps/smtp/smtp.c new file mode 100644 index 00000000..4ed1814f --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/smtp.c @@ -0,0 +1,262 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup smtp SMTP E-mail sender + * @{ + * + * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is + * the standard way of sending and transfering e-mail on the + * Internet. This simple example implementation is intended as an + * example of how to implement protocols in uIP, and is able to send + * out e-mail but has not been extensively tested. + */ + +/** + * \file + * SMTP example implementation + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2004, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $ + */ +#include "smtp.h" + +#include "smtp-strings.h" +#include "psock.h" +#include "uip.h" + +#include + +static struct smtp_state s; + +static char *localhostname; +static uip_ipaddr_t smtpserver; + +#define ISO_nl 0x0a +#define ISO_cr 0x0d + +#define ISO_period 0x2e + +#define ISO_2 0x32 +#define ISO_3 0x33 +#define ISO_4 0x34 +#define ISO_5 0x35 + + +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(smtp_thread(void)) +{ + PSOCK_BEGIN(&s.psock); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(strncmp(s.inputbuffer, smtp_220, 3) != 0) { + PSOCK_CLOSE(&s.psock); + smtp_done(2); + PSOCK_EXIT(&s.psock); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_helo); + PSOCK_SEND_STR(&s.psock, localhostname); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(s.inputbuffer[0] != ISO_2) { + PSOCK_CLOSE(&s.psock); + smtp_done(3); + PSOCK_EXIT(&s.psock); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from); + PSOCK_SEND_STR(&s.psock, s.from); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(s.inputbuffer[0] != ISO_2) { + PSOCK_CLOSE(&s.psock); + smtp_done(4); + PSOCK_EXIT(&s.psock); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to); + PSOCK_SEND_STR(&s.psock, s.to); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(s.inputbuffer[0] != ISO_2) { + PSOCK_CLOSE(&s.psock); + smtp_done(5); + PSOCK_EXIT(&s.psock); + } + + if(s.cc != 0) { + PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to); + PSOCK_SEND_STR(&s.psock, s.cc); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(s.inputbuffer[0] != ISO_2) { + PSOCK_CLOSE(&s.psock); + smtp_done(6); + PSOCK_EXIT(&s.psock); + } + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_data); + + PSOCK_READTO(&s.psock, ISO_nl); + + if(s.inputbuffer[0] != ISO_3) { + PSOCK_CLOSE(&s.psock); + smtp_done(7); + PSOCK_EXIT(&s.psock); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_to); + PSOCK_SEND_STR(&s.psock, s.to); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + if(s.cc != 0) { + PSOCK_SEND_STR(&s.psock, (char *)smtp_cc); + PSOCK_SEND_STR(&s.psock, s.cc); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_from); + PSOCK_SEND_STR(&s.psock, s.from); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_SEND_STR(&s.psock, (char *)smtp_subject); + PSOCK_SEND_STR(&s.psock, s.subject); + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); + + PSOCK_SEND(&s.psock, s.msg, s.msglen); + + PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl); + + PSOCK_READTO(&s.psock, ISO_nl); + if(s.inputbuffer[0] != ISO_2) { + PSOCK_CLOSE(&s.psock); + smtp_done(8); + PSOCK_EXIT(&s.psock); + } + + PSOCK_SEND_STR(&s.psock, (char *)smtp_quit); + smtp_done(SMTP_ERR_OK); + PSOCK_END(&s.psock); +} +/*---------------------------------------------------------------------------*/ +void +smtp_appcall(void) +{ + if(uip_closed()) { + s.connected = 0; + return; + } + if(uip_aborted() || uip_timedout()) { + s.connected = 0; + smtp_done(1); + return; + } + smtp_thread(); +} +/*---------------------------------------------------------------------------*/ +/** + * Specificy an SMTP server and hostname. + * + * This function is used to configure the SMTP module with an SMTP + * server and the hostname of the host. + * + * \param lhostname The hostname of the uIP host. + * + * \param server A pointer to a 4-byte array representing the IP + * address of the SMTP server to be configured. + */ +void +smtp_configure(char *lhostname, void *server) +{ + localhostname = lhostname; + uip_ipaddr_copy(smtpserver, server); +} +/*---------------------------------------------------------------------------*/ +/** + * Send an e-mail. + * + * \param to The e-mail address of the receiver of the e-mail. + * \param cc The e-mail address of the CC: receivers of the e-mail. + * \param from The e-mail address of the sender of the e-mail. + * \param subject The subject of the e-mail. + * \param msg The actual e-mail message. + * \param msglen The length of the e-mail message. + */ +unsigned char +smtp_send(char *to, char *cc, char *from, + char *subject, char *msg, u16_t msglen) +{ + struct uip_conn *conn; + + conn = uip_connect(smtpserver, HTONS(25)); + if(conn == NULL) { + return 0; + } + s.connected = 1; + s.to = to; + s.cc = cc; + s.from = from; + s.subject = subject; + s.msg = msg; + s.msglen = msglen; + + PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer)); + + return 1; +} +/*---------------------------------------------------------------------------*/ +void +smtp_init(void) +{ + s.connected = 0; +} +/*---------------------------------------------------------------------------*/ +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/smtp/smtp.h b/Target/Source/third_party/uip/apps/smtp/smtp.h new file mode 100644 index 00000000..5cd92583 --- /dev/null +++ b/Target/Source/third_party/uip/apps/smtp/smtp.h @@ -0,0 +1,103 @@ + +/** + * \addtogroup smtp + * @{ + */ + + +/** + * \file + * SMTP header file + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2002, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $ + * + */ +#ifndef __SMTP_H__ +#define __SMTP_H__ + +#include "uipopt.h" + +/** + * Error number that signifies a non-error condition. + */ +#define SMTP_ERR_OK 0 + +/** + * Callback function that is called when an e-mail transmission is + * done. + * + * This function must be implemented by the module that uses the SMTP + * module. + * + * \param error The number of the error if an error occured, or + * SMTP_ERR_OK. + */ +void smtp_done(unsigned char error); + +void smtp_init(void); + +/* Functions. */ +void smtp_configure(char *localhostname, u16_t *smtpserver); +unsigned char smtp_send(char *to, char *from, + char *subject, char *msg, + u16_t msglen); +#define SMTP_SEND(to, cc, from, subject, msg) \ + smtp_send(to, cc, from, subject, msg, strlen(msg)) + +void smtp_appcall(void); + +struct smtp_state { + u8_t state; + char *to; + char *from; + char *subject; + char *msg; + u16_t msglen; + + u16_t sentlen, textlen; + u16_t sendptr; + +}; + + +#ifndef UIP_APPCALL +#define UIP_APPCALL smtp_appcall +#endif +typedef struct smtp_state uip_tcp_appstate_t; + + +#endif /* __SMTP_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/apps/telnetd/Makefile.telnetd b/Target/Source/third_party/uip/apps/telnetd/Makefile.telnetd new file mode 100644 index 00000000..46a89249 --- /dev/null +++ b/Target/Source/third_party/uip/apps/telnetd/Makefile.telnetd @@ -0,0 +1 @@ +APP_SOURCES += telnetd.c shell.c memb.c diff --git a/Target/Source/third_party/uip/apps/telnetd/shell.c b/Target/Source/third_party/uip/apps/telnetd/shell.c new file mode 100644 index 00000000..fbd18b75 --- /dev/null +++ b/Target/Source/third_party/uip/apps/telnetd/shell.c @@ -0,0 +1,123 @@ + /* + * Copyright (c) 2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: shell.c,v 1.1 2006/06/07 09:43:54 adam Exp $ + * + */ + +#include "shell.h" + +#include + +struct ptentry { + char *commandstr; + void (* pfunc)(char *str); +}; + +#define SHELL_PROMPT "uIP 1.0> " + +/*---------------------------------------------------------------------------*/ +static void +parse(register char *str, struct ptentry *t) +{ + struct ptentry *p; + for(p = t; p->commandstr != NULL; ++p) { + if(strncmp(p->commandstr, str, strlen(p->commandstr)) == 0) { + break; + } + } + + p->pfunc(str); +} +/*---------------------------------------------------------------------------*/ +static void +inttostr(register char *str, unsigned int i) +{ + str[0] = '0' + i / 100; + if(str[0] == '0') { + str[0] = ' '; + } + str[1] = '0' + (i / 10) % 10; + if(str[0] == ' ' && str[1] == '0') { + str[1] = ' '; + } + str[2] = '0' + i % 10; + str[3] = ' '; + str[4] = 0; +} +/*---------------------------------------------------------------------------*/ +static void +help(char *str) +{ + shell_output("Available commands:", ""); + shell_output("stats - show network statistics", ""); + shell_output("conn - show TCP connections", ""); + shell_output("help, ? - show help", ""); + shell_output("exit - exit shell", ""); +} +/*---------------------------------------------------------------------------*/ +static void +unknown(char *str) +{ + if(strlen(str) > 0) { + shell_output("Unknown command: ", str); + } +} +/*---------------------------------------------------------------------------*/ +static struct ptentry parsetab[] = + {{"stats", help}, + {"conn", help}, + {"help", help}, + {"exit", shell_quit}, + {"?", help}, + + /* Default action */ + {NULL, unknown}}; +/*---------------------------------------------------------------------------*/ +void +shell_init(void) +{ +} +/*---------------------------------------------------------------------------*/ +void +shell_start(void) +{ + shell_output("uIP command shell", ""); + shell_output("Type '?' and return for help", ""); + shell_prompt(SHELL_PROMPT); +} +/*---------------------------------------------------------------------------*/ +void +shell_input(char *cmd) +{ + parse(cmd, parsetab); + shell_prompt(SHELL_PROMPT); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/apps/telnetd/shell.h b/Target/Source/third_party/uip/apps/telnetd/shell.h new file mode 100644 index 00000000..0928fa3e --- /dev/null +++ b/Target/Source/third_party/uip/apps/telnetd/shell.h @@ -0,0 +1,104 @@ +/** + * \file + * Interface for the Contiki shell. + * \author Adam Dunkels + * + * Some of the functions declared in this file must be implemented as + * a shell back-end in the architecture specific files of a Contiki + * port. + */ + + +/* + * Copyright (c) 2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the Contiki desktop OS. + * + * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $ + * + */ +#ifndef __SHELL_H__ +#define __SHELL_H__ + +/** + * Initialize the shell. + * + * Called when the shell front-end process starts. This function may + * be used to start listening for signals. + */ +void shell_init(void); + +/** + * Start the shell back-end. + * + * Called by the front-end when a new shell is started. + */ +void shell_start(void); + +/** + * Process a shell command. + * + * This function will be called by the shell GUI / telnet server whan + * a command has been entered that should be processed by the shell + * back-end. + * + * \param command The command to be processed. + */ +void shell_input(char *command); + +/** + * Quit the shell. + * + */ +void shell_quit(char *); + + +/** + * Print a string to the shell window. + * + * This function is implemented by the shell GUI / telnet server and + * can be called by the shell back-end to output a string in the + * shell window. The string is automatically appended with a linebreak. + * + * \param str1 The first half of the string to be output. + * \param str2 The second half of the string to be output. + */ +void shell_output(char *str1, char *str2); + +/** + * Print a prompt to the shell window. + * + * This function can be used by the shell back-end to print out a + * prompt to the shell window. + * + * \param prompt The prompt to be printed. + * + */ +void shell_prompt(char *prompt); + +#endif /* __SHELL_H__ */ diff --git a/Target/Source/third_party/uip/apps/telnetd/telnetd.c b/Target/Source/third_party/uip/apps/telnetd/telnetd.c new file mode 100644 index 00000000..e8e7ba9c --- /dev/null +++ b/Target/Source/third_party/uip/apps/telnetd/telnetd.c @@ -0,0 +1,350 @@ +/* + * Copyright (c) 2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $ + * + */ + +#include "uip.h" +#include "telnetd.h" +#include "memb.h" +#include "shell.h" + +#include + +#define ISO_nl 0x0a +#define ISO_cr 0x0d + +struct telnetd_line { + char line[TELNETD_CONF_LINELEN]; +}; +MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES); + +#define STATE_NORMAL 0 +#define STATE_IAC 1 +#define STATE_WILL 2 +#define STATE_WONT 3 +#define STATE_DO 4 +#define STATE_DONT 5 +#define STATE_CLOSE 6 + +static struct telnetd_state s; + +#define TELNET_IAC 255 +#define TELNET_WILL 251 +#define TELNET_WONT 252 +#define TELNET_DO 253 +#define TELNET_DONT 254 +/*---------------------------------------------------------------------------*/ +static char * +alloc_line(void) +{ + return memb_alloc(&linemem); +} +/*---------------------------------------------------------------------------*/ +static void +dealloc_line(char *line) +{ + memb_free(&linemem, line); +} +/*---------------------------------------------------------------------------*/ +void +shell_quit(char *str) +{ + s.state = STATE_CLOSE; +} +/*---------------------------------------------------------------------------*/ +static void +sendline(char *line) +{ + static unsigned int i; + + for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { + if(s.lines[i] == NULL) { + s.lines[i] = line; + break; + } + } + if(i == TELNETD_CONF_NUMLINES) { + dealloc_line(line); + } +} +/*---------------------------------------------------------------------------*/ +void +shell_prompt(char *str) +{ + char *line; + line = alloc_line(); + if(line != NULL) { + strncpy(line, str, TELNETD_CONF_LINELEN); + /* petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/ + sendline(line); + } +} +/*---------------------------------------------------------------------------*/ +void +shell_output(char *str1, char *str2) +{ + static unsigned len; + char *line; + + line = alloc_line(); + if(line != NULL) { + len = strlen(str1); + strncpy(line, str1, TELNETD_CONF_LINELEN); + if(len < TELNETD_CONF_LINELEN) { + strncpy(line + len, str2, TELNETD_CONF_LINELEN - len); + } + len = strlen(line); + if(len < TELNETD_CONF_LINELEN - 2) { + line[len] = ISO_cr; + line[len+1] = ISO_nl; + line[len+2] = 0; + } + /* petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/ + sendline(line); + } +} +/*---------------------------------------------------------------------------*/ +void +telnetd_init(void) +{ + uip_listen(HTONS(23)); + memb_init(&linemem); + shell_init(); +} +/*---------------------------------------------------------------------------*/ +static void +acked(void) +{ + static unsigned int i; + + while(s.numsent > 0) { + dealloc_line(s.lines[0]); + for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) { + s.lines[i - 1] = s.lines[i]; + } + s.lines[TELNETD_CONF_NUMLINES - 1] = NULL; + --s.numsent; + } +} +/*---------------------------------------------------------------------------*/ +static void +senddata(void) +{ + static char *bufptr, *lineptr; + static int buflen, linelen; + + bufptr = uip_appdata; + buflen = 0; + for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES && + s.lines[s.numsent] != NULL ; ++s.numsent) { + lineptr = s.lines[s.numsent]; + linelen = strlen(lineptr); + if(linelen > TELNETD_CONF_LINELEN) { + linelen = TELNETD_CONF_LINELEN; + } + if(buflen + linelen < uip_mss()) { + memcpy(bufptr, lineptr, linelen); + bufptr += linelen; + buflen += linelen; + } else { + break; + } + } + uip_send(uip_appdata, buflen); +} +/*---------------------------------------------------------------------------*/ +static void +closed(void) +{ + static unsigned int i; + + for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { + if(s.lines[i] != NULL) { + dealloc_line(s.lines[i]); + } + } +} +/*---------------------------------------------------------------------------*/ +static void +get_char(u8_t c) +{ + if(c == ISO_cr) { + return; + } + + s.buf[(int)s.bufptr] = c; + if(s.buf[(int)s.bufptr] == ISO_nl || + s.bufptr == sizeof(s.buf) - 1) { + if(s.bufptr > 0) { + s.buf[(int)s.bufptr] = 0; + /* petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/ + } + shell_input(s.buf); + s.bufptr = 0; + } else { + ++s.bufptr; + } +} +/*---------------------------------------------------------------------------*/ +static void +sendopt(u8_t option, u8_t value) +{ + char *line; + line = alloc_line(); + if(line != NULL) { + line[0] = TELNET_IAC; + line[1] = option; + line[2] = value; + line[3] = 0; + sendline(line); + } +} +/*---------------------------------------------------------------------------*/ +static void +newdata(void) +{ + u16_t len; + u8_t c; + char *dataptr; + + + len = uip_datalen(); + dataptr = (char *)uip_appdata; + + while(len > 0 && s.bufptr < sizeof(s.buf)) { + c = *dataptr; + ++dataptr; + --len; + switch(s.state) { + case STATE_IAC: + if(c == TELNET_IAC) { + get_char(c); + s.state = STATE_NORMAL; + } else { + switch(c) { + case TELNET_WILL: + s.state = STATE_WILL; + break; + case TELNET_WONT: + s.state = STATE_WONT; + break; + case TELNET_DO: + s.state = STATE_DO; + break; + case TELNET_DONT: + s.state = STATE_DONT; + break; + default: + s.state = STATE_NORMAL; + break; + } + } + break; + case STATE_WILL: + /* Reply with a DONT */ + sendopt(TELNET_DONT, c); + s.state = STATE_NORMAL; + break; + + case STATE_WONT: + /* Reply with a DONT */ + sendopt(TELNET_DONT, c); + s.state = STATE_NORMAL; + break; + case STATE_DO: + /* Reply with a WONT */ + sendopt(TELNET_WONT, c); + s.state = STATE_NORMAL; + break; + case STATE_DONT: + /* Reply with a WONT */ + sendopt(TELNET_WONT, c); + s.state = STATE_NORMAL; + break; + case STATE_NORMAL: + if(c == TELNET_IAC) { + s.state = STATE_IAC; + } else { + get_char(c); + } + break; + } + + + } + +} +/*---------------------------------------------------------------------------*/ +void +telnetd_appcall(void) +{ + static unsigned int i; + if(uip_connected()) { + /* tcp_markconn(uip_conn, &s);*/ + for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { + s.lines[i] = NULL; + } + s.bufptr = 0; + s.state = STATE_NORMAL; + + shell_start(); + } + + if(s.state == STATE_CLOSE) { + s.state = STATE_NORMAL; + uip_close(); + return; + } + + if(uip_closed() || + uip_aborted() || + uip_timedout()) { + closed(); + } + + if(uip_acked()) { + acked(); + } + + if(uip_newdata()) { + newdata(); + } + + if(uip_rexmit() || + uip_newdata() || + uip_acked() || + uip_connected() || + uip_poll()) { + senddata(); + } +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/apps/telnetd/telnetd.h b/Target/Source/third_party/uip/apps/telnetd/telnetd.h new file mode 100644 index 00000000..17a51610 --- /dev/null +++ b/Target/Source/third_party/uip/apps/telnetd/telnetd.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $ + * + */ +#ifndef __TELNETD_H__ +#define __TELNETD_H__ + +#include "uipopt.h" + +void telnetd_appcall(void); + +#ifndef TELNETD_CONF_LINELEN +#define TELNETD_CONF_LINELEN 40 +#endif +#ifndef TELNETD_CONF_NUMLINES +#define TELNETD_CONF_NUMLINES 16 +#endif + +struct telnetd_state { + char *lines[TELNETD_CONF_NUMLINES]; + char buf[TELNETD_CONF_LINELEN]; + char bufptr; + u8_t numsent; + u8_t state; +}; + +typedef struct telnetd_state uip_tcp_appstate_t; + +#ifndef UIP_APPCALL +#define UIP_APPCALL telnetd_appcall +#endif + +#endif /* __TELNETD_H__ */ diff --git a/Target/Source/third_party/uip/apps/webclient/Makefile.webclient b/Target/Source/third_party/uip/apps/webclient/Makefile.webclient new file mode 100644 index 00000000..a494f8fe --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/Makefile.webclient @@ -0,0 +1 @@ +APP_SOURCES += webclient-strings.c webclient.c diff --git a/Target/Source/third_party/uip/apps/webclient/makestrings b/Target/Source/third_party/uip/apps/webclient/makestrings new file mode 100644 index 00000000..a87735c8 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/makestrings @@ -0,0 +1,40 @@ +#!/usr/bin/perl + + +sub stringify { + my $name = shift(@_); + open(OUTPUTC, "> $name.c"); + open(OUTPUTH, "> $name.h"); + + open(FILE, "$name"); + + while() { + if(/(.+) "(.+)"/) { + $var = $1; + $data = $2; + + $datan = $data; + $datan =~ s/\\r/\r/g; + $datan =~ s/\\n/\n/g; + $datan =~ s/\\01/\01/g; + $datan =~ s/\\0/\0/g; + + printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); + printf(OUTPUTC "/* \"$data\" */\n"); + printf(OUTPUTC "{"); + for($j = 0; $j < length($datan); $j++) { + printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); + } + printf(OUTPUTC "0 };\n"); + + printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); + + } + } + close(OUTPUTC); + close(OUTPUTH); +} +stringify("webclient-strings"); + +exit 0; + diff --git a/Target/Source/third_party/uip/apps/webclient/webclient-strings b/Target/Source/third_party/uip/apps/webclient/webclient-strings new file mode 100644 index 00000000..8fe6e62a --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/webclient-strings @@ -0,0 +1,31 @@ +http_http "http://" +http_200 "200 " +http_301 "301 " +http_302 "302 " +http_get "GET " +http_10 "HTTP/1.0" +http_11 "HTTP/1.1" +http_content_type "content-type: " +http_texthtml "text/html" +http_location "location: " +http_host "host: " +http_crnl "\r\n" +http_index_html "/index.html" +http_404_html "/404.html" +http_content_type_html "Content-type: text/html\r\n\r\n" +http_content_type_css "Content-type: text/css\r\n\r\n" +http_content_type_text "Content-type: text/text\r\n\r\n" +http_content_type_png "Content-type: image/png\r\n\r\n" +http_content_type_gif "Content-type: image/gif\r\n\r\n" +http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" +http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" +http_html ".html" +http_shtml ".shtml" +http_htm ".htm" +http_css ".css" +http_png ".png" +http_gif ".gif" +http_jpg ".jpg" +http_text ".text" +http_txt ".txt" +http_user_agent_fields "Connection: close\r\nUser-Agent: uIP/1.0 (; http://www.sics.se/~adam/uip/)\r\n\r\n" diff --git a/Target/Source/third_party/uip/apps/webclient/webclient-strings.c b/Target/Source/third_party/uip/apps/webclient/webclient-strings.c new file mode 100644 index 00000000..66e7795d --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/webclient-strings.c @@ -0,0 +1,93 @@ +const char http_http[8] = +/* "http://" */ +{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0 }; +const char http_200[5] = +/* "200 " */ +{0x32, 0x30, 0x30, 0x20, 0 }; +const char http_301[5] = +/* "301 " */ +{0x33, 0x30, 0x31, 0x20, 0 }; +const char http_302[5] = +/* "302 " */ +{0x33, 0x30, 0x32, 0x20, 0 }; +const char http_get[5] = +/* "GET " */ +{0x47, 0x45, 0x54, 0x20, 0 }; +const char http_10[9] = +/* "HTTP/1.0" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0 }; +const char http_11[9] = +/* "HTTP/1.1" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0 }; +const char http_content_type[15] = +/* "content-type: " */ +{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0 }; +const char http_texthtml[10] = +/* "text/html" */ +{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0 }; +const char http_location[11] = +/* "location: " */ +{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0 }; +const char http_host[7] = +/* "host: " */ +{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0 }; +const char http_crnl[3] = +/* "\r\n" */ +{0xd, 0xa, 0 }; +const char http_index_html[12] = +/* "/index.html" */ +{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; +const char http_404_html[10] = +/* "/404.html" */ +{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; +const char http_content_type_html[28] = +/* "Content-type: text/html\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_css [27] = +/* "Content-type: text/css\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_text[28] = +/* "Content-type: text/text\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_png [28] = +/* "Content-type: image/png\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_gif [28] = +/* "Content-type: image/gif\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_jpg [29] = +/* "Content-type: image/jpeg\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_content_type_binary[43] = +/* "Content-type: application/octet-stream\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, 0 }; +const char http_html[6] = +/* ".html" */ +{0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; +const char http_shtml[7] = +/* ".shtml" */ +{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0 }; +const char http_htm[5] = +/* ".htm" */ +{0x2e, 0x68, 0x74, 0x6d, 0 }; +const char http_css[5] = +/* ".css" */ +{0x2e, 0x63, 0x73, 0x73, 0 }; +const char http_png[5] = +/* ".png" */ +{0x2e, 0x70, 0x6e, 0x67, 0 }; +const char http_gif[5] = +/* ".gif" */ +{0x2e, 0x67, 0x69, 0x66, 0 }; +const char http_jpg[5] = +/* ".jpg" */ +{0x2e, 0x6a, 0x70, 0x67, 0 }; +const char http_text[6] = +/* ".text" */ +{0x2e, 0x74, 0x65, 0x78, 0x74, 0 }; +const char http_txt[5] = +/* ".txt" */ +{0x2e, 0x74, 0x78, 0x74, 0 }; +const char http_user_agent_fields[77] = +/* "Connection: close\r\nUser-Agent: uIP/1.0 (; http://www.sics.se/~adam/uip/)\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x28, 0x3b, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0x29, 0xd, 0xa, 0xd, 0xa, 0 }; diff --git a/Target/Source/third_party/uip/apps/webclient/webclient-strings.h b/Target/Source/third_party/uip/apps/webclient/webclient-strings.h new file mode 100644 index 00000000..b4ce5102 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/webclient-strings.h @@ -0,0 +1,31 @@ +extern const char http_http[8]; +extern const char http_200[5]; +extern const char http_301[5]; +extern const char http_302[5]; +extern const char http_get[5]; +extern const char http_10[9]; +extern const char http_11[9]; +extern const char http_content_type[15]; +extern const char http_texthtml[10]; +extern const char http_location[11]; +extern const char http_host[7]; +extern const char http_crnl[3]; +extern const char http_index_html[12]; +extern const char http_404_html[10]; +extern const char http_content_type_html[28]; +extern const char http_content_type_css [27]; +extern const char http_content_type_text[28]; +extern const char http_content_type_png [28]; +extern const char http_content_type_gif [28]; +extern const char http_content_type_jpg [29]; +extern const char http_content_type_binary[43]; +extern const char http_html[6]; +extern const char http_shtml[7]; +extern const char http_htm[5]; +extern const char http_css[5]; +extern const char http_png[5]; +extern const char http_gif[5]; +extern const char http_jpg[5]; +extern const char http_text[6]; +extern const char http_txt[5]; +extern const char http_user_agent_fields[77]; diff --git a/Target/Source/third_party/uip/apps/webclient/webclient.c b/Target/Source/third_party/uip/apps/webclient/webclient.c new file mode 100644 index 00000000..b6238f4e --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/webclient.c @@ -0,0 +1,439 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup webclient Web client + * @{ + * + * This example shows a HTTP client that is able to download web pages + * and files from web servers. It requires a number of callback + * functions to be implemented by the module that utilizes the code: + * webclient_datahandler(), webclient_connected(), + * webclient_timedout(), webclient_aborted(), webclient_closed(). + */ + +/** + * \file + * Implementation of the HTTP client. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2002, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $ + * + */ + +#include "uip.h" +#include "uiplib.h" +#include "webclient.h" +#include "resolv.h" + +#include + +#define WEBCLIENT_TIMEOUT 100 + +#define WEBCLIENT_STATE_STATUSLINE 0 +#define WEBCLIENT_STATE_HEADERS 1 +#define WEBCLIENT_STATE_DATA 2 +#define WEBCLIENT_STATE_CLOSE 3 + +#define HTTPFLAG_NONE 0 +#define HTTPFLAG_OK 1 +#define HTTPFLAG_MOVED 2 +#define HTTPFLAG_ERROR 3 + + +#define ISO_nl 0x0a +#define ISO_cr 0x0d +#define ISO_space 0x20 + + +static struct webclient_state s; + +/*-----------------------------------------------------------------------------------*/ +char * +webclient_mimetype(void) +{ + return s.mimetype; +} +/*-----------------------------------------------------------------------------------*/ +char * +webclient_filename(void) +{ + return s.file; +} +/*-----------------------------------------------------------------------------------*/ +char * +webclient_hostname(void) +{ + return s.host; +} +/*-----------------------------------------------------------------------------------*/ +unsigned short +webclient_port(void) +{ + return s.port; +} +/*-----------------------------------------------------------------------------------*/ +void +webclient_init(void) +{ + +} +/*-----------------------------------------------------------------------------------*/ +static void +init_connection(void) +{ + s.state = WEBCLIENT_STATE_STATUSLINE; + + s.getrequestleft = sizeof(http_get) - 1 + 1 + + sizeof(http_10) - 1 + + sizeof(http_crnl) - 1 + + sizeof(http_host) - 1 + + sizeof(http_crnl) - 1 + + strlen(http_user_agent_fields) + + strlen(s.file) + strlen(s.host); + s.getrequestptr = 0; + + s.httpheaderlineptr = 0; +} +/*-----------------------------------------------------------------------------------*/ +void +webclient_close(void) +{ + s.state = WEBCLIENT_STATE_CLOSE; +} +/*-----------------------------------------------------------------------------------*/ +unsigned char +webclient_get(char *host, u16_t port, char *file) +{ + struct uip_conn *conn; + uip_ipaddr_t *ipaddr; + static uip_ipaddr_t addr; + + /* First check if the host is an IP address. */ + ipaddr = &addr; + if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) { + ipaddr = (uip_ipaddr_t *)resolv_lookup(host); + + if(ipaddr == NULL) { + return 0; + } + } + + conn = uip_connect(ipaddr, htons(port)); + + if(conn == NULL) { + return 0; + } + + s.port = port; + strncpy(s.file, file, sizeof(s.file)); + strncpy(s.host, host, sizeof(s.host)); + + init_connection(); + return 1; +} +/*-----------------------------------------------------------------------------------*/ +static unsigned char * +copy_string(unsigned char *dest, + const unsigned char *src, unsigned char len) +{ + strncpy(dest, src, len); + return dest + len; +} +/*-----------------------------------------------------------------------------------*/ +static void +senddata(void) +{ + u16_t len; + char *getrequest; + char *cptr; + + if(s.getrequestleft > 0) { + cptr = getrequest = (char *)uip_appdata; + + cptr = copy_string(cptr, http_get, sizeof(http_get) - 1); + cptr = copy_string(cptr, s.file, strlen(s.file)); + *cptr++ = ISO_space; + cptr = copy_string(cptr, http_10, sizeof(http_10) - 1); + + cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1); + + cptr = copy_string(cptr, http_host, sizeof(http_host) - 1); + cptr = copy_string(cptr, s.host, strlen(s.host)); + cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1); + + cptr = copy_string(cptr, http_user_agent_fields, + strlen(http_user_agent_fields)); + + len = s.getrequestleft > uip_mss()? + uip_mss(): + s.getrequestleft; + uip_send(&(getrequest[s.getrequestptr]), len); + } +} +/*-----------------------------------------------------------------------------------*/ +static void +acked(void) +{ + u16_t len; + + if(s.getrequestleft > 0) { + len = s.getrequestleft > uip_mss()? + uip_mss(): + s.getrequestleft; + s.getrequestleft -= len; + s.getrequestptr += len; + } +} +/*-----------------------------------------------------------------------------------*/ +static u16_t +parse_statusline(u16_t len) +{ + char *cptr; + + while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) { + s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata; + ++((char *)uip_appdata); + --len; + if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) { + + if((strncmp(s.httpheaderline, http_10, + sizeof(http_10) - 1) == 0) || + (strncmp(s.httpheaderline, http_11, + sizeof(http_11) - 1) == 0)) { + cptr = &(s.httpheaderline[9]); + s.httpflag = HTTPFLAG_NONE; + if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) { + /* 200 OK */ + s.httpflag = HTTPFLAG_OK; + } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 || + strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) { + /* 301 Moved permanently or 302 Found. Location: header line + will contain thw new location. */ + s.httpflag = HTTPFLAG_MOVED; + } else { + s.httpheaderline[s.httpheaderlineptr - 1] = 0; + } + } else { + uip_abort(); + webclient_aborted(); + return 0; + } + + /* We're done parsing the status line, so we reset the pointer + and start parsing the HTTP headers.*/ + s.httpheaderlineptr = 0; + s.state = WEBCLIENT_STATE_HEADERS; + break; + } else { + ++s.httpheaderlineptr; + } + } + return len; +} +/*-----------------------------------------------------------------------------------*/ +static char +casecmp(char *str1, const char *str2, char len) +{ + static char c; + + while(len > 0) { + c = *str1; + /* Force lower-case characters. */ + if(c & 0x40) { + c |= 0x20; + } + if(*str2 != c) { + return 1; + } + ++str1; + ++str2; + --len; + } + return 0; +} +/*-----------------------------------------------------------------------------------*/ +static u16_t +parse_headers(u16_t len) +{ + char *cptr; + static unsigned char i; + + while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) { + s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata; + ++((char *)uip_appdata); + --len; + if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) { + /* We have an entire HTTP header line in s.httpheaderline, so + we parse it. */ + if(s.httpheaderline[0] == ISO_cr) { + /* This was the last header line (i.e., and empty "\r\n"), so + we are done with the headers and proceed with the actual + data. */ + s.state = WEBCLIENT_STATE_DATA; + return len; + } + + s.httpheaderline[s.httpheaderlineptr - 1] = 0; + /* Check for specific HTTP header fields. */ + if(casecmp(s.httpheaderline, http_content_type, + sizeof(http_content_type) - 1) == 0) { + /* Found Content-type field. */ + cptr = strchr(s.httpheaderline, ';'); + if(cptr != NULL) { + *cptr = 0; + } + strncpy(s.mimetype, s.httpheaderline + + sizeof(http_content_type) - 1, sizeof(s.mimetype)); + } else if(casecmp(s.httpheaderline, http_location, + sizeof(http_location) - 1) == 0) { + cptr = s.httpheaderline + + sizeof(http_location) - 1; + + if(strncmp(cptr, http_http, 7) == 0) { + cptr += 7; + for(i = 0; i < s.httpheaderlineptr - 7; ++i) { + if(*cptr == 0 || + *cptr == '/' || + *cptr == ' ' || + *cptr == ':') { + s.host[i] = 0; + break; + } + s.host[i] = *cptr; + ++cptr; + } + } + strncpy(s.file, cptr, sizeof(s.file)); + /* s.file[s.httpheaderlineptr - i] = 0;*/ + } + + + /* We're done parsing, so we reset the pointer and start the + next line. */ + s.httpheaderlineptr = 0; + } else { + ++s.httpheaderlineptr; + } + } + return len; +} +/*-----------------------------------------------------------------------------------*/ +static void +newdata(void) +{ + u16_t len; + + len = uip_datalen(); + + if(s.state == WEBCLIENT_STATE_STATUSLINE) { + len = parse_statusline(len); + } + + if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) { + len = parse_headers(len); + } + + if(len > 0 && s.state == WEBCLIENT_STATE_DATA && + s.httpflag != HTTPFLAG_MOVED) { + webclient_datahandler((char *)uip_appdata, len); + } +} +/*-----------------------------------------------------------------------------------*/ +void +webclient_appcall(void) +{ + if(uip_connected()) { + s.timer = 0; + s.state = WEBCLIENT_STATE_STATUSLINE; + senddata(); + webclient_connected(); + return; + } + + if(s.state == WEBCLIENT_STATE_CLOSE) { + webclient_closed(); + uip_abort(); + return; + } + + if(uip_aborted()) { + webclient_aborted(); + } + if(uip_timedout()) { + webclient_timedout(); + } + + + if(uip_acked()) { + s.timer = 0; + acked(); + } + if(uip_newdata()) { + s.timer = 0; + newdata(); + } + if(uip_rexmit() || + uip_newdata() || + uip_acked()) { + senddata(); + } else if(uip_poll()) { + ++s.timer; + if(s.timer == WEBCLIENT_TIMEOUT) { + webclient_timedout(); + uip_abort(); + return; + } + /* senddata();*/ + } + + if(uip_closed()) { + if(s.httpflag != HTTPFLAG_MOVED) { + /* Send NULL data to signal EOF. */ + webclient_datahandler(NULL, 0); + } else { + if(resolv_lookup(s.host) == NULL) { + resolv_query(s.host); + } + webclient_get(s.host, s.port, s.file); + } + } +} +/*-----------------------------------------------------------------------------------*/ + +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/webclient/webclient.h b/Target/Source/third_party/uip/apps/webclient/webclient.h new file mode 100644 index 00000000..af0e9d94 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webclient/webclient.h @@ -0,0 +1,228 @@ +/** + * \addtogroup webclient + * @{ + */ + +/** + * \file + * Header file for the HTTP client. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2002, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $ + * + */ +#ifndef __WEBCLIENT_H__ +#define __WEBCLIENT_H__ + + +#include "webclient-strings.h" +#include "uipopt.h" + +#define WEBCLIENT_CONF_MAX_URLLEN 100 + +struct webclient_state { + u8_t timer; + u8_t state; + u8_t httpflag; + + u16_t port; + char host[40]; + char file[WEBCLIENT_CONF_MAX_URLLEN]; + u16_t getrequestptr; + u16_t getrequestleft; + + char httpheaderline[200]; + u16_t httpheaderlineptr; + + char mimetype[32]; +}; + +typedef struct webclient_state uip_tcp_appstate_t; +#define UIP_APPCALL webclient_appcall + +/** + * Callback function that is called from the webclient code when HTTP + * data has been received. + * + * This function must be implemented by the module that uses the + * webclient code. The function is called from the webclient module + * when HTTP data has been received. The function is not called when + * HTTP headers are received, only for the actual data. + * + * \note This function is called many times, repetedly, when data is + * being received, and not once when all data has been received. + * + * \param data A pointer to the data that has been received. + * \param len The length of the data that has been received. + */ +void webclient_datahandler(char *data, u16_t len); + +/** + * Callback function that is called from the webclient code when the + * HTTP connection has been connected to the web server. + * + * This function must be implemented by the module that uses the + * webclient code. + */ +void webclient_connected(void); + +/** + * Callback function that is called from the webclient code if the + * HTTP connection to the web server has timed out. + * + * This function must be implemented by the module that uses the + * webclient code. + */ +void webclient_timedout(void); + +/** + * Callback function that is called from the webclient code if the + * HTTP connection to the web server has been aborted by the web + * server. + * + * This function must be implemented by the module that uses the + * webclient code. + */ +void webclient_aborted(void); + +/** + * Callback function that is called from the webclient code when the + * HTTP connection to the web server has been closed. + * + * This function must be implemented by the module that uses the + * webclient code. + */ +void webclient_closed(void); + + + +/** + * Initialize the webclient module. + */ +void webclient_init(void); + +/** + * Open an HTTP connection to a web server and ask for a file using + * the GET method. + * + * This function opens an HTTP connection to the specified web server + * and requests the specified file using the GET method. When the HTTP + * connection has been connected, the webclient_connected() callback + * function is called and when the HTTP data arrives the + * webclient_datahandler() callback function is called. + * + * The callback function webclient_timedout() is called if the web + * server could not be contacted, and the webclient_aborted() callback + * function is called if the HTTP connection is aborted by the web + * server. + * + * When the HTTP request has been completed and the HTTP connection is + * closed, the webclient_closed() callback function will be called. + * + * \note If the function is passed a host name, it must already be in + * the resolver cache in order for the function to connect to the web + * server. It is therefore up to the calling module to implement the + * resolver calls and the signal handler used for reporting a resolv + * query answer. + * + * \param host A pointer to a string containing either a host name or + * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1). + * + * \param port The port number to which to connect, in host byte order. + * + * \param file A pointer to the name of the file to get. + * + * \retval 0 if the host name could not be found in the cache, or + * if a TCP connection could not be created. + * + * \retval 1 if the connection was initiated. + */ +unsigned char webclient_get(char *host, u16_t port, char *file); + +/** + * Close the currently open HTTP connection. + */ +void webclient_close(void); +void webclient_appcall(void); + +/** + * Obtain the MIME type of the current HTTP data stream. + * + * \return A pointer to a string contaning the MIME type. The string + * may be empty if no MIME type was reported by the web server. + */ +char *webclient_mimetype(void); + +/** + * Obtain the filename of the current HTTP data stream. + * + * The filename of an HTTP request may be changed by the web server, + * and may therefore not be the same as when the original GET request + * was made with webclient_get(). This function is used for obtaining + * the current filename. + * + * \return A pointer to the current filename. + */ +char *webclient_filename(void); + +/** + * Obtain the hostname of the current HTTP data stream. + * + * The hostname of the web server of an HTTP request may be changed + * by the web server, and may therefore not be the same as when the + * original GET request was made with webclient_get(). This function + * is used for obtaining the current hostname. + * + * \return A pointer to the current hostname. + */ +char *webclient_hostname(void); + +/** + * Obtain the port number of the current HTTP data stream. + * + * The port number of an HTTP request may be changed by the web + * server, and may therefore not be the same as when the original GET + * request was made with webclient_get(). This function is used for + * obtaining the current port number. + * + * \return The port number of the current HTTP data stream, in host byte order. + */ +unsigned short webclient_port(void); + + + +#endif /* __WEBCLIENT_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/apps/webserver/Makefile.webserver b/Target/Source/third_party/uip/apps/webserver/Makefile.webserver new file mode 100644 index 00000000..f38c47a7 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/Makefile.webserver @@ -0,0 +1 @@ +APP_SOURCES += httpd.c http-strings.c httpd-fs.c httpd-cgi.c diff --git a/Target/Source/third_party/uip/apps/webserver/http-strings b/Target/Source/third_party/uip/apps/webserver/http-strings new file mode 100644 index 00000000..0d3c30cd --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/http-strings @@ -0,0 +1,35 @@ +http_http "http://" +http_200 "200 " +http_301 "301 " +http_302 "302 " +http_get "GET " +http_10 "HTTP/1.0" +http_11 "HTTP/1.1" +http_content_type "content-type: " +http_texthtml "text/html" +http_location "location: " +http_host "host: " +http_crnl "\r\n" +http_index_html "/index.html" +http_404_html "/404.html" +http_referer "Referer:" +http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" +http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" +http_content_type_plain "Content-type: text/plain\r\n\r\n" +http_content_type_html "Content-type: text/html\r\n\r\n" +http_content_type_css "Content-type: text/css\r\n\r\n" +http_content_type_text "Content-type: text/text\r\n\r\n" +http_content_type_png "Content-type: image/png\r\n\r\n" +http_content_type_gif "Content-type: image/gif\r\n\r\n" +http_content_type_jpg "Content-type: image/jpeg\r\n\r\n" +http_content_type_binary "Content-type: application/octet-stream\r\n\r\n" +http_html ".html" +http_shtml ".shtml" +http_htm ".htm" +http_css ".css" +http_png ".png" +http_gif ".gif" +http_jpg ".jpg" +http_text ".txt" +http_txt ".txt" + diff --git a/Target/Source/third_party/uip/apps/webserver/http-strings.c b/Target/Source/third_party/uip/apps/webserver/http-strings.c new file mode 100644 index 00000000..ef7a41c7 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/http-strings.c @@ -0,0 +1,102 @@ +const char http_http[8] = +/* "http://" */ +{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, }; +const char http_200[5] = +/* "200 " */ +{0x32, 0x30, 0x30, 0x20, }; +const char http_301[5] = +/* "301 " */ +{0x33, 0x30, 0x31, 0x20, }; +const char http_302[5] = +/* "302 " */ +{0x33, 0x30, 0x32, 0x20, }; +const char http_get[5] = +/* "GET " */ +{0x47, 0x45, 0x54, 0x20, }; +const char http_10[9] = +/* "HTTP/1.0" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, }; +const char http_11[9] = +/* "HTTP/1.1" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, }; +const char http_content_type[15] = +/* "content-type: " */ +{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, }; +const char http_texthtml[10] = +/* "text/html" */ +{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, }; +const char http_location[11] = +/* "location: " */ +{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, }; +const char http_host[7] = +/* "host: " */ +{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, }; +const char http_crnl[3] = +/* "\r\n" */ +{0xd, 0xa, }; +const char http_index_html[12] = +/* "/index.html" */ +{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; +const char http_404_html[10] = +/* "/404.html" */ +{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, }; +const char http_referer[9] = +/* "Referer:" */ +{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, }; +const char http_header_200[84] = +/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; +const char http_header_404[91] = +/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */ +{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, }; +const char http_content_type_plain[29] = +/* "Content-type: text/plain\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_html[28] = +/* "Content-type: text/html\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_css [27] = +/* "Content-type: text/css\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_text[28] = +/* "Content-type: text/text\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_png [28] = +/* "Content-type: image/png\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_gif [28] = +/* "Content-type: image/gif\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_jpg [29] = +/* "Content-type: image/jpeg\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, }; +const char http_content_type_binary[43] = +/* "Content-type: application/octet-stream\r\n\r\n" */ +{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, }; +const char http_html[6] = +/* ".html" */ +{0x2e, 0x68, 0x74, 0x6d, 0x6c, }; +const char http_shtml[7] = +/* ".shtml" */ +{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, }; +const char http_htm[5] = +/* ".htm" */ +{0x2e, 0x68, 0x74, 0x6d, }; +const char http_css[5] = +/* ".css" */ +{0x2e, 0x63, 0x73, 0x73, }; +const char http_png[5] = +/* ".png" */ +{0x2e, 0x70, 0x6e, 0x67, }; +const char http_gif[5] = +/* ".gif" */ +{0x2e, 0x67, 0x69, 0x66, }; +const char http_jpg[5] = +/* ".jpg" */ +{0x2e, 0x6a, 0x70, 0x67, }; +const char http_text[5] = +/* ".txt" */ +{0x2e, 0x74, 0x78, 0x74, }; +const char http_txt[5] = +/* ".txt" */ +{0x2e, 0x74, 0x78, 0x74, }; diff --git a/Target/Source/third_party/uip/apps/webserver/http-strings.h b/Target/Source/third_party/uip/apps/webserver/http-strings.h new file mode 100644 index 00000000..acbe7e17 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/http-strings.h @@ -0,0 +1,34 @@ +extern const char http_http[8]; +extern const char http_200[5]; +extern const char http_301[5]; +extern const char http_302[5]; +extern const char http_get[5]; +extern const char http_10[9]; +extern const char http_11[9]; +extern const char http_content_type[15]; +extern const char http_texthtml[10]; +extern const char http_location[11]; +extern const char http_host[7]; +extern const char http_crnl[3]; +extern const char http_index_html[12]; +extern const char http_404_html[10]; +extern const char http_referer[9]; +extern const char http_header_200[84]; +extern const char http_header_404[91]; +extern const char http_content_type_plain[29]; +extern const char http_content_type_html[28]; +extern const char http_content_type_css [27]; +extern const char http_content_type_text[28]; +extern const char http_content_type_png [28]; +extern const char http_content_type_gif [28]; +extern const char http_content_type_jpg [29]; +extern const char http_content_type_binary[43]; +extern const char http_html[6]; +extern const char http_shtml[7]; +extern const char http_htm[5]; +extern const char http_css[5]; +extern const char http_png[5]; +extern const char http_gif[5]; +extern const char http_jpg[5]; +extern const char http_text[5]; +extern const char http_txt[5]; diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-cgi.c b/Target/Source/third_party/uip/apps/webserver/httpd-cgi.c new file mode 100644 index 00000000..f845c7aa --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-cgi.c @@ -0,0 +1,203 @@ +/** + * \addtogroup httpd + * @{ + */ + +/** + * \file + * Web server script interface + * \author + * Adam Dunkels + * + */ + +/* + * Copyright (c) 2001-2006, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $ + * + */ + +#include "uip.h" +#include "psock.h" +#include "httpd.h" +#include "httpd-cgi.h" +#include "httpd-fs.h" + +#include +#include + +HTTPD_CGI_CALL(file, "file-stats", file_stats); +HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats); +HTTPD_CGI_CALL(net, "net-stats", net_stats); + +static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL }; + +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(nullfunction(struct httpd_state *s, char *ptr)) +{ + PSOCK_BEGIN(&s->sout); + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +httpd_cgifunction +httpd_cgi(char *name) +{ + const struct httpd_cgi_call **f; + + /* Find the matching name in the table, return the function. */ + for(f = calls; *f != NULL; ++f) { + if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) { + return (*f)->function; + } + } + return nullfunction; +} +/*---------------------------------------------------------------------------*/ +static unsigned short +generate_file_stats(void *arg) +{ + char *f = (char *)arg; + return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f)); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(file_stats(struct httpd_state *s, char *ptr)) +{ + PSOCK_BEGIN(&s->sout); + + PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1); + + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +static const char closed[] = /* "CLOSED",*/ +{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; +static const char syn_rcvd[] = /* "SYN-RCVD",*/ +{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, + 0x44, 0}; +static const char syn_sent[] = /* "SYN-SENT",*/ +{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, + 0x54, 0}; +static const char established[] = /* "ESTABLISHED",*/ +{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, + 0x45, 0x44, 0}; +static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ +{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, + 0x54, 0x2d, 0x31, 0}; +static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ +{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, + 0x54, 0x2d, 0x32, 0}; +static const char closing[] = /* "CLOSING",*/ +{0x43, 0x4c, 0x4f, 0x53, 0x49, + 0x4e, 0x47, 0}; +static const char time_wait[] = /* "TIME-WAIT,"*/ +{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, + 0x49, 0x54, 0}; +static const char last_ack[] = /* "LAST-ACK"*/ +{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, + 0x4b, 0}; + +static const char *states[] = { + closed, + syn_rcvd, + syn_sent, + established, + fin_wait_1, + fin_wait_2, + closing, + time_wait, + last_ack}; + + +static unsigned short +generate_tcp_stats(void *arg) +{ + struct uip_conn *conn; + struct httpd_state *s = (struct httpd_state *)arg; + + conn = &uip_conns[s->count]; + return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, + "%d%u.%u.%u.%u:%u%s%u%u%c %c\r\n", + htons(conn->lport), + htons(conn->ripaddr[0]) >> 8, + htons(conn->ripaddr[0]) & 0xff, + htons(conn->ripaddr[1]) >> 8, + htons(conn->ripaddr[1]) & 0xff, + htons(conn->rport), + states[conn->tcpstateflags & UIP_TS_MASK], + conn->nrtx, + conn->timer, + (uip_outstanding(conn))? '*':' ', + (uip_stopped(conn))? '!':' '); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr)) +{ + + PSOCK_BEGIN(&s->sout); + + for(s->count = 0; s->count < UIP_CONNS; ++s->count) { + if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) { + PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s); + } + } + + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +static unsigned short +generate_net_stats(void *arg) +{ + struct httpd_state *s = (struct httpd_state *)arg; + return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, + "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]); +} + +static +PT_THREAD(net_stats(struct httpd_state *s, char *ptr)) +{ + PSOCK_BEGIN(&s->sout); + +#if UIP_STATISTICS + + for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); + ++s->count) { + PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s); + } + +#endif /* UIP_STATISTICS */ + + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-cgi.h b/Target/Source/third_party/uip/apps/webserver/httpd-cgi.h new file mode 100644 index 00000000..7ae92832 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-cgi.h @@ -0,0 +1,84 @@ +/** + * \addtogroup httpd + * @{ + */ + +/** + * \file + * Web server script interface header file + * \author + * Adam Dunkels + * + */ + + + +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $ + * + */ + +#ifndef __HTTPD_CGI_H__ +#define __HTTPD_CGI_H__ + +#include "psock.h" +#include "httpd.h" + +typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *)); + +httpd_cgifunction httpd_cgi(char *name); + +struct httpd_cgi_call { + const char *name; + const httpd_cgifunction function; +}; + +/** + * \brief HTTPD CGI function declaration + * \param name The C variable name of the function + * \param str The string name of the function, used in the script file + * \param function A pointer to the function that implements it + * + * This macro is used for declaring a HTTPD CGI + * function. This function is then added to the list of + * HTTPD CGI functions with the httpd_cgi_add() function. + * + * \hideinitializer + */ +#define HTTPD_CGI_CALL(name, str, function) \ +static PT_THREAD(function(struct httpd_state *, char *)); \ +static const struct httpd_cgi_call name = {str, function} + +void httpd_cgi_init(void); +#endif /* __HTTPD_CGI_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs.c b/Target/Source/third_party/uip/apps/webserver/httpd-fs.c new file mode 100644 index 00000000..dc4aef01 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs.c @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $ + */ + +#include "httpd.h" +#include "httpd-fs.h" +#include "httpd-fsdata.h" + +#ifndef NULL +#define NULL 0 +#endif /* NULL */ + +#include "httpd-fsdata.c" + +#if HTTPD_FS_STATISTICS +static u16_t count[HTTPD_FS_NUMFILES]; +#endif /* HTTPD_FS_STATISTICS */ + +/*-----------------------------------------------------------------------------------*/ +static u8_t +httpd_fs_strcmp(const char *str1, const char *str2) +{ + u8_t i; + i = 0; + loop: + + if(str2[i] == 0 || + str1[i] == '\r' || + str1[i] == '\n') { + return 0; + } + + if(str1[i] != str2[i]) { + return 1; + } + + + ++i; + goto loop; +} +/*-----------------------------------------------------------------------------------*/ +int +httpd_fs_open(const char *name, struct httpd_fs_file *file) +{ +#if HTTPD_FS_STATISTICS + u16_t i = 0; +#endif /* HTTPD_FS_STATISTICS */ + struct httpd_fsdata_file_noconst *f; + + for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; + f != NULL; + f = (struct httpd_fsdata_file_noconst *)f->next) { + + if(httpd_fs_strcmp(name, f->name) == 0) { + file->data = f->data; + file->len = f->len; +#if HTTPD_FS_STATISTICS + ++count[i]; +#endif /* HTTPD_FS_STATISTICS */ + return 1; + } +#if HTTPD_FS_STATISTICS + ++i; +#endif /* HTTPD_FS_STATISTICS */ + + } + return 0; +} +/*-----------------------------------------------------------------------------------*/ +void +httpd_fs_init(void) +{ +#if HTTPD_FS_STATISTICS + u16_t i; + for(i = 0; i < HTTPD_FS_NUMFILES; i++) { + count[i] = 0; + } +#endif /* HTTPD_FS_STATISTICS */ +} +/*-----------------------------------------------------------------------------------*/ +#if HTTPD_FS_STATISTICS +u16_t httpd_fs_count +(char *name) +{ + struct httpd_fsdata_file_noconst *f; + u16_t i; + + i = 0; + for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT; + f != NULL; + f = (struct httpd_fsdata_file_noconst *)f->next) { + + if(httpd_fs_strcmp(name, f->name) == 0) { + return count[i]; + } + ++i; + } + return 0; +} +#endif /* HTTPD_FS_STATISTICS */ +/*-----------------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs.h b/Target/Source/third_party/uip/apps/webserver/httpd-fs.h new file mode 100644 index 00000000..b594eea5 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $ + */ +#ifndef __HTTPD_FS_H__ +#define __HTTPD_FS_H__ + +#define HTTPD_FS_STATISTICS 1 + +struct httpd_fs_file { + char *data; + int len; +}; + +/* file must be allocated by caller and will be filled in + by the function. */ +int httpd_fs_open(const char *name, struct httpd_fs_file *file); + +#ifdef HTTPD_FS_STATISTICS +#if HTTPD_FS_STATISTICS == 1 +u16_t httpd_fs_count(char *name); +#endif /* HTTPD_FS_STATISTICS */ +#endif /* HTTPD_FS_STATISTICS */ + +void httpd_fs_init(void); + +#endif /* __HTTPD_FS_H__ */ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/404.html b/Target/Source/third_party/uip/apps/webserver/httpd-fs/404.html new file mode 100644 index 00000000..43e7f4ca --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/404.html @@ -0,0 +1,8 @@ + + +
+

404 - file not found

+

Go here instead.

+
+ + \ No newline at end of file diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/fade.png b/Target/Source/third_party/uip/apps/webserver/httpd-fs/fade.png new file mode 100644 index 00000000..a9e69f75 Binary files /dev/null and b/Target/Source/third_party/uip/apps/webserver/httpd-fs/fade.png differ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/files.shtml b/Target/Source/third_party/uip/apps/webserver/httpd-fs/files.shtml new file mode 100644 index 00000000..361cc1dc --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/files.shtml @@ -0,0 +1,35 @@ +%!: /header.html +

File statistics

+
+ + + + + + + + + + + + + + + +
/index.html%! file-stats /index.html +
/files.shtml%! file-stats /files.shtml +
/tcp.shtml%! file-stats /tcp.shtml +
/stats.shtml%! file-stats /stats.shtml +
/style.css%! file-stats /style.css +
/404.html%! file-stats /404.html +
/fade.png%! file-stats /fade.png +
+
+%!: /footer.html diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/footer.html b/Target/Source/third_party/uip/apps/webserver/httpd-fs/footer.html new file mode 100644 index 00000000..290832dd --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/footer.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/header.html b/Target/Source/third_party/uip/apps/webserver/httpd-fs/header.html new file mode 100644 index 00000000..0c3c4efa --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/header.html @@ -0,0 +1,18 @@ + + + + Welcome to the uIP web server! + + + + + + +
diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/index.html b/Target/Source/third_party/uip/apps/webserver/httpd-fs/index.html new file mode 100644 index 00000000..7af64c8d --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/index.html @@ -0,0 +1,29 @@ + + + + Welcome to the uIP web server! + + + + + + +
+

+ These web pages are served by a small web server running on top of + the uIP embedded TCP/IP + stack. +

+

+ Click on the links above for web server statistics. +

+ + + diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/processes.shtml b/Target/Source/third_party/uip/apps/webserver/httpd-fs/processes.shtml new file mode 100644 index 00000000..be857f9e --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/processes.shtml @@ -0,0 +1,5 @@ +%!: /header.html +

System processes


+ +%! processes +%!: /footer.html \ No newline at end of file diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/stats.shtml b/Target/Source/third_party/uip/apps/webserver/httpd-fs/stats.shtml new file mode 100644 index 00000000..7eb381af --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/stats.shtml @@ -0,0 +1,31 @@ +%!: /header.html +

Network statistics

+
+
IDNamePriorityPoll handlerEvent handlerProcstate
+
+IP           Packets received
+             Packets sent
+	     Packets dropped
+IP errors    IP version/header length
+             IP length, high byte
+             IP length, low byte
+             IP fragments
+             Header checksum
+             Wrong protocol
+ICMP	     Packets received
+             Packets sent
+             Packets dropped
+             Type errors
+TCP          Packets received
+             Packets sent
+             Packets dropped
+             Checksum errors
+             Data packets without ACKs
+             Resets
+             Retransmissions
+	     No connection avaliable
+	     Connection attempts to closed ports
+
%! net-stats
+
+ +%!: /footer.html diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/style.css b/Target/Source/third_party/uip/apps/webserver/httpd-fs/style.css new file mode 100644 index 00000000..089fe84f --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/style.css @@ -0,0 +1,92 @@ +h1 +{ + text-align: center; + font-size:14pt; + font-family:arial,helvetica; + font-weight:bold; + padding:10px; +} + +body +{ + + background-color: #fffeec; + color:black; + + font-size:8pt; + font-family:arial,helvetica; +} + +.menu +{ + margin: 4px; + width:60%; + + padding:2px; + + border: solid 1px; + background-color: #fffcd2; + text-align:left; + + font-size:9pt; + font-family:arial,helvetica; +} + +div.menubox +{ + width: 25%; + border: 0; + float: left; +text-align: center; +} + +.contentblock +{ + margin: 4px; + width:60%; + + padding:2px; + + border: 1px dotted; + background-color: white; + + font-size:8pt; + font-family:arial,helvetica; + +} + +p.intro +{ + margin-left:20px; + margin-right:20px; + + font-size:10pt; +/* font-weight:bold; */ + font-family:arial,helvetica; +} + +p.clink +{ + font-size:12pt; + font-family:courier,monospace; + text-align:center; +} + +p.clink9 +{ + font-size:9pt; + font-family:courier,monospace; + text-align:center; +} + + +p +{ + padding-left:10px; +} + +p.right +{ + text-align:right; +} + diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fs/tcp.shtml b/Target/Source/third_party/uip/apps/webserver/httpd-fs/tcp.shtml new file mode 100644 index 00000000..2404aedf --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fs/tcp.shtml @@ -0,0 +1,5 @@ +%!: /header.html +

Current connections


+ +%! tcp-connections +%!: /footer.html \ No newline at end of file diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.c b/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.c new file mode 100644 index 00000000..29e5a1b9 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.c @@ -0,0 +1,607 @@ +static const unsigned char data_processes_shtml[] = { + /* /processes.shtml */ + 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, + 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68, + 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, + 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, + 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c, 0x2f, 0x74, + 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61, 0x6d, 0x65, + 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3c, 0x2f, 0x74, + 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, 0x6f, 0x6c, 0x6c, + 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 0x2f, + 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, + 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, + 0x72, 0x6f, 0x63, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, + 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, + 0x21, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, + 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0}; + +static const unsigned char data_404_html[] = { + /* /404.html */ + 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, + 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, + 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, + 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, + 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, + 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, + 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, + 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, + 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, +0}; + +static const unsigned char data_files_shtml[] = { + /* /files.shtml */ + 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, + 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x31, + 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, + 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x3e, + 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, + 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, + 0x3e, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, + 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, + 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, + 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, + 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, + 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, + 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, + 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, + 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, + 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, + 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, + 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, + 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, + 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, + 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, + 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, + 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x20, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, + 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, + 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, + 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x74, 0x63, 0x70, + 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, + 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, + 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, + 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, + 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, + 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, + 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, + 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, + 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, + 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, + 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, + 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, + 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, 0x63, + 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, + 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, + 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x25, + 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, + 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, + 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, + 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x2f, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x3c, 0x2f, + 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, + 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3c, 0x2f, 0x74, + 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, + 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, + 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3e, 0x20, + 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, + 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, + 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34, + 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, + 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, + 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, + 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, + 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, + 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3d, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3e, 0x20, 0x3c, 0x2f, + 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, + 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, + 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x66, 0x61, + 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e, + 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, + 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, + 0x70, 0x6e, 0x67, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, + 0x74, 0x64, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 0x72, + 0x63, 0x3d, 0x22, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, + 0x6e, 0x67, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3d, 0x31, 0x30, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, + 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x20, 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, + 0x70, 0x6e, 0x67, 0xa, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x64, + 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, + 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0xa, 0}; + +static const unsigned char data_footer_html[] = { + /* /footer.html */ + 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, + 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; + +static const unsigned char data_header_html[] = { + /* /header.html */ + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, + 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, + 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, + 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, + 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, + 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, + 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, + 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, + 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, + 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, + 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, + 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, + 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, + 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, + 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, + 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, + 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, + 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, + 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, + 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, + 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, + 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, + 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, + 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, + 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, + 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, + 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, + 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, + 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, + 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, + 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, + 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, + 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0}; + +static const unsigned char data_index_html[] = { + /* /index.html */ + 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, + 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, + 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, + 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, + 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, + 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x49, 0x50, 0x20, 0x77, + 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, + 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, + 0x68, 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, + 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, + 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, + 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, + 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, + 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65, + 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, + 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, + 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, + 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, + 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, + 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, + 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, + 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, + 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, + 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, + 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, + 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, + 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, + 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, + 0x65, 0x6e, 0x75, 0x62, 0x6f, 0x78, 0x22, 0x3e, 0x3c, 0x61, + 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, + 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0xa, 0x20, 0x20, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, + 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, + 0x20, 0x20, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, + 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70, + 0x3e, 0xa, 0x20, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, + 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x73, 0x6d, 0x61, 0x6c, + 0x6c, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, + 0xa, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, + 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, + 0x2f, 0x75, 0x69, 0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, + 0x20, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x20, + 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0xa, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0xa, + 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, + 0x70, 0x3e, 0xa, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x73, 0x2e, 0xa, 0x20, 0x20, 0x3c, + 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, + 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, + 0x6c, 0x3e, 0xa, 0}; + +static const unsigned char data_style_css[] = { + /* /style.css */ + 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0, + 0x68, 0x31, 0x20, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x74, 0x65, + 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x20, 0x20, + 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, + 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, + 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, + 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, + 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x20, 0x20, 0x66, + 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x70, + 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x31, 0x30, 0x70, + 0x78, 0x3b, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x62, 0x6f, 0x64, + 0x79, 0xa, 0x7b, 0xa, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, + 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x65, + 0x65, 0x63, 0x3b, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xa, 0xa, + 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, + 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, + 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, + 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, + 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa, 0x7d, 0xa, + 0xa, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0xa, 0x7b, 0xa, 0x20, + 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, + 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, + 0x78, 0x3b, 0xa, 0x9, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, + 0x20, 0x31, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, + 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, + 0x63, 0x64, 0x32, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, + 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, + 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20, 0x66, + 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, + 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, + 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, + 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, + 0x69, 0x63, 0x61, 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, + 0x64, 0x69, 0x76, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6f, + 0x78, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3a, 0x20, 0x32, 0x35, 0x25, 0x3b, 0xa, 0x20, 0x20, + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x30, 0x3b, + 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x20, + 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0x74, 0x65, 0x78, 0x74, + 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0xa, 0x7b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x6d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x20, 0x34, 0x70, 0x78, + 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, + 0x36, 0x30, 0x25, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x70, 0x61, + 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x32, 0x70, 0x78, 0x3b, + 0xa, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x3a, 0x20, 0x31, 0x70, 0x78, 0x20, 0x64, 0x6f, 0x74, 0x74, + 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, + 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x3b, + 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, + 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20, + 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, + 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20, + 0x20, 0xa, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x69, 0x6e, + 0x74, 0x72, 0x6f, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, + 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, + 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, + 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0xa, 0x20, 0x20, + 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, + 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x2f, 0x2a, 0x20, 0x20, + 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x20, 0x2a, 0x2f, + 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, + 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, + 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, + 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, + 0x6c, 0x69, 0x6e, 0x6b, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, + 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, + 0x32, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, + 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, + 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, + 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, + 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, + 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, + 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x63, 0x6c, 0x69, 0x6e, + 0x6b, 0x39, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, + 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x39, 0x70, 0x74, + 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, + 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x63, 0x6f, 0x75, 0x72, + 0x69, 0x65, 0x72, 0x2c, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x74, + 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, + 0xa, 0xa, 0x70, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x70, 0x61, + 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, + 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x7d, 0xa, 0xa, + 0x70, 0x2e, 0x72, 0x69, 0x67, 0x68, 0x74, 0xa, 0x7b, 0xa, + 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, + 0x67, 0x6e, 0x3a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x20, + 0xa, 0x7d, 0xa, 0xa, 0}; + +static const unsigned char data_tcp_shtml[] = { + /* /tcp.shtml */ + 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, + 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, + 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, + 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3c, 0x2f, + 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, + 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x74, 0x68, + 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, 0x6d, 0x65, 0x72, + 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x46, + 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, + 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x74, 0x63, + 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, + 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, +0}; + +static const unsigned char data_fade_png[] = { + /* /fade.png */ + 0x2f, 0x66, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0, + 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00, + 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x4, + 00, 00, 00, 0xa, 0x8, 0x2, 00, 00, 00, 0x1c, + 0x99, 0x68, 0x59, 00, 00, 00, 0x9, 0x70, 0x48, 0x59, + 0x73, 00, 00, 0xb, 0x13, 00, 00, 0xb, 0x13, 0x1, + 00, 0x9a, 0x9c, 0x18, 00, 00, 00, 0x7, 0x74, 0x49, + 0x4d, 0x45, 0x7, 0xd6, 0x6, 0x8, 0x14, 0x1b, 0x39, 0xaf, + 0x5b, 0xc0, 0xe3, 00, 00, 00, 0x1d, 0x74, 0x45, 0x58, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4d, 0x50, + 0xef, 0x64, 0x25, 0x6e, 00, 00, 00, 0x3a, 0x49, 0x44, + 0x41, 0x54, 0x8, 0xd7, 0x75, 0x8c, 0x31, 0x12, 00, 0x10, + 0x10, 0xc4, 0x2e, 0x37, 0x9e, 0x40, 0x65, 0xfd, 0xff, 0x83, + 0xf4, 0xa, 0x1c, 0x8d, 0x54, 0x9b, 0xc9, 0xcc, 0x9a, 0x3d, + 0x90, 0x73, 0x71, 0x67, 0x91, 0xd4, 0x74, 0x36, 0xa9, 0x55, + 0x1, 0xf8, 0x29, 0x58, 0xc8, 0xbf, 0x48, 0xc4, 0x81, 0x74, + 0xb, 0xa3, 0xf, 0x7c, 0xdb, 0x4, 0xe8, 0x40, 0x5, 0xdf, + 0xa1, 0xf3, 0xfc, 0x73, 00, 00, 00, 00, 0x49, 0x45, + 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0}; + +static const unsigned char data_stats_shtml[] = { + /* /stats.shtml */ + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, + 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, + 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, + 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, + 0x22, 0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, + 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0xa, 0x49, + 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, + 0x73, 0x65, 0x6e, 0x74, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, + 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x49, 0x50, 0x20, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, + 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, + 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, + 0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, + 0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, + 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, + 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, + 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, + 0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, + 0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, + 0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, + 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, + 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, + 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, + 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, + 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, + 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, + 0xa, 0}; + +const struct httpd_fsdata_file file_processes_shtml[] = {{NULL, data_processes_shtml, data_processes_shtml + 17, sizeof(data_processes_shtml) - 17}}; + +const struct httpd_fsdata_file file_404_html[] = {{file_processes_shtml, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; + +const struct httpd_fsdata_file file_files_shtml[] = {{file_404_html, data_files_shtml, data_files_shtml + 13, sizeof(data_files_shtml) - 13}}; + +const struct httpd_fsdata_file file_footer_html[] = {{file_files_shtml, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}}; + +const struct httpd_fsdata_file file_header_html[] = {{file_footer_html, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}}; + +const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; + +const struct httpd_fsdata_file file_style_css[] = {{file_index_html, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}}; + +const struct httpd_fsdata_file file_tcp_shtml[] = {{file_style_css, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}}; + +const struct httpd_fsdata_file file_fade_png[] = {{file_tcp_shtml, data_fade_png, data_fade_png + 10, sizeof(data_fade_png) - 10}}; + +const struct httpd_fsdata_file file_stats_shtml[] = {{file_fade_png, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}}; + +#define HTTPD_FS_ROOT file_stats_shtml + +#define HTTPD_FS_NUMFILES 10 diff --git a/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.h b/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.h new file mode 100644 index 00000000..52d35c26 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd-fsdata.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $ + */ +#ifndef __HTTPD_FSDATA_H__ +#define __HTTPD_FSDATA_H__ + +#include "uip.h" + +struct httpd_fsdata_file { + const struct httpd_fsdata_file *next; + const char *name; + const char *data; + const int len; +#ifdef HTTPD_FS_STATISTICS +#if HTTPD_FS_STATISTICS == 1 + u16_t count; +#endif /* HTTPD_FS_STATISTICS */ +#endif /* HTTPD_FS_STATISTICS */ +}; + +struct httpd_fsdata_file_noconst { + struct httpd_fsdata_file *next; + char *name; + char *data; + int len; +#ifdef HTTPD_FS_STATISTICS +#if HTTPD_FS_STATISTICS == 1 + u16_t count; +#endif /* HTTPD_FS_STATISTICS */ +#endif /* HTTPD_FS_STATISTICS */ +}; + +#endif /* __HTTPD_FSDATA_H__ */ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd.c b/Target/Source/third_party/uip/apps/webserver/httpd.c new file mode 100644 index 00000000..e808688d --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd.c @@ -0,0 +1,338 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup httpd Web server + * @{ + * The uIP web server is a very simplistic implementation of an HTTP + * server. It can serve web pages and files from a read-only ROM + * filesystem, and provides a very small scripting language. + + */ + +/** + * \file + * Web server + * \author + * Adam Dunkels + */ + + +/* + * Copyright (c) 2004, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $ + */ + +#include "uip.h" +#include "httpd.h" +#include "httpd-fs.h" +#include "httpd-cgi.h" +#include "http-strings.h" + +#include + +#define STATE_WAITING 0 +#define STATE_OUTPUT 1 + +#define ISO_nl 0x0a +#define ISO_space 0x20 +#define ISO_bang 0x21 +#define ISO_percent 0x25 +#define ISO_period 0x2e +#define ISO_slash 0x2f +#define ISO_colon 0x3a + + +/*---------------------------------------------------------------------------*/ +static unsigned short +generate_part_of_file(void *state) +{ + struct httpd_state *s = (struct httpd_state *)state; + + if(s->file.len > uip_mss()) { + s->len = uip_mss(); + } else { + s->len = s->file.len; + } + memcpy(uip_appdata, s->file.data, s->len); + + return s->len; +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(send_file(struct httpd_state *s)) +{ + PSOCK_BEGIN(&s->sout); + + do { + PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s); + s->file.len -= s->len; + s->file.data += s->len; + } while(s->file.len > 0); + + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(send_part_of_file(struct httpd_state *s)) +{ + PSOCK_BEGIN(&s->sout); + + PSOCK_SEND(&s->sout, s->file.data, s->len); + + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +static void +next_scriptstate(struct httpd_state *s) +{ + char *p; + p = strchr(s->scriptptr, ISO_nl) + 1; + s->scriptlen -= (unsigned short)(p - s->scriptptr); + s->scriptptr = p; +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(handle_script(struct httpd_state *s)) +{ + char *ptr; + + PT_BEGIN(&s->scriptpt); + + + while(s->file.len > 0) { + + /* Check if we should start executing a script. */ + if(*s->file.data == ISO_percent && + *(s->file.data + 1) == ISO_bang) { + s->scriptptr = s->file.data + 3; + s->scriptlen = s->file.len - 3; + if(*(s->scriptptr - 1) == ISO_colon) { + httpd_fs_open(s->scriptptr + 1, &s->file); + PT_WAIT_THREAD(&s->scriptpt, send_file(s)); + } else { + PT_WAIT_THREAD(&s->scriptpt, + httpd_cgi(s->scriptptr)(s, s->scriptptr)); + } + next_scriptstate(s); + + /* The script is over, so we reset the pointers and continue + sending the rest of the file. */ + s->file.data = s->scriptptr; + s->file.len = s->scriptlen; + } else { + /* See if we find the start of script marker in the block of HTML + to be sent. */ + + if(s->file.len > uip_mss()) { + s->len = uip_mss(); + } else { + s->len = s->file.len; + } + + if(*s->file.data == ISO_percent) { + ptr = strchr(s->file.data + 1, ISO_percent); + } else { + ptr = strchr(s->file.data, ISO_percent); + } + if(ptr != NULL && + ptr != s->file.data) { + s->len = (int)(ptr - s->file.data); + if(s->len >= uip_mss()) { + s->len = uip_mss(); + } + } + PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s)); + s->file.data += s->len; + s->file.len -= s->len; + + } + } + + PT_END(&s->scriptpt); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) +{ + char *ptr; + + PSOCK_BEGIN(&s->sout); + + PSOCK_SEND_STR(&s->sout, statushdr); + + ptr = strrchr(s->filename, ISO_period); + if(ptr == NULL) { + PSOCK_SEND_STR(&s->sout, http_content_type_binary); + } else if(strncmp(http_html, ptr, 5) == 0 || + strncmp(http_shtml, ptr, 6) == 0) { + PSOCK_SEND_STR(&s->sout, http_content_type_html); + } else if(strncmp(http_css, ptr, 4) == 0) { + PSOCK_SEND_STR(&s->sout, http_content_type_css); + } else if(strncmp(http_png, ptr, 4) == 0) { + PSOCK_SEND_STR(&s->sout, http_content_type_png); + } else if(strncmp(http_gif, ptr, 4) == 0) { + PSOCK_SEND_STR(&s->sout, http_content_type_gif); + } else if(strncmp(http_jpg, ptr, 4) == 0) { + PSOCK_SEND_STR(&s->sout, http_content_type_jpg); + } else { + PSOCK_SEND_STR(&s->sout, http_content_type_plain); + } + PSOCK_END(&s->sout); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(handle_output(struct httpd_state *s)) +{ + char *ptr; + + PT_BEGIN(&s->outputpt); + + if(!httpd_fs_open(s->filename, &s->file)) { + httpd_fs_open(http_404_html, &s->file); + strcpy(s->filename, http_404_html); + PT_WAIT_THREAD(&s->outputpt, + send_headers(s, + http_header_404)); + PT_WAIT_THREAD(&s->outputpt, + send_file(s)); + } else { + PT_WAIT_THREAD(&s->outputpt, + send_headers(s, + http_header_200)); + ptr = strchr(s->filename, ISO_period); + if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { + PT_INIT(&s->scriptpt); + PT_WAIT_THREAD(&s->outputpt, handle_script(s)); + } else { + PT_WAIT_THREAD(&s->outputpt, + send_file(s)); + } + } + PSOCK_CLOSE(&s->sout); + PT_END(&s->outputpt); +} +/*---------------------------------------------------------------------------*/ +static +PT_THREAD(handle_input(struct httpd_state *s)) +{ + PSOCK_BEGIN(&s->sin); + + PSOCK_READTO(&s->sin, ISO_space); + + + if(strncmp(s->inputbuf, http_get, 4) != 0) { + PSOCK_CLOSE_EXIT(&s->sin); + } + PSOCK_READTO(&s->sin, ISO_space); + + if(s->inputbuf[0] != ISO_slash) { + PSOCK_CLOSE_EXIT(&s->sin); + } + + if(s->inputbuf[1] == ISO_space) { + strncpy(s->filename, http_index_html, sizeof(s->filename)); + } else { + s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0; + strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename)); + } + + /* httpd_log_file(uip_conn->ripaddr, s->filename);*/ + + s->state = STATE_OUTPUT; + + while(1) { + PSOCK_READTO(&s->sin, ISO_nl); + + if(strncmp(s->inputbuf, http_referer, 8) == 0) { + s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0; + /* httpd_log(&s->inputbuf[9]);*/ + } + } + + PSOCK_END(&s->sin); +} +/*---------------------------------------------------------------------------*/ +static void +handle_connection(struct httpd_state *s) +{ + handle_input(s); + if(s->state == STATE_OUTPUT) { + handle_output(s); + } +} +/*---------------------------------------------------------------------------*/ +void +httpd_appcall(void) +{ + struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate); + + if(uip_closed() || uip_aborted() || uip_timedout()) { + } else if(uip_connected()) { + PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1); + PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1); + PT_INIT(&s->outputpt); + s->state = STATE_WAITING; + /* timer_set(&s->timer, CLOCK_SECOND * 100);*/ + s->timer = 0; + handle_connection(s); + } else if(s != NULL) { + if(uip_poll()) { + ++s->timer; + if(s->timer >= 20) { + uip_abort(); + } + } else { + s->timer = 0; + } + handle_connection(s); + } else { + uip_abort(); + } +} +/*---------------------------------------------------------------------------*/ +/** + * \brief Initialize the web server + * + * This function initializes the web server and should be + * called at system boot-up. + */ +void +httpd_init(void) +{ + uip_listen(HTONS(80)); +} +/*---------------------------------------------------------------------------*/ +/** @} */ diff --git a/Target/Source/third_party/uip/apps/webserver/httpd.h b/Target/Source/third_party/uip/apps/webserver/httpd.h new file mode 100644 index 00000000..7f7a6666 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/httpd.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2001-2005, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $ + * + */ + +#ifndef __HTTPD_H__ +#define __HTTPD_H__ + +#include "psock.h" +#include "httpd-fs.h" + +struct httpd_state { + unsigned char timer; + struct psock sin, sout; + struct pt outputpt, scriptpt; + char inputbuf[50]; + char filename[20]; + char state; + struct httpd_fs_file file; + int len; + char *scriptptr; + int scriptlen; + + unsigned short count; +}; + +void httpd_init(void); +void httpd_appcall(void); + +void httpd_log(char *msg); +void httpd_log_file(u16_t *requester, char *file); + +#endif /* __HTTPD_H__ */ diff --git a/Target/Source/third_party/uip/apps/webserver/makefsdata b/Target/Source/third_party/uip/apps/webserver/makefsdata new file mode 100644 index 00000000..8d2715a8 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/makefsdata @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +open(OUTPUT, "> httpd-fsdata.c"); + +chdir("httpd-fs"); + +opendir(DIR, "."); +@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); +closedir(DIR); + +foreach $file (@files) { + + if(-d $file && $file !~ /^\./) { + print "Processing directory $file\n"; + opendir(DIR, $file); + @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); + closedir(DIR); + printf "Adding files @newfiles\n"; + @files = (@files, map { $_ = "$file/$_" } @newfiles); + next; + } +} + +foreach $file (@files) { + if(-f $file) { + + print "Adding file $file\n"; + + open(FILE, $file) || die "Could not open file $file\n"; + + $file =~ s-^-/-; + $fvar = $file; + $fvar =~ s-/-_-g; + $fvar =~ s-\.-_-g; + # for AVR, add PROGMEM here + print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); + print(OUTPUT "\t/* $file */\n\t"); + for($j = 0; $j < length($file); $j++) { + printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); + } + printf(OUTPUT "0,\n"); + + + $i = 0; + while(read(FILE, $data, 1)) { + if($i == 0) { + print(OUTPUT "\t"); + } + printf(OUTPUT "%#02x, ", unpack("C", $data)); + $i++; + if($i == 10) { + print(OUTPUT "\n"); + $i = 0; + } + } + print(OUTPUT "0};\n\n"); + close(FILE); + push(@fvars, $fvar); + push(@pfiles, $file); + } +} + +for($i = 0; $i < @fvars; $i++) { + $file = $pfiles[$i]; + $fvar = $fvars[$i]; + + if($i == 0) { + $prevfile = "NULL"; + } else { + $prevfile = "file" . $fvars[$i - 1]; + } + print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); + print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); + print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); +} + +print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); +print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); diff --git a/Target/Source/third_party/uip/apps/webserver/makestrings b/Target/Source/third_party/uip/apps/webserver/makestrings new file mode 100644 index 00000000..8a13c6d2 --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/makestrings @@ -0,0 +1,40 @@ +#!/usr/bin/perl + + +sub stringify { + my $name = shift(@_); + open(OUTPUTC, "> $name.c"); + open(OUTPUTH, "> $name.h"); + + open(FILE, "$name"); + + while() { + if(/(.+) "(.+)"/) { + $var = $1; + $data = $2; + + $datan = $data; + $datan =~ s/\\r/\r/g; + $datan =~ s/\\n/\n/g; + $datan =~ s/\\01/\01/g; + $datan =~ s/\\0/\0/g; + + printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1); + printf(OUTPUTC "/* \"$data\" */\n"); + printf(OUTPUTC "{"); + for($j = 0; $j < length($datan); $j++) { + printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1))); + } + printf(OUTPUTC "};\n"); + + printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); + + } + } + close(OUTPUTC); + close(OUTPUTH); +} +stringify("http-strings"); + +exit 0; + diff --git a/Target/Source/third_party/uip/apps/webserver/webserver.h b/Target/Source/third_party/uip/apps/webserver/webserver.h new file mode 100644 index 00000000..1acb290b --- /dev/null +++ b/Target/Source/third_party/uip/apps/webserver/webserver.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2002, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $ + * + */ +#ifndef __WEBSERVER_H__ +#define __WEBSERVER_H__ + +#include "httpd.h" + +typedef struct httpd_state uip_tcp_appstate_t; +/* UIP_APPCALL: the name of the application function. This function + must return void and take no arguments (i.e., C type "void + appfunc(void)"). */ +#ifndef UIP_APPCALL +#define UIP_APPCALL httpd_appcall +#endif + + +#endif /* __WEBSERVER_H__ */ diff --git a/Target/Source/third_party/uip/doc/Doxyfile b/Target/Source/third_party/uip/doc/Doxyfile new file mode 100644 index 00000000..e7b0397a --- /dev/null +++ b/Target/Source/third_party/uip/doc/Doxyfile @@ -0,0 +1,279 @@ +# Doxyfile 1.4.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "uIP 1.0" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = . +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../ \ + ../../ +STRIP_FROM_INC_PATH = +SHORT_NAMES = YES +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= NO +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = uip-doc.txt \ + pt-doc.txt \ + examples.txt \ + uip-code-style.txt \ + ../uip/uip.h \ + ../uip/uip.c \ + ../uip/uip_arch.h \ + ../uip/uip_arp.h \ + ../uip/uip_arp.c \ + ../unix/uip-conf.h \ + ../uip/uipopt.h \ + ../uip/uip-split.h \ + ../uip/uip-split.c \ + ../uip/uip-neighbor.h \ + ../uip/uip-neighbor.c \ + ../uip/pt.h \ + ../uip/lc.h \ + ../uip/lc-switch.h \ + ../uip/lc-addrlabels.h \ + ../uip/timer.h \ + ../uip/timer.c \ + ../uip/clock.h \ + ../uip/psock.h \ + ../uip/psock.c \ + ../lib/memb.c \ + ../lib/memb.h \ + ../apps/resolv/resolv.h \ + ../apps/resolv/resolv.c \ + ../apps/dhcpc/dhcpc.h \ + ../apps/dhcpc/dhcpc.c \ + ../apps/smtp/smtp.h \ + ../apps/smtp/smtp.c \ + ../apps/telnetd/telnetd.h \ + ../apps/telnetd/telnetd.c \ + ../apps/telnetd/shell.h \ + ../apps/telnetd/shell.c \ + ../apps/hello-world/hello-world.h \ + ../apps/hello-world/hello-world.c \ + ../apps/webclient/webclient.h \ + ../apps/webclient/webclient.c \ + ../apps/webserver/httpd.h \ + ../apps/webserver/httpd-cgi.h \ + ../apps/webserver/httpd-cgi.c \ + ../apps/webserver/httpd.c +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = . ../apps/hello-world ../apps/smtp \ + ../apps/telnetd ../apps/resolv ../apps/webclient \ + ../apps/webserver ../unix ../apps/dhcpc +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = YES +BINARY_TOC = YES +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = header.tex +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = UIP_UDP +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = NO +CLASS_GRAPH = NO +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = NO +DIRECTORY_GRAPH = NO +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/Target/Source/third_party/uip/doc/Makefile b/Target/Source/third_party/uip/doc/Makefile new file mode 100644 index 00000000..d4954532 --- /dev/null +++ b/Target/Source/third_party/uip/doc/Makefile @@ -0,0 +1,7 @@ +all: htmldoc pdfdoc + +htmldoc: + doxygen Doxyfile + +pdfdoc: htmldoc + cd latex; make refman.pdf && mv refman.pdf ../uip-refman.pdf diff --git a/Target/Source/third_party/uip/doc/README b/Target/Source/third_party/uip/doc/README new file mode 100644 index 00000000..46894db0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/README @@ -0,0 +1,12 @@ +The files in this directory comprise the uIP documentation. The files +are: + +html/ The uIP reference manual in HTML format. + +uip-refman.pdf The uIP reference manual in a printable PDF version. + +mobisys2003.pdf Conference paper about uIP from the First + International Conference on Mobile Systems, + Applications and Services (MobiSys), San + Francisco, May 2003. + diff --git a/Target/Source/third_party/uip/doc/doxygen.sty b/Target/Source/third_party/uip/doc/doxygen.sty new file mode 100644 index 00000000..099e0377 --- /dev/null +++ b/Target/Source/third_party/uip/doc/doxygen.sty @@ -0,0 +1,62 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Jun 7 11:37:14 2006 for uIP 1.0-rc0 by doxygen\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Jun 7 11:37:14 2006 for uIP 1.0-rc0 by doxygen}} +\cfoot{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/Target/Source/third_party/uip/doc/example-mainloop-with-arp.c b/Target/Source/third_party/uip/doc/example-mainloop-with-arp.c new file mode 100644 index 00000000..03df5fba --- /dev/null +++ b/Target/Source/third_party/uip/doc/example-mainloop-with-arp.c @@ -0,0 +1,86 @@ +#include "uip.h" +#include "uip_arp.h" +#include "network-device.h" +#include "httpd.h" +#include "timer.h" + +#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) + +/*---------------------------------------------------------------------------*/ +int +main(void) +{ + int i; + uip_ipaddr_t ipaddr; + struct timer periodic_timer, arp_timer; + + timer_set(&periodic_timer, CLOCK_SECOND / 2); + timer_set(&arp_timer, CLOCK_SECOND * 10); + + network_device_init(); + uip_init(); + + uip_ipaddr(ipaddr, 192,168,0,2); + uip_sethostaddr(ipaddr); + + httpd_init(); + + while(1) { + uip_len = network_device_read(); + if(uip_len > 0) { + if(BUF->type == htons(UIP_ETHTYPE_IP)) { + uip_arp_ipin(); + uip_input(); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + network_device_send(); + } + } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) { + uip_arp_arpin(); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + network_device_send(); + } + } + + } else if(timer_expired(&periodic_timer)) { + timer_reset(&periodic_timer); + for(i = 0; i < UIP_CONNS; i++) { + uip_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + network_device_send(); + } + } + +#if UIP_UDP + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + network_device_send(); + } + } +#endif /* UIP_UDP */ + + /* Call the ARP timer function every 10 seconds. */ + if(timer_expired(&arp_timer)) { + timer_reset(&arp_timer); + uip_arp_timer(); + } + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/doc/example-mainloop-without-arp.c b/Target/Source/third_party/uip/doc/example-mainloop-without-arp.c new file mode 100644 index 00000000..acc3e95c --- /dev/null +++ b/Target/Source/third_party/uip/doc/example-mainloop-without-arp.c @@ -0,0 +1,62 @@ +#include "uip.h" +#include "uip_arp.h" +#include "network-device.h" +#include "httpd.h" +#include "timer.h" + +/*---------------------------------------------------------------------------*/ +int +main(void) +{ + int i; + uip_ipaddr_t ipaddr; + struct timer periodic_timer; + + timer_set(&periodic_timer, CLOCK_SECOND / 2); + + network_device_init(); + uip_init(); + + uip_ipaddr(ipaddr, 192,168,0,2); + uip_sethostaddr(ipaddr); + + httpd_init(); + + while(1) { + uip_len = network_device_read(); + if(uip_len > 0) { + uip_input(); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + network_device_send(); + } + } else if(timer_expired(&periodic_timer)) { + timer_reset(&periodic_timer); + for(i = 0; i < UIP_CONNS; i++) { + uip_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + network_device_send(); + } + } + +#if UIP_UDP + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + network_device_send(); + } + } +#endif /* UIP_UDP */ + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/doc/examples.txt b/Target/Source/third_party/uip/doc/examples.txt new file mode 100644 index 00000000..ec509d74 --- /dev/null +++ b/Target/Source/third_party/uip/doc/examples.txt @@ -0,0 +1,34 @@ +/** +\defgroup apps Applications +@{ + +The uIP distribution contains a number of example applications that +can be either used directory or studied when learning to develop +applications for uIP. + +*/ + +/** \example hello-world.c */ +/** \example hello-world.h */ + +/** \example smtp.c */ +/** \example smtp.h */ + +/** \example webclient.c */ +/** \example webclient.h */ + +/** \example example-mainloop-with-arp.c */ +/** \example example-mainloop-without-arp.c */ + +/** \example telnetd.c */ +/** \example telnetd.h */ + +/** \example resolv.c */ +/** \example resolv.h */ + +/** \example dhcpc.c */ +/** \example dhcpc.h */ + +/** \example uip-conf.h */ + +/** @} */ diff --git a/Target/Source/third_party/uip/doc/header.tex b/Target/Source/third_party/uip/doc/header.tex new file mode 100644 index 00000000..56121cc0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/header.tex @@ -0,0 +1,53 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\ifx\pdfoutput\undefined +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\else +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{5cm} +\begin{center} +{\Huge The uIP Embedded TCP/IP Stack}\\ +\vspace*{1cm} +{\LARGE The uIP 1.0 Reference Manual}\\ +\vspace*{3cm} +{\Large June 2006}\\ +\vspace*{2cm} +\includegraphics[width=6cm]{../sicslogo.pdf}\\ +\vspace*{1cm} +{\Large Adam Dunkels}\\ +{\Large \texttt{adam@sics.se}}\\ +\vspace*{1cm} +{\LARGE Swedish Institute of Computer Science}\\ +\vspace*{0.5cm} + +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} diff --git a/Target/Source/third_party/uip/doc/html/a00036.html b/Target/Source/third_party/uip/doc/html/a00036.html new file mode 100644 index 00000000..fdef4e3f --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00036.html @@ -0,0 +1,120 @@ + + +uIP 1.0: hello-world.c + + + + + +

hello-world.c

00001 /**
+00002  * \addtogroup helloworld
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  *         An example of how to write uIP applications
+00009  *         with protosockets.
+00010  * \author
+00011  *         Adam Dunkels <adam@sics.se>
+00012  */
+00013 
+00014 /*
+00015  * This is a short example of how to write uIP applications using
+00016  * protosockets.
+00017  */
+00018 
+00019 /*
+00020  * We define the application state (struct hello_world_state) in the
+00021  * hello-world.h file, so we need to include it here. We also include
+00022  * uip.h (since this cannot be included in hello-world.h) and
+00023  * <string.h>, since we use the memcpy() function in the code.
+00024  */
+00025 #include "hello-world.h"
+00026 #include "uip.h"
+00027 #include <string.h>
+00028 
+00029 /*
+00030  * Declaration of the protosocket function that handles the connection
+00031  * (defined at the end of the code).
+00032  */
+00033 static int handle_connection(struct hello_world_state *s);
+00034 /*---------------------------------------------------------------------------*/
+00035 /*
+00036  * The initialization function. We must explicitly call this function
+00037  * from the system initialization code, some time after uip_init() is
+00038  * called.
+00039  */
+00040 void
+00041 hello_world_init(void)
+00042 {
+00043   /* We start to listen for connections on TCP port 1000. */
+00044   uip_listen(HTONS(1000));
+00045 }
+00046 /*---------------------------------------------------------------------------*/
+00047 /*
+00048  * In hello-world.h we have defined the UIP_APPCALL macro to
+00049  * hello_world_appcall so that this funcion is uIP's application
+00050  * function. This function is called whenever an uIP event occurs
+00051  * (e.g. when a new connection is established, new data arrives, sent
+00052  * data is acknowledged, data needs to be retransmitted, etc.).
+00053  */
+00054 void
+00055 hello_world_appcall(void)
+00056 {
+00057   /*
+00058    * The uip_conn structure has a field called "appstate" that holds
+00059    * the application state of the connection. We make a pointer to
+00060    * this to access it easier.
+00061    */
+00062   struct hello_world_state *s = &(uip_conn->appstate);
+00063 
+00064   /*
+00065    * If a new connection was just established, we should initialize
+00066    * the protosocket in our applications' state structure.
+00067    */
+00068   if(uip_connected()) {
+00069     PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
+00070   }
+00071 
+00072   /*
+00073    * Finally, we run the protosocket function that actually handles
+00074    * the communication. We pass it a pointer to the application state
+00075    * of the current connection.
+00076    */
+00077   handle_connection(s);
+00078 }
+00079 /*---------------------------------------------------------------------------*/
+00080 /*
+00081  * This is the protosocket function that handles the communication. A
+00082  * protosocket function must always return an int, but must never
+00083  * explicitly return - all return statements are hidden in the PSOCK
+00084  * macros.
+00085  */
+00086 static int
+00087 handle_connection(struct hello_world_state *s)
+00088 {
+00089   PSOCK_BEGIN(&s->p);
+00090 
+00091   PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n");
+00092   PSOCK_READTO(&s->p, '\n');
+00093   strncpy(s->name, s->inputbuffer, sizeof(s->name));
+00094   PSOCK_SEND_STR(&s->p, "Hello ");
+00095   PSOCK_SEND_STR(&s->p, s->name);
+00096   PSOCK_CLOSE(&s->p);
+00097   
+00098   PSOCK_END(&s->p);
+00099 }
+00100 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00037.html b/Target/Source/third_party/uip/doc/html/a00037.html new file mode 100644 index 00000000..243168a4 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00037.html @@ -0,0 +1,72 @@ + + +uIP 1.0: hello-world.h + + + + + +

hello-world.h

00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup helloworld Hello, world
+00008  * @{
+00009  *
+00010  * A small example showing how to write applications with
+00011  * \ref psock "protosockets".
+00012  */
+00013 
+00014 /**
+00015  * \file
+00016  *         Header file for an example of how to write uIP applications
+00017  *         with protosockets.
+00018  * \author
+00019  *         Adam Dunkels <adam@sics.se>
+00020  */
+00021 
+00022 #ifndef __HELLO_WORLD_H__
+00023 #define __HELLO_WORLD_H__
+00024 
+00025 /* Since this file will be included by uip.h, we cannot include uip.h
+00026    here. But we might need to include uipopt.h if we need the u8_t and
+00027    u16_t datatypes. */
+00028 #include "uipopt.h"
+00029 
+00030 #include "psock.h"
+00031 
+00032 /* Next, we define the uip_tcp_appstate_t datatype. This is the state
+00033    of our application, and the memory required for this state is
+00034    allocated together with each TCP connection. One application state
+00035    for each TCP connection. */
+00036 typedef struct hello_world_state {
+00037   struct psock p;
+00038   char inputbuffer[10];
+00039   char name[40];
+00040 } uip_tcp_appstate_t;
+00041 
+00042 /* Finally we define the application function to be called by uIP. */
+00043 void hello_world_appcall(void);
+00044 #ifndef UIP_APPCALL
+00045 #define UIP_APPCALL hello_world_appcall
+00046 #endif /* UIP_APPCALL */
+00047 
+00048 void hello_world_init(void);
+00049 
+00050 #endif /* __HELLO_WORLD_H__ */
+00051 /** @} */
+00052 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00038.html b/Target/Source/third_party/uip/doc/html/a00038.html new file mode 100644 index 00000000..e0621cb2 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00038.html @@ -0,0 +1,282 @@ + + +uIP 1.0: smtp.c + + + + + +

smtp.c

00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup smtp SMTP E-mail sender
+00008  * @{
+00009  *
+00010  * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is
+00011  * the standard way of sending and transfering e-mail on the
+00012  * Internet. This simple example implementation is intended as an
+00013  * example of how to implement protocols in uIP, and is able to send
+00014  * out e-mail but has not been extensively tested.
+00015  */
+00016 
+00017 /**
+00018  * \file
+00019  * SMTP example implementation
+00020  * \author Adam Dunkels <adam@dunkels.com>
+00021  */
+00022 
+00023 /*
+00024  * Copyright (c) 2004, Adam Dunkels.
+00025  * All rights reserved.
+00026  *
+00027  * Redistribution and use in source and binary forms, with or without
+00028  * modification, are permitted provided that the following conditions
+00029  * are met:
+00030  * 1. Redistributions of source code must retain the above copyright
+00031  *    notice, this list of conditions and the following disclaimer.
+00032  * 2. Redistributions in binary form must reproduce the above copyright
+00033  *    notice, this list of conditions and the following disclaimer in the
+00034  *    documentation and/or other materials provided with the distribution.
+00035  * 3. Neither the name of the Institute nor the names of its contributors
+00036  *    may be used to endorse or promote products derived from this software
+00037  *    without specific prior written permission.
+00038  *
+00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00049  * SUCH DAMAGE.
+00050  *
+00051  * This file is part of the uIP TCP/IP stack.
+00052  *
+00053  * Author: Adam Dunkels <adam@sics.se>
+00054  *
+00055  * $Id: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $
+00056  */
+00057 #include "smtp.h"
+00058 
+00059 #include "smtp-strings.h"
+00060 #include "psock.h"
+00061 #include "uip.h"
+00062 
+00063 #include <string.h>
+00064 
+00065 static struct smtp_state s;
+00066 
+00067 static char *localhostname;
+00068 static uip_ipaddr_t smtpserver;
+00069 
+00070 #define ISO_nl 0x0a
+00071 #define ISO_cr 0x0d
+00072 
+00073 #define ISO_period 0x2e
+00074 
+00075 #define ISO_2  0x32
+00076 #define ISO_3  0x33
+00077 #define ISO_4  0x34
+00078 #define ISO_5  0x35
+00079 
+00080 
+00081 /*---------------------------------------------------------------------------*/
+00082 static
+00083 PT_THREAD(smtp_thread(void))
+00084 {
+00085   PSOCK_BEGIN(&s.psock);
+00086 
+00087   PSOCK_READTO(&s.psock, ISO_nl);
+00088    
+00089   if(strncmp(s.inputbuffer, smtp_220, 3) != 0) {
+00090     PSOCK_CLOSE(&s.psock);
+00091     smtp_done(2);
+00092     PSOCK_EXIT(&s.psock);
+00093   }
+00094   
+00095   PSOCK_SEND_STR(&s.psock, (char *)smtp_helo);
+00096   PSOCK_SEND_STR(&s.psock, localhostname);
+00097   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00098 
+00099   PSOCK_READTO(&s.psock, ISO_nl);
+00100   
+00101   if(s.inputbuffer[0] != ISO_2) {
+00102     PSOCK_CLOSE(&s.psock);
+00103     smtp_done(3);
+00104     PSOCK_EXIT(&s.psock);
+00105   }
+00106 
+00107   PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from);
+00108   PSOCK_SEND_STR(&s.psock, s.from);
+00109   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00110 
+00111   PSOCK_READTO(&s.psock, ISO_nl);
+00112   
+00113   if(s.inputbuffer[0] != ISO_2) {
+00114     PSOCK_CLOSE(&s.psock);
+00115     smtp_done(4);
+00116     PSOCK_EXIT(&s.psock);
+00117   }
+00118 
+00119   PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
+00120   PSOCK_SEND_STR(&s.psock, s.to);
+00121   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00122 
+00123   PSOCK_READTO(&s.psock, ISO_nl);
+00124   
+00125   if(s.inputbuffer[0] != ISO_2) {
+00126     PSOCK_CLOSE(&s.psock);
+00127     smtp_done(5);
+00128     PSOCK_EXIT(&s.psock);
+00129   }
+00130   
+00131   if(s.cc != 0) {
+00132     PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
+00133     PSOCK_SEND_STR(&s.psock, s.cc);
+00134     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00135 
+00136     PSOCK_READTO(&s.psock, ISO_nl);
+00137   
+00138     if(s.inputbuffer[0] != ISO_2) {
+00139       PSOCK_CLOSE(&s.psock);
+00140       smtp_done(6);
+00141       PSOCK_EXIT(&s.psock);
+00142     }
+00143   }
+00144   
+00145   PSOCK_SEND_STR(&s.psock, (char *)smtp_data);
+00146   
+00147   PSOCK_READTO(&s.psock, ISO_nl);
+00148   
+00149   if(s.inputbuffer[0] != ISO_3) {
+00150     PSOCK_CLOSE(&s.psock);
+00151     smtp_done(7);
+00152     PSOCK_EXIT(&s.psock);
+00153   }
+00154 
+00155   PSOCK_SEND_STR(&s.psock, (char *)smtp_to);
+00156   PSOCK_SEND_STR(&s.psock, s.to);
+00157   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00158   
+00159   if(s.cc != 0) {
+00160     PSOCK_SEND_STR(&s.psock, (char *)smtp_cc);
+00161     PSOCK_SEND_STR(&s.psock, s.cc);
+00162     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00163   }
+00164   
+00165   PSOCK_SEND_STR(&s.psock, (char *)smtp_from);
+00166   PSOCK_SEND_STR(&s.psock, s.from);
+00167   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00168   
+00169   PSOCK_SEND_STR(&s.psock, (char *)smtp_subject);
+00170   PSOCK_SEND_STR(&s.psock, s.subject);
+00171   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00172 
+00173   PSOCK_SEND(&s.psock, s.msg, s.msglen);
+00174   
+00175   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl);
+00176 
+00177   PSOCK_READTO(&s.psock, ISO_nl);
+00178   if(s.inputbuffer[0] != ISO_2) {
+00179     PSOCK_CLOSE(&s.psock);
+00180     smtp_done(8);
+00181     PSOCK_EXIT(&s.psock);
+00182   }
+00183 
+00184   PSOCK_SEND_STR(&s.psock, (char *)smtp_quit);
+00185   smtp_done(SMTP_ERR_OK);
+00186   PSOCK_END(&s.psock);
+00187 }
+00188 /*---------------------------------------------------------------------------*/
+00189 void
+00190 smtp_appcall(void)
+00191 {
+00192   if(uip_closed()) {
+00193     s.connected = 0;
+00194     return;
+00195   }
+00196   if(uip_aborted() || uip_timedout()) {
+00197     s.connected = 0;
+00198     smtp_done(1);
+00199     return;
+00200   }
+00201   smtp_thread();
+00202 }
+00203 /*---------------------------------------------------------------------------*/
+00204 /**
+00205  * Specificy an SMTP server and hostname.
+00206  *
+00207  * This function is used to configure the SMTP module with an SMTP
+00208  * server and the hostname of the host.
+00209  *
+00210  * \param lhostname The hostname of the uIP host.
+00211  *
+00212  * \param server A pointer to a 4-byte array representing the IP
+00213  * address of the SMTP server to be configured.
+00214  */
+00215 void
+00216 smtp_configure(char *lhostname, void *server)
+00217 {
+00218   localhostname = lhostname;
+00219   uip_ipaddr_copy(smtpserver, server);
+00220 }
+00221 /*---------------------------------------------------------------------------*/
+00222 /**
+00223  * Send an e-mail.
+00224  *
+00225  * \param to The e-mail address of the receiver of the e-mail.
+00226  * \param cc The e-mail address of the CC: receivers of the e-mail.
+00227  * \param from The e-mail address of the sender of the e-mail.
+00228  * \param subject The subject of the e-mail.
+00229  * \param msg The actual e-mail message.
+00230  * \param msglen The length of the e-mail message.
+00231  */
+00232 unsigned char
+00233 smtp_send(char *to, char *cc, char *from,
+00234           char *subject, char *msg, u16_t msglen)
+00235 {
+00236   struct uip_conn *conn;
+00237 
+00238   conn = uip_connect(smtpserver, HTONS(25));
+00239   if(conn == NULL) {
+00240     return 0;
+00241   }
+00242   s.connected = 1;
+00243   s.to = to;
+00244   s.cc = cc;
+00245   s.from = from;
+00246   s.subject = subject;
+00247   s.msg = msg;
+00248   s.msglen = msglen;
+00249 
+00250   PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer));
+00251   
+00252   return 1;
+00253 }
+00254 /*---------------------------------------------------------------------------*/
+00255 void
+00256 smtp_init(void)
+00257 {
+00258   s.connected = 0;
+00259 }
+00260 /*---------------------------------------------------------------------------*/
+00261 /** @} */
+00262 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00039.html b/Target/Source/third_party/uip/doc/html/a00039.html new file mode 100644 index 00000000..04b8dfe1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00039.html @@ -0,0 +1,123 @@ + + +uIP 1.0: smtp.h + + + + + +

smtp.h

00001 
+00002 /**
+00003  * \addtogroup smtp
+00004  * @{
+00005  */
+00006 
+00007 
+00008 /**
+00009  * \file
+00010  * SMTP header file
+00011  * \author Adam Dunkels <adam@dunkels.com>
+00012  */
+00013 
+00014 /*
+00015  * Copyright (c) 2002, Adam Dunkels.
+00016  * All rights reserved.
+00017  *
+00018  * Redistribution and use in source and binary forms, with or without
+00019  * modification, are permitted provided that the following conditions
+00020  * are met:
+00021  * 1. Redistributions of source code must retain the above copyright
+00022  *    notice, this list of conditions and the following disclaimer.
+00023  * 2. Redistributions in binary form must reproduce the above copyright
+00024  *    notice, this list of conditions and the following disclaimer in the
+00025  *    documentation and/or other materials provided with the distribution.
+00026  * 3. The name of the author may not be used to endorse or promote
+00027  *    products derived from this software without specific prior
+00028  *    written permission.
+00029  *
+00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00041  *
+00042  * This file is part of the uIP TCP/IP stack.
+00043  *
+00044  * $Id: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $
+00045  *
+00046  */
+00047 #ifndef __SMTP_H__
+00048 #define __SMTP_H__
+00049 
+00050 #include "uipopt.h"
+00051 
+00052 /**
+00053  * Error number that signifies a non-error condition.
+00054  */
+00055 #define SMTP_ERR_OK 0
+00056 
+00057 /**
+00058  * Callback function that is called when an e-mail transmission is
+00059  * done.
+00060  *
+00061  * This function must be implemented by the module that uses the SMTP
+00062  * module.
+00063  *
+00064  * \param error The number of the error if an error occured, or
+00065  * SMTP_ERR_OK.
+00066  */
+00067 void smtp_done(unsigned char error);
+00068 
+00069 void smtp_init(void);
+00070 
+00071 /* Functions. */
+00072 void smtp_configure(char *localhostname, u16_t *smtpserver);
+00073 unsigned char smtp_send(char *to, char *from,
+00074                         char *subject, char *msg,
+00075                         u16_t msglen);
+00076 #define SMTP_SEND(to, cc, from, subject, msg) \
+00077         smtp_send(to, cc, from, subject, msg, strlen(msg))
+00078 
+00079 void smtp_appcall(void);
+00080 
+00081 struct smtp_state {
+00082   u8_t state;
+00083   char *to;
+00084   char *from;
+00085   char *subject;
+00086   char *msg;
+00087   u16_t msglen;
+00088   
+00089   u16_t sentlen, textlen;
+00090   u16_t sendptr;
+00091 
+00092 };
+00093 
+00094 
+00095 #ifndef UIP_APPCALL
+00096 #define UIP_APPCALL     smtp_appcall
+00097 #endif
+00098 typedef struct smtp_state uip_tcp_appstate_t;
+00099 
+00100 
+00101 #endif /* __SMTP_H__ */
+00102 
+00103 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00040.html b/Target/Source/third_party/uip/doc/html/a00040.html new file mode 100644 index 00000000..c5d2eb81 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00040.html @@ -0,0 +1,459 @@ + + +uIP 1.0: webclient.c + + + + + +

webclient.c

00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup webclient Web client
+00008  * @{
+00009  *
+00010  * This example shows a HTTP client that is able to download web pages
+00011  * and files from web servers. It requires a number of callback
+00012  * functions to be implemented by the module that utilizes the code:
+00013  * webclient_datahandler(), webclient_connected(),
+00014  * webclient_timedout(), webclient_aborted(), webclient_closed().
+00015  */
+00016 
+00017 /**
+00018  * \file
+00019  * Implementation of the HTTP client.
+00020  * \author Adam Dunkels <adam@dunkels.com>
+00021  */
+00022 
+00023 /*
+00024  * Copyright (c) 2002, Adam Dunkels.
+00025  * All rights reserved.
+00026  *
+00027  * Redistribution and use in source and binary forms, with or without
+00028  * modification, are permitted provided that the following conditions
+00029  * are met:
+00030  * 1. Redistributions of source code must retain the above copyright
+00031  *    notice, this list of conditions and the following disclaimer.
+00032  * 2. Redistributions in binary form must reproduce the above
+00033  *    copyright notice, this list of conditions and the following
+00034  *    disclaimer in the documentation and/or other materials provided
+00035  *    with the distribution.
+00036  * 3. The name of the author may not be used to endorse or promote
+00037  *    products derived from this software without specific prior
+00038  *    written permission.
+00039  *
+00040  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00041  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00042  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00043  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00044  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00045  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00046  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00047  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00048  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00049  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00050  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00051  *
+00052  * This file is part of the uIP TCP/IP stack.
+00053  *
+00054  * $Id: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $
+00055  *
+00056  */
+00057 
+00058 #include "uip.h"
+00059 #include "uiplib.h"
+00060 #include "webclient.h"
+00061 #include "resolv.h"
+00062 
+00063 #include <string.h>
+00064 
+00065 #define WEBCLIENT_TIMEOUT 100
+00066 
+00067 #define WEBCLIENT_STATE_STATUSLINE 0
+00068 #define WEBCLIENT_STATE_HEADERS    1
+00069 #define WEBCLIENT_STATE_DATA       2
+00070 #define WEBCLIENT_STATE_CLOSE      3
+00071 
+00072 #define HTTPFLAG_NONE   0
+00073 #define HTTPFLAG_OK     1
+00074 #define HTTPFLAG_MOVED  2
+00075 #define HTTPFLAG_ERROR  3
+00076 
+00077 
+00078 #define ISO_nl       0x0a
+00079 #define ISO_cr       0x0d
+00080 #define ISO_space    0x20
+00081 
+00082 
+00083 static struct webclient_state s;
+00084 
+00085 /*-----------------------------------------------------------------------------------*/
+00086 char *
+00087 webclient_mimetype(void)
+00088 {
+00089   return s.mimetype;
+00090 }
+00091 /*-----------------------------------------------------------------------------------*/
+00092 char *
+00093 webclient_filename(void)
+00094 {
+00095   return s.file;
+00096 }
+00097 /*-----------------------------------------------------------------------------------*/
+00098 char *
+00099 webclient_hostname(void)
+00100 {
+00101   return s.host;
+00102 }
+00103 /*-----------------------------------------------------------------------------------*/
+00104 unsigned short
+00105 webclient_port(void)
+00106 {
+00107   return s.port;
+00108 }
+00109 /*-----------------------------------------------------------------------------------*/
+00110 void
+00111 webclient_init(void)
+00112 {
+00113 
+00114 }
+00115 /*-----------------------------------------------------------------------------------*/
+00116 static void
+00117 init_connection(void)
+00118 {
+00119   s.state = WEBCLIENT_STATE_STATUSLINE;
+00120 
+00121   s.getrequestleft = sizeof(http_get) - 1 + 1 +
+00122     sizeof(http_10) - 1 +
+00123     sizeof(http_crnl) - 1 +
+00124     sizeof(http_host) - 1 +
+00125     sizeof(http_crnl) - 1 +
+00126     strlen(http_user_agent_fields) +
+00127     strlen(s.file) + strlen(s.host);
+00128   s.getrequestptr = 0;
+00129 
+00130   s.httpheaderlineptr = 0;
+00131 }
+00132 /*-----------------------------------------------------------------------------------*/
+00133 void
+00134 webclient_close(void)
+00135 {
+00136   s.state = WEBCLIENT_STATE_CLOSE;
+00137 }
+00138 /*-----------------------------------------------------------------------------------*/
+00139 unsigned char
+00140 webclient_get(char *host, u16_t port, char *file)
+00141 {
+00142   struct uip_conn *conn;
+00143   uip_ipaddr_t *ipaddr;
+00144   static uip_ipaddr_t addr;
+00145   
+00146   /* First check if the host is an IP address. */
+00147   ipaddr = &addr;
+00148   if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) {
+00149     ipaddr = (uip_ipaddr_t *)resolv_lookup(host);
+00150     
+00151     if(ipaddr == NULL) {
+00152       return 0;
+00153     }
+00154   }
+00155   
+00156   conn = uip_connect(ipaddr, htons(port));
+00157   
+00158   if(conn == NULL) {
+00159     return 0;
+00160   }
+00161   
+00162   s.port = port;
+00163   strncpy(s.file, file, sizeof(s.file));
+00164   strncpy(s.host, host, sizeof(s.host));
+00165   
+00166   init_connection();
+00167   return 1;
+00168 }
+00169 /*-----------------------------------------------------------------------------------*/
+00170 static unsigned char *
+00171 copy_string(unsigned char *dest,
+00172             const unsigned char *src, unsigned char len)
+00173 {
+00174   strncpy(dest, src, len);
+00175   return dest + len;
+00176 }
+00177 /*-----------------------------------------------------------------------------------*/
+00178 static void
+00179 senddata(void)
+00180 {
+00181   u16_t len;
+00182   char *getrequest;
+00183   char *cptr;
+00184   
+00185   if(s.getrequestleft > 0) {
+00186     cptr = getrequest = (char *)uip_appdata;
+00187 
+00188     cptr = copy_string(cptr, http_get, sizeof(http_get) - 1);
+00189     cptr = copy_string(cptr, s.file, strlen(s.file));
+00190     *cptr++ = ISO_space;
+00191     cptr = copy_string(cptr, http_10, sizeof(http_10) - 1);
+00192 
+00193     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+00194     
+00195     cptr = copy_string(cptr, http_host, sizeof(http_host) - 1);
+00196     cptr = copy_string(cptr, s.host, strlen(s.host));
+00197     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+00198 
+00199     cptr = copy_string(cptr, http_user_agent_fields,
+00200                        strlen(http_user_agent_fields));
+00201     
+00202     len = s.getrequestleft > uip_mss()?
+00203       uip_mss():
+00204       s.getrequestleft;
+00205     uip_send(&(getrequest[s.getrequestptr]), len);
+00206   }
+00207 }
+00208 /*-----------------------------------------------------------------------------------*/
+00209 static void
+00210 acked(void)
+00211 {
+00212   u16_t len;
+00213   
+00214   if(s.getrequestleft > 0) {
+00215     len = s.getrequestleft > uip_mss()?
+00216       uip_mss():
+00217       s.getrequestleft;
+00218     s.getrequestleft -= len;
+00219     s.getrequestptr += len;
+00220   }
+00221 }
+00222 /*-----------------------------------------------------------------------------------*/
+00223 static u16_t
+00224 parse_statusline(u16_t len)
+00225 {
+00226   char *cptr;
+00227   
+00228   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+00229     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
+00230     ++((char *)uip_appdata);
+00231     --len;
+00232     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+00233 
+00234       if((strncmp(s.httpheaderline, http_10,
+00235                   sizeof(http_10) - 1) == 0) ||
+00236          (strncmp(s.httpheaderline, http_11,
+00237                   sizeof(http_11) - 1) == 0)) {
+00238         cptr = &(s.httpheaderline[9]);
+00239         s.httpflag = HTTPFLAG_NONE;
+00240         if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) {
+00241           /* 200 OK */
+00242           s.httpflag = HTTPFLAG_OK;
+00243         } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 ||
+00244                   strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) {
+00245           /* 301 Moved permanently or 302 Found. Location: header line
+00246              will contain thw new location. */
+00247           s.httpflag = HTTPFLAG_MOVED;
+00248         } else {
+00249           s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+00250         }
+00251       } else {
+00252         uip_abort();
+00253         webclient_aborted();
+00254         return 0;
+00255       }
+00256       
+00257       /* We're done parsing the status line, so we reset the pointer
+00258          and start parsing the HTTP headers.*/
+00259       s.httpheaderlineptr = 0;
+00260       s.state = WEBCLIENT_STATE_HEADERS;
+00261       break;
+00262     } else {
+00263       ++s.httpheaderlineptr;
+00264     }
+00265   }
+00266   return len;
+00267 }
+00268 /*-----------------------------------------------------------------------------------*/
+00269 static char
+00270 casecmp(char *str1, const char *str2, char len)
+00271 {
+00272   static char c;
+00273   
+00274   while(len > 0) {
+00275     c = *str1;
+00276     /* Force lower-case characters. */
+00277     if(c & 0x40) {
+00278       c |= 0x20;
+00279     }
+00280     if(*str2 != c) {
+00281       return 1;
+00282     }
+00283     ++str1;
+00284     ++str2;
+00285     --len;
+00286   }
+00287   return 0;
+00288 }
+00289 /*-----------------------------------------------------------------------------------*/
+00290 static u16_t
+00291 parse_headers(u16_t len)
+00292 {
+00293   char *cptr;
+00294   static unsigned char i;
+00295   
+00296   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+00297     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
+00298     ++((char *)uip_appdata);
+00299     --len;
+00300     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+00301       /* We have an entire HTTP header line in s.httpheaderline, so
+00302          we parse it. */
+00303       if(s.httpheaderline[0] == ISO_cr) {
+00304         /* This was the last header line (i.e., and empty "\r\n"), so
+00305            we are done with the headers and proceed with the actual
+00306            data. */
+00307         s.state = WEBCLIENT_STATE_DATA;
+00308         return len;
+00309       }
+00310 
+00311       s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+00312       /* Check for specific HTTP header fields. */
+00313       if(casecmp(s.httpheaderline, http_content_type,
+00314                      sizeof(http_content_type) - 1) == 0) {
+00315         /* Found Content-type field. */
+00316         cptr = strchr(s.httpheaderline, ';');
+00317         if(cptr != NULL) {
+00318           *cptr = 0;
+00319         }
+00320         strncpy(s.mimetype, s.httpheaderline +
+00321                 sizeof(http_content_type) - 1, sizeof(s.mimetype));
+00322       } else if(casecmp(s.httpheaderline, http_location,
+00323                             sizeof(http_location) - 1) == 0) {
+00324         cptr = s.httpheaderline +
+00325           sizeof(http_location) - 1;
+00326         
+00327         if(strncmp(cptr, http_http, 7) == 0) {
+00328           cptr += 7;
+00329           for(i = 0; i < s.httpheaderlineptr - 7; ++i) {
+00330             if(*cptr == 0 ||
+00331                *cptr == '/' ||
+00332                *cptr == ' ' ||
+00333                *cptr == ':') {
+00334               s.host[i] = 0;
+00335               break;
+00336             }
+00337             s.host[i] = *cptr;
+00338             ++cptr;
+00339           }
+00340         }
+00341         strncpy(s.file, cptr, sizeof(s.file));
+00342         /*      s.file[s.httpheaderlineptr - i] = 0;*/
+00343       }
+00344 
+00345 
+00346       /* We're done parsing, so we reset the pointer and start the
+00347          next line. */
+00348       s.httpheaderlineptr = 0;
+00349     } else {
+00350       ++s.httpheaderlineptr;
+00351     }
+00352   }
+00353   return len;
+00354 }
+00355 /*-----------------------------------------------------------------------------------*/
+00356 static void
+00357 newdata(void)
+00358 {
+00359   u16_t len;
+00360 
+00361   len = uip_datalen();
+00362 
+00363   if(s.state == WEBCLIENT_STATE_STATUSLINE) {
+00364     len = parse_statusline(len);
+00365   }
+00366   
+00367   if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) {
+00368     len = parse_headers(len);
+00369   }
+00370 
+00371   if(len > 0 && s.state == WEBCLIENT_STATE_DATA &&
+00372      s.httpflag != HTTPFLAG_MOVED) {
+00373     webclient_datahandler((char *)uip_appdata, len);
+00374   }
+00375 }
+00376 /*-----------------------------------------------------------------------------------*/
+00377 void
+00378 webclient_appcall(void)
+00379 {
+00380   if(uip_connected()) {
+00381     s.timer = 0;
+00382     s.state = WEBCLIENT_STATE_STATUSLINE;
+00383     senddata();
+00384     webclient_connected();
+00385     return;
+00386   }
+00387 
+00388   if(s.state == WEBCLIENT_STATE_CLOSE) {
+00389     webclient_closed();
+00390     uip_abort();
+00391     return;
+00392   }
+00393 
+00394   if(uip_aborted()) {
+00395     webclient_aborted();
+00396   }
+00397   if(uip_timedout()) {
+00398     webclient_timedout();
+00399   }
+00400 
+00401   
+00402   if(uip_acked()) {
+00403     s.timer = 0;
+00404     acked();
+00405   }
+00406   if(uip_newdata()) {
+00407     s.timer = 0;
+00408     newdata();
+00409   }
+00410   if(uip_rexmit() ||
+00411      uip_newdata() ||
+00412      uip_acked()) {
+00413     senddata();
+00414   } else if(uip_poll()) {
+00415     ++s.timer;
+00416     if(s.timer == WEBCLIENT_TIMEOUT) {
+00417       webclient_timedout();
+00418       uip_abort();
+00419       return;
+00420     }
+00421         /*    senddata();*/
+00422   }
+00423 
+00424   if(uip_closed()) {
+00425     if(s.httpflag != HTTPFLAG_MOVED) {
+00426       /* Send NULL data to signal EOF. */
+00427       webclient_datahandler(NULL, 0);
+00428     } else {
+00429       if(resolv_lookup(s.host) == NULL) {
+00430         resolv_query(s.host);
+00431       }
+00432       webclient_get(s.host, s.port, s.file);
+00433     }
+00434   }
+00435 }
+00436 /*-----------------------------------------------------------------------------------*/
+00437 
+00438 /** @} */
+00439 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00041.html b/Target/Source/third_party/uip/doc/html/a00041.html new file mode 100644 index 00000000..8d0125a2 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00041.html @@ -0,0 +1,248 @@ + + +uIP 1.0: webclient.h + + + + + +

webclient.h

00001 /**
+00002  * \addtogroup webclient
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  * Header file for the HTTP client.
+00009  * \author Adam Dunkels <adam@dunkels.com>
+00010  */
+00011 
+00012 /*
+00013  * Copyright (c) 2002, Adam Dunkels.
+00014  * All rights reserved.
+00015  *
+00016  * Redistribution and use in source and binary forms, with or without
+00017  * modification, are permitted provided that the following conditions
+00018  * are met:
+00019  * 1. Redistributions of source code must retain the above copyright
+00020  *    notice, this list of conditions and the following disclaimer.
+00021  * 2. Redistributions in binary form must reproduce the above
+00022  *    copyright notice, this list of conditions and the following
+00023  *    disclaimer in the documentation and/or other materials provided
+00024  *    with the distribution.
+00025  * 3. The name of the author may not be used to endorse or promote
+00026  *    products derived from this software without specific prior
+00027  *    written permission.
+00028  *
+00029  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00030  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00031  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00033  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00035  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00036  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00037  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00038  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00039  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00040  *
+00041  * This file is part of the uIP TCP/IP stack.
+00042  *
+00043  * $Id: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $
+00044  *
+00045  */
+00046 #ifndef __WEBCLIENT_H__
+00047 #define __WEBCLIENT_H__
+00048 
+00049 
+00050 #include "webclient-strings.h"
+00051 #include "uipopt.h"
+00052 
+00053 #define WEBCLIENT_CONF_MAX_URLLEN 100
+00054 
+00055 struct webclient_state {
+00056   u8_t timer;
+00057   u8_t state;
+00058   u8_t httpflag;
+00059 
+00060   u16_t port;
+00061   char host[40];
+00062   char file[WEBCLIENT_CONF_MAX_URLLEN];
+00063   u16_t getrequestptr;
+00064   u16_t getrequestleft;
+00065   
+00066   char httpheaderline[200];
+00067   u16_t httpheaderlineptr;
+00068 
+00069   char mimetype[32];
+00070 };
+00071 
+00072 typedef struct webclient_state uip_tcp_appstate_t;
+00073 #define UIP_APPCALL webclient_appcall
+00074 
+00075 /**
+00076  * Callback function that is called from the webclient code when HTTP
+00077  * data has been received.
+00078  *
+00079  * This function must be implemented by the module that uses the
+00080  * webclient code. The function is called from the webclient module
+00081  * when HTTP data has been received. The function is not called when
+00082  * HTTP headers are received, only for the actual data.
+00083  *
+00084  * \note This function is called many times, repetedly, when data is
+00085  * being received, and not once when all data has been received.
+00086  *
+00087  * \param data A pointer to the data that has been received.
+00088  * \param len The length of the data that has been received.
+00089  */
+00090 void webclient_datahandler(char *data, u16_t len);
+00091 
+00092 /**
+00093  * Callback function that is called from the webclient code when the
+00094  * HTTP connection has been connected to the web server.
+00095  *
+00096  * This function must be implemented by the module that uses the
+00097  * webclient code.
+00098  */
+00099 void webclient_connected(void);
+00100 
+00101 /**
+00102  * Callback function that is called from the webclient code if the
+00103  * HTTP connection to the web server has timed out.
+00104  *
+00105  * This function must be implemented by the module that uses the
+00106  * webclient code.
+00107  */
+00108 void webclient_timedout(void);
+00109 
+00110 /**
+00111  * Callback function that is called from the webclient code if the
+00112  * HTTP connection to the web server has been aborted by the web
+00113  * server.
+00114  *
+00115  * This function must be implemented by the module that uses the
+00116  * webclient code.
+00117  */
+00118 void webclient_aborted(void);
+00119 
+00120 /**
+00121  * Callback function that is called from the webclient code when the
+00122  * HTTP connection to the web server has been closed.
+00123  *
+00124  * This function must be implemented by the module that uses the
+00125  * webclient code.
+00126  */
+00127 void webclient_closed(void);
+00128 
+00129 
+00130 
+00131 /**
+00132  * Initialize the webclient module.
+00133  */
+00134 void webclient_init(void);
+00135 
+00136 /**
+00137  * Open an HTTP connection to a web server and ask for a file using
+00138  * the GET method.
+00139  *
+00140  * This function opens an HTTP connection to the specified web server
+00141  * and requests the specified file using the GET method. When the HTTP
+00142  * connection has been connected, the webclient_connected() callback
+00143  * function is called and when the HTTP data arrives the
+00144  * webclient_datahandler() callback function is called.
+00145  *
+00146  * The callback function webclient_timedout() is called if the web
+00147  * server could not be contacted, and the webclient_aborted() callback
+00148  * function is called if the HTTP connection is aborted by the web
+00149  * server.
+00150  *
+00151  * When the HTTP request has been completed and the HTTP connection is
+00152  * closed, the webclient_closed() callback function will be called.
+00153  *
+00154  * \note If the function is passed a host name, it must already be in
+00155  * the resolver cache in order for the function to connect to the web
+00156  * server. It is therefore up to the calling module to implement the
+00157  * resolver calls and the signal handler used for reporting a resolv
+00158  * query answer.
+00159  *
+00160  * \param host A pointer to a string containing either a host name or
+00161  * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
+00162  *
+00163  * \param port The port number to which to connect, in host byte order.
+00164  *
+00165  * \param file A pointer to the name of the file to get.
+00166  *
+00167  * \retval 0 if the host name could not be found in the cache, or
+00168  * if a TCP connection could not be created.
+00169  *
+00170  * \retval 1 if the connection was initiated.
+00171  */
+00172 unsigned char webclient_get(char *host, u16_t port, char *file);
+00173 
+00174 /**
+00175  * Close the currently open HTTP connection.
+00176  */
+00177 void webclient_close(void);
+00178 void webclient_appcall(void);
+00179 
+00180 /**
+00181  * Obtain the MIME type of the current HTTP data stream.
+00182  *
+00183  * \return A pointer to a string contaning the MIME type. The string
+00184  * may be empty if no MIME type was reported by the web server.
+00185  */
+00186 char *webclient_mimetype(void);
+00187 
+00188 /**
+00189  * Obtain the filename of the current HTTP data stream.
+00190  *
+00191  * The filename of an HTTP request may be changed by the web server,
+00192  * and may therefore not be the same as when the original GET request
+00193  * was made with webclient_get(). This function is used for obtaining
+00194  * the current filename.
+00195  *
+00196  * \return A pointer to the current filename.
+00197  */
+00198 char *webclient_filename(void);
+00199 
+00200 /**
+00201  * Obtain the hostname of the current HTTP data stream.
+00202  *
+00203  * The hostname of the web server of an HTTP request may be changed
+00204  * by the web server, and may therefore not be the same as when the
+00205  * original GET request was made with webclient_get(). This function
+00206  * is used for obtaining the current hostname.
+00207  *
+00208  * \return A pointer to the current hostname.
+00209  */
+00210 char *webclient_hostname(void);
+00211 
+00212 /**
+00213  * Obtain the port number of the current HTTP data stream.
+00214  *
+00215  * The port number of an HTTP request may be changed by the web
+00216  * server, and may therefore not be the same as when the original GET
+00217  * request was made with webclient_get(). This function is used for
+00218  * obtaining the current port number.
+00219  *
+00220  * \return The port number of the current HTTP data stream, in host byte order.
+00221  */
+00222 unsigned short webclient_port(void);
+00223 
+00224 
+00225 
+00226 #endif /* __WEBCLIENT_H__ */
+00227 
+00228 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00042.html b/Target/Source/third_party/uip/doc/html/a00042.html new file mode 100644 index 00000000..c7ed516e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00042.html @@ -0,0 +1,106 @@ + + +uIP 1.0: example-mainloop-with-arp.c + + + + + +

example-mainloop-with-arp.c

00001 #include "uip.h"
+00002 #include "uip_arp.h"
+00003 #include "network-device.h"
+00004 #include "httpd.h"
+00005 #include "timer.h"
+00006 
+00007 #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+00008 
+00009 /*---------------------------------------------------------------------------*/
+00010 int
+00011 main(void)
+00012 {
+00013   int i;
+00014   uip_ipaddr_t ipaddr;
+00015   struct timer periodic_timer, arp_timer;
+00016   
+00017   timer_set(&periodic_timer, CLOCK_SECOND / 2);
+00018   timer_set(&arp_timer, CLOCK_SECOND * 10);
+00019   
+00020   network_device_init();
+00021   uip_init();
+00022 
+00023   uip_ipaddr(ipaddr, 192,168,0,2);
+00024   uip_sethostaddr(ipaddr);
+00025 
+00026   httpd_init();
+00027   
+00028   while(1) {
+00029     uip_len = network_device_read();
+00030     if(uip_len > 0) {
+00031       if(BUF->type == htons(UIP_ETHTYPE_IP)) {
+00032         uip_arp_ipin();
+00033         uip_input();
+00034         /* If the above function invocation resulted in data that
+00035            should be sent out on the network, the global variable
+00036            uip_len is set to a value > 0. */
+00037         if(uip_len > 0) {
+00038           uip_arp_out();
+00039           network_device_send();
+00040         }
+00041       } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) {
+00042         uip_arp_arpin();
+00043         /* If the above function invocation resulted in data that
+00044            should be sent out on the network, the global variable
+00045            uip_len is set to a value > 0. */
+00046         if(uip_len > 0) {
+00047           network_device_send();
+00048         }
+00049       }
+00050 
+00051     } else if(timer_expired(&periodic_timer)) {
+00052       timer_reset(&periodic_timer);
+00053       for(i = 0; i < UIP_CONNS; i++) {
+00054         uip_periodic(i);
+00055         /* If the above function invocation resulted in data that
+00056            should be sent out on the network, the global variable
+00057            uip_len is set to a value > 0. */
+00058         if(uip_len > 0) {
+00059           uip_arp_out();
+00060           network_device_send();
+00061         }
+00062       }
+00063 
+00064 #if UIP_UDP
+00065       for(i = 0; i < UIP_UDP_CONNS; i++) {
+00066         uip_udp_periodic(i);
+00067         /* If the above function invocation resulted in data that
+00068            should be sent out on the network, the global variable
+00069            uip_len is set to a value > 0. */
+00070         if(uip_len > 0) {
+00071           uip_arp_out();
+00072           network_device_send();
+00073         }
+00074       }
+00075 #endif /* UIP_UDP */
+00076       
+00077       /* Call the ARP timer function every 10 seconds. */
+00078       if(timer_expired(&arp_timer)) {
+00079         timer_reset(&arp_timer);
+00080         uip_arp_timer();
+00081       }
+00082     }
+00083   }
+00084   return 0;
+00085 }
+00086 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00043.html b/Target/Source/third_party/uip/doc/html/a00043.html new file mode 100644 index 00000000..53361f10 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00043.html @@ -0,0 +1,82 @@ + + +uIP 1.0: example-mainloop-without-arp.c + + + + + +

example-mainloop-without-arp.c

00001 #include "uip.h"
+00002 #include "uip_arp.h"
+00003 #include "network-device.h"
+00004 #include "httpd.h"
+00005 #include "timer.h"
+00006 
+00007 /*---------------------------------------------------------------------------*/
+00008 int
+00009 main(void)
+00010 {
+00011   int i;
+00012   uip_ipaddr_t ipaddr;
+00013   struct timer periodic_timer;
+00014   
+00015   timer_set(&periodic_timer, CLOCK_SECOND / 2);
+00016   
+00017   network_device_init();
+00018   uip_init();
+00019 
+00020   uip_ipaddr(ipaddr, 192,168,0,2);
+00021   uip_sethostaddr(ipaddr);
+00022 
+00023   httpd_init();
+00024   
+00025   while(1) {
+00026     uip_len = network_device_read();
+00027     if(uip_len > 0) {
+00028       uip_input();
+00029       /* If the above function invocation resulted in data that
+00030          should be sent out on the network, the global variable
+00031          uip_len is set to a value > 0. */
+00032       if(uip_len > 0) {
+00033         network_device_send();
+00034       }
+00035     } else if(timer_expired(&periodic_timer)) {
+00036       timer_reset(&periodic_timer);
+00037       for(i = 0; i < UIP_CONNS; i++) {
+00038         uip_periodic(i);
+00039         /* If the above function invocation resulted in data that
+00040            should be sent out on the network, the global variable
+00041            uip_len is set to a value > 0. */
+00042         if(uip_len > 0) {
+00043           network_device_send();
+00044         }
+00045       }
+00046 
+00047 #if UIP_UDP
+00048       for(i = 0; i < UIP_UDP_CONNS; i++) {
+00049         uip_udp_periodic(i);
+00050         /* If the above function invocation resulted in data that
+00051            should be sent out on the network, the global variable
+00052            uip_len is set to a value > 0. */
+00053         if(uip_len > 0) {
+00054           network_device_send();
+00055         }
+00056       }
+00057 #endif /* UIP_UDP */
+00058     }
+00059   }
+00060   return 0;
+00061 }
+00062 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00044.html b/Target/Source/third_party/uip/doc/html/a00044.html new file mode 100644 index 00000000..40e5ad25 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00044.html @@ -0,0 +1,370 @@ + + +uIP 1.0: telnetd.c + + + + + +

telnetd.c

00001 /*
+00002  * Copyright (c) 2003, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. The name of the author may not be used to endorse or promote
+00014  *    products derived from this software without specific prior
+00015  *    written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $
+00032  *
+00033  */
+00034 
+00035 #include "uip.h"
+00036 #include "telnetd.h"
+00037 #include "memb.h"
+00038 #include "shell.h"
+00039 
+00040 #include <string.h>
+00041 
+00042 #define ISO_nl       0x0a
+00043 #define ISO_cr       0x0d
+00044 
+00045 struct telnetd_line {
+00046   char line[TELNETD_CONF_LINELEN];
+00047 };
+00048 MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES);
+00049 
+00050 #define STATE_NORMAL 0
+00051 #define STATE_IAC    1
+00052 #define STATE_WILL   2
+00053 #define STATE_WONT   3
+00054 #define STATE_DO     4
+00055 #define STATE_DONT   5
+00056 #define STATE_CLOSE  6
+00057 
+00058 static struct telnetd_state s;
+00059 
+00060 #define TELNET_IAC   255
+00061 #define TELNET_WILL  251
+00062 #define TELNET_WONT  252
+00063 #define TELNET_DO    253
+00064 #define TELNET_DONT  254
+00065 /*---------------------------------------------------------------------------*/
+00066 static char *
+00067 alloc_line(void)
+00068 {
+00069   return memb_alloc(&linemem);
+00070 }
+00071 /*---------------------------------------------------------------------------*/
+00072 static void
+00073 dealloc_line(char *line)
+00074 {
+00075   memb_free(&linemem, line);
+00076 }
+00077 /*---------------------------------------------------------------------------*/
+00078 void
+00079 shell_quit(char *str)
+00080 {
+00081   s.state = STATE_CLOSE;
+00082 }
+00083 /*---------------------------------------------------------------------------*/
+00084 static void
+00085 sendline(char *line)
+00086 {
+00087   static unsigned int i;
+00088   
+00089   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00090     if(s.lines[i] == NULL) {
+00091       s.lines[i] = line;
+00092       break;
+00093     }
+00094   }
+00095   if(i == TELNETD_CONF_NUMLINES) {
+00096     dealloc_line(line);
+00097   }
+00098 }
+00099 /*---------------------------------------------------------------------------*/
+00100 void
+00101 shell_prompt(char *str)
+00102 {
+00103   char *line;
+00104   line = alloc_line();
+00105   if(line != NULL) {
+00106     strncpy(line, str, TELNETD_CONF_LINELEN);
+00107     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
+00108     sendline(line);
+00109   }
+00110 }
+00111 /*---------------------------------------------------------------------------*/
+00112 void
+00113 shell_output(char *str1, char *str2)
+00114 {
+00115   static unsigned len;
+00116   char *line;
+00117 
+00118   line = alloc_line();
+00119   if(line != NULL) {
+00120     len = strlen(str1);
+00121     strncpy(line, str1, TELNETD_CONF_LINELEN);
+00122     if(len < TELNETD_CONF_LINELEN) {
+00123       strncpy(line + len, str2, TELNETD_CONF_LINELEN - len);
+00124     }
+00125     len = strlen(line);
+00126     if(len < TELNETD_CONF_LINELEN - 2) {
+00127       line[len] = ISO_cr;
+00128       line[len+1] = ISO_nl;
+00129       line[len+2] = 0;
+00130     }
+00131     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
+00132     sendline(line);
+00133   }
+00134 }
+00135 /*---------------------------------------------------------------------------*/
+00136 void
+00137 telnetd_init(void)
+00138 {
+00139   uip_listen(HTONS(23));
+00140   memb_init(&linemem);
+00141   shell_init();
+00142 }
+00143 /*---------------------------------------------------------------------------*/
+00144 static void
+00145 acked(void)
+00146 {
+00147   static unsigned int i;
+00148   
+00149   while(s.numsent > 0) {
+00150     dealloc_line(s.lines[0]);
+00151     for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) {
+00152       s.lines[i - 1] = s.lines[i];
+00153     }
+00154     s.lines[TELNETD_CONF_NUMLINES - 1] = NULL;
+00155     --s.numsent;
+00156   }
+00157 }
+00158 /*---------------------------------------------------------------------------*/
+00159 static void
+00160 senddata(void)
+00161 {
+00162   static char *bufptr, *lineptr;
+00163   static int buflen, linelen;
+00164   
+00165   bufptr = uip_appdata;
+00166   buflen = 0;
+00167   for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES &&
+00168         s.lines[s.numsent] != NULL ; ++s.numsent) {
+00169     lineptr = s.lines[s.numsent];
+00170     linelen = strlen(lineptr);
+00171     if(linelen > TELNETD_CONF_LINELEN) {
+00172       linelen = TELNETD_CONF_LINELEN;
+00173     }
+00174     if(buflen + linelen < uip_mss()) {
+00175       memcpy(bufptr, lineptr, linelen);
+00176       bufptr += linelen;
+00177       buflen += linelen;
+00178     } else {
+00179       break;
+00180     }
+00181   }
+00182   uip_send(uip_appdata, buflen);
+00183 }
+00184 /*---------------------------------------------------------------------------*/
+00185 static void
+00186 closed(void)
+00187 {
+00188   static unsigned int i;
+00189   
+00190   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00191     if(s.lines[i] != NULL) {
+00192       dealloc_line(s.lines[i]);
+00193     }
+00194   }
+00195 }
+00196 /*---------------------------------------------------------------------------*/
+00197 static void
+00198 get_char(u8_t c)
+00199 {
+00200   if(c == ISO_cr) {
+00201     return;
+00202   }
+00203   
+00204   s.buf[(int)s.bufptr] = c;
+00205   if(s.buf[(int)s.bufptr] == ISO_nl ||
+00206      s.bufptr == sizeof(s.buf) - 1) {
+00207     if(s.bufptr > 0) {
+00208       s.buf[(int)s.bufptr] = 0;
+00209       /*      petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/
+00210     }
+00211     shell_input(s.buf);
+00212     s.bufptr = 0;
+00213   } else {
+00214     ++s.bufptr;
+00215   }
+00216 }
+00217 /*---------------------------------------------------------------------------*/
+00218 static void
+00219 sendopt(u8_t option, u8_t value)
+00220 {
+00221   char *line;
+00222   line = alloc_line();
+00223   if(line != NULL) {
+00224     line[0] = TELNET_IAC;
+00225     line[1] = option;
+00226     line[2] = value;
+00227     line[3] = 0;
+00228     sendline(line);
+00229   }
+00230 }
+00231 /*---------------------------------------------------------------------------*/
+00232 static void
+00233 newdata(void)
+00234 {
+00235   u16_t len;
+00236   u8_t c;
+00237   char *dataptr;
+00238     
+00239   
+00240   len = uip_datalen();
+00241   dataptr = (char *)uip_appdata;
+00242   
+00243   while(len > 0 && s.bufptr < sizeof(s.buf)) {
+00244     c = *dataptr;
+00245     ++dataptr;
+00246     --len;
+00247     switch(s.state) {
+00248     case STATE_IAC:
+00249       if(c == TELNET_IAC) {
+00250         get_char(c);
+00251         s.state = STATE_NORMAL;
+00252       } else {
+00253         switch(c) {
+00254         case TELNET_WILL:
+00255           s.state = STATE_WILL;
+00256           break;
+00257         case TELNET_WONT:
+00258           s.state = STATE_WONT;
+00259           break;
+00260         case TELNET_DO:
+00261           s.state = STATE_DO;
+00262           break;
+00263         case TELNET_DONT:
+00264           s.state = STATE_DONT;
+00265           break;
+00266         default:
+00267           s.state = STATE_NORMAL;
+00268           break;
+00269         }
+00270       }
+00271       break;
+00272     case STATE_WILL:
+00273       /* Reply with a DONT */
+00274       sendopt(TELNET_DONT, c);
+00275       s.state = STATE_NORMAL;
+00276       break;
+00277       
+00278     case STATE_WONT:
+00279       /* Reply with a DONT */
+00280       sendopt(TELNET_DONT, c);
+00281       s.state = STATE_NORMAL;
+00282       break;
+00283     case STATE_DO:
+00284       /* Reply with a WONT */
+00285       sendopt(TELNET_WONT, c);
+00286       s.state = STATE_NORMAL;
+00287       break;
+00288     case STATE_DONT:
+00289       /* Reply with a WONT */
+00290       sendopt(TELNET_WONT, c);
+00291       s.state = STATE_NORMAL;
+00292       break;
+00293     case STATE_NORMAL:
+00294       if(c == TELNET_IAC) {
+00295         s.state = STATE_IAC;
+00296       } else {
+00297         get_char(c);
+00298       }
+00299       break;
+00300     }
+00301 
+00302     
+00303   }
+00304   
+00305 }
+00306 /*---------------------------------------------------------------------------*/
+00307 void
+00308 telnetd_appcall(void)
+00309 {
+00310   static unsigned int i;
+00311   if(uip_connected()) {
+00312     /*    tcp_markconn(uip_conn, &s);*/
+00313     for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00314       s.lines[i] = NULL;
+00315     }
+00316     s.bufptr = 0;
+00317     s.state = STATE_NORMAL;
+00318 
+00319     shell_start();
+00320   }
+00321 
+00322   if(s.state == STATE_CLOSE) {
+00323     s.state = STATE_NORMAL;
+00324     uip_close();
+00325     return;
+00326   }
+00327   
+00328   if(uip_closed() ||
+00329      uip_aborted() ||
+00330      uip_timedout()) {
+00331     closed();
+00332   }
+00333   
+00334   if(uip_acked()) {
+00335     acked();
+00336   }
+00337   
+00338   if(uip_newdata()) {
+00339     newdata();
+00340   }
+00341   
+00342   if(uip_rexmit() ||
+00343      uip_newdata() ||
+00344      uip_acked() ||
+00345      uip_connected() ||
+00346      uip_poll()) {
+00347     senddata();
+00348   }
+00349 }
+00350 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00045.html b/Target/Source/third_party/uip/doc/html/a00045.html new file mode 100644 index 00000000..5f108bf4 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00045.html @@ -0,0 +1,83 @@ + + +uIP 1.0: telnetd.h + + + + + +

telnetd.h

00001 /*
+00002  * Copyright (c) 2003, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above
+00011  *    copyright notice, this list of conditions and the following
+00012  *    disclaimer in the documentation and/or other materials provided
+00013  *    with the distribution.
+00014  * 3. The name of the author may not be used to endorse or promote
+00015  *    products derived from this software without specific prior
+00016  *    written permission.
+00017  *
+00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00019  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00020  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00022  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00024  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00026  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00029  *
+00030  * This file is part of the uIP TCP/IP stack
+00031  *
+00032  * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $
+00033  *
+00034  */
+00035 #ifndef __TELNETD_H__
+00036 #define __TELNETD_H__
+00037 
+00038 #include "uipopt.h"
+00039 
+00040 void telnetd_appcall(void);
+00041 
+00042 #ifndef TELNETD_CONF_LINELEN
+00043 #define TELNETD_CONF_LINELEN 40
+00044 #endif
+00045 #ifndef TELNETD_CONF_NUMLINES
+00046 #define TELNETD_CONF_NUMLINES 16
+00047 #endif
+00048 
+00049 struct telnetd_state {
+00050   char *lines[TELNETD_CONF_NUMLINES];
+00051   char buf[TELNETD_CONF_LINELEN];
+00052   char bufptr;
+00053   u8_t numsent;
+00054   u8_t state;
+00055 };
+00056 
+00057 typedef struct telnetd_state uip_tcp_appstate_t;
+00058 
+00059 #ifndef UIP_APPCALL
+00060 #define UIP_APPCALL     telnetd_appcall
+00061 #endif
+00062 
+00063 #endif /* __TELNETD_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00046.html b/Target/Source/third_party/uip/doc/html/a00046.html new file mode 100644 index 00000000..82998858 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00046.html @@ -0,0 +1,484 @@ + + +uIP 1.0: resolv.c + + + + + +

resolv.c

00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup resolv DNS resolver
+00008  * @{
+00009  *
+00010  * The uIP DNS resolver functions are used to lookup a hostname and
+00011  * map it to a numerical IP address. It maintains a list of resolved
+00012  * hostnames that can be queried with the resolv_lookup()
+00013  * function. New hostnames can be resolved using the resolv_query()
+00014  * function.
+00015  *
+00016  * When a hostname has been resolved (or found to be non-existant),
+00017  * the resolver code calls a callback function called resolv_found()
+00018  * that must be implemented by the module that uses the resolver.
+00019  */
+00020 
+00021 /**
+00022  * \file
+00023  * DNS host name to IP address resolver.
+00024  * \author Adam Dunkels <adam@dunkels.com>
+00025  *
+00026  * This file implements a DNS host name to IP address resolver.
+00027  */
+00028 
+00029 /*
+00030  * Copyright (c) 2002-2003, Adam Dunkels.
+00031  * All rights reserved.
+00032  *
+00033  * Redistribution and use in source and binary forms, with or without
+00034  * modification, are permitted provided that the following conditions
+00035  * are met:
+00036  * 1. Redistributions of source code must retain the above copyright
+00037  *    notice, this list of conditions and the following disclaimer.
+00038  * 2. Redistributions in binary form must reproduce the above copyright
+00039  *    notice, this list of conditions and the following disclaimer in the
+00040  *    documentation and/or other materials provided with the distribution.
+00041  * 3. The name of the author may not be used to endorse or promote
+00042  *    products derived from this software without specific prior
+00043  *    written permission.
+00044  *
+00045  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00046  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00047  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00048  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00049  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00050  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00051  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00052  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00053  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00054  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00055  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00056  *
+00057  * This file is part of the uIP TCP/IP stack.
+00058  *
+00059  * $Id: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $
+00060  *
+00061  */
+00062 
+00063 #include "resolv.h"
+00064 #include "uip.h"
+00065 
+00066 #include <string.h>
+00067 
+00068 #ifndef NULL
+00069 #define NULL (void *)0
+00070 #endif /* NULL */
+00071 
+00072 /** \internal The maximum number of retries when asking for a name. */
+00073 #define MAX_RETRIES 8
+00074 
+00075 /** \internal The DNS message header. */
+00076 struct dns_hdr {
+00077   u16_t id;
+00078   u8_t flags1, flags2;
+00079 #define DNS_FLAG1_RESPONSE        0x80
+00080 #define DNS_FLAG1_OPCODE_STATUS   0x10
+00081 #define DNS_FLAG1_OPCODE_INVERSE  0x08
+00082 #define DNS_FLAG1_OPCODE_STANDARD 0x00
+00083 #define DNS_FLAG1_AUTHORATIVE     0x04
+00084 #define DNS_FLAG1_TRUNC           0x02
+00085 #define DNS_FLAG1_RD              0x01
+00086 #define DNS_FLAG2_RA              0x80
+00087 #define DNS_FLAG2_ERR_MASK        0x0f
+00088 #define DNS_FLAG2_ERR_NONE        0x00
+00089 #define DNS_FLAG2_ERR_NAME        0x03
+00090   u16_t numquestions;
+00091   u16_t numanswers;
+00092   u16_t numauthrr;
+00093   u16_t numextrarr;
+00094 };
+00095 
+00096 /** \internal The DNS answer message structure. */
+00097 struct dns_answer {
+00098   /* DNS answer record starts with either a domain name or a pointer
+00099      to a name already present somewhere in the packet. */
+00100   u16_t type;
+00101   u16_t class;
+00102   u16_t ttl[2];
+00103   u16_t len;
+00104   uip_ipaddr_t ipaddr;
+00105 };
+00106 
+00107 struct namemap {
+00108 #define STATE_UNUSED 0
+00109 #define STATE_NEW    1
+00110 #define STATE_ASKING 2
+00111 #define STATE_DONE   3
+00112 #define STATE_ERROR  4
+00113   u8_t state;
+00114   u8_t tmr;
+00115   u8_t retries;
+00116   u8_t seqno;
+00117   u8_t err;
+00118   char name[32];
+00119   uip_ipaddr_t ipaddr;
+00120 };
+00121 
+00122 #ifndef UIP_CONF_RESOLV_ENTRIES
+00123 #define RESOLV_ENTRIES 4
+00124 #else /* UIP_CONF_RESOLV_ENTRIES */
+00125 #define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES
+00126 #endif /* UIP_CONF_RESOLV_ENTRIES */
+00127 
+00128 
+00129 static struct namemap names[RESOLV_ENTRIES];
+00130 
+00131 static u8_t seqno;
+00132 
+00133 static struct uip_udp_conn *resolv_conn = NULL;
+00134 
+00135 
+00136 /*---------------------------------------------------------------------------*/
+00137 /** \internal
+00138  * Walk through a compact encoded DNS name and return the end of it.
+00139  *
+00140  * \return The end of the name.
+00141  */
+00142 /*---------------------------------------------------------------------------*/
+00143 static unsigned char *
+00144 parse_name(unsigned char *query)
+00145 {
+00146   unsigned char n;
+00147 
+00148   do {
+00149     n = *query++;
+00150     
+00151     while(n > 0) {
+00152       /*      printf("%c", *query);*/
+00153       ++query;
+00154       --n;
+00155     };
+00156     /*    printf(".");*/
+00157   } while(*query != 0);
+00158   /*  printf("\n");*/
+00159   return query + 1;
+00160 }
+00161 /*---------------------------------------------------------------------------*/
+00162 /** \internal
+00163  * Runs through the list of names to see if there are any that have
+00164  * not yet been queried and, if so, sends out a query.
+00165  */
+00166 /*---------------------------------------------------------------------------*/
+00167 static void
+00168 check_entries(void)
+00169 {
+00170   register struct dns_hdr *hdr;
+00171   char *query, *nptr, *nameptr;
+00172   static u8_t i;
+00173   static u8_t n;
+00174   register struct namemap *namemapptr;
+00175   
+00176   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00177     namemapptr = &names[i];
+00178     if(namemapptr->state == STATE_NEW ||
+00179        namemapptr->state == STATE_ASKING) {
+00180       if(namemapptr->state == STATE_ASKING) {
+00181         if(--namemapptr->tmr == 0) {
+00182           if(++namemapptr->retries == MAX_RETRIES) {
+00183             namemapptr->state = STATE_ERROR;
+00184             resolv_found(namemapptr->name, NULL);
+00185             continue;
+00186           }
+00187           namemapptr->tmr = namemapptr->retries;
+00188         } else {
+00189           /*      printf("Timer %d\n", namemapptr->tmr);*/
+00190           /* Its timer has not run out, so we move on to next
+00191              entry. */
+00192           continue;
+00193         }
+00194       } else {
+00195         namemapptr->state = STATE_ASKING;
+00196         namemapptr->tmr = 1;
+00197         namemapptr->retries = 0;
+00198       }
+00199       hdr = (struct dns_hdr *)uip_appdata;
+00200       memset(hdr, 0, sizeof(struct dns_hdr));
+00201       hdr->id = htons(i);
+00202       hdr->flags1 = DNS_FLAG1_RD;
+00203       hdr->numquestions = HTONS(1);
+00204       query = (char *)uip_appdata + 12;
+00205       nameptr = namemapptr->name;
+00206       --nameptr;
+00207       /* Convert hostname into suitable query format. */
+00208       do {
+00209         ++nameptr;
+00210         nptr = query;
+00211         ++query;
+00212         for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) {
+00213           *query = *nameptr;
+00214           ++query;
+00215           ++n;
+00216         }
+00217         *nptr = n;
+00218       } while(*nameptr != 0);
+00219       {
+00220         static unsigned char endquery[] =
+00221           {0,0,1,0,1};
+00222         memcpy(query, endquery, 5);
+00223       }
+00224       uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata));
+00225       break;
+00226     }
+00227   }
+00228 }
+00229 /*---------------------------------------------------------------------------*/
+00230 /** \internal
+00231  * Called when new UDP data arrives.
+00232  */
+00233 /*---------------------------------------------------------------------------*/
+00234 static void
+00235 newdata(void)
+00236 {
+00237   char *nameptr;
+00238   struct dns_answer *ans;
+00239   struct dns_hdr *hdr;
+00240   static u8_t nquestions, nanswers;
+00241   static u8_t i;
+00242   register struct namemap *namemapptr;
+00243   
+00244   hdr = (struct dns_hdr *)uip_appdata;
+00245   /*  printf("ID %d\n", htons(hdr->id));
+00246       printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
+00247       printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK);
+00248       printf("Num questions %d, answers %d, authrr %d, extrarr %d\n",
+00249       htons(hdr->numquestions),
+00250       htons(hdr->numanswers),
+00251       htons(hdr->numauthrr),
+00252       htons(hdr->numextrarr));
+00253   */
+00254 
+00255   /* The ID in the DNS header should be our entry into the name
+00256      table. */
+00257   i = htons(hdr->id);
+00258   namemapptr = &names[i];
+00259   if(i < RESOLV_ENTRIES &&
+00260      namemapptr->state == STATE_ASKING) {
+00261 
+00262     /* This entry is now finished. */
+00263     namemapptr->state = STATE_DONE;
+00264     namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK;
+00265 
+00266     /* Check for error. If so, call callback to inform. */
+00267     if(namemapptr->err != 0) {
+00268       namemapptr->state = STATE_ERROR;
+00269       resolv_found(namemapptr->name, NULL);
+00270       return;
+00271     }
+00272 
+00273     /* We only care about the question(s) and the answers. The authrr
+00274        and the extrarr are simply discarded. */
+00275     nquestions = htons(hdr->numquestions);
+00276     nanswers = htons(hdr->numanswers);
+00277 
+00278     /* Skip the name in the question. XXX: This should really be
+00279        checked agains the name in the question, to be sure that they
+00280        match. */
+00281     nameptr = parse_name((char *)uip_appdata + 12) + 4;
+00282 
+00283     while(nanswers > 0) {
+00284       /* The first byte in the answer resource record determines if it
+00285          is a compressed record or a normal one. */
+00286       if(*nameptr & 0xc0) {
+00287         /* Compressed name. */
+00288         nameptr +=2;
+00289         /*      printf("Compressed anwser\n");*/
+00290       } else {
+00291         /* Not compressed name. */
+00292         nameptr = parse_name((char *)nameptr);
+00293       }
+00294 
+00295       ans = (struct dns_answer *)nameptr;
+00296       /*      printf("Answer: type %x, class %x, ttl %x, length %x\n",
+00297              htons(ans->type), htons(ans->class), (htons(ans->ttl[0])
+00298              << 16) | htons(ans->ttl[1]), htons(ans->len));*/
+00299 
+00300       /* Check for IP address type and Internet class. Others are
+00301          discarded. */
+00302       if(ans->type == HTONS(1) &&
+00303          ans->class == HTONS(1) &&
+00304          ans->len == HTONS(4)) {
+00305         /*      printf("IP address %d.%d.%d.%d\n",
+00306                htons(ans->ipaddr[0]) >> 8,
+00307                htons(ans->ipaddr[0]) & 0xff,
+00308                htons(ans->ipaddr[1]) >> 8,
+00309                htons(ans->ipaddr[1]) & 0xff);*/
+00310         /* XXX: we should really check that this IP address is the one
+00311            we want. */
+00312         namemapptr->ipaddr[0] = ans->ipaddr[0];
+00313         namemapptr->ipaddr[1] = ans->ipaddr[1];
+00314         
+00315         resolv_found(namemapptr->name, namemapptr->ipaddr);
+00316         return;
+00317       } else {
+00318         nameptr = nameptr + 10 + htons(ans->len);
+00319       }
+00320       --nanswers;
+00321     }
+00322   }
+00323 
+00324 }
+00325 /*---------------------------------------------------------------------------*/
+00326 /** \internal
+00327  * The main UDP function.
+00328  */
+00329 /*---------------------------------------------------------------------------*/
+00330 void
+00331 resolv_appcall(void)
+00332 {
+00333   if(uip_udp_conn->rport == HTONS(53)) {
+00334     if(uip_poll()) {
+00335       check_entries();
+00336     }
+00337     if(uip_newdata()) {
+00338       newdata();
+00339     }
+00340   }
+00341 }
+00342 /*---------------------------------------------------------------------------*/
+00343 /**
+00344  * Queues a name so that a question for the name will be sent out.
+00345  *
+00346  * \param name The hostname that is to be queried.
+00347  */
+00348 /*---------------------------------------------------------------------------*/
+00349 void
+00350 resolv_query(char *name)
+00351 {
+00352   static u8_t i;
+00353   static u8_t lseq, lseqi;
+00354   register struct namemap *nameptr;
+00355       
+00356   lseq = lseqi = 0;
+00357   
+00358   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00359     nameptr = &names[i];
+00360     if(nameptr->state == STATE_UNUSED) {
+00361       break;
+00362     }
+00363     if(seqno - nameptr->seqno > lseq) {
+00364       lseq = seqno - nameptr->seqno;
+00365       lseqi = i;
+00366     }
+00367   }
+00368 
+00369   if(i == RESOLV_ENTRIES) {
+00370     i = lseqi;
+00371     nameptr = &names[i];
+00372   }
+00373 
+00374   /*  printf("Using entry %d\n", i);*/
+00375 
+00376   strcpy(nameptr->name, name);
+00377   nameptr->state = STATE_NEW;
+00378   nameptr->seqno = seqno;
+00379   ++seqno;
+00380 }
+00381 /*---------------------------------------------------------------------------*/
+00382 /**
+00383  * Look up a hostname in the array of known hostnames.
+00384  *
+00385  * \note This function only looks in the internal array of known
+00386  * hostnames, it does not send out a query for the hostname if none
+00387  * was found. The function resolv_query() can be used to send a query
+00388  * for a hostname.
+00389  *
+00390  * \return A pointer to a 4-byte representation of the hostname's IP
+00391  * address, or NULL if the hostname was not found in the array of
+00392  * hostnames.
+00393  */
+00394 /*---------------------------------------------------------------------------*/
+00395 u16_t *
+00396 resolv_lookup(char *name)
+00397 {
+00398   static u8_t i;
+00399   struct namemap *nameptr;
+00400   
+00401   /* Walk through the list to see if the name is in there. If it is
+00402      not, we return NULL. */
+00403   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00404     nameptr = &names[i];
+00405     if(nameptr->state == STATE_DONE &&
+00406        strcmp(name, nameptr->name) == 0) {
+00407       return nameptr->ipaddr;
+00408     }
+00409   }
+00410   return NULL;
+00411 }
+00412 /*---------------------------------------------------------------------------*/
+00413 /**
+00414  * Obtain the currently configured DNS server.
+00415  *
+00416  * \return A pointer to a 4-byte representation of the IP address of
+00417  * the currently configured DNS server or NULL if no DNS server has
+00418  * been configured.
+00419  */
+00420 /*---------------------------------------------------------------------------*/
+00421 u16_t *
+00422 resolv_getserver(void)
+00423 {
+00424   if(resolv_conn == NULL) {
+00425     return NULL;
+00426   }
+00427   return resolv_conn->ripaddr;
+00428 }
+00429 /*---------------------------------------------------------------------------*/
+00430 /**
+00431  * Configure which DNS server to use for queries.
+00432  *
+00433  * \param dnsserver A pointer to a 4-byte representation of the IP
+00434  * address of the DNS server to be configured.
+00435  */
+00436 /*---------------------------------------------------------------------------*/
+00437 void
+00438 resolv_conf(u16_t *dnsserver)
+00439 {
+00440   if(resolv_conn != NULL) {
+00441     uip_udp_remove(resolv_conn);
+00442   }
+00443   
+00444   resolv_conn = uip_udp_new(dnsserver, HTONS(53));
+00445 }
+00446 /*---------------------------------------------------------------------------*/
+00447 /**
+00448  * Initalize the resolver.
+00449  */
+00450 /*---------------------------------------------------------------------------*/
+00451 void
+00452 resolv_init(void)
+00453 {
+00454   static u8_t i;
+00455   
+00456   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00457     names[i].state = STATE_DONE;
+00458   }
+00459 
+00460 }
+00461 /*---------------------------------------------------------------------------*/
+00462 
+00463 /** @} */
+00464 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00047.html b/Target/Source/third_party/uip/doc/html/a00047.html new file mode 100644 index 00000000..b036e835 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00047.html @@ -0,0 +1,95 @@ + + +uIP 1.0: resolv.h + + + + + +

resolv.h

00001 /**
+00002  * \addtogroup resolv
+00003  * @{
+00004  */
+00005 /**
+00006  * \file
+00007  * DNS resolver code header file.
+00008  * \author Adam Dunkels <adam@dunkels.com>
+00009  */
+00010 
+00011 /*
+00012  * Copyright (c) 2002-2003, Adam Dunkels.
+00013  * All rights reserved.
+00014  *
+00015  * Redistribution and use in source and binary forms, with or without
+00016  * modification, are permitted provided that the following conditions
+00017  * are met:
+00018  * 1. Redistributions of source code must retain the above copyright
+00019  *    notice, this list of conditions and the following disclaimer.
+00020  * 2. Redistributions in binary form must reproduce the above copyright
+00021  *    notice, this list of conditions and the following disclaimer in the
+00022  *    documentation and/or other materials provided with the distribution.
+00023  * 3. The name of the author may not be used to endorse or promote
+00024  *    products derived from this software without specific prior
+00025  *    written permission.
+00026  *
+00027  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00028  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00029  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00030  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00031  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00032  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00033  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00034  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00035  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00036  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00037  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00038  *
+00039  * This file is part of the uIP TCP/IP stack.
+00040  *
+00041  * $Id: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $
+00042  *
+00043  */
+00044 #ifndef __RESOLV_H__
+00045 #define __RESOLV_H__
+00046 
+00047 typedef int uip_udp_appstate_t;
+00048 void resolv_appcall(void);
+00049 #define UIP_UDP_APPCALL resolv_appcall
+00050 
+00051 #include "uipopt.h"
+00052 
+00053 /**
+00054  * Callback function which is called when a hostname is found.
+00055  *
+00056  * This function must be implemented by the module that uses the DNS
+00057  * resolver. It is called when a hostname is found, or when a hostname
+00058  * was not found.
+00059  *
+00060  * \param name A pointer to the name that was looked up.  \param
+00061  * ipaddr A pointer to a 4-byte array containing the IP address of the
+00062  * hostname, or NULL if the hostname could not be found.
+00063  */
+00064 void resolv_found(char *name, u16_t *ipaddr);
+00065 
+00066 /* Functions. */
+00067 void resolv_conf(u16_t *dnsserver);
+00068 u16_t *resolv_getserver(void);
+00069 void resolv_init(void);
+00070 u16_t *resolv_lookup(char *name);
+00071 void resolv_query(char *name);
+00072 
+00073 #endif /* __RESOLV_H__ */
+00074 
+00075 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00048.html b/Target/Source/third_party/uip/doc/html/a00048.html new file mode 100644 index 00000000..7dcba69b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00048.html @@ -0,0 +1,376 @@ + + +uIP 1.0: dhcpc.c + + + + + +

dhcpc.c

00001 /*
+00002  * Copyright (c) 2005, Swedish Institute of Computer Science
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
+00032  */
+00033 
+00034 #include <stdio.h>
+00035 #include <string.h>
+00036 
+00037 #include "uip.h"
+00038 #include "dhcpc.h"
+00039 #include "timer.h"
+00040 #include "pt.h"
+00041 
+00042 #define STATE_INITIAL         0
+00043 #define STATE_SENDING         1
+00044 #define STATE_OFFER_RECEIVED  2
+00045 #define STATE_CONFIG_RECEIVED 3
+00046 
+00047 static struct dhcpc_state s;
+00048 
+00049 struct dhcp_msg {
+00050   u8_t op, htype, hlen, hops;
+00051   u8_t xid[4];
+00052   u16_t secs, flags;
+00053   u8_t ciaddr[4];
+00054   u8_t yiaddr[4];
+00055   u8_t siaddr[4];
+00056   u8_t giaddr[4];
+00057   u8_t chaddr[16];
+00058 #ifndef UIP_CONF_DHCP_LIGHT
+00059   u8_t sname[64];
+00060   u8_t file[128];
+00061 #endif
+00062   u8_t options[312];
+00063 };
+00064 
+00065 #define BOOTP_BROADCAST 0x8000
+00066 
+00067 #define DHCP_REQUEST        1
+00068 #define DHCP_REPLY          2
+00069 #define DHCP_HTYPE_ETHERNET 1
+00070 #define DHCP_HLEN_ETHERNET  6
+00071 #define DHCP_MSG_LEN      236
+00072 
+00073 #define DHCPC_SERVER_PORT  67
+00074 #define DHCPC_CLIENT_PORT  68
+00075 
+00076 #define DHCPDISCOVER  1
+00077 #define DHCPOFFER     2
+00078 #define DHCPREQUEST   3
+00079 #define DHCPDECLINE   4
+00080 #define DHCPACK       5
+00081 #define DHCPNAK       6
+00082 #define DHCPRELEASE   7
+00083 
+00084 #define DHCP_OPTION_SUBNET_MASK   1
+00085 #define DHCP_OPTION_ROUTER        3
+00086 #define DHCP_OPTION_DNS_SERVER    6
+00087 #define DHCP_OPTION_REQ_IPADDR   50
+00088 #define DHCP_OPTION_LEASE_TIME   51
+00089 #define DHCP_OPTION_MSG_TYPE     53
+00090 #define DHCP_OPTION_SERVER_ID    54
+00091 #define DHCP_OPTION_REQ_LIST     55
+00092 #define DHCP_OPTION_END         255
+00093 
+00094 static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
+00095 static const u8_t magic_cookie[4] = {99, 130, 83, 99};
+00096 /*---------------------------------------------------------------------------*/
+00097 static u8_t *
+00098 add_msg_type(u8_t *optptr, u8_t type)
+00099 {
+00100   *optptr++ = DHCP_OPTION_MSG_TYPE;
+00101   *optptr++ = 1;
+00102   *optptr++ = type;
+00103   return optptr;
+00104 }
+00105 /*---------------------------------------------------------------------------*/
+00106 static u8_t *
+00107 add_server_id(u8_t *optptr)
+00108 {
+00109   *optptr++ = DHCP_OPTION_SERVER_ID;
+00110   *optptr++ = 4;
+00111   memcpy(optptr, s.serverid, 4);
+00112   return optptr + 4;
+00113 }
+00114 /*---------------------------------------------------------------------------*/
+00115 static u8_t *
+00116 add_req_ipaddr(u8_t *optptr)
+00117 {
+00118   *optptr++ = DHCP_OPTION_REQ_IPADDR;
+00119   *optptr++ = 4;
+00120   memcpy(optptr, s.ipaddr, 4);
+00121   return optptr + 4;
+00122 }
+00123 /*---------------------------------------------------------------------------*/
+00124 static u8_t *
+00125 add_req_options(u8_t *optptr)
+00126 {
+00127   *optptr++ = DHCP_OPTION_REQ_LIST;
+00128   *optptr++ = 3;
+00129   *optptr++ = DHCP_OPTION_SUBNET_MASK;
+00130   *optptr++ = DHCP_OPTION_ROUTER;
+00131   *optptr++ = DHCP_OPTION_DNS_SERVER;
+00132   return optptr;
+00133 }
+00134 /*---------------------------------------------------------------------------*/
+00135 static u8_t *
+00136 add_end(u8_t *optptr)
+00137 {
+00138   *optptr++ = DHCP_OPTION_END;
+00139   return optptr;
+00140 }
+00141 /*---------------------------------------------------------------------------*/
+00142 static void
+00143 create_msg(register struct dhcp_msg *m)
+00144 {
+00145   m->op = DHCP_REQUEST;
+00146   m->htype = DHCP_HTYPE_ETHERNET;
+00147   m->hlen = s.mac_len;
+00148   m->hops = 0;
+00149   memcpy(m->xid, xid, sizeof(m->xid));
+00150   m->secs = 0;
+00151   m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
+00152   /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
+00153   memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
+00154   memset(m->yiaddr, 0, sizeof(m->yiaddr));
+00155   memset(m->siaddr, 0, sizeof(m->siaddr));
+00156   memset(m->giaddr, 0, sizeof(m->giaddr));
+00157   memcpy(m->chaddr, s.mac_addr, s.mac_len);
+00158   memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
+00159 #ifndef UIP_CONF_DHCP_LIGHT
+00160   memset(m->sname, 0, sizeof(m->sname));
+00161   memset(m->file, 0, sizeof(m->file));
+00162 #endif
+00163 
+00164   memcpy(m->options, magic_cookie, sizeof(magic_cookie));
+00165 }
+00166 /*---------------------------------------------------------------------------*/
+00167 static void
+00168 send_discover(void)
+00169 {
+00170   u8_t *end;
+00171   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00172 
+00173   create_msg(m);
+00174 
+00175   end = add_msg_type(&m->options[4], DHCPDISCOVER);
+00176   end = add_req_options(end);
+00177   end = add_end(end);
+00178 
+00179   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+00180 }
+00181 /*---------------------------------------------------------------------------*/
+00182 static void
+00183 send_request(void)
+00184 {
+00185   u8_t *end;
+00186   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00187 
+00188   create_msg(m);
+00189   
+00190   end = add_msg_type(&m->options[4], DHCPREQUEST);
+00191   end = add_server_id(end);
+00192   end = add_req_ipaddr(end);
+00193   end = add_end(end);
+00194   
+00195   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+00196 }
+00197 /*---------------------------------------------------------------------------*/
+00198 static u8_t
+00199 parse_options(u8_t *optptr, int len)
+00200 {
+00201   u8_t *end = optptr + len;
+00202   u8_t type = 0;
+00203 
+00204   while(optptr < end) {
+00205     switch(*optptr) {
+00206     case DHCP_OPTION_SUBNET_MASK:
+00207       memcpy(s.netmask, optptr + 2, 4);
+00208       break;
+00209     case DHCP_OPTION_ROUTER:
+00210       memcpy(s.default_router, optptr + 2, 4);
+00211       break;
+00212     case DHCP_OPTION_DNS_SERVER:
+00213       memcpy(s.dnsaddr, optptr + 2, 4);
+00214       break;
+00215     case DHCP_OPTION_MSG_TYPE:
+00216       type = *(optptr + 2);
+00217       break;
+00218     case DHCP_OPTION_SERVER_ID:
+00219       memcpy(s.serverid, optptr + 2, 4);
+00220       break;
+00221     case DHCP_OPTION_LEASE_TIME:
+00222       memcpy(s.lease_time, optptr + 2, 4);
+00223       break;
+00224     case DHCP_OPTION_END:
+00225       return type;
+00226     }
+00227 
+00228     optptr += optptr[1] + 2;
+00229   }
+00230   return type;
+00231 }
+00232 /*---------------------------------------------------------------------------*/
+00233 static u8_t
+00234 parse_msg(void)
+00235 {
+00236   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00237   
+00238   if(m->op == DHCP_REPLY &&
+00239      memcmp(m->xid, xid, sizeof(xid)) == 0 &&
+00240      memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) {
+00241     memcpy(s.ipaddr, m->yiaddr, 4);
+00242     return parse_options(&m->options[4], uip_datalen());
+00243   }
+00244   return 0;
+00245 }
+00246 /*---------------------------------------------------------------------------*/
+00247 static
+00248 PT_THREAD(handle_dhcp(void))
+00249 {
+00250   PT_BEGIN(&s.pt);
+00251   
+00252   /* try_again:*/
+00253   s.state = STATE_SENDING;
+00254   s.ticks = CLOCK_SECOND;
+00255 
+00256   do {
+00257     send_discover();
+00258     timer_set(&s.timer, s.ticks);
+00259     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
+00260 
+00261     if(uip_newdata() && parse_msg() == DHCPOFFER) {
+00262       s.state = STATE_OFFER_RECEIVED;
+00263       break;
+00264     }
+00265 
+00266     if(s.ticks < CLOCK_SECOND * 60) {
+00267       s.ticks *= 2;
+00268     }
+00269   } while(s.state != STATE_OFFER_RECEIVED);
+00270   
+00271   s.ticks = CLOCK_SECOND;
+00272 
+00273   do {
+00274     send_request();
+00275     timer_set(&s.timer, s.ticks);
+00276     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
+00277 
+00278     if(uip_newdata() && parse_msg() == DHCPACK) {
+00279       s.state = STATE_CONFIG_RECEIVED;
+00280       break;
+00281     }
+00282 
+00283     if(s.ticks <= CLOCK_SECOND * 10) {
+00284       s.ticks += CLOCK_SECOND;
+00285     } else {
+00286       PT_RESTART(&s.pt);
+00287     }
+00288   } while(s.state != STATE_CONFIG_RECEIVED);
+00289   
+00290 #if 0
+00291   printf("Got IP address %d.%d.%d.%d\n",
+00292          uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr),
+00293          uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr));
+00294   printf("Got netmask %d.%d.%d.%d\n",
+00295          uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask),
+00296          uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask));
+00297   printf("Got DNS server %d.%d.%d.%d\n",
+00298          uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr),
+00299          uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr));
+00300   printf("Got default router %d.%d.%d.%d\n",
+00301          uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router),
+00302          uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router));
+00303   printf("Lease expires in %ld seconds\n",
+00304          ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1]));
+00305 #endif
+00306 
+00307   dhcpc_configured(&s);
+00308   
+00309   /*  timer_stop(&s.timer);*/
+00310 
+00311   /*
+00312    * PT_END restarts the thread so we do this instead. Eventually we
+00313    * should reacquire expired leases here.
+00314    */
+00315   while(1) {
+00316     PT_YIELD(&s.pt);
+00317   }
+00318 
+00319   PT_END(&s.pt);
+00320 }
+00321 /*---------------------------------------------------------------------------*/
+00322 void
+00323 dhcpc_init(const void *mac_addr, int mac_len)
+00324 {
+00325   uip_ipaddr_t addr;
+00326   
+00327   s.mac_addr = mac_addr;
+00328   s.mac_len  = mac_len;
+00329 
+00330   s.state = STATE_INITIAL;
+00331   uip_ipaddr(addr, 255,255,255,255);
+00332   s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
+00333   if(s.conn != NULL) {
+00334     uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
+00335   }
+00336   PT_INIT(&s.pt);
+00337 }
+00338 /*---------------------------------------------------------------------------*/
+00339 void
+00340 dhcpc_appcall(void)
+00341 {
+00342   handle_dhcp();
+00343 }
+00344 /*---------------------------------------------------------------------------*/
+00345 void
+00346 dhcpc_request(void)
+00347 {
+00348   u16_t ipaddr[2];
+00349   
+00350   if(s.state == STATE_INITIAL) {
+00351     uip_ipaddr(ipaddr, 0,0,0,0);
+00352     uip_sethostaddr(ipaddr);
+00353     /*    handle_dhcp(PROCESS_EVENT_NONE, NULL);*/
+00354   }
+00355 }
+00356 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00049.html b/Target/Source/third_party/uip/doc/html/a00049.html new file mode 100644 index 00000000..481e47dc --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00049.html @@ -0,0 +1,88 @@ + + +uIP 1.0: dhcpc.h + + + + + +

dhcpc.h

00001 /*
+00002  * Copyright (c) 2005, Swedish Institute of Computer Science
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $
+00032  */
+00033 #ifndef __DHCPC_H__
+00034 #define __DHCPC_H__
+00035 
+00036 #include "timer.h"
+00037 #include "pt.h"
+00038 
+00039 struct dhcpc_state {
+00040   struct pt pt;
+00041   char state;
+00042   struct uip_udp_conn *conn;
+00043   struct timer timer;
+00044   u16_t ticks;
+00045   const void *mac_addr;
+00046   int mac_len;
+00047   
+00048   u8_t serverid[4];
+00049 
+00050   u16_t lease_time[2];
+00051   u16_t ipaddr[2];
+00052   u16_t netmask[2];
+00053   u16_t dnsaddr[2];
+00054   u16_t default_router[2];
+00055 };
+00056 
+00057 void dhcpc_init(const void *mac_addr, int mac_len);
+00058 void dhcpc_request(void);
+00059 
+00060 void dhcpc_appcall(void);
+00061 
+00062 void dhcpc_configured(const struct dhcpc_state *s);
+00063 
+00064 typedef struct dhcpc_state uip_udp_appstate_t;
+00065 #define UIP_UDP_APPCALL dhcpc_appcall
+00066 
+00067 
+00068 #endif /* __DHCPC_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00050.html b/Target/Source/third_party/uip/doc/html/a00050.html new file mode 100644 index 00000000..e5f483fc --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00050.html @@ -0,0 +1,177 @@ + + +uIP 1.0: uip-conf.h + + + + + +

uip-conf.h

00001 /**
+00002  * \addtogroup uipopt
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \name Project-specific configuration options
+00008  * @{
+00009  *
+00010  * uIP has a number of configuration options that can be overridden
+00011  * for each project. These are kept in a project-specific uip-conf.h
+00012  * file and all configuration names have the prefix UIP_CONF.
+00013  */
+00014 
+00015 /*
+00016  * Copyright (c) 2006, Swedish Institute of Computer Science.
+00017  * All rights reserved.
+00018  *
+00019  * Redistribution and use in source and binary forms, with or without
+00020  * modification, are permitted provided that the following conditions
+00021  * are met:
+00022  * 1. Redistributions of source code must retain the above copyright
+00023  *    notice, this list of conditions and the following disclaimer.
+00024  * 2. Redistributions in binary form must reproduce the above copyright
+00025  *    notice, this list of conditions and the following disclaimer in the
+00026  *    documentation and/or other materials provided with the distribution.
+00027  * 3. Neither the name of the Institute nor the names of its contributors
+00028  *    may be used to endorse or promote products derived from this software
+00029  *    without specific prior written permission.
+00030  *
+00031  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00032  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00033  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00034  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00035  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00036  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00037  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00038  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00039  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00040  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00041  * SUCH DAMAGE.
+00042  *
+00043  * This file is part of the uIP TCP/IP stack
+00044  *
+00045  * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
+00046  */
+00047 
+00048 /**
+00049  * \file
+00050  *         An example uIP configuration file
+00051  * \author
+00052  *         Adam Dunkels <adam@sics.se>
+00053  */
+00054 
+00055 #ifndef __UIP_CONF_H__
+00056 #define __UIP_CONF_H__
+00057 
+00058 #include <inttypes.h>
+00059 
+00060 /**
+00061  * 8 bit datatype
+00062  *
+00063  * This typedef defines the 8-bit type used throughout uIP.
+00064  *
+00065  * \hideinitializer
+00066  */
+00067 typedef uint8_t u8_t;
+00068 
+00069 /**
+00070  * 16 bit datatype
+00071  *
+00072  * This typedef defines the 16-bit type used throughout uIP.
+00073  *
+00074  * \hideinitializer
+00075  */
+00076 typedef uint16_t u16_t;
+00077 
+00078 /**
+00079  * Statistics datatype
+00080  *
+00081  * This typedef defines the dataype used for keeping statistics in
+00082  * uIP.
+00083  *
+00084  * \hideinitializer
+00085  */
+00086 typedef unsigned short uip_stats_t;
+00087 
+00088 /**
+00089  * Maximum number of TCP connections.
+00090  *
+00091  * \hideinitializer
+00092  */
+00093 #define UIP_CONF_MAX_CONNECTIONS 40
+00094 
+00095 /**
+00096  * Maximum number of listening TCP ports.
+00097  *
+00098  * \hideinitializer
+00099  */
+00100 #define UIP_CONF_MAX_LISTENPORTS 40
+00101 
+00102 /**
+00103  * uIP buffer size.
+00104  *
+00105  * \hideinitializer
+00106  */
+00107 #define UIP_CONF_BUFFER_SIZE     420
+00108 
+00109 /**
+00110  * CPU byte order.
+00111  *
+00112  * \hideinitializer
+00113  */
+00114 #define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
+00115 
+00116 /**
+00117  * Logging on or off
+00118  *
+00119  * \hideinitializer
+00120  */
+00121 #define UIP_CONF_LOGGING         1
+00122 
+00123 /**
+00124  * UDP support on or off
+00125  *
+00126  * \hideinitializer
+00127  */
+00128 #define UIP_CONF_UDP             0
+00129 
+00130 /**
+00131  * UDP checksums on or off
+00132  *
+00133  * \hideinitializer
+00134  */
+00135 #define UIP_CONF_UDP_CHECKSUMS   1
+00136 
+00137 /**
+00138  * uIP statistics on or off
+00139  *
+00140  * \hideinitializer
+00141  */
+00142 #define UIP_CONF_STATISTICS      1
+00143 
+00144 /* Here we include the header file for the application(s) we use in
+00145    our project. */
+00146 /*#include "smtp.h"*/
+00147 /*#include "hello-world.h"*/
+00148 /*#include "telnetd.h"*/
+00149 #include "webserver.h"
+00150 /*#include "dhcpc.h"*/
+00151 /*#include "resolv.h"*/
+00152 /*#include "webclient.h"*/
+00153 
+00154 #endif /* __UIP_CONF_H__ */
+00155 
+00156 /** @} */
+00157 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00051.html b/Target/Source/third_party/uip/doc/html/a00051.html new file mode 100644 index 00000000..ba8fe52c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00051.html @@ -0,0 +1,138 @@ + + +uIP 1.0: uip-code-style.c + + + + + +

uip-code-style.c

00001 /* This is the official code style of uIP. */
+00002 
+00003 /**
+00004  * \defgroup codestyle Coding style
+00005  *
+00006  * This is how a Doxygen module is documented - start with a \defgroup
+00007  * Doxygen keyword at the beginning of the file to define a module,
+00008  * and use the \addtogroup Doxygen keyword in all other files that
+00009  * belong to the same module. Typically, the \defgroup is placed in
+00010  * the .h file and \addtogroup in the .c file.
+00011  *
+00012  * @{
+00013  */
+00014 
+00015 /**
+00016  * \file
+00017  *         A brief description of what this file is.
+00018  * \author
+00019  *         Adam Dunkels <adam@sics.se>
+00020  *
+00021  *         Every file that is part of a documented module has to have
+00022  *         a \file block, else it will not show up in the Doxygen
+00023  *         "Modules" * section.
+00024  */
+00025 
+00026 /* Single line comments look like this. */
+00027 
+00028 /*
+00029  * Multi-line comments look like this. Comments should prefferably be
+00030  * full sentences, filled to look like real paragraphs.
+00031  */
+00032 
+00033 #include "uip.h"
+00034 
+00035 /*
+00036  * Make sure that non-global variables are all maked with the static
+00037  * keyword. This keeps the size of the symbol table down.
+00038  */
+00039 static int flag;
+00040 
+00041 /*
+00042  * All variables and functions that are visible outside of the file
+00043  * should have the module name prepended to them. This makes it easy
+00044  * to know where to look for function and variable definitions.
+00045  *
+00046  * Put dividers (a single-line comment consisting only of dashes)
+00047  * between functions.
+00048  */
+00049 /*---------------------------------------------------------------------------*/
+00050 /**
+00051  * \brief      Use Doxygen documentation for functions.
+00052  * \param c    Briefly describe all parameters.
+00053  * \return     Briefly describe the return value.
+00054  * \retval 0   Functions that return a few specified values
+00055  * \retval 1   can use the \retval keyword instead of \return.
+00056  *
+00057  *             Put a longer description of what the function does
+00058  *             after the preamble of Doxygen keywords.
+00059  *
+00060  *             This template should always be used to document
+00061  *             functions. The text following the introduction is used
+00062  *             as the function's documentation.
+00063  *
+00064  *             Function prototypes have the return type on one line,
+00065  *             the name and arguments on one line (with no space
+00066  *             between the name and the first parenthesis), followed
+00067  *             by a single curly bracket on its own line.
+00068  */
+00069 void
+00070 code_style_example_function(void)
+00071 {
+00072   /*
+00073    * Local variables should always be declared at the start of the
+00074    * function.
+00075    */
+00076   int i;                   /* Use short variable names for loop
+00077                               counters. */
+00078 
+00079   /*
+00080    * There should be no space between keywords and the first
+00081    * parenthesis. There should be spaces around binary operators, no
+00082    * spaces between a unary operator and its operand.
+00083    *
+00084    * Curly brackets following for(), if(), do, and case() statements
+00085    * should follow the statement on the same line.
+00086    */
+00087   for(i = 0; i < 10; ++i) {
+00088     /*
+00089      * Always use full blocks (curly brackets) after if(), for(), and
+00090      * while() statements, even though the statement is a single line
+00091      * of code. This makes the code easier to read and modifications
+00092      * are less error prone.
+00093      */
+00094     if(i == c) {
+00095       return c;           /* No parentesis around return values. */
+00096     } else {              /* The else keyword is placed inbetween
+00097                              curly brackers, always on its own line. */
+00098       c++;
+00099     }
+00100   }
+00101 }
+00102 /*---------------------------------------------------------------------------*/
+00103 /*
+00104  * Static (non-global) functions do not need Doxygen comments. The
+00105  * name should not be prepended with the module name - doing so would
+00106  * create confusion.
+00107  */
+00108 static void
+00109 an_example_function(void)
+00110 {
+00111   
+00112 }
+00113 /*---------------------------------------------------------------------------*/
+00114 
+00115 /* The following stuff ends the \defgroup block at the beginning of
+00116    the file: */
+00117 
+00118 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00077.html b/Target/Source/third_party/uip/doc/html/a00077.html new file mode 100644 index 00000000..ce3bdf8e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00077.html @@ -0,0 +1,78 @@ + + +uIP 1.0: dhcpc_state Struct Reference + + + + + + +

dhcpc_state Struct Reference


Detailed Description

+
Examples:
+ +

+dhcpc.c, and dhcpc.h.

+

+ +

+Definition at line 39 of file dhcpc.h.

LocalRemoteStateRetransmissionsTimerFlags
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+pt pt
+char state
+uip_udp_connconn
+timer timer
+u16_t ticks
+const void * mac_addr
+int mac_len
+u8_t serverid [4]
+u16_t lease_time [2]
+u16_t ipaddr [2]
+u16_t netmask [2]
+u16_t dnsaddr [2]
+u16_t default_router [2]
+
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00078.html b/Target/Source/third_party/uip/doc/html/a00078.html new file mode 100644 index 00000000..3b71d676 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00078.html @@ -0,0 +1,51 @@ + + +uIP 1.0: hello_world_state Struct Reference + + + + + + +

hello_world_state Struct Reference
+ +[Hello, world] +


Detailed Description

+
Examples:
+ +

+hello-world.c, and hello-world.h.

+

+ +

+Definition at line 36 of file hello-world.h. + + + + + + + + +

Data Fields

+psock p
+char inputbuffer [10]
+char name [40]
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00079.html b/Target/Source/third_party/uip/doc/html/a00079.html new file mode 100644 index 00000000..36e884e1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00079.html @@ -0,0 +1,45 @@ + + +uIP 1.0: httpd_cgi_call Struct Reference + + + + + + +

httpd_cgi_call Struct Reference
+ +[Web server] +


Detailed Description

+ +

+ +

+Definition at line 60 of file httpd-cgi.h. + + + + + + +

Data Fields

+const char * name
+const httpd_cgifunction function
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00080.html b/Target/Source/third_party/uip/doc/html/a00080.html new file mode 100644 index 00000000..35310467 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00080.html @@ -0,0 +1,69 @@ + + +uIP 1.0: httpd_state Struct Reference + + + + + + +

httpd_state Struct Reference


Detailed Description

+ +

+ +

+Definition at line 41 of file httpd.h. + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+unsigned char timer
+psock sin sout
+pt outputpt scriptpt
+char inputbuf [50]
+char filename [20]
+char state
+httpd_fs_file file
+int len
+char * scriptptr
+int scriptlen
+unsigned short count
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00081.html b/Target/Source/third_party/uip/doc/html/a00081.html new file mode 100644 index 00000000..abe0701d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00081.html @@ -0,0 +1,51 @@ + + +uIP 1.0: memb_blocks Struct Reference + + + + + + +

memb_blocks Struct Reference
+ +[Memory block management functions] +


Detailed Description

+ +

+ +

+Definition at line 105 of file memb.h. + + + + + + + + + + +

Data Fields

+unsigned short size
+unsigned short num
+char * count
+void * mem
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00082.html b/Target/Source/third_party/uip/doc/html/a00082.html new file mode 100644 index 00000000..adc90826 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00082.html @@ -0,0 +1,73 @@ + + +uIP 1.0: psock Struct Reference + + + + + + +

psock Struct Reference
+ +[Protosockets library] +

#include <psock.h> +

+


Detailed Description

+The representation of a protosocket. +

+The protosocket structrure is an opaque structure with no user-visible elements.

Examples:
+ +

+hello-world.h.

+

+ +

+Definition at line 106 of file psock.h. + + + + + + + + + + + + + + + + + + + + +

Data Fields

+pt pt psockpt
+const u8_tsendptr
+u8_treadptr
+char * bufptr
+u16_t sendlen
+u16_t readlen
+psock_buf buf
+unsigned int bufsize
+unsigned char state
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00083.html b/Target/Source/third_party/uip/doc/html/a00083.html new file mode 100644 index 00000000..081035f9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00083.html @@ -0,0 +1,45 @@ + + +uIP 1.0: psock_buf Struct Reference + + + + + + +

psock_buf Struct Reference
+ +[Protosockets library] +


Detailed Description

+ +

+ +

+Definition at line 95 of file psock.h. + + + + + + +

Data Fields

+u8_tptr
+unsigned short left
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00084.html b/Target/Source/third_party/uip/doc/html/a00084.html new file mode 100644 index 00000000..a53f6c74 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00084.html @@ -0,0 +1,45 @@ + + +uIP 1.0: pt Struct Reference + + + + + + +

pt Struct Reference
+ +[Protothreads] +


Detailed Description

+
Examples:
+ +

+dhcpc.h.

+

+ +

+Definition at line 54 of file pt.h. + + + + +

Data Fields

+lc_t lc
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00085.html b/Target/Source/third_party/uip/doc/html/a00085.html new file mode 100644 index 00000000..c0587654 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00085.html @@ -0,0 +1,69 @@ + + +uIP 1.0: smtp_state Struct Reference + + + + + + +

smtp_state Struct Reference
+ +[SMTP E-mail sender] +


Detailed Description

+
Examples:
+ +

+hello-world.h, smtp.c, and smtp.h.

+

+ +

+Definition at line 81 of file smtp.h. + + + + + + + + + + + + + + + + + + + + +

Data Fields

+u8_t state
+char * to
+char * from
+char * subject
+char * msg
+u16_t msglen
+u16_t sentlen
+u16_t textlen
+u16_t sendptr
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00086.html b/Target/Source/third_party/uip/doc/html/a00086.html new file mode 100644 index 00000000..746368ad --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00086.html @@ -0,0 +1,54 @@ + + +uIP 1.0: telnetd_state Struct Reference + + + + + + +

telnetd_state Struct Reference


Detailed Description

+
Examples:
+ +

+telnetd.c, and telnetd.h.

+

+ +

+Definition at line 49 of file telnetd.h. + + + + + + + + + + + + +

Data Fields

+char * lines [TELNETD_CONF_NUMLINES]
+char buf [TELNETD_CONF_LINELEN]
+char bufptr
+u8_t numsent
+u8_t state
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00087.html b/Target/Source/third_party/uip/doc/html/a00087.html new file mode 100644 index 00000000..dcdc578a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00087.html @@ -0,0 +1,52 @@ + + +uIP 1.0: timer Struct Reference + + + + + + +

timer Struct Reference
+ +[Timer library] +

#include <timer.h> +

+


Detailed Description

+A timer. +

+This structure is used for declaring a timer. The timer must be set with timer_set() before it can be used.

Examples:
+ +

+dhcpc.h, example-mainloop-with-arp.c, example-mainloop-without-arp.c, and webclient.h.

+

+ +

+Definition at line 74 of file timer.h. + + + + + + +

Data Fields

+clock_time_t start
+clock_time_t interval
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00088.html b/Target/Source/third_party/uip/doc/html/a00088.html new file mode 100644 index 00000000..250eb98e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00088.html @@ -0,0 +1,103 @@ + + +uIP 1.0: uip_conn Struct Reference + + + + + + +

uip_conn Struct Reference
+ +[The uIP TCP/IP stack] +

#include <uip.h> +

+


Detailed Description

+Representation of a uIP TCP connection. +

+The uip_conn structure is used for identifying a connection. All but one field in the structure are to be considered read-only by an application. The only exception is the appstate field whos purpose is to let the application store application-specific state (e.g., file pointers) for the connection. The type of this field is configured in the "uipopt.h" header file. +

+ +

+Definition at line 1153 of file uip.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+uip_ipaddr_t ripaddr
 The IP address of the remote host.
+u16_t lport
 The local TCP port, in network byte order.
+u16_t rport
 The local remote TCP port, in network byte order.
+u8_t rcv_nxt [4]
 The sequence number that we expect to receive next.
+u8_t snd_nxt [4]
 The sequence number that was last sent by us.
+u16_t len
 Length of the data that was previously sent.
+u16_t mss
 Current maximum segment size for the connection.
+u16_t initialmss
 Initial maximum segment size for the connection.
+u8_t sa
 Retransmission time-out calculation state variable.
+u8_t sv
 Retransmission time-out calculation state variable.
+u8_t rto
 Retransmission time-out.
+u8_t tcpstateflags
 TCP state and flags.
+u8_t timer
 The retransmission timer.
+u8_t nrtx
 The number of retransmissions for the last segment sent.
+uip_tcp_appstate_t appstate
 The application state.
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00089.html b/Target/Source/third_party/uip/doc/html/a00089.html new file mode 100644 index 00000000..7ab1aad4 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00089.html @@ -0,0 +1,44 @@ + + +uIP 1.0: uip_eth_addr Struct Reference + + + + + + +

uip_eth_addr Struct Reference
+ +[The uIP TCP/IP stack] +

#include <uip.h> +

+


Detailed Description

+Representation of a 48-bit Ethernet address. +

+ +

+Definition at line 1542 of file uip.h. + + + + +

Data Fields

+u8_t addr [6]
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00090.html b/Target/Source/third_party/uip/doc/html/a00090.html new file mode 100644 index 00000000..46027a67 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00090.html @@ -0,0 +1,50 @@ + + +uIP 1.0: uip_eth_hdr Struct Reference + + + + + + +

uip_eth_hdr Struct Reference
+ +[uIP Address Resolution Protocol] +

#include <uip_arp.h> +

+


Detailed Description

+The Ethernet header. +

+ +

+Definition at line 63 of file uip_arp.h. + + + + + + + + +

Data Fields

+uip_eth_addr dest
+uip_eth_addr src
+u16_t type
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00091.html b/Target/Source/third_party/uip/doc/html/a00091.html new file mode 100644 index 00000000..048f9a36 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00091.html @@ -0,0 +1,84 @@ + + +uIP 1.0: uip_icmpip_hdr Struct Reference + + + + + + +

uip_icmpip_hdr Struct Reference
+ +[The uIP TCP/IP stack] +


Detailed Description

+ +

+ +

+Definition at line 1423 of file uip.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+u8_t vhl
+u8_t tos
+u8_t len [2]
+u8_t ipid [2]
+u8_t ipoffset [2]
+u8_t ttl
+u8_t proto
+u16_t ipchksum
+u16_t srcipaddr [2]
+u16_t destipaddr [2]
+u8_t type
+u8_t icode
+u16_t icmpchksum
+u16_t id
+u16_t seqno
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00092.html b/Target/Source/third_party/uip/doc/html/a00092.html new file mode 100644 index 00000000..f5ccaca8 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00092.html @@ -0,0 +1,39 @@ + + +uIP 1.0: uip_neighbor_addr Struct Reference + + + + + + +

uip_neighbor_addr Struct Reference


Detailed Description

+ +

+ +

+Definition at line 47 of file uip-neighbor.h. + + + + +

Data Fields

+uip_eth_addr addr
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00093.html b/Target/Source/third_party/uip/doc/html/a00093.html new file mode 100644 index 00000000..40bb9d1d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00093.html @@ -0,0 +1,143 @@ + + +uIP 1.0: uip_stats Struct Reference + + + + + + +

uip_stats Struct Reference
+ +[The uIP TCP/IP stack] +

#include <uip.h> +

+


Detailed Description

+The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. +

+ +

+Definition at line 1232 of file uip.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+struct {
   uip_stats_t   drop
 Number of dropped packets at the IP layer.
   uip_stats_t   recv
 Number of received packets at the IP layer.
   uip_stats_t   sent
 Number of sent packets at the IP layer.
   uip_stats_t   vhlerr
 Number of packets dropped due to wrong IP version or header length.
   uip_stats_t   hblenerr
 Number of packets dropped due to wrong IP length, high byte.
   uip_stats_t   lblenerr
 Number of packets dropped due to wrong IP length, low byte.
   uip_stats_t   fragerr
 Number of packets dropped since they were IP fragments.
   uip_stats_t   chkerr
 Number of packets dropped due to IP checksum errors.
   uip_stats_t   protoerr
 Number of packets dropped since they were neither ICMP, UDP nor TCP.
ip
 IP statistics.
+struct {
   uip_stats_t   drop
 Number of dropped ICMP packets.
   uip_stats_t   recv
 Number of received ICMP packets.
   uip_stats_t   sent
 Number of sent ICMP packets.
   uip_stats_t   typeerr
 Number of ICMP packets with a wrong type.
icmp
 ICMP statistics.
+struct {
   uip_stats_t   drop
 Number of dropped TCP segments.
   uip_stats_t   recv
 Number of recived TCP segments.
   uip_stats_t   sent
 Number of sent TCP segments.
   uip_stats_t   chkerr
 Number of TCP segments with a bad checksum.
   uip_stats_t   ackerr
 Number of TCP segments with a bad ACK number.
   uip_stats_t   rst
 Number of recevied TCP RST (reset) segments.
   uip_stats_t   rexmit
 Number of retransmitted TCP segments.
   uip_stats_t   syndrop
 Number of dropped SYNs due to too few connections was avaliable.
   uip_stats_t   synrst
 Number of SYNs for closed ports, triggering a RST.
tcp
 TCP statistics.
+struct {
   uip_stats_t   drop
 Number of dropped UDP segments.
   uip_stats_t   recv
 Number of recived UDP segments.
   uip_stats_t   sent
 Number of sent UDP segments.
   uip_stats_t   chkerr
 Number of UDP segments with a bad checksum.
udp
 UDP statistics.
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00094.html b/Target/Source/third_party/uip/doc/html/a00094.html new file mode 100644 index 00000000..d7415bcb --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00094.html @@ -0,0 +1,99 @@ + + +uIP 1.0: uip_tcpip_hdr Struct Reference + + + + + + +

uip_tcpip_hdr Struct Reference
+ +[The uIP TCP/IP stack] +


Detailed Description

+ +

+ +

+Definition at line 1386 of file uip.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+u8_t vhl
+u8_t tos
+u8_t len [2]
+u8_t ipid [2]
+u8_t ipoffset [2]
+u8_t ttl
+u8_t proto
+u16_t ipchksum
+u16_t srcipaddr [2]
+u16_t destipaddr [2]
+u16_t srcport
+u16_t destport
+u8_t seqno [4]
+u8_t ackno [4]
+u8_t tcpoffset
+u8_t flags
+u8_t wnd [2]
+u16_t tcpchksum
+u8_t urgp [2]
+u8_t optdata [4]
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00095.html b/Target/Source/third_party/uip/doc/html/a00095.html new file mode 100644 index 00000000..0ef01d5b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00095.html @@ -0,0 +1,64 @@ + + +uIP 1.0: uip_udp_conn Struct Reference + + + + + + +

uip_udp_conn Struct Reference
+ +[The uIP TCP/IP stack] +

#include <uip.h> +

+


Detailed Description

+Representation of a uIP UDP connection.
Examples:
+ +

+dhcpc.h, and resolv.c.

+

+ +

+Definition at line 1210 of file uip.h. + + + + + + + + + + + + + + + + + +

Data Fields

+uip_ipaddr_t ripaddr
 The IP address of the remote peer.
+u16_t lport
 The local port number in network byte order.
+u16_t rport
 The remote port number in network byte order.
+u8_t ttl
 Default time-to-live.
+uip_udp_appstate_t appstate
 The application state.
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00096.html b/Target/Source/third_party/uip/doc/html/a00096.html new file mode 100644 index 00000000..2f5acb44 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00096.html @@ -0,0 +1,81 @@ + + +uIP 1.0: uip_udpip_hdr Struct Reference + + + + + + +

uip_udpip_hdr Struct Reference
+ +[The uIP TCP/IP stack] +


Detailed Description

+ +

+ +

+Definition at line 1460 of file uip.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+u8_t vhl
+u8_t tos
+u8_t len [2]
+u8_t ipid [2]
+u8_t ipoffset [2]
+u8_t ttl
+u8_t proto
+u16_t ipchksum
+u16_t srcipaddr [2]
+u16_t destipaddr [2]
+u16_t srcport
+u16_t destport
+u16_t udplen
+u16_t udpchksum
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00097.html b/Target/Source/third_party/uip/doc/html/a00097.html new file mode 100644 index 00000000..a74d8ef5 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00097.html @@ -0,0 +1,75 @@ + + +uIP 1.0: webclient_state Struct Reference + + + + + + +

webclient_state Struct Reference
+ +[Web client] +


Detailed Description

+
Examples:
+ +

+webclient.c, and webclient.h.

+

+ +

+Definition at line 55 of file webclient.h. + + + + + + + + + + + + + + + + + + + + + + + + +

Data Fields

+u8_t timer
+u8_t state
+u8_t httpflag
+u16_t port
+char host [40]
+char file [WEBCLIENT_CONF_MAX_URLLEN]
+u16_t getrequestptr
+u16_t getrequestleft
+char httpheaderline [200]
+u16_t httpheaderlineptr
+char mimetype [32]
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00100.html b/Target/Source/third_party/uip/doc/html/a00100.html new file mode 100644 index 00000000..2bcd6eab --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00100.html @@ -0,0 +1,48 @@ + + +uIP 1.0: apps/hello-world/hello-world.c File Reference + + + + + + +

apps/hello-world/hello-world.c File Reference


Detailed Description

+An example of how to write uIP applications with protosockets. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file hello-world.c. +

+#include "hello-world.h"
+#include "uip.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + +

Functions

+void hello_world_init (void)
+void hello_world_appcall (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00101.html b/Target/Source/third_party/uip/doc/html/a00101.html new file mode 100644 index 00000000..fc408be3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00101.html @@ -0,0 +1,54 @@ + + +uIP 1.0: apps/hello-world/hello-world.h File Reference + + + + + + +

apps/hello-world/hello-world.h File Reference


Detailed Description

+Header file for an example of how to write uIP applications with protosockets. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file hello-world.h. +

+#include "uipopt.h"
+#include "psock.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + +

Data Structures

struct  hello_world_state

Defines

+#define UIP_APPCALL   hello_world_appcall

Functions

+void hello_world_appcall (void)
+void hello_world_init (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00102.html b/Target/Source/third_party/uip/doc/html/a00102.html new file mode 100644 index 00000000..eed00f0b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00102.html @@ -0,0 +1,119 @@ + + +uIP 1.0: apps/resolv/resolv.c File Reference + + + + + + +

apps/resolv/resolv.c File Reference


Detailed Description

+DNS host name to IP address resolver. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+This file implements a DNS host name to IP address resolver. +

+Definition in file resolv.c. +

+#include "resolv.h"
+#include "uip.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define NULL   (void *)0
+#define MAX_RETRIES   8
+#define DNS_FLAG1_RESPONSE   0x80
+#define DNS_FLAG1_OPCODE_STATUS   0x10
+#define DNS_FLAG1_OPCODE_INVERSE   0x08
+#define DNS_FLAG1_OPCODE_STANDARD   0x00
+#define DNS_FLAG1_AUTHORATIVE   0x04
+#define DNS_FLAG1_TRUNC   0x02
+#define DNS_FLAG1_RD   0x01
+#define DNS_FLAG2_RA   0x80
+#define DNS_FLAG2_ERR_MASK   0x0f
+#define DNS_FLAG2_ERR_NONE   0x00
+#define DNS_FLAG2_ERR_NAME   0x03
+#define STATE_UNUSED   0
+#define STATE_NEW   1
+#define STATE_ASKING   2
+#define STATE_DONE   3
+#define STATE_ERROR   4
+#define RESOLV_ENTRIES   4

Functions

+void resolv_appcall (void)
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
+void resolv_init (void)
 Initalize the resolver.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00103.html b/Target/Source/third_party/uip/doc/html/a00103.html new file mode 100644 index 00000000..28a0fe45 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00103.html @@ -0,0 +1,84 @@ + + +uIP 1.0: apps/resolv/resolv.h File Reference + + + + + + +

apps/resolv/resolv.h File Reference


Detailed Description

+DNS resolver code header file. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file resolv.h. +

+#include "uipopt.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Appication specific configurations

An uIP application is implemented using a single application function that is called by uIP whenever a TCP/IP event occurs. The name of this function must be registered with uIP at compile time using the UIP_APPCALL definition.

+uIP applications can store the application state within the uip_conn structure by specifying the type of the application structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.

+The file containing the definitions must be included in the uipopt.h file.

+The following example illustrates how this can look.

void httpd_appcall(void);
+#define UIP_APPCALL     httpd_appcall
+
+struct httpd_state {
+  u8_t state;
+  u16_t count;
+  char *dataptr;
+  char *script;
+};
+typedef struct httpd_state uip_tcp_appstate_t
+


typedef int uip_udp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

+#define UIP_UDP_APPCALL   resolv_appcall

Functions

+void resolv_appcall (void)
void resolv_found (char *name, u16_t *ipaddr)
 Callback function which is called when a hostname is found.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
+void resolv_init (void)
 Initalize the resolver.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00104.html b/Target/Source/third_party/uip/doc/html/a00104.html new file mode 100644 index 00000000..1e0cac09 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00104.html @@ -0,0 +1,78 @@ + + +uIP 1.0: apps/smtp/smtp.c File Reference + + + + + + +

apps/smtp/smtp.c File Reference


Detailed Description

+SMTP example implementation. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file smtp.c. +

+#include "smtp.h"
+#include "smtp-strings.h"
+#include "psock.h"
+#include "uip.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define ISO_nl   0x0a
+#define ISO_cr   0x0d
+#define ISO_period   0x2e
+#define ISO_2   0x32
+#define ISO_3   0x33
+#define ISO_4   0x34
+#define ISO_5   0x35

Functions

+void smtp_appcall (void)
void smtp_configure (char *lhostname, void *server)
 Specificy an SMTP server and hostname.
unsigned char smtp_send (char *to, char *cc, char *from, char *subject, char *msg, u16_t msglen)
 Send an e-mail.
+void smtp_init (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00105.html b/Target/Source/third_party/uip/doc/html/a00105.html new file mode 100644 index 00000000..a774ba0d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00105.html @@ -0,0 +1,82 @@ + + +uIP 1.0: apps/smtp/smtp.h File Reference + + + + + + +

apps/smtp/smtp.h File Reference


Detailed Description

+SMTP header file. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file smtp.h. +

+#include "uipopt.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  smtp_state

Appication specific configurations

An uIP application is implemented using a single application function that is called by uIP whenever a TCP/IP event occurs. The name of this function must be registered with uIP at compile time using the UIP_APPCALL definition.

+uIP applications can store the application state within the uip_conn structure by specifying the type of the application structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.

+The file containing the definitions must be included in the uipopt.h file.

+The following example illustrates how this can look.

void httpd_appcall(void);
+#define UIP_APPCALL     httpd_appcall
+
+struct httpd_state {
+  u8_t state;
+  u16_t count;
+  char *dataptr;
+  char *script;
+};
+typedef struct httpd_state uip_tcp_appstate_t
+


+#define UIP_APPCALL   smtp_appcall
 The name of the application function that uIP should call in response to TCP/IP events.
typedef smtp_state uip_tcp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

+#define SMTP_ERR_OK   0
 Error number that signifies a non-error condition.
+#define SMTP_SEND(to, cc, from, subject, msg)   smtp_send(to, cc, from, subject, msg, strlen(msg))

Functions

void smtp_done (unsigned char error)
 Callback function that is called when an e-mail transmission is done.
+void smtp_init (void)
+void smtp_appcall (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00107.html b/Target/Source/third_party/uip/doc/html/a00107.html new file mode 100644 index 00000000..067bb4b3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00107.html @@ -0,0 +1,268 @@ + + +uIP 1.0: apps/telnetd/shell.h File Reference + + + + + + +

apps/telnetd/shell.h File Reference


Detailed Description

+Interface for the Contiki shell. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+Some of the functions declared in this file must be implemented as a shell back-end in the architecture specific files of a Contiki port. +

+Definition in file shell.h. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + +

Functions

void shell_init (void)
 Initialize the shell.
void shell_start (void)
 Start the shell back-end.
void shell_input (char *command)
 Process a shell command.
+void shell_quit (char *)
 Quit the shell.
void shell_output (char *str1, char *str2)
 Print a string to the shell window.
void shell_prompt (char *prompt)
 Print a prompt to the shell window.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void shell_init void   ) 
+
+ + + + + +
+   + + +

+Initialize the shell. +

+Called when the shell front-end process starts. This function may be used to start listening for signals.

Examples:
+telnetd.c.
+

+Definition at line 105 of file shell.c. +

+References shell_init(). +

+Referenced by shell_init().

+

+ + + + +
+ + + + + + + + + +
void shell_input char *  command  ) 
+
+ + + + + +
+   + + +

+Process a shell command. +

+This function will be called by the shell GUI / telnet server whan a command has been entered that should be processed by the shell back-end.

+

Parameters:
+ + +
command The command to be processed.
+
+
Examples:
+telnetd.c.
+

+Definition at line 118 of file shell.c. +

+References shell_input(). +

+Referenced by shell_input().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void shell_output char *  str1,
char *  str2
+
+ + + + + +
+   + + +

+Print a string to the shell window. +

+This function is implemented by the shell GUI / telnet server and can be called by the shell back-end to output a string in the shell window. The string is automatically appended with a linebreak.

+

Parameters:
+ + + +
str1 The first half of the string to be output.
str2 The second half of the string to be output.
+
+
Examples:
+telnetd.c.
+

+Definition at line 113 of file telnetd.c. +

+References ISO_cr, ISO_nl, and NULL.

+

+ + + + +
+ + + + + + + + + +
void shell_prompt char *  prompt  ) 
+
+ + + + + +
+   + + +

+Print a prompt to the shell window. +

+This function can be used by the shell back-end to print out a prompt to the shell window.

+

Parameters:
+ + +
prompt The prompt to be printed.
+
+
Examples:
+telnetd.c.
+

+Definition at line 101 of file telnetd.c. +

+References NULL.

+

+ + + + +
+ + + + + + + + + +
void shell_start void   ) 
+
+ + + + + +
+   + + +

+Start the shell back-end. +

+Called by the front-end when a new shell is started.

Examples:
+telnetd.c.
+

+Definition at line 110 of file shell.c. +

+References shell_start(). +

+Referenced by shell_start().

+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00110.html b/Target/Source/third_party/uip/doc/html/a00110.html new file mode 100644 index 00000000..66cd8e45 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00110.html @@ -0,0 +1,107 @@ + + +uIP 1.0: apps/webclient/webclient.c File Reference + + + + + + +

apps/webclient/webclient.c File Reference


Detailed Description

+Implementation of the HTTP client. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file webclient.c. +

+#include "uip.h"
+#include "uiplib.h"
+#include "webclient.h"
+#include "resolv.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define WEBCLIENT_TIMEOUT   100
+#define WEBCLIENT_STATE_STATUSLINE   0
+#define WEBCLIENT_STATE_HEADERS   1
+#define WEBCLIENT_STATE_DATA   2
+#define WEBCLIENT_STATE_CLOSE   3
+#define HTTPFLAG_NONE   0
+#define HTTPFLAG_OK   1
+#define HTTPFLAG_MOVED   2
+#define HTTPFLAG_ERROR   3
+#define ISO_nl   0x0a
+#define ISO_cr   0x0d
+#define ISO_space   0x20

Functions

char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
+void webclient_init (void)
 Initialize the webclient module.
+void webclient_close (void)
 Close the currently open HTTP connection.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
+void webclient_appcall (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00111.html b/Target/Source/third_party/uip/doc/html/a00111.html new file mode 100644 index 00000000..d210afaf --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00111.html @@ -0,0 +1,96 @@ + + +uIP 1.0: apps/webclient/webclient.h File Reference + + + + + + +

apps/webclient/webclient.h File Reference


Detailed Description

+Header file for the HTTP client. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file webclient.h. +

+#include "webclient-strings.h"
+#include "uipopt.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  webclient_state

Defines

+#define WEBCLIENT_CONF_MAX_URLLEN   100
+#define UIP_APPCALL   webclient_appcall

Typedefs

+typedef webclient_state uip_tcp_appstate_t

Functions

void webclient_datahandler (char *data, u16_t len)
 Callback function that is called from the webclient code when HTTP data has been received.
void webclient_connected (void)
 Callback function that is called from the webclient code when the HTTP connection has been connected to the web server.
void webclient_timedout (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has timed out.
void webclient_aborted (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server.
void webclient_closed (void)
 Callback function that is called from the webclient code when the HTTP connection to the web server has been closed.
+void webclient_init (void)
 Initialize the webclient module.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
+void webclient_close (void)
 Close the currently open HTTP connection.
+void webclient_appcall (void)
char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00112.html b/Target/Source/third_party/uip/doc/html/a00112.html new file mode 100644 index 00000000..f1c3e981 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00112.html @@ -0,0 +1,49 @@ + + +uIP 1.0: apps/webserver/httpd-cgi.c File Reference + + + + + + +

apps/webserver/httpd-cgi.c File Reference


Detailed Description

+Web server script interface. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file httpd-cgi.c. +

+#include "uip.h"
+#include "psock.h"
+#include "httpd.h"
+#include "httpd-cgi.h"
+#include "httpd-fs.h"
+#include <stdio.h>
+#include <string.h>
+ +

+Go to the source code of this file. + + + + +

Functions

+httpd_cgifunction httpd_cgi (char *name)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00113.html b/Target/Source/third_party/uip/doc/html/a00113.html new file mode 100644 index 00000000..6e7d8f43 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00113.html @@ -0,0 +1,51 @@ + + +uIP 1.0: apps/webserver/httpd-cgi.h File Reference + + + + + + +

apps/webserver/httpd-cgi.h File Reference


Detailed Description

+Web server script interface header file. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file httpd-cgi.h. +

+#include "psock.h"
+#include "httpd.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + +

Data Structures

struct  httpd_cgi_call

Defines

#define HTTPD_CGI_CALL(name, str, function)
 HTTPD CGI function declaration.

Functions

+httpd_cgifunction httpd_cgi (char *name)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00114.html b/Target/Source/third_party/uip/doc/html/a00114.html new file mode 100644 index 00000000..24a3e84b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00114.html @@ -0,0 +1,79 @@ + + +uIP 1.0: apps/webserver/httpd.c File Reference + + + + + + +

apps/webserver/httpd.c File Reference


Detailed Description

+Web server. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file httpd.c. +

+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-cgi.h"
+#include "http-strings.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define STATE_WAITING   0
+#define STATE_OUTPUT   1
+#define ISO_nl   0x0a
+#define ISO_space   0x20
+#define ISO_bang   0x21
+#define ISO_percent   0x25
+#define ISO_period   0x2e
+#define ISO_slash   0x2f
+#define ISO_colon   0x3a

Functions

+void httpd_appcall (void)
void httpd_init (void)
 Initialize the web server.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00120.html b/Target/Source/third_party/uip/doc/html/a00120.html new file mode 100644 index 00000000..3cdb238b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00120.html @@ -0,0 +1,50 @@ + + +uIP 1.0: lib/memb.c File Reference + + + + + + +

lib/memb.c File Reference


Detailed Description

+Memory block allocation routines. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file memb.c. +

+#include <string.h>
+#include "memb.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + +

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00121.html b/Target/Source/third_party/uip/doc/html/a00121.html new file mode 100644 index 00000000..eaae7fba --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00121.html @@ -0,0 +1,61 @@ + + +uIP 1.0: lib/memb.h File Reference + + + + + + +

lib/memb.h File Reference


Detailed Description

+Memory block allocation routines. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file memb.h. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  memb_blocks

Defines

+#define MEMB_CONCAT2(s1, s2)   s1##s2
+#define MEMB_CONCAT(s1, s2)   MEMB_CONCAT2(s1, s2)
#define MEMB(name, structure, num)
 Declare a memory block.

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00123.html b/Target/Source/third_party/uip/doc/html/a00123.html new file mode 100644 index 00000000..4a9ff168 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00123.html @@ -0,0 +1,57 @@ + + +uIP 1.0: uip/lc-addrlabels.h File Reference + + + + + + +

uip/lc-addrlabels.h File Reference


Detailed Description

+Implementation of local continuations based on the "Labels as values" feature of gcc. +

+

Author:
Adam Dunkels <adam@sics.se>
+This implementation of local continuations is based on a special feature of the GCC C compiler called "labels as values". This feature allows assigning pointers with the address of the code corresponding to a particular C label.

+For more information, see the GCC documentation: http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html

+Thanks to dividuum for finding the nice local scope label implementation. +

+Definition in file lc-addrlabels.h. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + +

Defines

+#define LC_INIT(s)   s = NULL
+#define LC_RESUME(s)
+#define LC_SET(s)   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
+#define LC_END(s)

Typedefs

+typedef void * lc_t
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00124.html b/Target/Source/third_party/uip/doc/html/a00124.html new file mode 100644 index 00000000..fe0d6bbb --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00124.html @@ -0,0 +1,59 @@ + + +uIP 1.0: uip/lc-switch.h File Reference + + + + + + +

uip/lc-switch.h File Reference


Detailed Description

+Implementation of local continuations based on switch() statment. +

+

Author:
Adam Dunkels <adam@sics.se>
+This implementation of local continuations uses the C switch() statement to resume execution of a function somewhere inside the function's body. The implementation is based on the fact that switch() statements are able to jump directly into the bodies of control structures such as if() or while() statmenets.

+This implementation borrows heavily from Simon Tatham's coroutines implementation in C: http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html +

+Definition in file lc-switch.h. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + +

Defines

+#define __LC_SWTICH_H__
+#define LC_INIT(s)   s = 0;
+#define LC_RESUME(s)   switch(s) { case 0:
+#define LC_SET(s)   s = __LINE__; case __LINE__:
+#define LC_END(s)   }

Typedefs

+typedef unsigned short lc_t
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00125.html b/Target/Source/third_party/uip/doc/html/a00125.html new file mode 100644 index 00000000..c1ce2591 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00125.html @@ -0,0 +1,39 @@ + + +uIP 1.0: uip/lc.h File Reference + + + + + + +

uip/lc.h File Reference


Detailed Description

+Local continuations. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file lc.h. +

+#include "lc-switch.h"
+ +

+Go to the source code of this file. + +
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00127.html b/Target/Source/third_party/uip/doc/html/a00127.html new file mode 100644 index 00000000..a0bd3f48 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00127.html @@ -0,0 +1,99 @@ + + +uIP 1.0: uip/psock.h File Reference + + + + + + +

uip/psock.h File Reference


Detailed Description

+Protosocket library header file. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file psock.h. +

+#include "uipopt.h"
+#include "pt.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  psock_buf
struct  psock
 The representation of a protosocket. More...

Defines

#define PSOCK_INIT(psock, buffer, buffersize)
 Initialize a protosocket.
#define PSOCK_BEGIN(psock)
 Start the protosocket protothread in a function.
#define PSOCK_SEND(psock, data, datalen)
 Send data.
#define PSOCK_SEND_STR(psock, str)
 Send a null-terminated string.
#define PSOCK_GENERATOR_SEND(psock, generator, arg)
 Generate data with a function and send it.
#define PSOCK_CLOSE(psock)
 Close a protosocket.
#define PSOCK_READBUF(psock)
 Read data until the buffer is full.
#define PSOCK_READTO(psock, c)
 Read data up to a specified character.
#define PSOCK_DATALEN(psock)
 The length of the data that was previously read.
#define PSOCK_EXIT(psock)
 Exit the protosocket's protothread.
#define PSOCK_CLOSE_EXIT(psock)
 Close a protosocket and exit the protosocket's protothread.
#define PSOCK_END(psock)
 Declare the end of a protosocket's protothread.
#define PSOCK_NEWDATA(psock)
 Check if new data has arrived on a protosocket.
#define PSOCK_WAIT_UNTIL(psock, condition)
 Wait until a condition is true.
+#define PSOCK_WAIT_THREAD(psock, condition)   PT_WAIT_THREAD(&((psock)->pt), (condition))

Functions

+u16_t psock_datalen (struct psock *psock)
+char psock_newdata (struct psock *s)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00128.html b/Target/Source/third_party/uip/doc/html/a00128.html new file mode 100644 index 00000000..18790f02 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00128.html @@ -0,0 +1,101 @@ + + +uIP 1.0: uip/pt.h File Reference + + + + + + +

uip/pt.h File Reference


Detailed Description

+Protothreads implementation. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file pt.h. +

+#include "lc.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  pt

Initialization

#define PT_INIT(pt)
 Initialize a protothread.

Declaration and definition

#define PT_THREAD(name_args)
 Declaration of a protothread.
#define PT_BEGIN(pt)
 Declare the start of a protothread inside the C function implementing the protothread.
#define PT_END(pt)
 Declare the end of a protothread.

Blocked wait

#define PT_WAIT_UNTIL(pt, condition)
 Block and wait until condition is true.
#define PT_WAIT_WHILE(pt, cond)
 Block and wait while condition is true.

Hierarchical protothreads

#define PT_WAIT_THREAD(pt, thread)
 Block and wait until a child protothread completes.
#define PT_SPAWN(pt, child, thread)
 Spawn a child protothread and wait until it exits.

Exiting and restarting

#define PT_RESTART(pt)
 Restart the protothread.
#define PT_EXIT(pt)
 Exit the protothread.

Calling a protothread

#define PT_SCHEDULE(f)
 Schedule a protothread.

Yielding from a protothread

#define PT_YIELD(pt)
 Yield from the current protothread.
#define PT_YIELD_UNTIL(pt, cond)
 Yield from the protothread until a condition occurs.

Defines

+#define PT_WAITING   0
+#define PT_EXITED   1
+#define PT_ENDED   2
+#define PT_YIELDED   3
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00129.html b/Target/Source/third_party/uip/doc/html/a00129.html new file mode 100644 index 00000000..f12ac2d6 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00129.html @@ -0,0 +1,53 @@ + + +uIP 1.0: uip/timer.c File Reference + + + + + + +

uip/timer.c File Reference


Detailed Description

+Timer library implementation. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file timer.c. +

+#include "clock.h"
+#include "timer.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00130.html b/Target/Source/third_party/uip/doc/html/a00130.html new file mode 100644 index 00000000..d2f11cd1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00130.html @@ -0,0 +1,56 @@ + + +uIP 1.0: uip/timer.h File Reference + + + + + + +

uip/timer.h File Reference


Detailed Description

+Timer library header file. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file timer.h. +

+#include "clock.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + +

Data Structures

struct  timer
 A timer. More...

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00131.html b/Target/Source/third_party/uip/doc/html/a00131.html new file mode 100644 index 00000000..e19e50cf --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00131.html @@ -0,0 +1,63 @@ + + +uIP 1.0: uip/uip-neighbor.c File Reference + + + + + + +

uip/uip-neighbor.c File Reference


Detailed Description

+Database of link-local neighbors, used by IPv6 code and to be used by a future ARP code rewrite. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file uip-neighbor.c. +

+#include "uip-neighbor.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + +

Defines

+#define MAX_TIME   128
+#define ENTRIES   8

Functions

+void uip_neighbor_init (void)
+void uip_neighbor_periodic (void)
+void uip_neighbor_add (uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
+void uip_neighbor_update (uip_ipaddr_t ipaddr)
+uip_neighbor_addruip_neighbor_lookup (uip_ipaddr_t ipaddr)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00132.html b/Target/Source/third_party/uip/doc/html/a00132.html new file mode 100644 index 00000000..a1e5f023 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00132.html @@ -0,0 +1,58 @@ + + +uIP 1.0: uip/uip-neighbor.h File Reference + + + + + + +

uip/uip-neighbor.h File Reference


Detailed Description

+Header file for database of link-local neighbors, used by IPv6 code and to be used by future ARP code. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file uip-neighbor.h. +

+#include "uip.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + +

Data Structures

struct  uip_neighbor_addr

Functions

+void uip_neighbor_init (void)
+void uip_neighbor_add (uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
+void uip_neighbor_update (uip_ipaddr_t ipaddr)
+uip_neighbor_addruip_neighbor_lookup (uip_ipaddr_t ipaddr)
+void uip_neighbor_periodic (void)
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00134.html b/Target/Source/third_party/uip/doc/html/a00134.html new file mode 100644 index 00000000..161fdd39 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00134.html @@ -0,0 +1,42 @@ + + +uIP 1.0: uip/uip-split.h File Reference + + + + + + +

uip/uip-split.h File Reference


Detailed Description

+Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file uip-split.h. +

+ +

+Go to the source code of this file. + + + + + +

Functions

void uip_split_output (void)
 Handle outgoing packets.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00135.html b/Target/Source/third_party/uip/doc/html/a00135.html new file mode 100644 index 00000000..a561a9a0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00135.html @@ -0,0 +1,215 @@ + + +uIP 1.0: uip/uip.c File Reference + + + + + + +

uip/uip.c File Reference


Detailed Description

+The uIP TCP/IP stack code. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file uip.c. +

+#include "uip.h"
+#include "uipopt.h"
+#include "uip_arch.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define DEBUG_PRINTF()
+#define TCP_FIN   0x01
+#define TCP_SYN   0x02
+#define TCP_RST   0x04
+#define TCP_PSH   0x08
+#define TCP_ACK   0x10
+#define TCP_URG   0x20
+#define TCP_CTL   0x3f
+#define TCP_OPT_END   0
+#define TCP_OPT_NOOP   1
+#define TCP_OPT_MSS   2
+#define TCP_OPT_MSS_LEN   4
+#define ICMP_ECHO_REPLY   0
+#define ICMP_ECHO   8
+#define ICMP6_ECHO_REPLY   129
+#define ICMP6_ECHO   128
+#define ICMP6_NEIGHBOR_SOLICITATION   135
+#define ICMP6_NEIGHBOR_ADVERTISEMENT   136
+#define ICMP6_FLAG_S   (1 << 6)
+#define ICMP6_OPTION_SOURCE_LINK_ADDRESS   1
+#define ICMP6_OPTION_TARGET_LINK_ADDRESS   2
+#define BUF   ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define FBUF   ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
+#define ICMPBUF   ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define UDPBUF   ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define UIP_STAT(s)
+#define UIP_LOG(m)

Functions

void uip_setipid (u16_t id)
 uIP initialization function.
void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
void uip_init (void)
 uIP initialization function.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t rport)
 Connect to a remote host using TCP.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
void uip_listen (u16_t port)
 Start listening to the specified port.
+void uip_process (u8_t flag)
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
void uip_send (const void *data, int len)
 Send data on the current connection.

Variables

+uip_ipaddr_t uip_hostaddr
+uip_ipaddr_t uip_draddr
+uip_ipaddr_t uip_netmask
+uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}
u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
+void * uip_sappdata
u16_t uip_len
 The length of the packet in the uip_buf buffer.
+u16_t uip_slen
+u8_t uip_flags
uip_connuip_conn
 Pointer to the current TCP connection.
+uip_conn uip_conns [UIP_CONNS]
+u16_t uip_listenports [UIP_LISTENPORTS]
+uip_udp_connuip_udp_conn
 The current UDP connection.
+uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
+u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00136.html b/Target/Source/third_party/uip/doc/html/a00136.html new file mode 100644 index 00000000..afc4d0e3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00136.html @@ -0,0 +1,400 @@ + + +uIP 1.0: uip/uip.h File Reference + + + + + + +

uip/uip.h File Reference


Detailed Description

+Header file for the uIP TCP/IP stack. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+The uIP TCP/IP stack header file contains definitions for a number of C macros that are used by uIP programs as well as internal uIP structures, TCP/IP header structures and function declarations. +

+Definition in file uip.h. +

+#include "uipopt.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  uip_conn
 Representation of a uIP TCP connection. More...
struct  uip_udp_conn
 Representation of a uIP UDP connection. More...
struct  uip_stats
 The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. More...
struct  uip_tcpip_hdr
struct  uip_icmpip_hdr
struct  uip_udpip_hdr
struct  uip_eth_addr
 Representation of a 48-bit Ethernet address. More...

Defines

#define uip_sethostaddr(addr)
 Set the IP address of this host.
#define uip_gethostaddr(addr)
 Get the IP address of this host.
#define uip_setdraddr(addr)
 Set the default router's IP address.
#define uip_setnetmask(addr)
 Set the netmask.
#define uip_getdraddr(addr)
 Get the default router's IP address.
#define uip_getnetmask(addr)
 Get the netmask.
#define uip_input()
 Process an incoming packet.
#define uip_periodic(conn)
 Periodic processing for a connection identified by its number.
+#define uip_conn_active(conn)   (uip_conns[conn].tcpstateflags != UIP_CLOSED)
#define uip_periodic_conn(conn)
 Perform periodic processing for a connection identified by a pointer to its structure.
#define uip_poll_conn(conn)
 Reuqest that a particular connection should be polled.
#define uip_udp_periodic(conn)
 Periodic processing for a UDP connection identified by its number.
#define uip_udp_periodic_conn(conn)
 Periodic processing for a UDP connection identified by a pointer to its structure.
+#define uip_outstanding(conn)   ((conn)->len)
#define uip_datalen()
 The length of any incoming data that is currently avaliable (if avaliable) in the uip_appdata buffer.
#define uip_urgdatalen()
 The length of any out-of-band data (urgent data) that has arrived on the connection.
#define uip_close()
 Close the current connection.
#define uip_abort()
 Abort the current connection.
#define uip_stop()
 Tell the sending host to stop sending data.
+#define uip_stopped(conn)
 Find out if the current connection has been previously stopped with uip_stop().
#define uip_restart()
 Restart the current connection, if is has previously been stopped with uip_stop().
#define uip_udpconnection()
 Is the current connection a UDP connection?
#define uip_newdata()
 Is new incoming data available?
#define uip_acked()
 Has previously sent data been acknowledged?
#define uip_connected()
 Has the connection just been connected?
#define uip_closed()
 Has the connection been closed by the other end?
#define uip_aborted()
 Has the connection been aborted by the other end?
#define uip_timedout()
 Has the connection timed out?
#define uip_rexmit()
 Do we need to retransmit previously data?
#define uip_poll()
 Is the connection being polled by uIP?
+#define uip_initialmss()
 Get the initial maxium segment size (MSS) of the current connection.
#define uip_mss()
 Get the current maxium segment size that can be sent on the current connection.
#define uip_udp_remove(conn)
 Removed a UDP connection.
#define uip_udp_bind(conn, port)
 Bind a UDP connection to a local port.
#define uip_udp_send(len)
 Send a UDP datagram of length len on the current connection.
#define uip_ipaddr(addr, addr0, addr1, addr2, addr3)
 Construct an IP address from four bytes.
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
 Construct an IPv6 address from eight 16-bit words.
#define uip_ipaddr_copy(dest, src)
 Copy an IP address to another IP address.
#define uip_ipaddr_cmp(addr1, addr2)
 Compare two IP addresses.
#define uip_ipaddr_maskcmp(addr1, addr2, mask)
 Compare two IP addresses with netmasks.
#define uip_ipaddr_mask(dest, src, mask)
 Mask out the network part of an IP address.
#define uip_ipaddr1(addr)
 Pick the first octet of an IP address.
#define uip_ipaddr2(addr)
 Pick the second octet of an IP address.
#define uip_ipaddr3(addr)
 Pick the third octet of an IP address.
#define uip_ipaddr4(addr)
 Pick the fourth octet of an IP address.
#define HTONS(n)
 Convert 16-bit quantity from host byte order to network byte order.
+#define ntohs   htons
+#define UIP_ACKDATA   1
+#define UIP_NEWDATA   2
+#define UIP_REXMIT   4
+#define UIP_POLL   8
+#define UIP_CLOSE   16
+#define UIP_ABORT   32
+#define UIP_CONNECTED   64
+#define UIP_TIMEDOUT   128
+#define UIP_DATA   1
+#define UIP_TIMER   2
+#define UIP_POLL_REQUEST   3
+#define UIP_UDP_SEND_CONN   4
+#define UIP_UDP_TIMER   5
+#define UIP_CLOSED   0
+#define UIP_SYN_RCVD   1
+#define UIP_SYN_SENT   2
+#define UIP_ESTABLISHED   3
+#define UIP_FIN_WAIT_1   4
+#define UIP_FIN_WAIT_2   5
+#define UIP_CLOSING   6
+#define UIP_TIME_WAIT   7
+#define UIP_LAST_ACK   8
+#define UIP_TS_MASK   15
+#define UIP_STOPPED   16
#define UIP_APPDATA_SIZE
 The buffer size available for user data in the uip_buf buffer.
+#define UIP_PROTO_ICMP   1
+#define UIP_PROTO_TCP   6
+#define UIP_PROTO_UDP   17
+#define UIP_PROTO_ICMP6   58
+#define UIP_IPH_LEN   20
+#define UIP_UDPH_LEN   8
+#define UIP_TCPH_LEN   20
+#define UIP_IPUDPH_LEN   (UIP_UDPH_LEN + UIP_IPH_LEN)
+#define UIP_IPTCPH_LEN   (UIP_TCPH_LEN + UIP_IPH_LEN)
+#define UIP_TCPIP_HLEN   UIP_IPTCPH_LEN

Typedefs

+typedef u16_t uip_ip4addr_t [2]
 Repressentation of an IP address.
+typedef u16_t uip_ip6addr_t [8]
+typedef uip_ip4addr_t uip_ipaddr_t

Functions

void uip_init (void)
 uIP initialization function.
void uip_setipid (u16_t id)
 uIP initialization function.
void uip_listen (u16_t port)
 Start listening to the specified port.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t port)
 Connect to a remote host using TCP.
void uip_send (const void *data, int len)
 Send data on the current connection.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
+void uip_process (u8_t flag)
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
u16_t uip_udpchksum (void)
 Calculate the UDP checksum of the packet in uip_buf and uip_appdata.

Variables

u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
u16_t uip_len
 The length of the packet in the uip_buf buffer.
uip_connuip_conn
 Pointer to the current TCP connection.
+uip_conn uip_conns [UIP_CONNS]
+u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
+uip_udp_connuip_udp_conn
 The current UDP connection.
+uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
uip_stats uip_stat
 The uIP TCP/IP statistics.
+u8_t uip_flags
+uip_ipaddr_t uip_hostaddr
+uip_ipaddr_t uip_netmask
+uip_ipaddr_t uip_draddr
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00137.html b/Target/Source/third_party/uip/doc/html/a00137.html new file mode 100644 index 00000000..a79d7768 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00137.html @@ -0,0 +1,52 @@ + + +uIP 1.0: uip/uip_arch.h File Reference + + + + + + +

uip/uip_arch.h File Reference


Detailed Description

+Declarations of architecture specific functions. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file uip_arch.h. +

+#include "uip.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Functions

void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00138.html b/Target/Source/third_party/uip/doc/html/a00138.html new file mode 100644 index 00000000..9de50d15 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00138.html @@ -0,0 +1,70 @@ + + +uIP 1.0: uip/uip_arp.c File Reference + + + + + + +

uip/uip_arp.c File Reference


Detailed Description

+Implementation of the ARP Address Resolution Protocol. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file uip_arp.c. +

+#include "uip_arp.h"
+#include <string.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define ARP_REQUEST   1
+#define ARP_REPLY   2
+#define ARP_HWTYPE_ETH   1
+#define BUF   ((struct arp_hdr *)&uip_buf[0])
+#define IPBUF   ((struct ethip_hdr *)&uip_buf[0])

Functions

+void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_timer (void)
 Periodic ARP processing function.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00139.html b/Target/Source/third_party/uip/doc/html/a00139.html new file mode 100644 index 00000000..7f1603e9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00139.html @@ -0,0 +1,77 @@ + + +uIP 1.0: uip/uip_arp.h File Reference + + + + + + +

uip/uip_arp.h File Reference


Detailed Description

+Macros and definitions for the ARP module. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+ +

+Definition in file uip_arp.h. +

+#include "uip.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  uip_eth_hdr
 The Ethernet header. More...

Defines

+#define UIP_ETHTYPE_ARP   0x0806
+#define UIP_ETHTYPE_IP   0x0800
+#define UIP_ETHTYPE_IP6   0x86dd
+#define uip_arp_ipin()
#define uip_setethaddr(eaddr)
 Specifiy the Ethernet MAC address.

Functions

+void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
void uip_arp_timer (void)
 Periodic ARP processing function.

Variables

+uip_eth_addr uip_ethaddr
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00140.html b/Target/Source/third_party/uip/doc/html/a00140.html new file mode 100644 index 00000000..faf55a89 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00140.html @@ -0,0 +1,143 @@ + + +uIP 1.0: uip/uipopt.h File Reference + + + + + + +

uip/uipopt.h File Reference


Detailed Description

+Configuration options for uIP. +

+

Author:
Adam Dunkels <adam@dunkels.com>
+This file is used for tweaking various configuration options for uIP. You should make a copy of this file into one of your project's directories instead of editing this example "uipopt.h" file that comes with the uIP distribution. +

+Definition in file uipopt.h. +

+#include "uip-conf.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Static configuration options

These configuration options can be used for setting the IP address settings statically, but only if UIP_FIXEDADDR is set to 1. The configuration options for a specific node includes IP address, netmask and default router as well as the Ethernet address. The netmask, default router and Ethernet address are appliciable only if uIP should be run over Ethernet.

+All of these should be changed to suit your project.

#define UIP_FIXEDADDR
 Determines if uIP should use a fixed IP address or not.
#define UIP_PINGADDRCONF
 Ping IP address asignment.
#define UIP_FIXEDETHADDR
 Specifies if the uIP ARP module should be compiled with a fixed Ethernet MAC address or not.

IP configuration options

#define UIP_TTL   64
 The IP TTL (time to live) of IP packets sent by uIP.
#define UIP_REASSEMBLY
 Turn on support for IP packet reassembly.
+#define UIP_REASS_MAXAGE   40
 The maximum time an IP fragment should wait in the reassembly buffer before it is dropped.

UDP configuration options

+#define UIP_UDP
 Toggles wether UDP support should be compiled in or not.
#define UIP_UDP_CHECKSUMS
 Toggles if UDP checksums should be used or not.
+#define UIP_UDP_CONNS
 The maximum amount of concurrent UDP connections.

TCP configuration options

#define UIP_ACTIVE_OPEN
 Determines if support for opening connections from uIP should be compiled in.
#define UIP_CONNS
 The maximum number of simultaneously open TCP connections.
#define UIP_LISTENPORTS
 The maximum number of simultaneously listening TCP ports.
#define UIP_URGDATA
 Determines if support for TCP urgent data notification should be compiled in.
#define UIP_RTO   3
 The initial retransmission timeout counted in timer pulses.
#define UIP_MAXRTX   8
 The maximum number of times a segment should be retransmitted before the connection should be aborted.
#define UIP_MAXSYNRTX   5
 The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful.
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
 The TCP maximum segment size.
#define UIP_RECEIVE_WINDOW
 The size of the advertised receiver's window.
#define UIP_TIME_WAIT_TIMEOUT   120
 How long a connection should stay in the TIME_WAIT state.

ARP configuration options

#define UIP_ARPTAB_SIZE
 The size of the ARP table.
#define UIP_ARP_MAXAGE   120
 The maxium age of ARP table entries measured in 10ths of seconds.

General configuration options

#define UIP_BUFSIZE
 The size of the uIP packet buffer.
#define UIP_STATISTICS
 Determines if statistics support should be compiled in.
#define UIP_LOGGING
 Determines if logging of certain events should be compiled in.
#define UIP_BROADCAST
 Broadcast support.
#define UIP_LLH_LEN
 The link level header length.
void uip_log (char *msg)
 Print out a uIP log message.

CPU architecture configuration

The CPU architecture configuration is where the endianess of the CPU on which uIP is to be run is specified. Most CPUs today are little endian, and the most notable exception are the Motorolas which are big endian. The BYTE_ORDER macro should be changed to reflect the CPU architecture on which uIP is to be run.

#define UIP_BYTE_ORDER
 The byte order of the CPU architecture on which uIP is to be run.

Defines

+#define UIP_LITTLE_ENDIAN   3412
+#define UIP_BIG_ENDIAN   1234
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00141.html b/Target/Source/third_party/uip/doc/html/a00141.html new file mode 100644 index 00000000..313b7f17 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00141.html @@ -0,0 +1,83 @@ + + +uIP 1.0: unix/uip-conf.h File Reference + + + + + + +

unix/uip-conf.h File Reference


Detailed Description

+An example uIP configuration file. +

+

Author:
Adam Dunkels <adam@sics.se>
+ +

+Definition in file uip-conf.h. +

+#include <inttypes.h>
+#include "webserver.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Project-specific configuration options

uIP has a number of configuration options that can be overridden for each project. These are kept in a project-specific uip-conf.h file and all configuration names have the prefix UIP_CONF.

+#define UIP_CONF_MAX_CONNECTIONS
 Maximum number of TCP connections.
+#define UIP_CONF_MAX_LISTENPORTS
 Maximum number of listening TCP ports.
+#define UIP_CONF_BUFFER_SIZE
 uIP buffer size.
+#define UIP_CONF_BYTE_ORDER
 CPU byte order.
+#define UIP_CONF_LOGGING
 Logging on or off.
+#define UIP_CONF_UDP
 UDP support on or off.
+#define UIP_CONF_UDP_CHECKSUMS
 UDP checksums on or off.
+#define UIP_CONF_STATISTICS
 uIP statistics on or off
typedef uint8_t u8_t
 8 bit datatype
typedef uint16_t u16_t
 16 bit datatype
typedef unsigned short uip_stats_t
 Statistics datatype.
+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00142.html b/Target/Source/third_party/uip/doc/html/a00142.html new file mode 100644 index 00000000..5178da4a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00142.html @@ -0,0 +1,690 @@ + + +uIP 1.0: Protothreads + + + + + +

Protothreads


Detailed Description

+Protothreads are a type of lightweight stackless threads designed for severly memory constrained systems such as deeply embedded systems or sensor network nodes. +

+Protothreads provides linear code execution for event-driven systems implemented in C. Protothreads can be used with or without an RTOS.

+Protothreads are a extremely lightweight, stackless type of threads that provides a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without complex state machines or full multi-threading. Protothreads provides conditional blocking inside C functions.

+The advantage of protothreads over a purely event-driven approach is that protothreads provides a sequential code structure that allows for blocking functions. In purely event-driven systems, blocking must be implemented by manually breaking the function into two pieces - one for the piece of code before the blocking call and one for the code after the blocking call. This makes it hard to use control structures such as if() conditionals and while() loops.

+The advantage of protothreads over ordinary threads is that a protothread do not require a separate stack. In memory constrained systems, the overhead of allocating multiple stacks can consume large amounts of the available memory. In contrast, each protothread only requires between two and twelve bytes of state, depending on the architecture.

+

Note:
Because protothreads do not save the stack context across a blocking call, local variables are not preserved when the protothread blocks. This means that local variables should be used with utmost care - if in doubt, do not use local variables inside a protothread!
+Main features:

+

    +
  • No machine specific code - the protothreads library is pure C
+

+

    +
  • Does not use error-prone functions such as longjmp()
+

+

    +
  • Very small RAM overhead - only two bytes per protothread
+

+

    +
  • Can be used with or without an OS
+

+

    +
  • Provides blocking wait without full multi-threading or stack-switching
+

+Examples applications:

+

    +
  • Memory constrained systems
+

+

    +
  • Event-driven protocol stacks
+

+

    +
  • Deeply embedded systems
+

+

    +
  • Sensor network nodes
+

+The protothreads API consists of four basic operations: initialization: PT_INIT(), execution: PT_BEGIN(), conditional blocking: PT_WAIT_UNTIL() and exit: PT_END(). On top of these, two convenience functions are built: reversed condition blocking: PT_WAIT_WHILE() and protothread blocking: PT_WAIT_THREAD().

+

See also:
Protothreads API documentation
+The protothreads library is released under a BSD-style license that allows for both non-commercial and commercial usage. The only requirement is that credit is given.

+Authors

+The protothreads library was written by Adam Dunkels <adam@sics.se> with support from Oliver Schmidt <ol.sc@web.de>.

+Protothreads

+Protothreads are a extremely lightweight, stackless threads that provides a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without using complex state machines or full multi-threading. Protothreads provides conditional blocking inside a C function.

+In memory constrained systems, such as deeply embedded systems, traditional multi-threading may have a too large memory overhead. In traditional multi-threading, each thread requires its own stack, that typically is over-provisioned. The stacks may use large parts of the available memory.

+The main advantage of protothreads over ordinary threads is that protothreads are very lightweight: a protothread does not require its own stack. Rather, all protothreads run on the same stack and context switching is done by stack rewinding. This is advantageous in memory constrained systems, where a stack for a thread might use a large part of the available memory. A protothread only requires only two bytes of memory per protothread. Moreover, protothreads are implemented in pure C and do not require any machine-specific assembler code.

+A protothread runs within a single C function and cannot span over other functions. A protothread may call normal C functions, but cannot block inside a called function. Blocking inside nested function calls is instead made by spawning a separate protothread for each potentially blocking function. The advantage of this approach is that blocking is explicit: the programmer knows exactly which functions that block that which functions the never blocks.

+Protothreads are similar to asymmetric co-routines. The main difference is that co-routines uses a separate stack for each co-routine, whereas protothreads are stackless. The most similar mechanism to protothreads are Python generators. These are also stackless constructs, but have a different purpose. Protothreads provides blocking contexts inside a C function, whereas Python generators provide multiple exit points from a generator function.

+Local variables

+
Note:
Because protothreads do not save the stack context across a blocking call, local variables are not preserved when the protothread blocks. This means that local variables should be used with utmost care - if in doubt, do not use local variables inside a protothread!
+

+Scheduling

+A protothread is driven by repeated calls to the function in which the protothread is running. Each time the function is called, the protothread will run until it blocks or exits. Thus the scheduling of protothreads is done by the application that uses protothreads.

+Implementation

+Protothreads are implemented using local continuations. A local continuation represents the current state of execution at a particular place in the program, but does not provide any call history or local variables. A local continuation can be set in a specific function to capture the state of the function. After a local continuation has been set can be resumed in order to restore the state of the function at the point where the local continuation was set.

+Local continuations can be implemented in a variety of ways:

+

    +
  1. by using machine specific assembler code,
  2. by using standard C constructs, or
  3. by using compiler extensions.
+

+The first way works by saving and restoring the processor state, except for stack pointers, and requires between 16 and 32 bytes of memory per protothread. The exact amount of memory required depends on the architecture.

+The standard C implementation requires only two bytes of state per protothread and utilizes the C switch() statement in a non-obvious way that is similar to Duff's device. This implementation does, however, impose a slight restriction to the code that uses protothreads in that the code cannot use switch() statements itself.

+Certain compilers has C extensions that can be used to implement protothreads. GCC supports label pointers that can be used for this purpose. With this implementation, protothreads require 4 bytes of RAM per protothread. +

+ + + + + + + +

+

+ + + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  pt.h
 Protothreads implementation.

Modules

 Local continuations
 Local continuations form the basis for implementing protothreads.

Data Structures

struct  pt

Initialization

#define PT_INIT(pt)
 Initialize a protothread.

Declaration and definition

#define PT_THREAD(name_args)
 Declaration of a protothread.
#define PT_BEGIN(pt)
 Declare the start of a protothread inside the C function implementing the protothread.
#define PT_END(pt)
 Declare the end of a protothread.

Blocked wait

#define PT_WAIT_UNTIL(pt, condition)
 Block and wait until condition is true.
#define PT_WAIT_WHILE(pt, cond)
 Block and wait while condition is true.

Hierarchical protothreads

#define PT_WAIT_THREAD(pt, thread)
 Block and wait until a child protothread completes.
#define PT_SPAWN(pt, child, thread)
 Spawn a child protothread and wait until it exits.

Exiting and restarting

#define PT_RESTART(pt)
 Restart the protothread.
#define PT_EXIT(pt)
 Exit the protothread.

Calling a protothread

#define PT_SCHEDULE(f)
 Schedule a protothread.

Yielding from a protothread

#define PT_YIELD(pt)
 Yield from the current protothread.
#define PT_YIELD_UNTIL(pt, cond)
 Yield from the protothread until a condition occurs.

Defines

+#define PT_WAITING   0
+#define PT_EXITED   1
+#define PT_ENDED   2
+#define PT_YIELDED   3
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define PT_BEGIN pt   ) 
+
+ + + + + +
+   + + +

+Declare the start of a protothread inside the C function implementing the protothread. +

+This macro is used to declare the starting point of a protothread. It should be placed at the start of the function in which the protothread runs. All C statements above the PT_BEGIN() invokation will be executed each time the protothread is scheduled.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 115 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_END pt   ) 
+
+ + + + + +
+   + + +

+Declare the end of a protothread. +

+This macro is used for declaring that a protothread ends. It must always be used together with a matching PT_BEGIN() macro.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 127 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_EXIT pt   ) 
+
+ + + + + +
+   + + +

+Exit the protothread. +

+This macro causes the protothread to exit. If the protothread was spawned by another protothread, the parent protothread will become unblocked and can continue to run.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+ +

+Definition at line 246 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_INIT pt   ) 
+
+ + + + + +
+   + + +

+Initialize a protothread. +

+Initializes a protothread. Initialization must be done prior to starting to execute the protothread.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+
See also:
PT_SPAWN()
+
Examples:
+dhcpc.c.
+

+Definition at line 80 of file pt.h. +

+Referenced by httpd_appcall().

+

+ + + + +
+ + + + + + + + + +
#define PT_RESTART pt   ) 
+
+ + + + + +
+   + + +

+Restart the protothread. +

+This macro will block and cause the running protothread to restart its execution at the place of the PT_BEGIN() call.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 229 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_SCHEDULE  ) 
+
+ + + + + +
+   + + +

+Schedule a protothread. +

+This function shedules a protothread. The return value of the function is non-zero if the protothread is running or zero if the protothread has exited.

+

Parameters:
+ + +
f The call to the C function implementing the protothread to be scheduled
+
+ +

+Definition at line 271 of file pt.h.

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define PT_SPAWN pt,
child,
thread   ) 
+
+ + + + + +
+   + + +

+Spawn a child protothread and wait until it exits. +

+This macro spawns a child protothread and waits until it exits. The macro can only be used within a protothread.

+

Parameters:
+ + + + +
pt A pointer to the protothread control structure.
child A pointer to the child protothread's control structure.
thread The child protothread with arguments
+
+ +

+Definition at line 206 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_THREAD name_args   ) 
+
+ + + + + +
+   + + +

+Declaration of a protothread. +

+This macro is used to declare a protothread. All protothreads must be declared with this macro.

+

Parameters:
+ + +
name_args The name and arguments of the C function implementing the protothread.
+
+
Examples:
+dhcpc.c, and smtp.c.
+

+Definition at line 100 of file pt.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PT_WAIT_THREAD pt,
thread   ) 
+
+ + + + + +
+   + + +

+Block and wait until a child protothread completes. +

+This macro schedules a child protothread. The current protothread will block until the child protothread completes.

+

Note:
The child protothread must be manually initialized with the PT_INIT() function before this function is used.
+
Parameters:
+ + + +
pt A pointer to the protothread control structure.
thread The child protothread with arguments
+
+
See also:
PT_SPAWN()
+ +

+Definition at line 192 of file pt.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PT_WAIT_UNTIL pt,
condition   ) 
+
+ + + + + +
+   + + +

+Block and wait until condition is true. +

+This macro blocks the protothread until the specified condition is true.

+

Parameters:
+ + + +
pt A pointer to the protothread control structure.
condition The condition.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 148 of file pt.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PT_WAIT_WHILE pt,
cond   ) 
+
+ + + + + +
+   + + +

+Block and wait while condition is true. +

+This function blocks and waits while condition is true. See PT_WAIT_UNTIL().

+

Parameters:
+ + + +
pt A pointer to the protothread control structure.
cond The condition.
+
+ +

+Definition at line 167 of file pt.h.

+

+ + + + +
+ + + + + + + + + +
#define PT_YIELD pt   ) 
+
+ + + + + +
+   + + +

+Yield from the current protothread. +

+This function will yield the protothread, thereby allowing other processing to take place in the system.

+

Parameters:
+ + +
pt A pointer to the protothread control structure.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 290 of file pt.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PT_YIELD_UNTIL pt,
cond   ) 
+
+ + + + + +
+   + + +

+Yield from the protothread until a condition occurs. +

+

Parameters:
+ + + +
pt A pointer to the protothread control structure.
cond The condition.
+
+This function will yield the protothread, until the specified condition evaluates to true. +

+Definition at line 310 of file pt.h.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00143.html b/Target/Source/third_party/uip/doc/html/a00143.html new file mode 100644 index 00000000..1744c72d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00143.html @@ -0,0 +1,54 @@ + + +uIP 1.0: Applications + + + + + +

Applications


Detailed Description

+The uIP distribution contains a number of example applications that can be either used directory or studied when learning to develop applications for uIP. +

+ +

+ + + + + + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+


Modules

 DNS resolver
 The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address.
 SMTP E-mail sender
 The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is the standard way of sending and transfering e-mail on the Internet.
 Hello, world
 A small example showing how to write applications with protosockets.
 Web client
 This example shows a HTTP client that is able to download web pages and files from web servers.
 Web server
 The uIP web server is a very simplistic implementation of an HTTP server.
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00144.html b/Target/Source/third_party/uip/doc/html/a00144.html new file mode 100644 index 00000000..126ce15d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00144.html @@ -0,0 +1,328 @@ + + +uIP 1.0: uIP configuration functions + + + + + +

uIP configuration functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+The uIP configuration functions are used for setting run-time parameters in uIP such as IP addresses. +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define uip_sethostaddr(addr)
 Set the IP address of this host.
#define uip_gethostaddr(addr)
 Get the IP address of this host.
#define uip_setdraddr(addr)
 Set the default router's IP address.
#define uip_setnetmask(addr)
 Set the netmask.
#define uip_getdraddr(addr)
 Get the default router's IP address.
#define uip_getnetmask(addr)
 Get the netmask.
#define uip_setethaddr(eaddr)
 Specifiy the Ethernet MAC address.
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define uip_getdraddr addr   ) 
+
+ + + + + +
+   + + +

+Get the default router's IP address. +

+

Parameters:
+ + +
addr A pointer to a uip_ipaddr_t variable that will be filled in with the IP address of the default router.
+
+ +

+Definition at line 161 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_gethostaddr addr   ) 
+
+ + + + + +
+   + + +

+Get the IP address of this host. +

+The IP address is represented as a 4-byte array where the first octet of the IP address is put in the first member of the 4-byte array.

+Example:

 uip_ipaddr_t hostaddr;
+
+ uip_gethostaddr(&hostaddr);
+
Parameters:
+ + +
addr A pointer to a uip_ipaddr_t variable that will be filled in with the currently configured IP address.
+
+ +

+Definition at line 126 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_getnetmask addr   ) 
+
+ + + + + +
+   + + +

+Get the netmask. +

+

Parameters:
+ + +
addr A pointer to a uip_ipaddr_t variable that will be filled in with the value of the netmask.
+
+ +

+Definition at line 171 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_setdraddr addr   ) 
+
+ + + + + +
+   + + +

+Set the default router's IP address. +

+

Parameters:
+ + +
addr A pointer to a uip_ipaddr_t variable containing the IP address of the default router.
+
+
See also:
uip_ipaddr()
+ +

+Definition at line 138 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_setethaddr eaddr   ) 
+
+ + + + + +
+   + + +

+Specifiy the Ethernet MAC address. +

+The ARP code needs to know the MAC address of the Ethernet card in order to be able to respond to ARP queries and to generate working Ethernet headers.

+

Note:
This macro only specifies the Ethernet MAC address to the ARP code. It cannot be used to change the MAC address of the Ethernet card.
+
Parameters:
+ + +
eaddr A pointer to a struct uip_eth_addr containing the Ethernet MAC address of the Ethernet card.
+
+ +

+Definition at line 134 of file uip_arp.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_sethostaddr addr   ) 
+
+ + + + + +
+   + + +

+Set the IP address of this host. +

+The IP address is represented as a 4-byte array where the first octet of the IP address is put in the first member of the 4-byte array.

+Example:

 uip_ipaddr_t addr;
+
+ uip_ipaddr(&addr, 192,168,1,2);
+ uip_sethostaddr(&addr);
+
Parameters:
+ + +
addr A pointer to an IP address of type uip_ipaddr_t;
+
+
See also:
uip_ipaddr()
+
Examples:
+dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 106 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_setnetmask addr   ) 
+
+ + + + + +
+   + + +

+Set the netmask. +

+

Parameters:
+ + +
addr A pointer to a uip_ipaddr_t variable containing the IP address of the netmask.
+
+
See also:
uip_ipaddr()
+ +

+Definition at line 150 of file uip.h.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00145.html b/Target/Source/third_party/uip/doc/html/a00145.html new file mode 100644 index 00000000..b396117c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00145.html @@ -0,0 +1,106 @@ + + +uIP 1.0: uIP initialization functions + + + + + +

uIP initialization functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+The uIP initialization functions are used for booting uIP. +

+ +

+ + + + + + + + + +

Functions

void uip_init (void)
 uIP initialization function.
void uip_setipid (u16_t id)
 uIP initialization function.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void uip_init void   ) 
+
+ + + + + +
+   + + +

+uIP initialization function. +

+This function should be called at boot up to initilize the uIP TCP/IP stack.

Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 379 of file uip.c. +

+References UIP_LISTENPORTS.

+

+ + + + +
+ + + + + + + + + +
void uip_setipid u16_t  id  ) 
+
+ + + + + +
+   + + +

+uIP initialization function. +

+This function may be used at boot time to set the initial ip_id. +

+Definition at line 181 of file uip.c.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00146.html b/Target/Source/third_party/uip/doc/html/a00146.html new file mode 100644 index 00000000..d0a0093e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00146.html @@ -0,0 +1,383 @@ + + +uIP 1.0: uIP device driver functions + + + + + +

uIP device driver functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+These functions are used by a network device driver for interacting with uIP. +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define uip_input()
 Process an incoming packet.
#define uip_periodic(conn)
 Periodic processing for a connection identified by its number.
+#define uip_conn_active(conn)   (uip_conns[conn].tcpstateflags != UIP_CLOSED)
#define uip_periodic_conn(conn)
 Perform periodic processing for a connection identified by a pointer to its structure.
#define uip_poll_conn(conn)
 Reuqest that a particular connection should be polled.
#define uip_udp_periodic(conn)
 Periodic processing for a UDP connection identified by its number.
#define uip_udp_periodic_conn(conn)
 Periodic processing for a UDP connection identified by a pointer to its structure.

Variables

u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
+


Define Documentation

+

+ + + + +
+ + + + +  + + + + +
#define uip_input  ) 
+
+ + + + + +
+   + + +

+Process an incoming packet. +

+This function should be called when the device driver has received a packet from the network. The packet from the device driver must be present in the uip_buf buffer, and the length of the packet should be placed in the uip_len variable.

+When the function returns, there may be an outbound packet placed in the uip_buf packet buffer. If so, the uip_len variable is set to the length of the packet. If no packet is to be sent out, the uip_len variable is set to 0.

+The usual way of calling the function is presented by the source code below.

  uip_len = devicedriver_poll();
+  if(uip_len > 0) {
+    uip_input();
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+

+

Note:
If you are writing a uIP device driver that needs ARP (Address Resolution Protocol), e.g., when running uIP over Ethernet, you will need to call the uIP ARP code before calling this function:
  #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+  uip_len = ethernet_devicedrver_poll();
+  if(uip_len > 0) {
+    if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
+      uip_arp_ipin();
+      uip_input();
+      if(uip_len > 0) {
+        uip_arp_out();
+        ethernet_devicedriver_send();
+      }
+    } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
+      uip_arp_arpin();
+      if(uip_len > 0) {
+        ethernet_devicedriver_send();
+      }
+    }
+
+
Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 257 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_periodic conn   ) 
+
+ + + + + +
+   + + +

+Periodic processing for a connection identified by its number. +

+This function does the necessary periodic processing (timers, polling) for a uIP TCP conneciton, and should be called when the periodic uIP timer goes off. It should be called for every connection, regardless of whether they are open of closed.

+When the function returns, it may have an outbound packet waiting for service in the uIP packet buffer, and if so the uip_len variable is set to a value larger than zero. The device driver should be called to send out the packet.

+The ususal way of calling the function is through a for() loop like this:

  for(i = 0; i < UIP_CONNS; ++i) {
+    uip_periodic(i);
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+

+

Note:
If you are writing a uIP device driver that needs ARP (Address Resolution Protocol), e.g., when running uIP over Ethernet, you will need to call the uip_arp_out() function before calling the device driver:
  for(i = 0; i < UIP_CONNS; ++i) {
+    uip_periodic(i);
+    if(uip_len > 0) {
+      uip_arp_out();
+      ethernet_devicedriver_send();
+    }
+  }
+
+
Parameters:
+ + +
conn The number of the connection which is to be periodically polled.
+
+
Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 301 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_periodic_conn conn   ) 
+
+ + + + + +
+   + + +

+Perform periodic processing for a connection identified by a pointer to its structure. +

+Same as uip_periodic() but takes a pointer to the actual uip_conn struct instead of an integer as its argument. This function can be used to force periodic processing of a specific connection.

+

Parameters:
+ + +
conn A pointer to the uip_conn struct for the connection to be processed.
+
+ +

+Definition at line 323 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_poll_conn conn   ) 
+
+ + + + + +
+   + + +

+Reuqest that a particular connection should be polled. +

+Similar to uip_periodic_conn() but does not perform any timer processing. The application is polled for new data.

+

Parameters:
+ + +
conn A pointer to the uip_conn struct for the connection to be processed.
+
+ +

+Definition at line 337 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_udp_periodic conn   ) 
+
+ + + + + +
+   + + +

+Periodic processing for a UDP connection identified by its number. +

+This function is essentially the same as uip_periodic(), but for UDP connections. It is called in a similar fashion as the uip_periodic() function:

  for(i = 0; i < UIP_UDP_CONNS; i++) {
+    uip_udp_periodic(i);
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+

+

Note:
As for the uip_periodic() function, special care has to be taken when using uIP together with ARP and Ethernet:
  for(i = 0; i < UIP_UDP_CONNS; i++) {
+    uip_udp_periodic(i);
+    if(uip_len > 0) {
+      uip_arp_out();
+      ethernet_devicedriver_send();
+    }
+  }
+
+
Parameters:
+ + +
conn The number of the UDP connection to be processed.
+
+
Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 373 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_udp_periodic_conn conn   ) 
+
+ + + + + +
+   + + +

+Periodic processing for a UDP connection identified by a pointer to its structure. +

+Same as uip_udp_periodic() but takes a pointer to the actual uip_conn struct instead of an integer as its argument. This function can be used to force periodic processing of a specific connection.

+

Parameters:
+ + +
conn A pointer to the uip_udp_conn struct for the connection to be processed.
+
+ +

+Definition at line 390 of file uip.h.

+


Variable Documentation

+

+ + + + +
+ + + + +
u8_t uip_buf[UIP_BUFSIZE+2]
+
+ + + + + +
+   + + +

+The uIP packet buffer. +

+The uip_buf array is used to hold incoming and outgoing packets. The device driver should place incoming data into this buffer. When sending data, the device driver should read the link level headers and the TCP/IP headers from this buffer. The size of the link level headers is configured by the UIP_LLH_LEN define.

+

Note:
The application data need not be placed in this buffer, so the device driver must read it from the place pointed to by the uip_appdata pointer as illustrated by the following example:
 void
+ devicedriver_send(void)
+ {
+    hwsend(&uip_buf[0], UIP_LLH_LEN);
+    if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
+      hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
+    } else {
+      hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
+      hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
+    }
+ }
+
+ +

+Definition at line 139 of file uip.c. +

+Referenced by uip_process().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00147.html b/Target/Source/third_party/uip/doc/html/a00147.html new file mode 100644 index 00000000..d6a6213d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00147.html @@ -0,0 +1,1046 @@ + + +uIP 1.0: uIP application functions + + + + + +

uIP application functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+Functions used by an application running of top of uIP. +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define uip_outstanding(conn)   ((conn)->len)
#define uip_datalen()
 The length of any incoming data that is currently avaliable (if avaliable) in the uip_appdata buffer.
#define uip_urgdatalen()
 The length of any out-of-band data (urgent data) that has arrived on the connection.
#define uip_close()
 Close the current connection.
#define uip_abort()
 Abort the current connection.
#define uip_stop()
 Tell the sending host to stop sending data.
+#define uip_stopped(conn)
 Find out if the current connection has been previously stopped with uip_stop().
#define uip_restart()
 Restart the current connection, if is has previously been stopped with uip_stop().
#define uip_udpconnection()
 Is the current connection a UDP connection?
#define uip_newdata()
 Is new incoming data available?
#define uip_acked()
 Has previously sent data been acknowledged?
#define uip_connected()
 Has the connection just been connected?
#define uip_closed()
 Has the connection been closed by the other end?
#define uip_aborted()
 Has the connection been aborted by the other end?
#define uip_timedout()
 Has the connection timed out?
#define uip_rexmit()
 Do we need to retransmit previously data?
#define uip_poll()
 Is the connection being polled by uIP?
+#define uip_initialmss()
 Get the initial maxium segment size (MSS) of the current connection.
#define uip_mss()
 Get the current maxium segment size that can be sent on the current connection.
#define uip_udp_remove(conn)
 Removed a UDP connection.
#define uip_udp_bind(conn, port)
 Bind a UDP connection to a local port.
#define uip_udp_send(len)
 Send a UDP datagram of length len on the current connection.

Functions

void uip_listen (u16_t port)
 Start listening to the specified port.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t port)
 Connect to a remote host using TCP.
void uip_send (const void *data, int len)
 Send data on the current connection.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
+


Define Documentation

+

+ + + + +
+ + + + +  + + + + +
#define uip_abort  ) 
+
+ + + + + +
+   + + +

+Abort the current connection. +

+This function will abort (reset) the current connection, and is usually used when an error has occured that prevents using the uip_close() function.

Examples:
+webclient.c.
+

+Definition at line 581 of file uip.h. +

+Referenced by httpd_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_aborted  ) 
+
+ + + + + +
+   + + +

+Has the connection been aborted by the other end? +

+Non-zero if the current connection has been aborted (reset) by the remote host.

Examples:
+smtp.c, telnetd.c, and webclient.c.
+

+Definition at line 680 of file uip.h. +

+Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_acked  ) 
+
+ + + + + +
+   + + +

+Has previously sent data been acknowledged? +

+Will reduce to non-zero if the previously sent data has been acknowledged by the remote host. This means that the application can send new data.

Examples:
+telnetd.c, and webclient.c.
+

+Definition at line 648 of file uip.h. +

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_close  ) 
+
+ + + + + +
+   + + +

+Close the current connection. +

+This function will close the current connection in a nice way.

Examples:
+telnetd.c.
+

+Definition at line 570 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_closed  ) 
+
+ + + + + +
+   + + +

+Has the connection been closed by the other end? +

+Is non-zero if the connection has been closed by the remote host. The application may then do the necessary clean-ups.

Examples:
+smtp.c, telnetd.c, and webclient.c.
+

+Definition at line 670 of file uip.h. +

+Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_connected  ) 
+
+ + + + + +
+   + + +

+Has the connection just been connected? +

+Reduces to non-zero if the current connection has been connected to a remote host. This will happen both if the connection has been actively opened (with uip_connect()) or passively opened (with uip_listen()).

Examples:
+hello-world.c, telnetd.c, and webclient.c.
+

+Definition at line 660 of file uip.h. +

+Referenced by hello_world_appcall(), httpd_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_datalen  ) 
+
+ + + + + +
+   + + +

+The length of any incoming data that is currently avaliable (if avaliable) in the uip_appdata buffer. +

+The test function uip_data() must first be used to check if there is any data available at all.

Examples:
+dhcpc.c, telnetd.c, and webclient.c.
+

+Definition at line 550 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_mss  ) 
+
+ + + + + +
+   + + +

+Get the current maxium segment size that can be sent on the current connection. +

+The current maxiumum segment size that can be sent on the connection is computed from the receiver's window and the MSS of the connection (which also is available by calling uip_initialmss()).

Examples:
+telnetd.c, and webclient.c.
+

+Definition at line 737 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_newdata  ) 
+
+ + + + + +
+   + + +

+Is new incoming data available? +

+Will reduce to non-zero if there is new data for the application present at the uip_appdata pointer. The size of the data is avaliable through the uip_len variable.

Examples:
+dhcpc.c, resolv.c, telnetd.c, and webclient.c.
+

+Definition at line 637 of file uip.h. +

+Referenced by psock_newdata(), resolv_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_poll  ) 
+
+ + + + + +
+   + + +

+Is the connection being polled by uIP? +

+Is non-zero if the reason the application is invoked is that the current connection has been idle for a while and should be polled.

+The polling event can be used for sending data without having to wait for the remote host to send data.

Examples:
+resolv.c, telnetd.c, and webclient.c.
+

+Definition at line 716 of file uip.h. +

+Referenced by httpd_appcall(), resolv_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_restart  ) 
+
+ + + + + +
+   + + +

+Restart the current connection, if is has previously been stopped with uip_stop(). +

+This function will open the receiver's window again so that we start receiving data for the current connection. +

+Definition at line 610 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_rexmit  ) 
+
+ + + + + +
+   + + +

+Do we need to retransmit previously data? +

+Reduces to non-zero if the previously sent data has been lost in the network, and the application should retransmit it. The application should send the exact same data as it did the last time, using the uip_send() function.

Examples:
+telnetd.c, and webclient.c.
+

+Definition at line 702 of file uip.h. +

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + +  + + + + +
#define uip_stop  ) 
+
+ + + + + +
+   + + +

+Tell the sending host to stop sending data. +

+This function will close our receiver's window so that we stop receiving data for the current connection. +

+Definition at line 591 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_timedout  ) 
+
+ + + + + +
+   + + +

+Has the connection timed out? +

+Non-zero if the current connection has been aborted due to too many retransmissions.

Examples:
+smtp.c, telnetd.c, and webclient.c.
+

+Definition at line 690 of file uip.h. +

+Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

+

+ + + + +
+ + + + + + + + + + + + +
#define uip_udp_bind conn,
port   ) 
+
+ + + + + +
+   + + +

+Bind a UDP connection to a local port. +

+

Parameters:
+ + + +
conn A pointer to the uip_udp_conn structure for the connection.
port The local port number, in network byte order.
+
+
Examples:
+dhcpc.c.
+

+Definition at line 787 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_udp_remove conn   ) 
+
+ + + + + +
+   + + +

+Removed a UDP connection. +

+

Parameters:
+ + +
conn A pointer to the uip_udp_conn structure for the connection.
+
+
Examples:
+resolv.c.
+

+Definition at line 775 of file uip.h. +

+Referenced by resolv_conf().

+

+ + + + +
+ + + + + + + + + +
#define uip_udp_send len   ) 
+
+ + + + + +
+   + + +

+Send a UDP datagram of length len on the current connection. +

+This function can only be called in response to a UDP event (poll or newdata). The data must be present in the uip_buf buffer, at the place pointed to by the uip_appdata pointer.

+

Parameters:
+ + +
len The length of the data in the uip_buf buffer.
+
+
Examples:
+resolv.c.
+

+Definition at line 800 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_udpconnection  ) 
+
+ + + + + +
+   + + +

+Is the current connection a UDP connection? +

+This function checks whether the current connection is a UDP connection. +

+Definition at line 626 of file uip.h.

+

+ + + + +
+ + + + +  + + + + +
#define uip_urgdatalen  ) 
+
+ + + + + +
+   + + +

+The length of any out-of-band data (urgent data) that has arrived on the connection. +

+

Note:
The configuration parameter UIP_URGDATA must be set for this function to be enabled.
+ +

+Definition at line 561 of file uip.h.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
struct uip_conn* uip_connect uip_ipaddr_t ripaddr,
u16_t  port
+
+ + + + + +
+   + + +

+Connect to a remote host using TCP. +

+This function is used to start a new connection to the specified port on the specied host. It allocates a new connection identifier, sets the connection to the SYN_SENT state and sets the retransmission timer to 0. This will cause a TCP SYN segment to be sent out the next time this connection is periodically processed, which usually is done within 0.5 seconds after the call to uip_connect().

+

Note:
This function is avaliable only if support for active open has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.

+Since this function requires the port number to be in network byte order, a conversion using HTONS() or htons() is necessary.

+
 uip_ipaddr_t ipaddr;
+
+ uip_ipaddr(&ipaddr, 192,168,1,2);
+ uip_connect(&ipaddr, HTONS(80));
+

+

Parameters:
+ + + +
ripaddr The IP address of the remote hot.
port A 16-bit port number in network byte order.
+
+
Returns:
A pointer to the uIP connection identifier for the new connection, or NULL if no connection could be allocated.
+
Examples:
+smtp.c, and webclient.c.
+

+Definition at line 407 of file uip.c. +

+References htons(), uip_conn::lport, uip_conn::tcpstateflags, UIP_CLOSED, uip_conn, UIP_CONNS, and uip_conns. +

+Referenced by smtp_send(), and webclient_get().

+

+ + + + +
+ + + + + + + + + +
void uip_listen u16_t  port  ) 
+
+ + + + + +
+   + + +

+Start listening to the specified port. +

+

Note:
Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
+
 uip_listen(HTONS(80));
+

+

Parameters:
+ + +
port A 16-bit port number in network byte order.
+
+
Examples:
+hello-world.c, and telnetd.c.
+

+Definition at line 529 of file uip.c. +

+References UIP_LISTENPORTS. +

+Referenced by hello_world_init(), and httpd_init().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void uip_send const void *  data,
int  len
+
+ + + + + +
+   + + +

+Send data on the current connection. +

+This function is used to send out a single segment of TCP data. Only applications that have been invoked by uIP for event processing can send data.

+The amount of data that actually is sent out after a call to this funcion is determined by the maximum amount of data TCP allows. uIP will automatically crop the data so that only the appropriate amount of data is sent. The function uip_mss() can be used to query uIP for the amount of data that actually will be sent.

+

Note:
This function does not guarantee that the sent data will arrive at the destination. If the data is lost in the network, the application will be invoked with the uip_rexmit() event being set. The application will then have to resend the data using this function.
+
Parameters:
+ + + +
data A pointer to the data which is to be sent.
len The maximum amount of data bytes to be sent.
+
+
Examples:
+dhcpc.c, telnetd.c, and webclient.c.
+

+Definition at line 1888 of file uip.c. +

+References uip_sappdata, and uip_slen.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
struct uip_udp_conn* uip_udp_new uip_ipaddr_t ripaddr,
u16_t  rport
+
+ + + + + +
+   + + +

+Set up a new UDP connection. +

+This function sets up a new UDP connection. The function will automatically allocate an unused local port for the new connection. However, another port can be chosen by using the uip_udp_bind() call, after the uip_udp_new() function has been called.

+Example:

 uip_ipaddr_t addr;
+ struct uip_udp_conn *c;
+ 
+ uip_ipaddr(&addr, 192,168,2,1);
+ c = uip_udp_new(&addr, HTONS(12345));
+ if(c != NULL) {
+   uip_udp_bind(c, HTONS(12344));
+ }
+
Parameters:
+ + + +
ripaddr The IP address of the remote host.
rport The remote port number in network byte order.
+
+
Returns:
The uip_udp_conn structure for the new connection or NULL if no connection could be allocated.
+
Examples:
+dhcpc.c, and resolv.c.
+

+Definition at line 473 of file uip.c. +

+References htons(), uip_udp_conn::lport, uip_udp_conn, UIP_UDP_CONNS, and uip_udp_conns. +

+Referenced by resolv_conf().

+

+ + + + +
+ + + + + + + + + +
void uip_unlisten u16_t  port  ) 
+
+ + + + + +
+   + + +

+Stop listening to the specified port. +

+

Note:
Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
+

+

Parameters:
+ + +
port A 16-bit port number in network byte order.
+
+ +

+Definition at line 518 of file uip.c. +

+References UIP_LISTENPORTS.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00148.html b/Target/Source/third_party/uip/doc/html/a00148.html new file mode 100644 index 00000000..1e26ef76 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00148.html @@ -0,0 +1,634 @@ + + +uIP 1.0: uIP conversion functions + + + + + +

uIP conversion functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+These functions can be used for converting between different data formats used by uIP. +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define uip_ipaddr(addr, addr0, addr1, addr2, addr3)
 Construct an IP address from four bytes.
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
 Construct an IPv6 address from eight 16-bit words.
#define uip_ipaddr_copy(dest, src)
 Copy an IP address to another IP address.
#define uip_ipaddr_cmp(addr1, addr2)
 Compare two IP addresses.
#define uip_ipaddr_maskcmp(addr1, addr2, mask)
 Compare two IP addresses with netmasks.
#define uip_ipaddr_mask(dest, src, mask)
 Mask out the network part of an IP address.
#define uip_ipaddr1(addr)
 Pick the first octet of an IP address.
#define uip_ipaddr2(addr)
 Pick the second octet of an IP address.
#define uip_ipaddr3(addr)
 Pick the third octet of an IP address.
#define uip_ipaddr4(addr)
 Pick the fourth octet of an IP address.
#define HTONS(n)
 Convert 16-bit quantity from host byte order to network byte order.
+#define ntohs   htons

Functions

u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define HTONS  ) 
+
+ + + + + +
+   + + +

+Convert 16-bit quantity from host byte order to network byte order. +

+This macro is primarily used for converting constants from host byte order to network byte order. For converting variables to network byte order, use the htons() function instead.

Examples:
+dhcpc.c, hello-world.c, resolv.c, smtp.c, and telnetd.c.
+

+Definition at line 1070 of file uip.h. +

+Referenced by hello_world_init(), htons(), httpd_init(), resolv_appcall(), resolv_conf(), smtp_send(), uip_arp_arpin(), and uip_process().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define uip_ip6addr addr,
addr0,
addr1,
addr2,
addr3,
addr4,
addr5,
addr6,
addr7   ) 
+
+ + + + + +
+   + + +

+Construct an IPv6 address from eight 16-bit words. +

+This function constructs an IPv6 address. +

+Definition at line 852 of file uip.h.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
#define uip_ipaddr addr,
addr0,
addr1,
addr2,
addr3   ) 
+
+ + + + + +
+   + + +

+Construct an IP address from four bytes. +

+This function constructs an IP address of the type that uIP handles internally from four bytes. The function is handy for specifying IP addresses to use with e.g. the uip_connect() function.

+Example:

 uip_ipaddr_t ipaddr;
+ struct uip_conn *c;
+ 
+ uip_ipaddr(&ipaddr, 192,168,1,2);
+ c = uip_connect(&ipaddr, HTONS(80));
+

+

Parameters:
+ + + + + + +
addr A pointer to a uip_ipaddr_t variable that will be filled in with the IP address.
addr0 The first octet of the IP address.
addr1 The second octet of the IP address.
addr2 The third octet of the IP address.
addr3 The forth octet of the IP address.
+
+
Examples:
+dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 840 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_ipaddr1 addr   ) 
+
+ + + + + +
+   + + +

+Pick the first octet of an IP address. +

+Picks out the first octet of an IP address.

+Example:

 uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr1(&ipaddr);
+

+In the example above, the variable "octet" will contain the value 1.

Examples:
+dhcpc.c.
+

+Definition at line 995 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_ipaddr2 addr   ) 
+
+ + + + + +
+   + + +

+Pick the second octet of an IP address. +

+Picks out the second octet of an IP address.

+Example:

 uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr2(&ipaddr);
+

+In the example above, the variable "octet" will contain the value 2.

Examples:
+dhcpc.c.
+

+Definition at line 1015 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_ipaddr3 addr   ) 
+
+ + + + + +
+   + + +

+Pick the third octet of an IP address. +

+Picks out the third octet of an IP address.

+Example:

 uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr3(&ipaddr);
+

+In the example above, the variable "octet" will contain the value 3.

Examples:
+dhcpc.c.
+

+Definition at line 1035 of file uip.h.

+

+ + + + +
+ + + + + + + + + +
#define uip_ipaddr4 addr   ) 
+
+ + + + + +
+   + + +

+Pick the fourth octet of an IP address. +

+Picks out the fourth octet of an IP address.

+Example:

 uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr4(&ipaddr);
+

+In the example above, the variable "octet" will contain the value 4.

Examples:
+dhcpc.c.
+

+Definition at line 1055 of file uip.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define uip_ipaddr_cmp addr1,
addr2   ) 
+
+ + + + + +
+   + + +

+Compare two IP addresses. +

+Compares two IP addresses.

+Example:

 uip_ipaddr_t ipaddr1, ipaddr2;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
+    printf("They are the same");
+ }
+

+

Parameters:
+ + + +
addr1 The first IP address.
addr2 The second IP address.
+
+ +

+Definition at line 911 of file uip.h. +

+Referenced by uip_arp_arpin(), uip_arp_out(), and uip_process().

+

+ + + + +
+ + + + + + + + + + + + +
#define uip_ipaddr_copy dest,
src   ) 
+
+ + + + + +
+   + + +

+Copy an IP address to another IP address. +

+Copies an IP address from one place to another.

+Example:

 uip_ipaddr_t ipaddr1, ipaddr2;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr_copy(&ipaddr2, &ipaddr1);
+

+

Parameters:
+ + + +
dest The destination for the copy.
src The source from where to copy.
+
+
Examples:
+smtp.c.
+

+Definition at line 882 of file uip.h. +

+Referenced by smtp_configure(), uip_arp_out(), and uip_process().

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define uip_ipaddr_mask dest,
src,
mask   ) 
+
+ + + + + +
+   + + +

+Mask out the network part of an IP address. +

+Masks out the network part of an IP address, given the address and the netmask.

+Example:

 uip_ipaddr_t ipaddr1, ipaddr2, netmask;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr(&netmask, 255,255,255,0);
+ uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask);
+

+In the example above, the variable "ipaddr2" will contain the IP address 192.168.1.0.

+

Parameters:
+ + + + +
dest Where the result is to be placed.
src The IP address.
mask The netmask.
+
+ +

+Definition at line 972 of file uip.h.

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define uip_ipaddr_maskcmp addr1,
addr2,
mask   ) 
+
+ + + + + +
+   + + +

+Compare two IP addresses with netmasks. +

+Compares two IP addresses with netmasks. The masks are used to mask out the bits that are to be compared.

+Example:

 uip_ipaddr_t ipaddr1, ipaddr2, mask;
+
+ uip_ipaddr(&mask, 255,255,255,0);
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr(&ipaddr2, 192,16,1,3);
+ if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) {
+    printf("They are the same");
+ }
+

+

Parameters:
+ + + + +
addr1 The first IP address.
addr2 The second IP address.
mask The netmask.
+
+ +

+Definition at line 941 of file uip.h. +

+Referenced by uip_arp_out().

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
u16_t htons u16_t  val  ) 
+
+ + + + + +
+   + + +

+Convert 16-bit quantity from host byte order to network byte order. +

+This function is primarily used for converting variables from host byte order to network byte order. For converting constants to network byte order, use the HTONS() macro instead.

Examples:
+example-mainloop-with-arp.c, resolv.c, and webclient.c.
+

+Definition at line 1882 of file uip.c. +

+References HTONS. +

+Referenced by uip_chksum(), uip_connect(), uip_ipchksum(), uip_udp_new(), and webclient_get().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00149.html b/Target/Source/third_party/uip/doc/html/a00149.html new file mode 100644 index 00000000..49210754 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00149.html @@ -0,0 +1,68 @@ + + +uIP 1.0: Variables used in uIP device drivers + + + + + +

Variables used in uIP device drivers
+ +[The uIP TCP/IP stack] +


Detailed Description

+uIP has a few global variables that are used in device drivers for uIP. +

+ +

+ + + + + + +

Variables

u16_t uip_len
 The length of the packet in the uip_buf buffer.
+


Variable Documentation

+

+ + + + +
+ + + + +
u16_t uip_len
+
+ + + + + +
+   + + +

+The length of the packet in the uip_buf buffer. +

+The global variable uip_len holds the length of the packet in the uip_buf buffer.

+When the network device driver calls the uIP input function, uip_len should be set to the length of the packet in the uip_buf buffer.

+When sending packets, the device driver should use the contents of the uip_len variable to determine the length of the outgoing packet.

Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 155 of file uip.c. +

+Referenced by uip_arp_arpin(), uip_process(), and uip_split_output().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00150.html b/Target/Source/third_party/uip/doc/html/a00150.html new file mode 100644 index 00000000..928e13e9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00150.html @@ -0,0 +1,1248 @@ + + +uIP 1.0: The uIP TCP/IP stack + + + + + +

The uIP TCP/IP stack


Detailed Description

+uIP is an implementation of the TCP/IP protocol stack intended for small 8-bit and 16-bit microcontrollers. +

+uIP provides the necessary protocols for Internet communication, with a very small code footprint and RAM requirements - the uIP code size is on the order of a few kilobytes and RAM usage is on the order of a few hundred bytes. +

+ + + + + + + +

+

+ + + +

+

+ + + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  uip.h
 Header file for the uIP TCP/IP stack.
file  uip.c
 The uIP TCP/IP stack code.

Modules

 uIP configuration functions
 The uIP configuration functions are used for setting run-time parameters in uIP such as IP addresses.
 uIP initialization functions
 The uIP initialization functions are used for booting uIP.
 uIP device driver functions
 These functions are used by a network device driver for interacting with uIP.
 uIP application functions
 Functions used by an application running of top of uIP.
 uIP conversion functions
 These functions can be used for converting between different data formats used by uIP.
 Variables used in uIP device drivers
 uIP has a few global variables that are used in device drivers for uIP.
 uIP Address Resolution Protocol
 The Address Resolution Protocol ARP is used for mapping between IP addresses and link level addresses such as the Ethernet MAC addresses.
 uIP TCP throughput booster hack
 The basic uIP TCP implementation only allows each TCP connection to have a single TCP segment in flight at any given time.
 Architecture specific uIP functions
 The functions in the architecture specific module implement the IP check sum and 32-bit additions.

Data Structures

struct  uip_conn
 Representation of a uIP TCP connection. More...
struct  uip_udp_conn
 Representation of a uIP UDP connection. More...
struct  uip_stats
 The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. More...
struct  uip_tcpip_hdr
struct  uip_icmpip_hdr
struct  uip_udpip_hdr
struct  uip_eth_addr
 Representation of a 48-bit Ethernet address. More...

Defines

+#define UIP_ACKDATA   1
+#define UIP_NEWDATA   2
+#define UIP_REXMIT   4
+#define UIP_POLL   8
+#define UIP_CLOSE   16
+#define UIP_ABORT   32
+#define UIP_CONNECTED   64
+#define UIP_TIMEDOUT   128
+#define UIP_DATA   1
+#define UIP_TIMER   2
+#define UIP_POLL_REQUEST   3
+#define UIP_UDP_SEND_CONN   4
+#define UIP_UDP_TIMER   5
+#define UIP_CLOSED   0
+#define UIP_SYN_RCVD   1
+#define UIP_SYN_SENT   2
+#define UIP_ESTABLISHED   3
+#define UIP_FIN_WAIT_1   4
+#define UIP_FIN_WAIT_2   5
+#define UIP_CLOSING   6
+#define UIP_TIME_WAIT   7
+#define UIP_LAST_ACK   8
+#define UIP_TS_MASK   15
+#define UIP_STOPPED   16
#define UIP_APPDATA_SIZE
 The buffer size available for user data in the uip_buf buffer.
+#define UIP_PROTO_ICMP   1
+#define UIP_PROTO_TCP   6
+#define UIP_PROTO_UDP   17
+#define UIP_PROTO_ICMP6   58
+#define UIP_IPH_LEN   20
+#define UIP_UDPH_LEN   8
+#define UIP_TCPH_LEN   20
+#define UIP_IPUDPH_LEN   (UIP_UDPH_LEN + UIP_IPH_LEN)
+#define UIP_IPTCPH_LEN   (UIP_TCPH_LEN + UIP_IPH_LEN)
+#define UIP_TCPIP_HLEN   UIP_IPTCPH_LEN
+#define TCP_FIN   0x01
+#define TCP_SYN   0x02
+#define TCP_RST   0x04
+#define TCP_PSH   0x08
+#define TCP_ACK   0x10
+#define TCP_URG   0x20
+#define TCP_CTL   0x3f
+#define TCP_OPT_END   0
+#define TCP_OPT_NOOP   1
+#define TCP_OPT_MSS   2
+#define TCP_OPT_MSS_LEN   4
+#define ICMP_ECHO_REPLY   0
+#define ICMP_ECHO   8
+#define ICMP6_ECHO_REPLY   129
+#define ICMP6_ECHO   128
+#define ICMP6_NEIGHBOR_SOLICITATION   135
+#define ICMP6_NEIGHBOR_ADVERTISEMENT   136
+#define ICMP6_FLAG_S   (1 << 6)
+#define ICMP6_OPTION_SOURCE_LINK_ADDRESS   1
+#define ICMP6_OPTION_TARGET_LINK_ADDRESS   2
+#define BUF   ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define FBUF   ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
+#define ICMPBUF   ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define UDPBUF   ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define UIP_STAT(s)
+#define UIP_LOG(m)

Typedefs

+typedef u16_t uip_ip4addr_t [2]
 Repressentation of an IP address.
+typedef u16_t uip_ip6addr_t [8]
+typedef uip_ip4addr_t uip_ipaddr_t

Functions

+void uip_process (u8_t flag)
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
u16_t uip_udpchksum (void)
 Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
void uip_setipid (u16_t id)
 uIP initialization function.
void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
void uip_init (void)
 uIP initialization function.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t rport)
 Connect to a remote host using TCP.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
void uip_listen (u16_t port)
 Start listening to the specified port.
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
void uip_send (const void *data, int len)
 Send data on the current connection.

Variables

void * uip_appdata
 Pointer to the application data in the packet buffer.
uip_connuip_conn
 Pointer to the current TCP connection.
+uip_conn uip_conns [UIP_CONNS]
+uip_udp_connuip_udp_conn
 The current UDP connection.
+uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
uip_stats uip_stat
 The uIP TCP/IP statistics.
+u8_t uip_flags
+uip_ipaddr_t uip_hostaddr
+uip_ipaddr_t uip_netmask
+uip_ipaddr_t uip_draddr
+uip_ipaddr_t uip_hostaddr
+uip_ipaddr_t uip_draddr
+uip_ipaddr_t uip_netmask
+uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}
u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
+void * uip_sappdata
u16_t uip_len
 The length of the packet in the uip_buf buffer.
+u16_t uip_slen
+u8_t uip_flags
uip_connuip_conn
 Pointer to the current TCP connection.
+uip_conn uip_conns [UIP_CONNS]
+u16_t uip_listenports [UIP_LISTENPORTS]
+uip_udp_connuip_udp_conn
 The current UDP connection.
+uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
+u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
+


Define Documentation

+

+ + + + +
+ + + + +
#define UIP_APPDATA_SIZE
+
+ + + + + +
+   + + +

+The buffer size available for user data in the uip_buf buffer. +

+This macro holds the available size for user data in the uip_buf buffer. The macro is intended to be used for checking bounds of available user data.

+Example:

 snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
+
+

+Definition at line 1506 of file uip.h.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
u16_t htons u16_t  val  ) 
+
+ + + + + +
+   + + +

+Convert 16-bit quantity from host byte order to network byte order. +

+This function is primarily used for converting variables from host byte order to network byte order. For converting constants to network byte order, use the HTONS() macro instead. +

+Definition at line 1882 of file uip.c. +

+References HTONS. +

+Referenced by uip_chksum(), uip_connect(), uip_ipchksum(), uip_udp_new(), and webclient_get().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void uip_add32 u8_t op32,
u16_t  op16
+
+ + + + + +
+   + + +

+Carry out a 32-bit addition. +

+Because not all architectures for which uIP is intended has native 32-bit arithmetic, uIP uses an external C function for doing the required 32-bit additions in the TCP protocol processing. This function should add the two arguments and place the result in the global variable uip_acc32.

+

Note:
The 32-bit integer pointed to by the op32 parameter and the result in the uip_acc32 variable are in network byte order (big endian).
+
Parameters:
+ + + +
op32 A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).
op16 A 16-bit integer in host byte order.
+
+ +

+Definition at line 249 of file uip.c. +

+Referenced by uip_split_output().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
u16_t uip_chksum u16_t buf,
u16_t  len
+
+ + + + + +
+   + + +

+Calculate the Internet checksum over a buffer. +

+The Internet checksum is the one's complement of the one's complement sum of all 16-bit words in the buffer.

+See RFC1071.

+

Parameters:
+ + + +
buf A pointer to the buffer over which the checksum is to be computed.
len The length of the buffer over which the checksum is to be computed.
+
+
Returns:
The Internet checksum of the buffer.
+ +

+Definition at line 311 of file uip.c. +

+References htons().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
struct uip_conn* uip_connect uip_ipaddr_t ripaddr,
u16_t  port
+
+ + + + + +
+   + + +

+Connect to a remote host using TCP. +

+This function is used to start a new connection to the specified port on the specied host. It allocates a new connection identifier, sets the connection to the SYN_SENT state and sets the retransmission timer to 0. This will cause a TCP SYN segment to be sent out the next time this connection is periodically processed, which usually is done within 0.5 seconds after the call to uip_connect().

+

Note:
This function is avaliable only if support for active open has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.

+Since this function requires the port number to be in network byte order, a conversion using HTONS() or htons() is necessary.

+
 uip_ipaddr_t ipaddr;
+
+ uip_ipaddr(&ipaddr, 192,168,1,2);
+ uip_connect(&ipaddr, HTONS(80));
+

+

Parameters:
+ + + +
ripaddr The IP address of the remote hot.
port A 16-bit port number in network byte order.
+
+
Returns:
A pointer to the uIP connection identifier for the new connection, or NULL if no connection could be allocated.
+ +

+Definition at line 407 of file uip.c. +

+References htons(), uip_conn::lport, uip_conn::tcpstateflags, UIP_CLOSED, uip_conn, uip_conns, and UIP_CONNS. +

+Referenced by smtp_send(), and webclient_get().

+

+ + + + +
+ + + + + + + + + +
void uip_init void   ) 
+
+ + + + + +
+   + + +

+uIP initialization function. +

+This function should be called at boot up to initilize the uIP TCP/IP stack. +

+Definition at line 379 of file uip.c. +

+References UIP_LISTENPORTS.

+

+ + + + +
+ + + + + + + + + +
u16_t uip_ipchksum void   ) 
+
+ + + + + +
+   + + +

+Calculate the IP header checksum of the packet header in uip_buf. +

+The IP header checksum is the Internet checksum of the 20 bytes of the IP header.

+

Returns:
The IP header checksum of the IP header in the uip_buf buffer.
+ +

+Definition at line 318 of file uip.c. +

+References DEBUG_PRINTF, htons(), UIP_IPH_LEN, and UIP_LLH_LEN. +

+Referenced by uip_process(), and uip_split_output().

+

+ + + + +
+ + + + + + + + + +
void uip_listen u16_t  port  ) 
+
+ + + + + +
+   + + +

+Start listening to the specified port. +

+

Note:
Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
+
 uip_listen(HTONS(80));
+

+

Parameters:
+ + +
port A 16-bit port number in network byte order.
+
+ +

+Definition at line 529 of file uip.c. +

+References UIP_LISTENPORTS. +

+Referenced by hello_world_init(), and httpd_init().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void uip_send const void *  data,
int  len
+
+ + + + + +
+   + + +

+Send data on the current connection. +

+This function is used to send out a single segment of TCP data. Only applications that have been invoked by uIP for event processing can send data.

+The amount of data that actually is sent out after a call to this funcion is determined by the maximum amount of data TCP allows. uIP will automatically crop the data so that only the appropriate amount of data is sent. The function uip_mss() can be used to query uIP for the amount of data that actually will be sent.

+

Note:
This function does not guarantee that the sent data will arrive at the destination. If the data is lost in the network, the application will be invoked with the uip_rexmit() event being set. The application will then have to resend the data using this function.
+
Parameters:
+ + + +
data A pointer to the data which is to be sent.
len The maximum amount of data bytes to be sent.
+
+ +

+Definition at line 1888 of file uip.c. +

+References uip_sappdata, and uip_slen.

+

+ + + + +
+ + + + + + + + + +
void uip_setipid u16_t  id  ) 
+
+ + + + + +
+   + + +

+uIP initialization function. +

+This function may be used at boot time to set the initial ip_id. +

+Definition at line 181 of file uip.c.

+

+ + + + +
+ + + + + + + + + +
u16_t uip_tcpchksum void   ) 
+
+ + + + + +
+   + + +

+Calculate the TCP checksum of the packet in uip_buf and uip_appdata. +

+The TCP checksum is the Internet checksum of data contents of the TCP segment, and a pseudo-header as defined in RFC793.

+

Returns:
The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.
+ +

+Definition at line 364 of file uip.c. +

+References UIP_PROTO_TCP. +

+Referenced by uip_split_output().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
struct uip_udp_conn* uip_udp_new uip_ipaddr_t ripaddr,
u16_t  rport
+
+ + + + + +
+   + + +

+Set up a new UDP connection. +

+This function sets up a new UDP connection. The function will automatically allocate an unused local port for the new connection. However, another port can be chosen by using the uip_udp_bind() call, after the uip_udp_new() function has been called.

+Example:

 uip_ipaddr_t addr;
+ struct uip_udp_conn *c;
+ 
+ uip_ipaddr(&addr, 192,168,2,1);
+ c = uip_udp_new(&addr, HTONS(12345));
+ if(c != NULL) {
+   uip_udp_bind(c, HTONS(12344));
+ }
+
Parameters:
+ + + +
ripaddr The IP address of the remote host.
rport The remote port number in network byte order.
+
+
Returns:
The uip_udp_conn structure for the new connection or NULL if no connection could be allocated.
+ +

+Definition at line 473 of file uip.c. +

+References htons(), uip_udp_conn::lport, uip_udp_conn, uip_udp_conns, and UIP_UDP_CONNS. +

+Referenced by resolv_conf().

+

+ + + + +
+ + + + + + + + + +
u16_t uip_udpchksum void   ) 
+
+ + + + + +
+   + + +

+Calculate the UDP checksum of the packet in uip_buf and uip_appdata. +

+The UDP checksum is the Internet checksum of data contents of the UDP segment, and a pseudo-header as defined in RFC768.

+

Returns:
The UDP checksum of the UDP segment in uip_buf and pointed to by uip_appdata.
+ +

+Referenced by uip_process().

+

+ + + + +
+ + + + + + + + + +
void uip_unlisten u16_t  port  ) 
+
+ + + + + +
+   + + +

+Stop listening to the specified port. +

+

Note:
Since this function expects the port number in network byte order, a conversion using HTONS() or htons() is necessary.
+

+

Parameters:
+ + +
port A 16-bit port number in network byte order.
+
+ +

+Definition at line 518 of file uip.c. +

+References UIP_LISTENPORTS.

+


Variable Documentation

+

+ + + + +
+ + + + +
void* uip_appdata
+
+ + + + + +
+   + + +

+Pointer to the application data in the packet buffer. +

+This pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling uip_send(). +

+Definition at line 143 of file uip.c. +

+Referenced by uip_process(), and uip_split_output().

+

+ + + + +
+ + + + +
void* uip_appdata
+
+ + + + + +
+   + + +

+Pointer to the application data in the packet buffer. +

+This pointer points to the application data when the application is called. If the application wishes to send data, the application may use this space to write the data into before calling uip_send().

Examples:
+dhcpc.c, resolv.c, telnetd.c, and webclient.c.
+

+Definition at line 143 of file uip.c. +

+Referenced by uip_process(), and uip_split_output().

+

+ + + + +
+ + + + +
u8_t uip_buf[UIP_BUFSIZE+2]
+
+ + + + + +
+   + + +

+The uIP packet buffer. +

+The uip_buf array is used to hold incoming and outgoing packets. The device driver should place incoming data into this buffer. When sending data, the device driver should read the link level headers and the TCP/IP headers from this buffer. The size of the link level headers is configured by the UIP_LLH_LEN define.

+

Note:
The application data need not be placed in this buffer, so the device driver must read it from the place pointed to by the uip_appdata pointer as illustrated by the following example:
 void
+ devicedriver_send(void)
+ {
+    hwsend(&uip_buf[0], UIP_LLH_LEN);
+    if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
+      hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
+    } else {
+      hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
+      hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
+    }
+ }
+
+ +

+Definition at line 139 of file uip.c. +

+Referenced by uip_process().

+

+ + + + +
+ + + + +
struct uip_conn* uip_conn
+
+ + + + + +
+   + + +

+Pointer to the current TCP connection. +

+The uip_conn pointer can be used to access the current TCP connection. +

+Definition at line 163 of file uip.c. +

+Referenced by uip_connect().

+

+ + + + +
+ + + + +
struct uip_conn* uip_conn
+
+ + + + + +
+   + + +

+Pointer to the current TCP connection. +

+The uip_conn pointer can be used to access the current TCP connection.

Examples:
+hello-world.c, smtp.c, and webclient.c.
+

+Definition at line 163 of file uip.c. +

+Referenced by uip_connect().

+

+ + + + +
+ + + + +
u16_t uip_len
+
+ + + + + +
+   + + +

+The length of the packet in the uip_buf buffer. +

+The global variable uip_len holds the length of the packet in the uip_buf buffer.

+When the network device driver calls the uIP input function, uip_len should be set to the length of the packet in the uip_buf buffer.

+When sending packets, the device driver should use the contents of the uip_len variable to determine the length of the outgoing packet. +

+Definition at line 155 of file uip.c. +

+Referenced by uip_arp_arpin(), uip_process(), and uip_split_output().

+

+ + + + +
+ + + + +
struct uip_stats uip_stat
+
+ + + + + +
+   + + +

+The uIP TCP/IP statistics. +

+This is the variable in which the uIP TCP/IP statistics are gathered. +

+Referenced by uip_process().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00151.html b/Target/Source/third_party/uip/doc/html/a00151.html new file mode 100644 index 00000000..356a06de --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00151.html @@ -0,0 +1,221 @@ + + +uIP 1.0: Architecture specific uIP functions + + + + + +

Architecture specific uIP functions
+ +[The uIP TCP/IP stack] +


Detailed Description

+The functions in the architecture specific module implement the IP check sum and 32-bit additions. +

+The IP checksum calculation is the most computationally expensive operation in the TCP/IP stack and it therefore pays off to implement this in efficient assembler. The purpose of the uip-arch module is to let the checksum functions to be implemented in architecture specific assembler. +

+ + + + + + + +

+

+ + + + + + + + + + + + + + + + +

Files

file  uip_arch.h
 Declarations of architecture specific functions.

Functions

void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.

Variables

+u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void uip_add32 u8_t op32,
u16_t  op16
+
+ + + + + +
+   + + +

+Carry out a 32-bit addition. +

+Because not all architectures for which uIP is intended has native 32-bit arithmetic, uIP uses an external C function for doing the required 32-bit additions in the TCP protocol processing. This function should add the two arguments and place the result in the global variable uip_acc32.

+

Note:
The 32-bit integer pointed to by the op32 parameter and the result in the uip_acc32 variable are in network byte order (big endian).
+
Parameters:
+ + + +
op32 A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).
op16 A 16-bit integer in host byte order.
+
+ +

+Definition at line 249 of file uip.c. +

+Referenced by uip_split_output().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
u16_t uip_chksum u16_t buf,
u16_t  len
+
+ + + + + +
+   + + +

+Calculate the Internet checksum over a buffer. +

+The Internet checksum is the one's complement of the one's complement sum of all 16-bit words in the buffer.

+See RFC1071.

+

Note:
This function is not called in the current version of uIP, but future versions might make use of it.
+
Parameters:
+ + + +
buf A pointer to the buffer over which the checksum is to be computed.
len The length of the buffer over which the checksum is to be computed.
+
+
Returns:
The Internet checksum of the buffer.
+
+

+ + + + +
+ + + + + + + + + +
u16_t uip_ipchksum void   ) 
+
+ + + + + +
+   + + +

+Calculate the IP header checksum of the packet header in uip_buf. +

+The IP header checksum is the Internet checksum of the 20 bytes of the IP header.

+

Returns:
The IP header checksum of the IP header in the uip_buf buffer.
+
+

+ + + + +
+ + + + + + + + + +
u16_t uip_tcpchksum void   ) 
+
+ + + + + +
+   + + +

+Calculate the TCP checksum of the packet in uip_buf and uip_appdata. +

+The TCP checksum is the Internet checksum of data contents of the TCP segment, and a pseudo-header as defined in RFC793.

+

Note:
The uip_appdata pointer that points to the packet data may point anywhere in memory, so it is not possible to simply calculate the Internet checksum of the contents of the uip_buf buffer.
+
Returns:
The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.
+
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00152.html b/Target/Source/third_party/uip/doc/html/a00152.html new file mode 100644 index 00000000..8163a92a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00152.html @@ -0,0 +1,205 @@ + + +uIP 1.0: uIP Address Resolution Protocol + + + + + +

uIP Address Resolution Protocol
+ +[The uIP TCP/IP stack] +


Detailed Description

+The Address Resolution Protocol ARP is used for mapping between IP addresses and link level addresses such as the Ethernet MAC addresses. +

+ARP uses broadcast queries to ask for the link level address of a known IP address and the host which is configured with the IP address for which the query was meant, will respond with its link level address.

+

Note:
This ARP implementation only supports Ethernet.
+ +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  uip_arp.h
 Macros and definitions for the ARP module.
file  uip_arp.c
 Implementation of the ARP Address Resolution Protocol.

Data Structures

struct  uip_eth_hdr
 The Ethernet header. More...

Defines

+#define UIP_ETHTYPE_ARP   0x0806
+#define UIP_ETHTYPE_IP   0x0800
+#define UIP_ETHTYPE_IP6   0x86dd
+#define uip_arp_ipin()
+#define ARP_REQUEST   1
+#define ARP_REPLY   2
+#define ARP_HWTYPE_ETH   1
+#define BUF   ((struct arp_hdr *)&uip_buf[0])
+#define IPBUF   ((struct ethip_hdr *)&uip_buf[0])

Functions

+void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
void uip_arp_timer (void)
 Periodic ARP processing function.

Variables

+uip_eth_addr uip_ethaddr
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void uip_arp_arpin void   ) 
+
+ + + + + +
+   + + +

+ARP processing for incoming ARP packets. +

+This function should be called by the device driver when an ARP packet has been received. The function will act differently depending on the ARP packet type: if it is a reply for a request that we previously sent out, the ARP cache will be filled in with the values from the ARP reply. If the incoming ARP packet is an ARP request for our IP address, an ARP reply packet is created and put into the uip_buf[] buffer.

+When the function returns, the value of the global variable uip_len indicates whether the device driver should send out a packet or not. If uip_len is zero, no packet should be sent. If uip_len is non-zero, it contains the length of the outbound packet that is present in the uip_buf[] buffer.

+This function expects an ARP packet with a prepended Ethernet header in the uip_buf[] buffer, and the length of the packet in the global variable uip_len.

Examples:
+example-mainloop-with-arp.c.
+

+Definition at line 278 of file uip_arp.c. +

+References uip_eth_addr::addr, ARP_REPLY, ARP_REQUEST, BUF, HTONS, uip_ethaddr, UIP_ETHTYPE_ARP, uip_hostaddr, uip_ipaddr_cmp, and uip_len.

+

+ + + + +
+ + + + + + + + + +
void uip_arp_out void   ) 
+
+ + + + + +
+   + + +

+Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request. +

+This function should be called before sending out an IP packet. The function checks the destination IP address of the IP packet to see what Ethernet MAC address that should be used as a destination MAC address on the Ethernet.

+If the destination IP address is in the local network (determined by logical ANDing of netmask and our IP address), the function checks the ARP cache to see if an entry for the destination IP address is found. If so, an Ethernet header is prepended and the function returns. If no ARP cache entry is found for the destination IP address, the packet in the uip_buf[] is replaced by an ARP request packet for the IP address. The IP packet is dropped and it is assumed that they higher level protocols (e.g., TCP) eventually will retransmit the dropped packet.

+If the destination IP address is not on the local network, the IP address of the default router is used instead.

+When the function returns, a packet is present in the uip_buf[] buffer, and the length of the packet is in the global variable uip_len.

Examples:
+example-mainloop-with-arp.c.
+

+Definition at line 354 of file uip_arp.c. +

+References uip_eth_addr::addr, IPBUF, UIP_ARPTAB_SIZE, uip_draddr, uip_hostaddr, uip_ipaddr_cmp, uip_ipaddr_copy, and uip_ipaddr_maskcmp.

+

+ + + + +
+ + + + + + + + + +
void uip_arp_timer void   ) 
+
+ + + + + +
+   + + +

+Periodic ARP processing function. +

+This function performs periodic timer processing in the ARP module and should be called at regular intervals. The recommended interval is 10 seconds between the calls.

Examples:
+example-mainloop-with-arp.c.
+

+Definition at line 142 of file uip_arp.c. +

+References UIP_ARP_MAXAGE, and UIP_ARPTAB_SIZE.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00153.html b/Target/Source/third_party/uip/doc/html/a00153.html new file mode 100644 index 00000000..089f5ecd --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00153.html @@ -0,0 +1,1059 @@ + + +uIP 1.0: Configuration options for uIP + + + + + +

Configuration options for uIP


Detailed Description

+uIP is configured using the per-project configuration file uipopt.h. +

+This file contains all compile-time options for uIP and should be tweaked to match each specific project. The uIP distribution contains a documented example "uipopt.h" that can be copied and modified for each project.

+

Note:
Most of the configuration options in the uipopt.h should not be changed, but rather the per-project uip-conf.h file.
+ +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  uip-conf.h
 An example uIP configuration file.
file  uipopt.h
 Configuration options for uIP.

Project-specific configuration options

uIP has a number of configuration options that can be overridden for each project. These are kept in a project-specific uip-conf.h file and all configuration names have the prefix UIP_CONF.

+#define UIP_CONF_MAX_CONNECTIONS
 Maximum number of TCP connections.
+#define UIP_CONF_MAX_LISTENPORTS
 Maximum number of listening TCP ports.
+#define UIP_CONF_BUFFER_SIZE
 uIP buffer size.
+#define UIP_CONF_BYTE_ORDER
 CPU byte order.
+#define UIP_CONF_LOGGING
 Logging on or off.
+#define UIP_CONF_UDP
 UDP support on or off.
+#define UIP_CONF_UDP_CHECKSUMS
 UDP checksums on or off.
+#define UIP_CONF_STATISTICS
 uIP statistics on or off
typedef uint8_t u8_t
 8 bit datatype
typedef uint16_t u16_t
 16 bit datatype
typedef unsigned short uip_stats_t
 Statistics datatype.

Static configuration options

These configuration options can be used for setting the IP address settings statically, but only if UIP_FIXEDADDR is set to 1. The configuration options for a specific node includes IP address, netmask and default router as well as the Ethernet address. The netmask, default router and Ethernet address are appliciable only if uIP should be run over Ethernet.

+All of these should be changed to suit your project.

#define UIP_FIXEDADDR
 Determines if uIP should use a fixed IP address or not.
#define UIP_PINGADDRCONF
 Ping IP address asignment.
#define UIP_FIXEDETHADDR
 Specifies if the uIP ARP module should be compiled with a fixed Ethernet MAC address or not.

IP configuration options

#define UIP_TTL   64
 The IP TTL (time to live) of IP packets sent by uIP.
#define UIP_REASSEMBLY
 Turn on support for IP packet reassembly.
+#define UIP_REASS_MAXAGE   40
 The maximum time an IP fragment should wait in the reassembly buffer before it is dropped.

UDP configuration options

+#define UIP_UDP
 Toggles wether UDP support should be compiled in or not.
#define UIP_UDP_CHECKSUMS
 Toggles if UDP checksums should be used or not.
+#define UIP_UDP_CONNS
 The maximum amount of concurrent UDP connections.

TCP configuration options

#define UIP_ACTIVE_OPEN
 Determines if support for opening connections from uIP should be compiled in.
#define UIP_CONNS
 The maximum number of simultaneously open TCP connections.
#define UIP_LISTENPORTS
 The maximum number of simultaneously listening TCP ports.
#define UIP_URGDATA
 Determines if support for TCP urgent data notification should be compiled in.
#define UIP_RTO   3
 The initial retransmission timeout counted in timer pulses.
#define UIP_MAXRTX   8
 The maximum number of times a segment should be retransmitted before the connection should be aborted.
#define UIP_MAXSYNRTX   5
 The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful.
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
 The TCP maximum segment size.
#define UIP_RECEIVE_WINDOW
 The size of the advertised receiver's window.
#define UIP_TIME_WAIT_TIMEOUT   120
 How long a connection should stay in the TIME_WAIT state.

ARP configuration options

#define UIP_ARPTAB_SIZE
 The size of the ARP table.
#define UIP_ARP_MAXAGE   120
 The maxium age of ARP table entries measured in 10ths of seconds.

General configuration options

#define UIP_BUFSIZE
 The size of the uIP packet buffer.
#define UIP_STATISTICS
 Determines if statistics support should be compiled in.
#define UIP_LOGGING
 Determines if logging of certain events should be compiled in.
#define UIP_BROADCAST
 Broadcast support.
#define UIP_LLH_LEN
 The link level header length.
void uip_log (char *msg)
 Print out a uIP log message.

CPU architecture configuration

The CPU architecture configuration is where the endianess of the CPU on which uIP is to be run is specified. Most CPUs today are little endian, and the most notable exception are the Motorolas which are big endian. The BYTE_ORDER macro should be changed to reflect the CPU architecture on which uIP is to be run.

#define UIP_BYTE_ORDER
 The byte order of the CPU architecture on which uIP is to be run.

Appication specific configurations

An uIP application is implemented using a single application function that is called by uIP whenever a TCP/IP event occurs. The name of this function must be registered with uIP at compile time using the UIP_APPCALL definition.

+uIP applications can store the application state within the uip_conn structure by specifying the type of the application structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.

+The file containing the definitions must be included in the uipopt.h file.

+The following example illustrates how this can look.

void httpd_appcall(void);
+#define UIP_APPCALL     httpd_appcall
+
+struct httpd_state {
+  u8_t state;
+  u16_t count;
+  char *dataptr;
+  char *script;
+};
+typedef struct httpd_state uip_tcp_appstate_t
+


+#define UIP_APPCALL   smtp_appcall
 The name of the application function that uIP should call in response to TCP/IP events.
typedef smtp_state uip_tcp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.
typedef int uip_udp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

+#define UIP_LITTLE_ENDIAN   3412
+#define UIP_BIG_ENDIAN   1234
+


Define Documentation

+

+ + + + +
+ + + + +
#define UIP_ACTIVE_OPEN
+
+ + + + + +
+   + + +

+Determines if support for opening connections from uIP should be compiled in. +

+If the applications that are running on top of uIP for this project do not need to open outgoing TCP connections, this configration option can be turned off to reduce the code size of uIP. +

+Definition at line 233 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_ARP_MAXAGE   120
+
+ + + + + +
+   + + +

+The maxium age of ARP table entries measured in 10ths of seconds. +

+An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD default). +

+Definition at line 358 of file uipopt.h. +

+Referenced by uip_arp_timer().

+

+ + + + +
+ + + + +
#define UIP_ARPTAB_SIZE
+
+ + + + + +
+   + + +

+The size of the ARP table. +

+This option should be set to a larger value if this uIP node will have many connections from the local network. +

+Definition at line 349 of file uipopt.h. +

+Referenced by uip_arp_init(), uip_arp_out(), and uip_arp_timer().

+

+ + + + +
+ + + + +
#define UIP_BROADCAST
+
+ + + + + +
+   + + +

+Broadcast support. +

+This flag configures IP broadcast support. This is useful only together with UDP. +

+Definition at line 423 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_BUFSIZE
+
+ + + + + +
+   + + +

+The size of the uIP packet buffer. +

+The uIP packet buffer should not be smaller than 60 bytes, and does not need to be larger than 1500 bytes. Lower size results in lower TCP throughput, larger size results in higher TCP throughput. +

+Definition at line 379 of file uipopt.h. +

+Referenced by uip_split_output().

+

+ + + + +
+ + + + +
#define UIP_BYTE_ORDER
+
+ + + + + +
+   + + +

+The byte order of the CPU architecture on which uIP is to be run. +

+This option can be either BIG_ENDIAN (Motorola byte order) or LITTLE_ENDIAN (Intel byte order). +

+Definition at line 475 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_CONNS
+
+ + + + + +
+   + + +

+The maximum number of simultaneously open TCP connections. +

+Since the TCP connections are statically allocated, turning this configuration knob down results in less RAM used. Each TCP connection requires approximatly 30 bytes of memory.

Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 245 of file uipopt.h. +

+Referenced by uip_connect().

+

+ + + + +
+ + + + +
#define UIP_FIXEDADDR
+
+ + + + + +
+   + + +

+Determines if uIP should use a fixed IP address or not. +

+If uIP should use a fixed IP address, the settings are set in the uipopt.h file. If not, the macros uip_sethostaddr(), uip_setdraddr() and uip_setnetmask() should be used instead. +

+Definition at line 97 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_FIXEDETHADDR
+
+ + + + + +
+   + + +

+Specifies if the uIP ARP module should be compiled with a fixed Ethernet MAC address or not. +

+If this configuration option is 0, the macro uip_setethaddr() can be used to specify the Ethernet address at run-time. +

+Definition at line 127 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_LISTENPORTS
+
+ + + + + +
+   + + +

+The maximum number of simultaneously listening TCP ports. +

+Each listening TCP port requires 2 bytes of memory. +

+Definition at line 259 of file uipopt.h. +

+Referenced by uip_init(), uip_listen(), and uip_unlisten().

+

+ + + + +
+ + + + +
#define UIP_LLH_LEN
+
+ + + + + +
+   + + +

+The link level header length. +

+This is the offset into the uip_buf where the IP header can be found. For Ethernet, this should be set to 14. For SLIP, this should be set to 0. +

+Definition at line 448 of file uipopt.h. +

+Referenced by uip_ipchksum(), uip_process(), and uip_split_output().

+

+ + + + +
+ + + + +
#define UIP_LOGGING
+
+ + + + + +
+   + + +

+Determines if logging of certain events should be compiled in. +

+This is useful mostly for debugging. The function uip_log() must be implemented to suit the architecture of the project, if logging is turned on. +

+Definition at line 408 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_MAXRTX   8
+
+ + + + + +
+   + + +

+The maximum number of times a segment should be retransmitted before the connection should be aborted. +

+This should not be changed. +

+Definition at line 288 of file uipopt.h. +

+Referenced by uip_process().

+

+ + + + +
+ + + + +
#define UIP_MAXSYNRTX   5
+
+ + + + + +
+   + + +

+The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful. +

+This should not need to be changed. +

+Definition at line 297 of file uipopt.h. +

+Referenced by uip_process().

+

+ + + + +
+ + + + +
#define UIP_PINGADDRCONF
+
+ + + + + +
+   + + +

+Ping IP address asignment. +

+uIP uses a "ping" packets for setting its own IP address if this option is set. If so, uIP will start with an empty IP address and the destination IP address of the first incoming "ping" (ICMP echo) packet will be used for setting the hosts IP address.

+

Note:
This works only if UIP_FIXEDADDR is 0.
+ +

+Definition at line 114 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_REASSEMBLY
+
+ + + + + +
+   + + +

+Turn on support for IP packet reassembly. +

+uIP supports reassembly of fragmented IP packets. This features requires an additonal amount of RAM to hold the reassembly buffer and the reassembly code size is approximately 700 bytes. The reassembly buffer is of the same size as the uip_buf buffer (configured by UIP_BUFSIZE).

+

Note:
IP packet reassembly is not heavily tested.
+ +

+Definition at line 156 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_RECEIVE_WINDOW
+
+ + + + + +
+   + + +

+The size of the advertised receiver's window. +

+Should be set low (i.e., to the size of the uip_buf buffer) is the application is slow to process incoming data, or high (32768 bytes) if the application processes data quickly. +

+Definition at line 317 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_RTO   3
+
+ + + + + +
+   + + +

+The initial retransmission timeout counted in timer pulses. +

+This should not be changed. +

+Definition at line 280 of file uipopt.h. +

+Referenced by uip_process().

+

+ + + + +
+ + + + +
#define UIP_STATISTICS
+
+ + + + + +
+   + + +

+Determines if statistics support should be compiled in. +

+The statistics is useful for debugging and to show the user. +

+Definition at line 393 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
+
+ + + + + +
+   + + +

+The TCP maximum segment size. +

+This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. +

+Definition at line 305 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_TIME_WAIT_TIMEOUT   120
+
+ + + + + +
+   + + +

+How long a connection should stay in the TIME_WAIT state. +

+This configiration option has no real implication, and it should be left untouched. +

+Definition at line 328 of file uipopt.h. +

+Referenced by uip_process().

+

+ + + + +
+ + + + +
#define UIP_TTL   64
+
+ + + + + +
+   + + +

+The IP TTL (time to live) of IP packets sent by uIP. +

+This should normally not be changed. +

+Definition at line 141 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_UDP_CHECKSUMS
+
+ + + + + +
+   + + +

+Toggles if UDP checksums should be used or not. +

+

Note:
Support for UDP checksums is currently not included in uIP, so this option has no function.
+ +

+Definition at line 195 of file uipopt.h.

+

+ + + + +
+ + + + +
#define UIP_URGDATA
+
+ + + + + +
+   + + +

+Determines if support for TCP urgent data notification should be compiled in. +

+Urgent data (out-of-band data) is a rarely used TCP feature that very seldom would be required. +

+Definition at line 273 of file uipopt.h.

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef uint16_t u16_t
+
+ + + + + +
+   + + +

+16 bit datatype +

+This typedef defines the 16-bit type used throughout uIP.

Examples:
+dhcpc.c, dhcpc.h, resolv.c, resolv.h, smtp.c, smtp.h, telnetd.c, and uip-conf.h.
+

+Definition at line 76 of file uip-conf.h.

+

+ + + + +
+ + + + +
typedef uint8_t u8_t
+
+ + + + + +
+   + + +

+8 bit datatype +

+This typedef defines the 8-bit type used throughout uIP.

Examples:
+dhcpc.c, dhcpc.h, resolv.c, smtp.h, telnetd.c, telnetd.h, and uip-conf.h.
+

+Definition at line 67 of file uip-conf.h.

+

+ + + + +
+ + + + +
typedef unsigned short uip_stats_t
+
+ + + + + +
+   + + +

+Statistics datatype. +

+This typedef defines the dataype used for keeping statistics in uIP. +

+Definition at line 86 of file uip-conf.h.

+

+ + + + +
+ + + + +
typedef uip_tcp_appstate_t
+
+ + + + + +
+   + + +

+The type of the application state that is to be stored in the uip_conn structure. +

+This usually is typedef:ed to a struct holding application state information.

Examples:
+smtp.h, telnetd.h, and webclient.h.
+

+Definition at line 98 of file smtp.h.

+

+ + + + +
+ + + + +
typedef uip_udp_appstate_t
+
+ + + + + +
+   + + +

+The type of the application state that is to be stored in the uip_conn structure. +

+This usually is typedef:ed to a struct holding application state information.

Examples:
+dhcpc.h.
+

+Definition at line 47 of file resolv.h.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void uip_log char *  msg  ) 
+
+ + + + + +
+   + + +

+Print out a uIP log message. +

+This function must be implemented by the module that uses uIP, and is called by uIP whenever a log message is generated.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00154.html b/Target/Source/third_party/uip/doc/html/a00154.html new file mode 100644 index 00000000..3f542916 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00154.html @@ -0,0 +1,79 @@ + + +uIP 1.0: uIP TCP throughput booster hack + + + + + +

uIP TCP throughput booster hack
+ +[The uIP TCP/IP stack] +


Detailed Description

+The basic uIP TCP implementation only allows each TCP connection to have a single TCP segment in flight at any given time. +

+Because of the delayed ACK algorithm employed by most TCP receivers, uIP's limit on the amount of in-flight TCP segments seriously reduces the maximum achievable throughput for sending data from uIP.

+The uip-split module is a hack which tries to remedy this situation. By splitting maximum sized outgoing TCP segments into two, the delayed ACK algorithm is not invoked at TCP receivers. This improves the throughput when sending data from uIP by orders of magnitude.

+The uip-split module uses the uip-fw module (uIP IP packet forwarding) for sending packets. Therefore, the uip-fw module must be set up with the appropriate network interfaces for this module to work. +

+ + + + + + + +

+

+ + + +

Files

file  uip-split.h
 Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation.

Functions

void uip_split_output (void)
 Handle outgoing packets.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void uip_split_output void   ) 
+
+ + + + + +
+   + + +

+Handle outgoing packets. +

+This function inspects an outgoing packet in the uip_buf buffer and sends it out using the uip_fw_output() function. If the packet is a full-sized TCP segment it will be split into two segments and transmitted separately. This function should be called instead of the actual device driver output function, or the uip_fw_output() function.

+The headers of the outgoing packet is assumed to be in the uip_buf buffer and the payload is assumed to be wherever uip_appdata points. The length of the outgoing packet is assumed to be in the uip_len variable. +

+Definition at line 49 of file uip-split.c. +

+References BUF, uip_acc32, uip_add32(), uip_appdata, UIP_BUFSIZE, uip_ipchksum(), UIP_IPH_LEN, uip_len, UIP_LLH_LEN, UIP_PROTO_TCP, uip_tcpchksum(), and UIP_TCPIP_HLEN.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00155.html b/Target/Source/third_party/uip/doc/html/a00155.html new file mode 100644 index 00000000..cd75873d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00155.html @@ -0,0 +1,82 @@ + + +uIP 1.0: Local continuations + + + + + +

Local continuations
+ +[Protothreads] +


Detailed Description

+Local continuations form the basis for implementing protothreads. +

+A local continuation can be set in a specific function to capture the state of the function. After a local continuation has been set can be resumed in order to restore the state of the function at the point where the local continuation was set. +

+ + + + + + + +

+

+ + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + +

Files

file  lc.h
 Local continuations.
file  lc-switch.h
 Implementation of local continuations based on switch() statment.
file  lc-addrlabels.h
 Implementation of local continuations based on the "Labels as values" feature of gcc.

Defines

+#define __LC_SWTICH_H__
+#define LC_INIT(s)   s = 0;
+#define LC_RESUME(s)   switch(s) { case 0:
+#define LC_SET(s)   s = __LINE__; case __LINE__:
+#define LC_END(s)   }
+#define LC_INIT(s)   s = NULL
+#define LC_RESUME(s)
+#define LC_SET(s)   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
+#define LC_END(s)

Typedefs

+typedef unsigned short lc_t
+typedef void * lc_t
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00156.html b/Target/Source/third_party/uip/doc/html/a00156.html new file mode 100644 index 00000000..2eaafce3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00156.html @@ -0,0 +1,237 @@ + + +uIP 1.0: Timer library + + + + + +

Timer library


Detailed Description

+The timer library provides functions for setting, resetting and restarting timers, and for checking if a timer has expired. +

+An application must "manually" check if its timers have expired; this is not done automatically.

+A timer is declared as a struct timer and all access to the timer is made by a pointer to the declared timer.

+

Note:
The timer library uses the Clock library to measure time. Intervals should be specified in the format used by the clock library.
+ +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + +

Files

file  timer.h
 Timer library header file.
file  timer.c
 Timer library implementation.

Data Structures

struct  timer
 A timer. More...

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
int timer_expired struct timer t  ) 
+
+ + + + + +
+   + + +

+Check if a timer has expired. +

+This function tests if a timer has expired and returns true or false depending on its status.

+

Parameters:
+ + +
t A pointer to the timer
+
+
Returns:
Non-zero if the timer has expired, zero otherwise.
+
Examples:
+dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 121 of file timer.c. +

+References clock_time(), interval, and start.

+

+ + + + +
+ + + + + + + + + +
void timer_reset struct timer t  ) 
+
+ + + + + +
+   + + +

+Reset the timer with the same interval. +

+This function resets the timer with the same interval that was given to the timer_set() function. The start point of the interval is the exact time that the timer last expired. Therefore, this function will cause the timer to be stable over time, unlike the timer_rester() function.

+

Parameters:
+ + +
t A pointer to the timer.
+
+
See also:
timer_restart()
+
Examples:
+example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 84 of file timer.c. +

+References interval, and start.

+

+ + + + +
+ + + + + + + + + +
void timer_restart struct timer t  ) 
+
+ + + + + +
+   + + +

+Restart the timer from the current point in time. +

+This function restarts a timer with the same interval that was given to the timer_set() function. The timer will start at the current time.

+

Note:
A periodic timer will drift if this function is used to reset it. For preioric timers, use the timer_reset() function instead.
+
Parameters:
+ + +
t A pointer to the timer.
+
+
See also:
timer_reset()
+ +

+Definition at line 104 of file timer.c. +

+References clock_time(), and start.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void timer_set struct timer t,
clock_time_t  interval
+
+ + + + + +
+   + + +

+Set a timer. +

+This function is used to set a timer for a time sometime in the future. The function timer_expired() will evaluate to true after the timer has expired.

+

Parameters:
+ + + +
t A pointer to the timer
interval The interval before the timer expires.
+
+
Examples:
+dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
+

+Definition at line 64 of file timer.c. +

+References clock_time(), interval, and start.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00157.html b/Target/Source/third_party/uip/doc/html/a00157.html new file mode 100644 index 00000000..ec1fb7c0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00157.html @@ -0,0 +1,108 @@ + + +uIP 1.0: Clock interface + + + + + +

Clock interface


Detailed Description

+The clock interface is the interface between the timer library and the platform specific clock functionality. +

+The clock interface must be implemented for each platform that uses the timer library.

+The clock interface does only one this: it measures time. The clock interface provides a macro, CLOCK_SECOND, which corresponds to one second of system time.

+

See also:
Timer library
+ +

+ + + + + + + + + + + + + +

Defines

+#define CLOCK_SECOND
 A second, measured in system clock time.

Functions

void clock_init (void)
 Initialize the clock library.
clock_time_t clock_time (void)
 Get the current clock time.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void clock_init void   ) 
+
+ + + + + +
+   + + +

+Initialize the clock library. +

+This function initializes the clock library and should be called from the main() function of the system.

+

+ + + + +
+ + + + + + + + + +
clock_time_t clock_time void   ) 
+
+ + + + + +
+   + + +

+Get the current clock time. +

+This function returns the current system clock time.

+

Returns:
The current clock time, measured in system ticks.
+ +

+Referenced by timer_expired(), timer_restart(), and timer_set().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00158.html b/Target/Source/third_party/uip/doc/html/a00158.html new file mode 100644 index 00000000..9b415f2d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00158.html @@ -0,0 +1,693 @@ + + +uIP 1.0: Protosockets library + + + + + +

Protosockets library


Detailed Description

+The protosocket library provides an interface to the uIP stack that is similar to the traditional BSD socket interface. +

+Unlike programs written for the ordinary uIP event-driven interface, programs written with the protosocket library are executed in a sequential fashion and does not have to be implemented as explicit state machines.

+Protosockets only work with TCP connections.

+The protosocket library uses Protothreads protothreads to provide sequential control flow. This makes the protosockets lightweight in terms of memory, but also means that protosockets inherits the functional limitations of protothreads. Each protosocket lives only within a single function. Automatic variables (stack variables) are not retained across a protosocket library function call.

+

Note:
Because the protosocket library uses protothreads, local variables will not always be saved across a call to a protosocket library function. It is therefore advised that local variables are used with extreme care.
+The protosocket library provides functions for sending data without having to deal with retransmissions and acknowledgements, as well as functions for reading data without having to deal with data being split across more than one TCP segment.

+Because each protosocket runs as a protothread, the protosocket has to be started with a call to PSOCK_BEGIN() at the start of the function in which the protosocket is used. Similarly, the protosocket protothread can be terminated by a call to PSOCK_EXIT(). +

+ + + + + + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  psock.h
 Protosocket library header file.

Data Structures

struct  psock_buf
struct  psock
 The representation of a protosocket. More...

Defines

#define PSOCK_INIT(psock, buffer, buffersize)
 Initialize a protosocket.
#define PSOCK_BEGIN(psock)
 Start the protosocket protothread in a function.
#define PSOCK_SEND(psock, data, datalen)
 Send data.
#define PSOCK_SEND_STR(psock, str)
 Send a null-terminated string.
#define PSOCK_GENERATOR_SEND(psock, generator, arg)
 Generate data with a function and send it.
#define PSOCK_CLOSE(psock)
 Close a protosocket.
#define PSOCK_READBUF(psock)
 Read data until the buffer is full.
#define PSOCK_READTO(psock, c)
 Read data up to a specified character.
#define PSOCK_DATALEN(psock)
 The length of the data that was previously read.
#define PSOCK_EXIT(psock)
 Exit the protosocket's protothread.
#define PSOCK_CLOSE_EXIT(psock)
 Close a protosocket and exit the protosocket's protothread.
#define PSOCK_END(psock)
 Declare the end of a protosocket's protothread.
#define PSOCK_NEWDATA(psock)
 Check if new data has arrived on a protosocket.
#define PSOCK_WAIT_UNTIL(psock, condition)
 Wait until a condition is true.
+#define PSOCK_WAIT_THREAD(psock, condition)   PT_WAIT_THREAD(&((psock)->pt), (condition))

Functions

+u16_t psock_datalen (struct psock *psock)
+char psock_newdata (struct psock *s)
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_BEGIN psock   ) 
+
+ + + + + +
+   + + +

+Start the protosocket protothread in a function. +

+This macro starts the protothread associated with the protosocket and must come before other protosocket calls in the function it is used.

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket to be started.
+
+
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 158 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_CLOSE psock   ) 
+
+ + + + + +
+   + + +

+Close a protosocket. +

+This macro closes a protosocket and can only be called from within the protothread in which the protosocket lives.

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket that is to be closed.
+
+
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 235 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_CLOSE_EXIT psock   ) 
+
+ + + + + +
+   + + +

+Close a protosocket and exit the protosocket's protothread. +

+This macro closes a protosocket and exits the protosocket's protothread.

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket.
+
+ +

+Definition at line 308 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_DATALEN psock   ) 
+
+ + + + + +
+   + + +

+The length of the data that was previously read. +

+This macro returns the length of the data that was previously read using PSOCK_READTO() or PSOCK_READ().

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket holding the data.
+
+ +

+Definition at line 281 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_END psock   ) 
+
+ + + + + +
+   + + +

+Declare the end of a protosocket's protothread. +

+This macro is used for declaring that the protosocket's protothread ends. It must always be used together with a matching PSOCK_BEGIN() macro.

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket.
+
+
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 325 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_EXIT psock   ) 
+
+ + + + + +
+   + + +

+Exit the protosocket's protothread. +

+This macro terminates the protothread of the protosocket and should almost always be used in conjunction with PSOCK_CLOSE().

+

See also:
PSOCK_CLOSE_EXIT()
+
Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket.
+
+
Examples:
+smtp.c.
+

+Definition at line 297 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define PSOCK_GENERATOR_SEND psock,
generator,
arg   ) 
+
+ + + + + +
+   + + +

+Generate data with a function and send it. +

+

Parameters:
+ + + + +
psock Pointer to the protosocket.
generator Pointer to the generator function
arg Argument to the generator function
+
+This function generates data and sends it over the protosocket. This can be used to dynamically generate data for a transmission, instead of generating the data in a buffer beforehand. This function reduces the need for buffer memory. The generator function is implemented by the application, and a pointer to the function is given as an argument with the call to PSOCK_GENERATOR_SEND().

+The generator function should place the generated data directly in the uip_appdata buffer, and return the length of the generated data. The generator function is called by the protosocket layer when the data first is sent, and once for every retransmission that is needed. +

+Definition at line 219 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define PSOCK_INIT psock,
buffer,
buffersize   ) 
+
+ + + + + +
+   + + +

+Initialize a protosocket. +

+This macro initializes a protosocket and must be called before the protosocket is used. The initialization also specifies the input buffer for the protosocket.

+

Parameters:
+ + + + +
psock (struct psock *) A pointer to the protosocket to be initialized
buffer (char *) A pointer to the input buffer for the protosocket.
buffersize (unsigned int) The size of the input buffer.
+
+
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 144 of file psock.h. +

+Referenced by hello_world_appcall(), httpd_appcall(), and smtp_send().

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_NEWDATA psock   ) 
+
+ + + + + +
+   + + +

+Check if new data has arrived on a protosocket. +

+This macro is used in conjunction with the PSOCK_WAIT_UNTIL() macro to check if data has arrived on a protosocket.

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket.
+
+ +

+Definition at line 339 of file psock.h.

+

+ + + + +
+ + + + + + + + + +
#define PSOCK_READBUF psock   ) 
+
+ + + + + +
+   + + +

+Read data until the buffer is full. +

+This macro will block waiting for data and read the data into the input buffer specified with the call to PSOCK_INIT(). Data is read until the buffer is full..

+

Parameters:
+ + +
psock (struct psock *) A pointer to the protosocket from which data should be read.
+
+ +

+Definition at line 250 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PSOCK_READTO psock,
 ) 
+
+ + + + + +
+   + + +

+Read data up to a specified character. +

+This macro will block waiting for data and read the data into the input buffer specified with the call to PSOCK_INIT(). Data is only read until the specifieed character appears in the data stream.

+

Parameters:
+ + + +
psock (struct psock *) A pointer to the protosocket from which data should be read.
c (char) The character at which to stop reading.
+
+
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 268 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define PSOCK_SEND psock,
data,
datalen   ) 
+
+ + + + + +
+   + + +

+Send data. +

+This macro sends data over a protosocket. The protosocket protothread blocks until all data has been sent and is known to have been received by the remote end of the TCP connection.

+

Parameters:
+ + + + +
psock (struct psock *) A pointer to the protosocket over which data is to be sent.
data (char *) A pointer to the data that is to be sent.
datalen (unsigned int) The length of the data that is to be sent.
+
+
Examples:
+smtp.c.
+

+Definition at line 178 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PSOCK_SEND_STR psock,
str   ) 
+
+ + + + + +
+   + + +

+Send a null-terminated string. +

+

Parameters:
+ + + +
psock Pointer to the protosocket.
str The string to be sent.
+
+This function sends a null-terminated string over the protosocket.
Examples:
+hello-world.c, and smtp.c.
+

+Definition at line 191 of file psock.h.

+

+ + + + +
+ + + + + + + + + + + + +
#define PSOCK_WAIT_UNTIL psock,
condition   ) 
+
+ + + + + +
+   + + +

+Wait until a condition is true. +

+This macro blocks the protothread until the specified condition is true. The macro PSOCK_NEWDATA() can be used to check if new data arrives when the protosocket is waiting.

+Typically, this macro is used as follows:

+

 PT_THREAD(thread(struct psock *s, struct timer *t))
+ {
+   PSOCK_BEGIN(s);
+
+   PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t));
+   
+   if(PSOCK_NEWDATA(s)) {
+     PSOCK_READTO(s, '\n');
+   } else {
+     handle_timed_out(s);
+   }
+   
+   PSOCK_END(s);
+ }
+

+

Parameters:
+ + + +
psock (struct psock *) A pointer to the protosocket.
condition The condition to wait for.
+
+ +

+Definition at line 372 of file psock.h.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00159.html b/Target/Source/third_party/uip/doc/html/a00159.html new file mode 100644 index 00000000..d91b51ff --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00159.html @@ -0,0 +1,251 @@ + + +uIP 1.0: Memory block management functions + + + + + +

Memory block management functions


Detailed Description

+The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size. +

+A set of memory blocks is statically declared with the MEMB() macro. Memory blocks are allocated from the declared memory by the memb_alloc() function, and are deallocated with the memb_free() function.

+

Note:
Because of namespace clashes only one MEMB() can be declared per C module, and the name scope of a MEMB() memory block is local to each C module.
+The following example shows how to declare and use a memory block called "cmem" which has 8 chunks of memory with each memory chunk being 20 bytes large. +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + +

Files

file  memb.c
 Memory block allocation routines.
file  memb.h
 Memory block allocation routines.

Data Structures

struct  memb_blocks

Defines

+#define MEMB_CONCAT2(s1, s2)   s1##s2
+#define MEMB_CONCAT(s1, s2)   MEMB_CONCAT2(s1, s2)
#define MEMB(name, structure, num)
 Declare a memory block.

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
+


Define Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define MEMB name,
structure,
num   ) 
+
+ + + + + +
+   + + +

+Value:

static char MEMB_CONCAT(name,_memb_count)[num]; \
+        static structure MEMB_CONCAT(name,_memb_mem)[num]; \
+        static struct memb_blocks name = {sizeof(structure), num, \
+                                          MEMB_CONCAT(name,_memb_count), \
+                                          (void *)MEMB_CONCAT(name,_memb_mem)}
+
Declare a memory block. +

+This macro is used to staticall declare a block of memory that can be used by the block allocation functions. The macro statically declares a C array with a size that matches the specified number of blocks and their individual sizes.

+Example:

MEMB(connections, sizeof(struct connection), 16);
+

+

Parameters:
+ + + + +
name The name of the memory block (later used with memb_init(), memb_alloc() and memb_free()).
size The size of each memory chunk, in bytes.
num The total number of memory chunks in the block.
+
+
Examples:
+telnetd.c.
+

+Definition at line 98 of file memb.h.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void * memb_alloc struct memb_blocks m  ) 
+
+ + + + + +
+   + + +

+Allocate a memory block from a block of memory declared with MEMB(). +

+

Parameters:
+ + +
m A memory block previosly declared with MEMB().
+
+
Examples:
+telnetd.c.
+

+Definition at line 59 of file memb.c. +

+References memb_blocks::count, memb_blocks::mem, memb_blocks::num, and memb_blocks::size.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
char memb_free struct memb_blocks m,
void *  ptr
+
+ + + + + +
+   + + +

+Deallocate a memory block from a memory block previously declared with MEMB(). +

+

Parameters:
+ + + +
m m A memory block previosly declared with MEMB().
ptr A pointer to the memory block that is to be deallocated.
+
+
Returns:
The new reference count for the memory block (should be 0 if successfully deallocated) or -1 if the pointer "ptr" did not point to a legal memory block.
+
Examples:
+telnetd.c.
+

+Definition at line 79 of file memb.c. +

+References memb_blocks::count, memb_blocks::mem, and memb_blocks::size.

+

+ + + + +
+ + + + + + + + + +
void memb_init struct memb_blocks m  ) 
+
+ + + + + +
+   + + +

+Initialize a memory block that was declared with MEMB(). +

+

Parameters:
+ + +
m A memory block previosly declared with MEMB().
+
+
Examples:
+telnetd.c.
+

+Definition at line 52 of file memb.c. +

+References memb_blocks::count, memb_blocks::mem, memb_blocks::num, and memb_blocks::size.

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00160.html b/Target/Source/third_party/uip/doc/html/a00160.html new file mode 100644 index 00000000..1ac8e26e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00160.html @@ -0,0 +1,284 @@ + + +uIP 1.0: DNS resolver + + + + + +

DNS resolver
+ +[Applications] +


Detailed Description

+The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address. +

+It maintains a list of resolved hostnames that can be queried with the resolv_lookup() function. New hostnames can be resolved using the resolv_query() function.

+When a hostname has been resolved (or found to be non-existant), the resolver code calls a callback function called resolv_found() that must be implemented by the module that uses the resolver. +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  resolv.h
 DNS resolver code header file.
file  resolv.c
 DNS host name to IP address resolver.

Defines

+#define UIP_UDP_APPCALL   resolv_appcall
+#define NULL   (void *)0
+#define MAX_RETRIES   8
+#define RESOLV_ENTRIES   4

Functions

+void resolv_appcall (void)
void resolv_found (char *name, u16_t *ipaddr)
 Callback function which is called when a hostname is found.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
+void resolv_init (void)
 Initalize the resolver.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void resolv_conf u16_t dnsserver  ) 
+
+ + + + + +
+   + + +

+Configure which DNS server to use for queries. +

+

Parameters:
+ + +
dnsserver A pointer to a 4-byte representation of the IP address of the DNS server to be configured.
+
+
Examples:
+resolv.c, and resolv.h.
+

+Definition at line 438 of file resolv.c. +

+References HTONS, NULL, uip_udp_new(), and uip_udp_remove.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void resolv_found char *  name,
u16_t ipaddr
+
+ + + + + +
+   + + +

+Callback function which is called when a hostname is found. +

+This function must be implemented by the module that uses the DNS resolver. It is called when a hostname is found, or when a hostname was not found.

+

Parameters:
+ + + +
name A pointer to the name that was looked up.
ipaddr A pointer to a 4-byte array containing the IP address of the hostname, or NULL if the hostname could not be found.
+
+
Examples:
+resolv.c, and resolv.h.
+

+ + + + +
+ + + + + + + + + +
u16_t * resolv_getserver void   ) 
+
+ + + + + +
+   + + +

+Obtain the currently configured DNS server. +

+

Returns:
A pointer to a 4-byte representation of the IP address of the currently configured DNS server or NULL if no DNS server has been configured.
+
Examples:
+resolv.c, and resolv.h.
+

+Definition at line 422 of file resolv.c. +

+References NULL, and uip_udp_conn::ripaddr.

+

+ + + + +
+ + + + + + + + + +
u16_t * resolv_lookup char *  name  ) 
+
+ + + + + +
+   + + +

+Look up a hostname in the array of known hostnames. +

+

Note:
This function only looks in the internal array of known hostnames, it does not send out a query for the hostname if none was found. The function resolv_query() can be used to send a query for a hostname.
+
Returns:
A pointer to a 4-byte representation of the hostname's IP address, or NULL if the hostname was not found in the array of hostnames.
+
Examples:
+resolv.c, resolv.h, and webclient.c.
+

+Definition at line 396 of file resolv.c. +

+References RESOLV_ENTRIES, and STATE_DONE. +

+Referenced by webclient_appcall(), and webclient_get().

+

+ + + + +
+ + + + + + + + + +
void resolv_query char *  name  ) 
+
+ + + + + +
+   + + +

+Queues a name so that a question for the name will be sent out. +

+

Parameters:
+ + +
name The hostname that is to be queried.
+
+
Examples:
+resolv.c, resolv.h, and webclient.c.
+

+Definition at line 350 of file resolv.c. +

+References RESOLV_ENTRIES, and STATE_UNUSED. +

+Referenced by webclient_appcall().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00161.html b/Target/Source/third_party/uip/doc/html/a00161.html new file mode 100644 index 00000000..74d2892e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00161.html @@ -0,0 +1,257 @@ + + +uIP 1.0: SMTP E-mail sender + + + + + +

SMTP E-mail sender
+ +[Applications] +


Detailed Description

+The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is the standard way of sending and transfering e-mail on the Internet. +

+This simple example implementation is intended as an example of how to implement protocols in uIP, and is able to send out e-mail but has not been extensively tested. +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  smtp.h
 SMTP header file.
file  smtp.c
 SMTP example implementation.

Data Structures

struct  smtp_state

Defines

+#define SMTP_ERR_OK   0
 Error number that signifies a non-error condition.
+#define SMTP_SEND(to, cc, from, subject, msg)   smtp_send(to, cc, from, subject, msg, strlen(msg))
+#define ISO_nl   0x0a
+#define ISO_cr   0x0d
+#define ISO_period   0x2e
+#define ISO_2   0x32
+#define ISO_3   0x33
+#define ISO_4   0x34
+#define ISO_5   0x35

Functions

void smtp_done (unsigned char error)
 Callback function that is called when an e-mail transmission is done.
+void smtp_init (void)
+void smtp_appcall (void)
void smtp_configure (char *lhostname, void *server)
 Specificy an SMTP server and hostname.
unsigned char smtp_send (char *to, char *cc, char *from, char *subject, char *msg, u16_t msglen)
 Send an e-mail.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void smtp_configure char *  lhostname,
void *  server
+
+ + + + + +
+   + + +

+Specificy an SMTP server and hostname. +

+This function is used to configure the SMTP module with an SMTP server and the hostname of the host.

+

Parameters:
+ + + +
lhostname The hostname of the uIP host.
server A pointer to a 4-byte array representing the IP address of the SMTP server to be configured.
+
+ +

+Definition at line 216 of file smtp.c. +

+References uip_ipaddr_copy.

+

+ + + + +
+ + + + + + + + + +
void smtp_done unsigned char  error  ) 
+
+ + + + + +
+   + + +

+Callback function that is called when an e-mail transmission is done. +

+This function must be implemented by the module that uses the SMTP module.

+

Parameters:
+ + +
error The number of the error if an error occured, or SMTP_ERR_OK.
+
+
Examples:
+smtp.c, and smtp.h.
+

+Referenced by smtp_appcall().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
unsigned char smtp_send char *  to,
char *  cc,
char *  from,
char *  subject,
char *  msg,
u16_t  msglen
+
+ + + + + +
+   + + +

+Send an e-mail. +

+

Parameters:
+ + + + + + + +
to The e-mail address of the receiver of the e-mail.
cc The e-mail address of the CC: receivers of the e-mail.
from The e-mail address of the sender of the e-mail.
subject The subject of the e-mail.
msg The actual e-mail message.
msglen The length of the e-mail message.
+
+ +

+Definition at line 233 of file smtp.c. +

+References smtp_state::from, HTONS, smtp_state::msg, smtp_state::msglen, NULL, PSOCK_INIT, smtp_state::subject, smtp_state::to, and uip_connect().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00162.html b/Target/Source/third_party/uip/doc/html/a00162.html new file mode 100644 index 00000000..4a07bbf6 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00162.html @@ -0,0 +1,56 @@ + + +uIP 1.0: Hello, world + + + + + +

Hello, world
+ +[Applications] +


Detailed Description

+A small example showing how to write applications with protosockets. +

+ +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + +

Files

file  hello-world.h
 Header file for an example of how to write uIP applications with protosockets.
file  hello-world.c
 An example of how to write uIP applications with protosockets.

Data Structures

struct  hello_world_state

Defines

+#define UIP_APPCALL   hello_world_appcall

Functions

+void hello_world_appcall (void)
+void hello_world_init (void)
+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00163.html b/Target/Source/third_party/uip/doc/html/a00163.html new file mode 100644 index 00000000..f1d5eb17 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00163.html @@ -0,0 +1,533 @@ + + +uIP 1.0: Web client + + + + + +

Web client
+ +[Applications] +


Detailed Description

+This example shows a HTTP client that is able to download web pages and files from web servers. +

+It requires a number of callback functions to be implemented by the module that utilizes the code: webclient_datahandler(), webclient_connected(), webclient_timedout(), webclient_aborted(), webclient_closed(). +

+ + + + + + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  webclient.h
 Header file for the HTTP client.
file  webclient.c
 Implementation of the HTTP client.

Data Structures

struct  webclient_state

Defines

+#define WEBCLIENT_CONF_MAX_URLLEN   100
+#define UIP_APPCALL   webclient_appcall
+#define WEBCLIENT_TIMEOUT   100
+#define WEBCLIENT_STATE_STATUSLINE   0
+#define WEBCLIENT_STATE_HEADERS   1
+#define WEBCLIENT_STATE_DATA   2
+#define WEBCLIENT_STATE_CLOSE   3
+#define HTTPFLAG_NONE   0
+#define HTTPFLAG_OK   1
+#define HTTPFLAG_MOVED   2
+#define HTTPFLAG_ERROR   3
+#define ISO_nl   0x0a
+#define ISO_cr   0x0d
+#define ISO_space   0x20

Typedefs

+typedef webclient_state uip_tcp_appstate_t

Functions

void webclient_datahandler (char *data, u16_t len)
 Callback function that is called from the webclient code when HTTP data has been received.
void webclient_connected (void)
 Callback function that is called from the webclient code when the HTTP connection has been connected to the web server.
void webclient_timedout (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has timed out.
void webclient_aborted (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server.
void webclient_closed (void)
 Callback function that is called from the webclient code when the HTTP connection to the web server has been closed.
+void webclient_init (void)
 Initialize the webclient module.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
+void webclient_close (void)
 Close the currently open HTTP connection.
+void webclient_appcall (void)
char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void webclient_aborted void   ) 
+
+ + + + + +
+   + + +

+Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server. +

+This function must be implemented by the module that uses the webclient code.

Examples:
+webclient.c, and webclient.h.
+

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + + + + + + +
void webclient_closed void   ) 
+
+ + + + + +
+   + + +

+Callback function that is called from the webclient code when the HTTP connection to the web server has been closed. +

+This function must be implemented by the module that uses the webclient code.

Examples:
+webclient.c, and webclient.h.
+

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + + + + + + +
void webclient_connected void   ) 
+
+ + + + + +
+   + + +

+Callback function that is called from the webclient code when the HTTP connection has been connected to the web server. +

+This function must be implemented by the module that uses the webclient code.

Examples:
+webclient.c, and webclient.h.
+

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void webclient_datahandler char *  data,
u16_t  len
+
+ + + + + +
+   + + +

+Callback function that is called from the webclient code when HTTP data has been received. +

+This function must be implemented by the module that uses the webclient code. The function is called from the webclient module when HTTP data has been received. The function is not called when HTTP headers are received, only for the actual data.

+

Note:
This function is called many times, repetedly, when data is being received, and not once when all data has been received.
+
Parameters:
+ + + +
data A pointer to the data that has been received.
len The length of the data that has been received.
+
+
Examples:
+webclient.c, and webclient.h.
+

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + + + + + + +
char * webclient_filename void   ) 
+
+ + + + + +
+   + + +

+Obtain the filename of the current HTTP data stream. +

+The filename of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current filename.

+

Returns:
A pointer to the current filename.
+
Examples:
+webclient.c, and webclient.h.
+

+Definition at line 93 of file webclient.c. +

+References webclient_state::file.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned char webclient_get char *  host,
u16_t  port,
char *  file
+
+ + + + + +
+   + + +

+Open an HTTP connection to a web server and ask for a file using the GET method. +

+This function opens an HTTP connection to the specified web server and requests the specified file using the GET method. When the HTTP connection has been connected, the webclient_connected() callback function is called and when the HTTP data arrives the webclient_datahandler() callback function is called.

+The callback function webclient_timedout() is called if the web server could not be contacted, and the webclient_aborted() callback function is called if the HTTP connection is aborted by the web server.

+When the HTTP request has been completed and the HTTP connection is closed, the webclient_closed() callback function will be called.

+

Note:
If the function is passed a host name, it must already be in the resolver cache in order for the function to connect to the web server. It is therefore up to the calling module to implement the resolver calls and the signal handler used for reporting a resolv query answer.
+
Parameters:
+ + + + +
host A pointer to a string containing either a host name or a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
port The port number to which to connect, in host byte order.
file A pointer to the name of the file to get.
+
+
Return values:
+ + + +
0 if the host name could not be found in the cache, or if a TCP connection could not be created.
1 if the connection was initiated.
+
+
Examples:
+webclient.c, and webclient.h.
+

+Definition at line 140 of file webclient.c. +

+References webclient_state::file, webclient_state::host, htons(), NULL, webclient_state::port, resolv_lookup(), and uip_connect(). +

+Referenced by webclient_appcall().

+

+ + + + +
+ + + + + + + + + +
char * webclient_hostname void   ) 
+
+ + + + + +
+   + + +

+Obtain the hostname of the current HTTP data stream. +

+The hostname of the web server of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current hostname.

+

Returns:
A pointer to the current hostname.
+
Examples:
+webclient.c, and webclient.h.
+

+Definition at line 99 of file webclient.c. +

+References webclient_state::host.

+

+ + + + +
+ + + + + + + + + +
char * webclient_mimetype void   ) 
+
+ + + + + +
+   + + +

+Obtain the MIME type of the current HTTP data stream. +

+

Returns:
A pointer to a string contaning the MIME type. The string may be empty if no MIME type was reported by the web server.
+
Examples:
+webclient.c, and webclient.h.
+

+Definition at line 87 of file webclient.c. +

+References webclient_state::mimetype.

+

+ + + + +
+ + + + + + + + + +
unsigned short webclient_port void   ) 
+
+ + + + + +
+   + + +

+Obtain the port number of the current HTTP data stream. +

+The port number of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current port number.

+

Returns:
The port number of the current HTTP data stream, in host byte order.
+
Examples:
+webclient.c, and webclient.h.
+

+Definition at line 105 of file webclient.c. +

+References webclient_state::port.

+

+ + + + +
+ + + + + + + + + +
void webclient_timedout void   ) 
+
+ + + + + +
+   + + +

+Callback function that is called from the webclient code if the HTTP connection to the web server has timed out. +

+This function must be implemented by the module that uses the webclient code.

Examples:
+webclient.c, and webclient.h.
+

+Referenced by webclient_appcall().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00164.html b/Target/Source/third_party/uip/doc/html/a00164.html new file mode 100644 index 00000000..82def658 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00164.html @@ -0,0 +1,172 @@ + + +uIP 1.0: Web server + + + + + +

Web server
+ +[Applications] +


Detailed Description

+The uIP web server is a very simplistic implementation of an HTTP server. +

+It can serve web pages and files from a read-only ROM filesystem, and provides a very small scripting language. +

+ + + + + + + +

+

+ + + +

+

+ + + +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Files

file  httpd-cgi.h
 Web server script interface header file.
file  httpd-cgi.c
 Web server script interface.
file  httpd.c
 Web server.

Data Structures

struct  httpd_cgi_call

Defines

#define HTTPD_CGI_CALL(name, str, function)
 HTTPD CGI function declaration.
+#define STATE_WAITING   0
+#define STATE_OUTPUT   1
+#define ISO_nl   0x0a
+#define ISO_space   0x20
+#define ISO_bang   0x21
+#define ISO_percent   0x25
+#define ISO_period   0x2e
+#define ISO_slash   0x2f
+#define ISO_colon   0x3a

Functions

+httpd_cgifunction httpd_cgi (char *name)
+void httpd_appcall (void)
void httpd_init (void)
 Initialize the web server.
+


Define Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define HTTPD_CGI_CALL name,
str,
function   ) 
+
+ + + + + +
+   + + +

+HTTPD CGI function declaration. +

+

Parameters:
+ + + + +
name The C variable name of the function
str The string name of the function, used in the script file
function A pointer to the function that implements it
+
+This macro is used for declaring a HTTPD CGI function. This function is then added to the list of HTTPD CGI functions with the httpd_cgi_add() function. +

+Definition at line 77 of file httpd-cgi.h.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void httpd_init void   ) 
+
+ + + + + +
+   + + +

+Initialize the web server. +

+This function initializes the web server and should be called at system boot-up. +

+Definition at line 333 of file httpd.c. +

+References HTONS, and uip_listen().

+


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00168.html b/Target/Source/third_party/uip/doc/html/a00168.html new file mode 100644 index 00000000..3468acaa --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00168.html @@ -0,0 +1,381 @@ + + +uIP 1.0: apps/dhcpc/dhcpc.c Source File + + + + + + +

apps/dhcpc/dhcpc.c

00001 /*
+00002  * Copyright (c) 2005, Swedish Institute of Computer Science
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
+00032  */
+00033 
+00034 #include <stdio.h>
+00035 #include <string.h>
+00036 
+00037 #include "uip.h"
+00038 #include "dhcpc.h"
+00039 #include "timer.h"
+00040 #include "pt.h"
+00041 
+00042 #define STATE_INITIAL         0
+00043 #define STATE_SENDING         1
+00044 #define STATE_OFFER_RECEIVED  2
+00045 #define STATE_CONFIG_RECEIVED 3
+00046 
+00047 static struct dhcpc_state s;
+00048 
+00049 struct dhcp_msg {
+00050   u8_t op, htype, hlen, hops;
+00051   u8_t xid[4];
+00052   u16_t secs, flags;
+00053   u8_t ciaddr[4];
+00054   u8_t yiaddr[4];
+00055   u8_t siaddr[4];
+00056   u8_t giaddr[4];
+00057   u8_t chaddr[16];
+00058 #ifndef UIP_CONF_DHCP_LIGHT
+00059   u8_t sname[64];
+00060   u8_t file[128];
+00061 #endif
+00062   u8_t options[312];
+00063 };
+00064 
+00065 #define BOOTP_BROADCAST 0x8000
+00066 
+00067 #define DHCP_REQUEST        1
+00068 #define DHCP_REPLY          2
+00069 #define DHCP_HTYPE_ETHERNET 1
+00070 #define DHCP_HLEN_ETHERNET  6
+00071 #define DHCP_MSG_LEN      236
+00072 
+00073 #define DHCPC_SERVER_PORT  67
+00074 #define DHCPC_CLIENT_PORT  68
+00075 
+00076 #define DHCPDISCOVER  1
+00077 #define DHCPOFFER     2
+00078 #define DHCPREQUEST   3
+00079 #define DHCPDECLINE   4
+00080 #define DHCPACK       5
+00081 #define DHCPNAK       6
+00082 #define DHCPRELEASE   7
+00083 
+00084 #define DHCP_OPTION_SUBNET_MASK   1
+00085 #define DHCP_OPTION_ROUTER        3
+00086 #define DHCP_OPTION_DNS_SERVER    6
+00087 #define DHCP_OPTION_REQ_IPADDR   50
+00088 #define DHCP_OPTION_LEASE_TIME   51
+00089 #define DHCP_OPTION_MSG_TYPE     53
+00090 #define DHCP_OPTION_SERVER_ID    54
+00091 #define DHCP_OPTION_REQ_LIST     55
+00092 #define DHCP_OPTION_END         255
+00093 
+00094 static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
+00095 static const u8_t magic_cookie[4] = {99, 130, 83, 99};
+00096 /*---------------------------------------------------------------------------*/
+00097 static u8_t *
+00098 add_msg_type(u8_t *optptr, u8_t type)
+00099 {
+00100   *optptr++ = DHCP_OPTION_MSG_TYPE;
+00101   *optptr++ = 1;
+00102   *optptr++ = type;
+00103   return optptr;
+00104 }
+00105 /*---------------------------------------------------------------------------*/
+00106 static u8_t *
+00107 add_server_id(u8_t *optptr)
+00108 {
+00109   *optptr++ = DHCP_OPTION_SERVER_ID;
+00110   *optptr++ = 4;
+00111   memcpy(optptr, s.serverid, 4);
+00112   return optptr + 4;
+00113 }
+00114 /*---------------------------------------------------------------------------*/
+00115 static u8_t *
+00116 add_req_ipaddr(u8_t *optptr)
+00117 {
+00118   *optptr++ = DHCP_OPTION_REQ_IPADDR;
+00119   *optptr++ = 4;
+00120   memcpy(optptr, s.ipaddr, 4);
+00121   return optptr + 4;
+00122 }
+00123 /*---------------------------------------------------------------------------*/
+00124 static u8_t *
+00125 add_req_options(u8_t *optptr)
+00126 {
+00127   *optptr++ = DHCP_OPTION_REQ_LIST;
+00128   *optptr++ = 3;
+00129   *optptr++ = DHCP_OPTION_SUBNET_MASK;
+00130   *optptr++ = DHCP_OPTION_ROUTER;
+00131   *optptr++ = DHCP_OPTION_DNS_SERVER;
+00132   return optptr;
+00133 }
+00134 /*---------------------------------------------------------------------------*/
+00135 static u8_t *
+00136 add_end(u8_t *optptr)
+00137 {
+00138   *optptr++ = DHCP_OPTION_END;
+00139   return optptr;
+00140 }
+00141 /*---------------------------------------------------------------------------*/
+00142 static void
+00143 create_msg(register struct dhcp_msg *m)
+00144 {
+00145   m->op = DHCP_REQUEST;
+00146   m->htype = DHCP_HTYPE_ETHERNET;
+00147   m->hlen = s.mac_len;
+00148   m->hops = 0;
+00149   memcpy(m->xid, xid, sizeof(m->xid));
+00150   m->secs = 0;
+00151   m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
+00152   /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
+00153   memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
+00154   memset(m->yiaddr, 0, sizeof(m->yiaddr));
+00155   memset(m->siaddr, 0, sizeof(m->siaddr));
+00156   memset(m->giaddr, 0, sizeof(m->giaddr));
+00157   memcpy(m->chaddr, s.mac_addr, s.mac_len);
+00158   memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
+00159 #ifndef UIP_CONF_DHCP_LIGHT
+00160   memset(m->sname, 0, sizeof(m->sname));
+00161   memset(m->file, 0, sizeof(m->file));
+00162 #endif
+00163 
+00164   memcpy(m->options, magic_cookie, sizeof(magic_cookie));
+00165 }
+00166 /*---------------------------------------------------------------------------*/
+00167 static void
+00168 send_discover(void)
+00169 {
+00170   u8_t *end;
+00171   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00172 
+00173   create_msg(m);
+00174 
+00175   end = add_msg_type(&m->options[4], DHCPDISCOVER);
+00176   end = add_req_options(end);
+00177   end = add_end(end);
+00178 
+00179   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+00180 }
+00181 /*---------------------------------------------------------------------------*/
+00182 static void
+00183 send_request(void)
+00184 {
+00185   u8_t *end;
+00186   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00187 
+00188   create_msg(m);
+00189   
+00190   end = add_msg_type(&m->options[4], DHCPREQUEST);
+00191   end = add_server_id(end);
+00192   end = add_req_ipaddr(end);
+00193   end = add_end(end);
+00194   
+00195   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+00196 }
+00197 /*---------------------------------------------------------------------------*/
+00198 static u8_t
+00199 parse_options(u8_t *optptr, int len)
+00200 {
+00201   u8_t *end = optptr + len;
+00202   u8_t type = 0;
+00203 
+00204   while(optptr < end) {
+00205     switch(*optptr) {
+00206     case DHCP_OPTION_SUBNET_MASK:
+00207       memcpy(s.netmask, optptr + 2, 4);
+00208       break;
+00209     case DHCP_OPTION_ROUTER:
+00210       memcpy(s.default_router, optptr + 2, 4);
+00211       break;
+00212     case DHCP_OPTION_DNS_SERVER:
+00213       memcpy(s.dnsaddr, optptr + 2, 4);
+00214       break;
+00215     case DHCP_OPTION_MSG_TYPE:
+00216       type = *(optptr + 2);
+00217       break;
+00218     case DHCP_OPTION_SERVER_ID:
+00219       memcpy(s.serverid, optptr + 2, 4);
+00220       break;
+00221     case DHCP_OPTION_LEASE_TIME:
+00222       memcpy(s.lease_time, optptr + 2, 4);
+00223       break;
+00224     case DHCP_OPTION_END:
+00225       return type;
+00226     }
+00227 
+00228     optptr += optptr[1] + 2;
+00229   }
+00230   return type;
+00231 }
+00232 /*---------------------------------------------------------------------------*/
+00233 static u8_t
+00234 parse_msg(void)
+00235 {
+00236   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+00237   
+00238   if(m->op == DHCP_REPLY &&
+00239      memcmp(m->xid, xid, sizeof(xid)) == 0 &&
+00240      memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) {
+00241     memcpy(s.ipaddr, m->yiaddr, 4);
+00242     return parse_options(&m->options[4], uip_datalen());
+00243   }
+00244   return 0;
+00245 }
+00246 /*---------------------------------------------------------------------------*/
+00247 static
+00248 PT_THREAD(handle_dhcp(void))
+00249 {
+00250   PT_BEGIN(&s.pt);
+00251   
+00252   /* try_again:*/
+00253   s.state = STATE_SENDING;
+00254   s.ticks = CLOCK_SECOND;
+00255 
+00256   do {
+00257     send_discover();
+00258     timer_set(&s.timer, s.ticks);
+00259     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
+00260 
+00261     if(uip_newdata() && parse_msg() == DHCPOFFER) {
+00262       s.state = STATE_OFFER_RECEIVED;
+00263       break;
+00264     }
+00265 
+00266     if(s.ticks < CLOCK_SECOND * 60) {
+00267       s.ticks *= 2;
+00268     }
+00269   } while(s.state != STATE_OFFER_RECEIVED);
+00270   
+00271   s.ticks = CLOCK_SECOND;
+00272 
+00273   do {
+00274     send_request();
+00275     timer_set(&s.timer, s.ticks);
+00276     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
+00277 
+00278     if(uip_newdata() && parse_msg() == DHCPACK) {
+00279       s.state = STATE_CONFIG_RECEIVED;
+00280       break;
+00281     }
+00282 
+00283     if(s.ticks <= CLOCK_SECOND * 10) {
+00284       s.ticks += CLOCK_SECOND;
+00285     } else {
+00286       PT_RESTART(&s.pt);
+00287     }
+00288   } while(s.state != STATE_CONFIG_RECEIVED);
+00289   
+00290 #if 0
+00291   printf("Got IP address %d.%d.%d.%d\n",
+00292          uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr),
+00293          uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr));
+00294   printf("Got netmask %d.%d.%d.%d\n",
+00295          uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask),
+00296          uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask));
+00297   printf("Got DNS server %d.%d.%d.%d\n",
+00298          uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr),
+00299          uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr));
+00300   printf("Got default router %d.%d.%d.%d\n",
+00301          uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router),
+00302          uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router));
+00303   printf("Lease expires in %ld seconds\n",
+00304          ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1]));
+00305 #endif
+00306 
+00307   dhcpc_configured(&s);
+00308   
+00309   /*  timer_stop(&s.timer);*/
+00310 
+00311   /*
+00312    * PT_END restarts the thread so we do this instead. Eventually we
+00313    * should reacquire expired leases here.
+00314    */
+00315   while(1) {
+00316     PT_YIELD(&s.pt);
+00317   }
+00318 
+00319   PT_END(&s.pt);
+00320 }
+00321 /*---------------------------------------------------------------------------*/
+00322 void
+00323 dhcpc_init(const void *mac_addr, int mac_len)
+00324 {
+00325   uip_ipaddr_t addr;
+00326   
+00327   s.mac_addr = mac_addr;
+00328   s.mac_len  = mac_len;
+00329 
+00330   s.state = STATE_INITIAL;
+00331   uip_ipaddr(addr, 255,255,255,255);
+00332   s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
+00333   if(s.conn != NULL) {
+00334     uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
+00335   }
+00336   PT_INIT(&s.pt);
+00337 }
+00338 /*---------------------------------------------------------------------------*/
+00339 void
+00340 dhcpc_appcall(void)
+00341 {
+00342   handle_dhcp();
+00343 }
+00344 /*---------------------------------------------------------------------------*/
+00345 void
+00346 dhcpc_request(void)
+00347 {
+00348   u16_t ipaddr[2];
+00349   
+00350   if(s.state == STATE_INITIAL) {
+00351     uip_ipaddr(ipaddr, 0,0,0,0);
+00352     uip_sethostaddr(ipaddr);
+00353     /*    handle_dhcp(PROCESS_EVENT_NONE, NULL);*/
+00354   }
+00355 }
+00356 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00169.html b/Target/Source/third_party/uip/doc/html/a00169.html new file mode 100644 index 00000000..32e96352 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00169.html @@ -0,0 +1,93 @@ + + +uIP 1.0: apps/dhcpc/dhcpc.h Source File + + + + + + +

apps/dhcpc/dhcpc.h

00001 /*
+00002  * Copyright (c) 2005, Swedish Institute of Computer Science
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $
+00032  */
+00033 #ifndef __DHCPC_H__
+00034 #define __DHCPC_H__
+00035 
+00036 #include "timer.h"
+00037 #include "pt.h"
+00038 
+00039 struct dhcpc_state {
+00040   struct pt pt;
+00041   char state;
+00042   struct uip_udp_conn *conn;
+00043   struct timer timer;
+00044   u16_t ticks;
+00045   const void *mac_addr;
+00046   int mac_len;
+00047   
+00048   u8_t serverid[4];
+00049 
+00050   u16_t lease_time[2];
+00051   u16_t ipaddr[2];
+00052   u16_t netmask[2];
+00053   u16_t dnsaddr[2];
+00054   u16_t default_router[2];
+00055 };
+00056 
+00057 void dhcpc_init(const void *mac_addr, int mac_len);
+00058 void dhcpc_request(void);
+00059 
+00060 void dhcpc_appcall(void);
+00061 
+00062 void dhcpc_configured(const struct dhcpc_state *s);
+00063 
+00064 typedef struct dhcpc_state uip_udp_appstate_t;
+00065 #define UIP_UDP_APPCALL dhcpc_appcall
+00066 
+00067 
+00068 #endif /* __DHCPC_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00170.html b/Target/Source/third_party/uip/doc/html/a00170.html new file mode 100644 index 00000000..5291e2e0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00170.html @@ -0,0 +1,125 @@ + + +uIP 1.0: apps/hello-world/hello-world.c Source File + + + + + + +

apps/hello-world/hello-world.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup helloworld
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  *         An example of how to write uIP applications
+00009  *         with protosockets.
+00010  * \author
+00011  *         Adam Dunkels <adam@sics.se>
+00012  */
+00013 
+00014 /*
+00015  * This is a short example of how to write uIP applications using
+00016  * protosockets.
+00017  */
+00018 
+00019 /*
+00020  * We define the application state (struct hello_world_state) in the
+00021  * hello-world.h file, so we need to include it here. We also include
+00022  * uip.h (since this cannot be included in hello-world.h) and
+00023  * <string.h>, since we use the memcpy() function in the code.
+00024  */
+00025 #include "hello-world.h"
+00026 #include "uip.h"
+00027 #include <string.h>
+00028 
+00029 /*
+00030  * Declaration of the protosocket function that handles the connection
+00031  * (defined at the end of the code).
+00032  */
+00033 static int handle_connection(struct hello_world_state *s);
+00034 /*---------------------------------------------------------------------------*/
+00035 /*
+00036  * The initialization function. We must explicitly call this function
+00037  * from the system initialization code, some time after uip_init() is
+00038  * called.
+00039  */
+00040 void
+00041 hello_world_init(void)
+00042 {
+00043   /* We start to listen for connections on TCP port 1000. */
+00044   uip_listen(HTONS(1000));
+00045 }
+00046 /*---------------------------------------------------------------------------*/
+00047 /*
+00048  * In hello-world.h we have defined the UIP_APPCALL macro to
+00049  * hello_world_appcall so that this funcion is uIP's application
+00050  * function. This function is called whenever an uIP event occurs
+00051  * (e.g. when a new connection is established, new data arrives, sent
+00052  * data is acknowledged, data needs to be retransmitted, etc.).
+00053  */
+00054 void
+00055 hello_world_appcall(void)
+00056 {
+00057   /*
+00058    * The uip_conn structure has a field called "appstate" that holds
+00059    * the application state of the connection. We make a pointer to
+00060    * this to access it easier.
+00061    */
+00062   struct hello_world_state *s = &(uip_conn->appstate);
+00063 
+00064   /*
+00065    * If a new connection was just established, we should initialize
+00066    * the protosocket in our applications' state structure.
+00067    */
+00068   if(uip_connected()) {
+00069     PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
+00070   }
+00071 
+00072   /*
+00073    * Finally, we run the protosocket function that actually handles
+00074    * the communication. We pass it a pointer to the application state
+00075    * of the current connection.
+00076    */
+00077   handle_connection(s);
+00078 }
+00079 /*---------------------------------------------------------------------------*/
+00080 /*
+00081  * This is the protosocket function that handles the communication. A
+00082  * protosocket function must always return an int, but must never
+00083  * explicitly return - all return statements are hidden in the PSOCK
+00084  * macros.
+00085  */
+00086 static int
+00087 handle_connection(struct hello_world_state *s)
+00088 {
+00089   PSOCK_BEGIN(&s->p);
+00090 
+00091   PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n");
+00092   PSOCK_READTO(&s->p, '\n');
+00093   strncpy(s->name, s->inputbuffer, sizeof(s->name));
+00094   PSOCK_SEND_STR(&s->p, "Hello ");
+00095   PSOCK_SEND_STR(&s->p, s->name);
+00096   PSOCK_CLOSE(&s->p);
+00097   
+00098   PSOCK_END(&s->p);
+00099 }
+00100 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00171.html b/Target/Source/third_party/uip/doc/html/a00171.html new file mode 100644 index 00000000..8de185aa --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00171.html @@ -0,0 +1,77 @@ + + +uIP 1.0: apps/hello-world/hello-world.h Source File + + + + + + +

apps/hello-world/hello-world.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup helloworld Hello, world
+00008  * @{
+00009  *
+00010  * A small example showing how to write applications with
+00011  * \ref psock "protosockets".
+00012  */
+00013 
+00014 /**
+00015  * \file
+00016  *         Header file for an example of how to write uIP applications
+00017  *         with protosockets.
+00018  * \author
+00019  *         Adam Dunkels <adam@sics.se>
+00020  */
+00021 
+00022 #ifndef __HELLO_WORLD_H__
+00023 #define __HELLO_WORLD_H__
+00024 
+00025 /* Since this file will be included by uip.h, we cannot include uip.h
+00026    here. But we might need to include uipopt.h if we need the u8_t and
+00027    u16_t datatypes. */
+00028 #include "uipopt.h"
+00029 
+00030 #include "psock.h"
+00031 
+00032 /* Next, we define the uip_tcp_appstate_t datatype. This is the state
+00033    of our application, and the memory required for this state is
+00034    allocated together with each TCP connection. One application state
+00035    for each TCP connection. */
+00036 typedef struct hello_world_state {
+00037   struct psock p;
+00038   char inputbuffer[10];
+00039   char name[40];
+00040 } uip_tcp_appstate_t;
+00041 
+00042 /* Finally we define the application function to be called by uIP. */
+00043 void hello_world_appcall(void);
+00044 #ifndef UIP_APPCALL
+00045 #define UIP_APPCALL hello_world_appcall
+00046 #endif /* UIP_APPCALL */
+00047 
+00048 void hello_world_init(void);
+00049 
+00050 #endif /* __HELLO_WORLD_H__ */
+00051 /** @} */
+00052 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00172.html b/Target/Source/third_party/uip/doc/html/a00172.html new file mode 100644 index 00000000..1871f077 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00172.html @@ -0,0 +1,489 @@ + + +uIP 1.0: apps/resolv/resolv.c Source File + + + + + + +

apps/resolv/resolv.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup resolv DNS resolver
+00008  * @{
+00009  *
+00010  * The uIP DNS resolver functions are used to lookup a hostname and
+00011  * map it to a numerical IP address. It maintains a list of resolved
+00012  * hostnames that can be queried with the resolv_lookup()
+00013  * function. New hostnames can be resolved using the resolv_query()
+00014  * function.
+00015  *
+00016  * When a hostname has been resolved (or found to be non-existant),
+00017  * the resolver code calls a callback function called resolv_found()
+00018  * that must be implemented by the module that uses the resolver.
+00019  */
+00020 
+00021 /**
+00022  * \file
+00023  * DNS host name to IP address resolver.
+00024  * \author Adam Dunkels <adam@dunkels.com>
+00025  *
+00026  * This file implements a DNS host name to IP address resolver.
+00027  */
+00028 
+00029 /*
+00030  * Copyright (c) 2002-2003, Adam Dunkels.
+00031  * All rights reserved.
+00032  *
+00033  * Redistribution and use in source and binary forms, with or without
+00034  * modification, are permitted provided that the following conditions
+00035  * are met:
+00036  * 1. Redistributions of source code must retain the above copyright
+00037  *    notice, this list of conditions and the following disclaimer.
+00038  * 2. Redistributions in binary form must reproduce the above copyright
+00039  *    notice, this list of conditions and the following disclaimer in the
+00040  *    documentation and/or other materials provided with the distribution.
+00041  * 3. The name of the author may not be used to endorse or promote
+00042  *    products derived from this software without specific prior
+00043  *    written permission.
+00044  *
+00045  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00046  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00047  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00048  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00049  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00050  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00051  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00052  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00053  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00054  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00055  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00056  *
+00057  * This file is part of the uIP TCP/IP stack.
+00058  *
+00059  * $Id: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $
+00060  *
+00061  */
+00062 
+00063 #include "resolv.h"
+00064 #include "uip.h"
+00065 
+00066 #include <string.h>
+00067 
+00068 #ifndef NULL
+00069 #define NULL (void *)0
+00070 #endif /* NULL */
+00071 
+00072 /** \internal The maximum number of retries when asking for a name. */
+00073 #define MAX_RETRIES 8
+00074 
+00075 /** \internal The DNS message header. */
+00076 struct dns_hdr {
+00077   u16_t id;
+00078   u8_t flags1, flags2;
+00079 #define DNS_FLAG1_RESPONSE        0x80
+00080 #define DNS_FLAG1_OPCODE_STATUS   0x10
+00081 #define DNS_FLAG1_OPCODE_INVERSE  0x08
+00082 #define DNS_FLAG1_OPCODE_STANDARD 0x00
+00083 #define DNS_FLAG1_AUTHORATIVE     0x04
+00084 #define DNS_FLAG1_TRUNC           0x02
+00085 #define DNS_FLAG1_RD              0x01
+00086 #define DNS_FLAG2_RA              0x80
+00087 #define DNS_FLAG2_ERR_MASK        0x0f
+00088 #define DNS_FLAG2_ERR_NONE        0x00
+00089 #define DNS_FLAG2_ERR_NAME        0x03
+00090   u16_t numquestions;
+00091   u16_t numanswers;
+00092   u16_t numauthrr;
+00093   u16_t numextrarr;
+00094 };
+00095 
+00096 /** \internal The DNS answer message structure. */
+00097 struct dns_answer {
+00098   /* DNS answer record starts with either a domain name or a pointer
+00099      to a name already present somewhere in the packet. */
+00100   u16_t type;
+00101   u16_t class;
+00102   u16_t ttl[2];
+00103   u16_t len;
+00104   uip_ipaddr_t ipaddr;
+00105 };
+00106 
+00107 struct namemap {
+00108 #define STATE_UNUSED 0
+00109 #define STATE_NEW    1
+00110 #define STATE_ASKING 2
+00111 #define STATE_DONE   3
+00112 #define STATE_ERROR  4
+00113   u8_t state;
+00114   u8_t tmr;
+00115   u8_t retries;
+00116   u8_t seqno;
+00117   u8_t err;
+00118   char name[32];
+00119   uip_ipaddr_t ipaddr;
+00120 };
+00121 
+00122 #ifndef UIP_CONF_RESOLV_ENTRIES
+00123 #define RESOLV_ENTRIES 4
+00124 #else /* UIP_CONF_RESOLV_ENTRIES */
+00125 #define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES
+00126 #endif /* UIP_CONF_RESOLV_ENTRIES */
+00127 
+00128 
+00129 static struct namemap names[RESOLV_ENTRIES];
+00130 
+00131 static u8_t seqno;
+00132 
+00133 static struct uip_udp_conn *resolv_conn = NULL;
+00134 
+00135 
+00136 /*---------------------------------------------------------------------------*/
+00137 /** \internal
+00138  * Walk through a compact encoded DNS name and return the end of it.
+00139  *
+00140  * \return The end of the name.
+00141  */
+00142 /*---------------------------------------------------------------------------*/
+00143 static unsigned char *
+00144 parse_name(unsigned char *query)
+00145 {
+00146   unsigned char n;
+00147 
+00148   do {
+00149     n = *query++;
+00150     
+00151     while(n > 0) {
+00152       /*      printf("%c", *query);*/
+00153       ++query;
+00154       --n;
+00155     };
+00156     /*    printf(".");*/
+00157   } while(*query != 0);
+00158   /*  printf("\n");*/
+00159   return query + 1;
+00160 }
+00161 /*---------------------------------------------------------------------------*/
+00162 /** \internal
+00163  * Runs through the list of names to see if there are any that have
+00164  * not yet been queried and, if so, sends out a query.
+00165  */
+00166 /*---------------------------------------------------------------------------*/
+00167 static void
+00168 check_entries(void)
+00169 {
+00170   register struct dns_hdr *hdr;
+00171   char *query, *nptr, *nameptr;
+00172   static u8_t i;
+00173   static u8_t n;
+00174   register struct namemap *namemapptr;
+00175   
+00176   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00177     namemapptr = &names[i];
+00178     if(namemapptr->state == STATE_NEW ||
+00179        namemapptr->state == STATE_ASKING) {
+00180       if(namemapptr->state == STATE_ASKING) {
+00181         if(--namemapptr->tmr == 0) {
+00182           if(++namemapptr->retries == MAX_RETRIES) {
+00183             namemapptr->state = STATE_ERROR;
+00184             resolv_found(namemapptr->name, NULL);
+00185             continue;
+00186           }
+00187           namemapptr->tmr = namemapptr->retries;
+00188         } else {
+00189           /*      printf("Timer %d\n", namemapptr->tmr);*/
+00190           /* Its timer has not run out, so we move on to next
+00191              entry. */
+00192           continue;
+00193         }
+00194       } else {
+00195         namemapptr->state = STATE_ASKING;
+00196         namemapptr->tmr = 1;
+00197         namemapptr->retries = 0;
+00198       }
+00199       hdr = (struct dns_hdr *)uip_appdata;
+00200       memset(hdr, 0, sizeof(struct dns_hdr));
+00201       hdr->id = htons(i);
+00202       hdr->flags1 = DNS_FLAG1_RD;
+00203       hdr->numquestions = HTONS(1);
+00204       query = (char *)uip_appdata + 12;
+00205       nameptr = namemapptr->name;
+00206       --nameptr;
+00207       /* Convert hostname into suitable query format. */
+00208       do {
+00209         ++nameptr;
+00210         nptr = query;
+00211         ++query;
+00212         for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) {
+00213           *query = *nameptr;
+00214           ++query;
+00215           ++n;
+00216         }
+00217         *nptr = n;
+00218       } while(*nameptr != 0);
+00219       {
+00220         static unsigned char endquery[] =
+00221           {0,0,1,0,1};
+00222         memcpy(query, endquery, 5);
+00223       }
+00224       uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata));
+00225       break;
+00226     }
+00227   }
+00228 }
+00229 /*---------------------------------------------------------------------------*/
+00230 /** \internal
+00231  * Called when new UDP data arrives.
+00232  */
+00233 /*---------------------------------------------------------------------------*/
+00234 static void
+00235 newdata(void)
+00236 {
+00237   char *nameptr;
+00238   struct dns_answer *ans;
+00239   struct dns_hdr *hdr;
+00240   static u8_t nquestions, nanswers;
+00241   static u8_t i;
+00242   register struct namemap *namemapptr;
+00243   
+00244   hdr = (struct dns_hdr *)uip_appdata;
+00245   /*  printf("ID %d\n", htons(hdr->id));
+00246       printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
+00247       printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK);
+00248       printf("Num questions %d, answers %d, authrr %d, extrarr %d\n",
+00249       htons(hdr->numquestions),
+00250       htons(hdr->numanswers),
+00251       htons(hdr->numauthrr),
+00252       htons(hdr->numextrarr));
+00253   */
+00254 
+00255   /* The ID in the DNS header should be our entry into the name
+00256      table. */
+00257   i = htons(hdr->id);
+00258   namemapptr = &names[i];
+00259   if(i < RESOLV_ENTRIES &&
+00260      namemapptr->state == STATE_ASKING) {
+00261 
+00262     /* This entry is now finished. */
+00263     namemapptr->state = STATE_DONE;
+00264     namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK;
+00265 
+00266     /* Check for error. If so, call callback to inform. */
+00267     if(namemapptr->err != 0) {
+00268       namemapptr->state = STATE_ERROR;
+00269       resolv_found(namemapptr->name, NULL);
+00270       return;
+00271     }
+00272 
+00273     /* We only care about the question(s) and the answers. The authrr
+00274        and the extrarr are simply discarded. */
+00275     nquestions = htons(hdr->numquestions);
+00276     nanswers = htons(hdr->numanswers);
+00277 
+00278     /* Skip the name in the question. XXX: This should really be
+00279        checked agains the name in the question, to be sure that they
+00280        match. */
+00281     nameptr = parse_name((char *)uip_appdata + 12) + 4;
+00282 
+00283     while(nanswers > 0) {
+00284       /* The first byte in the answer resource record determines if it
+00285          is a compressed record or a normal one. */
+00286       if(*nameptr & 0xc0) {
+00287         /* Compressed name. */
+00288         nameptr +=2;
+00289         /*      printf("Compressed anwser\n");*/
+00290       } else {
+00291         /* Not compressed name. */
+00292         nameptr = parse_name((char *)nameptr);
+00293       }
+00294 
+00295       ans = (struct dns_answer *)nameptr;
+00296       /*      printf("Answer: type %x, class %x, ttl %x, length %x\n",
+00297              htons(ans->type), htons(ans->class), (htons(ans->ttl[0])
+00298              << 16) | htons(ans->ttl[1]), htons(ans->len));*/
+00299 
+00300       /* Check for IP address type and Internet class. Others are
+00301          discarded. */
+00302       if(ans->type == HTONS(1) &&
+00303          ans->class == HTONS(1) &&
+00304          ans->len == HTONS(4)) {
+00305         /*      printf("IP address %d.%d.%d.%d\n",
+00306                htons(ans->ipaddr[0]) >> 8,
+00307                htons(ans->ipaddr[0]) & 0xff,
+00308                htons(ans->ipaddr[1]) >> 8,
+00309                htons(ans->ipaddr[1]) & 0xff);*/
+00310         /* XXX: we should really check that this IP address is the one
+00311            we want. */
+00312         namemapptr->ipaddr[0] = ans->ipaddr[0];
+00313         namemapptr->ipaddr[1] = ans->ipaddr[1];
+00314         
+00315         resolv_found(namemapptr->name, namemapptr->ipaddr);
+00316         return;
+00317       } else {
+00318         nameptr = nameptr + 10 + htons(ans->len);
+00319       }
+00320       --nanswers;
+00321     }
+00322   }
+00323 
+00324 }
+00325 /*---------------------------------------------------------------------------*/
+00326 /** \internal
+00327  * The main UDP function.
+00328  */
+00329 /*---------------------------------------------------------------------------*/
+00330 void
+00331 resolv_appcall(void)
+00332 {
+00333   if(uip_udp_conn->rport == HTONS(53)) {
+00334     if(uip_poll()) {
+00335       check_entries();
+00336     }
+00337     if(uip_newdata()) {
+00338       newdata();
+00339     }
+00340   }
+00341 }
+00342 /*---------------------------------------------------------------------------*/
+00343 /**
+00344  * Queues a name so that a question for the name will be sent out.
+00345  *
+00346  * \param name The hostname that is to be queried.
+00347  */
+00348 /*---------------------------------------------------------------------------*/
+00349 void
+00350 resolv_query(char *name)
+00351 {
+00352   static u8_t i;
+00353   static u8_t lseq, lseqi;
+00354   register struct namemap *nameptr;
+00355       
+00356   lseq = lseqi = 0;
+00357   
+00358   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00359     nameptr = &names[i];
+00360     if(nameptr->state == STATE_UNUSED) {
+00361       break;
+00362     }
+00363     if(seqno - nameptr->seqno > lseq) {
+00364       lseq = seqno - nameptr->seqno;
+00365       lseqi = i;
+00366     }
+00367   }
+00368 
+00369   if(i == RESOLV_ENTRIES) {
+00370     i = lseqi;
+00371     nameptr = &names[i];
+00372   }
+00373 
+00374   /*  printf("Using entry %d\n", i);*/
+00375 
+00376   strcpy(nameptr->name, name);
+00377   nameptr->state = STATE_NEW;
+00378   nameptr->seqno = seqno;
+00379   ++seqno;
+00380 }
+00381 /*---------------------------------------------------------------------------*/
+00382 /**
+00383  * Look up a hostname in the array of known hostnames.
+00384  *
+00385  * \note This function only looks in the internal array of known
+00386  * hostnames, it does not send out a query for the hostname if none
+00387  * was found. The function resolv_query() can be used to send a query
+00388  * for a hostname.
+00389  *
+00390  * \return A pointer to a 4-byte representation of the hostname's IP
+00391  * address, or NULL if the hostname was not found in the array of
+00392  * hostnames.
+00393  */
+00394 /*---------------------------------------------------------------------------*/
+00395 u16_t *
+00396 resolv_lookup(char *name)
+00397 {
+00398   static u8_t i;
+00399   struct namemap *nameptr;
+00400   
+00401   /* Walk through the list to see if the name is in there. If it is
+00402      not, we return NULL. */
+00403   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00404     nameptr = &names[i];
+00405     if(nameptr->state == STATE_DONE &&
+00406        strcmp(name, nameptr->name) == 0) {
+00407       return nameptr->ipaddr;
+00408     }
+00409   }
+00410   return NULL;
+00411 }
+00412 /*---------------------------------------------------------------------------*/
+00413 /**
+00414  * Obtain the currently configured DNS server.
+00415  *
+00416  * \return A pointer to a 4-byte representation of the IP address of
+00417  * the currently configured DNS server or NULL if no DNS server has
+00418  * been configured.
+00419  */
+00420 /*---------------------------------------------------------------------------*/
+00421 u16_t *
+00422 resolv_getserver(void)
+00423 {
+00424   if(resolv_conn == NULL) {
+00425     return NULL;
+00426   }
+00427   return resolv_conn->ripaddr;
+00428 }
+00429 /*---------------------------------------------------------------------------*/
+00430 /**
+00431  * Configure which DNS server to use for queries.
+00432  *
+00433  * \param dnsserver A pointer to a 4-byte representation of the IP
+00434  * address of the DNS server to be configured.
+00435  */
+00436 /*---------------------------------------------------------------------------*/
+00437 void
+00438 resolv_conf(u16_t *dnsserver)
+00439 {
+00440   if(resolv_conn != NULL) {
+00441     uip_udp_remove(resolv_conn);
+00442   }
+00443   
+00444   resolv_conn = uip_udp_new(dnsserver, HTONS(53));
+00445 }
+00446 /*---------------------------------------------------------------------------*/
+00447 /**
+00448  * Initalize the resolver.
+00449  */
+00450 /*---------------------------------------------------------------------------*/
+00451 void
+00452 resolv_init(void)
+00453 {
+00454   static u8_t i;
+00455   
+00456   for(i = 0; i < RESOLV_ENTRIES; ++i) {
+00457     names[i].state = STATE_DONE;
+00458   }
+00459 
+00460 }
+00461 /*---------------------------------------------------------------------------*/
+00462 
+00463 /** @} */
+00464 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00173.html b/Target/Source/third_party/uip/doc/html/a00173.html new file mode 100644 index 00000000..dcd2f412 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00173.html @@ -0,0 +1,100 @@ + + +uIP 1.0: apps/resolv/resolv.h Source File + + + + + + +

apps/resolv/resolv.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup resolv
+00003  * @{
+00004  */
+00005 /**
+00006  * \file
+00007  * DNS resolver code header file.
+00008  * \author Adam Dunkels <adam@dunkels.com>
+00009  */
+00010 
+00011 /*
+00012  * Copyright (c) 2002-2003, Adam Dunkels.
+00013  * All rights reserved.
+00014  *
+00015  * Redistribution and use in source and binary forms, with or without
+00016  * modification, are permitted provided that the following conditions
+00017  * are met:
+00018  * 1. Redistributions of source code must retain the above copyright
+00019  *    notice, this list of conditions and the following disclaimer.
+00020  * 2. Redistributions in binary form must reproduce the above copyright
+00021  *    notice, this list of conditions and the following disclaimer in the
+00022  *    documentation and/or other materials provided with the distribution.
+00023  * 3. The name of the author may not be used to endorse or promote
+00024  *    products derived from this software without specific prior
+00025  *    written permission.
+00026  *
+00027  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00028  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00029  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00030  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00031  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00032  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00033  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00034  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00035  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00036  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00037  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00038  *
+00039  * This file is part of the uIP TCP/IP stack.
+00040  *
+00041  * $Id: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $
+00042  *
+00043  */
+00044 #ifndef __RESOLV_H__
+00045 #define __RESOLV_H__
+00046 
+00047 typedef int uip_udp_appstate_t;
+00048 void resolv_appcall(void);
+00049 #define UIP_UDP_APPCALL resolv_appcall
+00050 
+00051 #include "uipopt.h"
+00052 
+00053 /**
+00054  * Callback function which is called when a hostname is found.
+00055  *
+00056  * This function must be implemented by the module that uses the DNS
+00057  * resolver. It is called when a hostname is found, or when a hostname
+00058  * was not found.
+00059  *
+00060  * \param name A pointer to the name that was looked up.  \param
+00061  * ipaddr A pointer to a 4-byte array containing the IP address of the
+00062  * hostname, or NULL if the hostname could not be found.
+00063  */
+00064 void resolv_found(char *name, u16_t *ipaddr);
+00065 
+00066 /* Functions. */
+00067 void resolv_conf(u16_t *dnsserver);
+00068 u16_t *resolv_getserver(void);
+00069 void resolv_init(void);
+00070 u16_t *resolv_lookup(char *name);
+00071 void resolv_query(char *name);
+00072 
+00073 #endif /* __RESOLV_H__ */
+00074 
+00075 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00174.html b/Target/Source/third_party/uip/doc/html/a00174.html new file mode 100644 index 00000000..611a5bb3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00174.html @@ -0,0 +1,287 @@ + + +uIP 1.0: apps/smtp/smtp.c Source File + + + + + + +

apps/smtp/smtp.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup smtp SMTP E-mail sender
+00008  * @{
+00009  *
+00010  * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is
+00011  * the standard way of sending and transfering e-mail on the
+00012  * Internet. This simple example implementation is intended as an
+00013  * example of how to implement protocols in uIP, and is able to send
+00014  * out e-mail but has not been extensively tested.
+00015  */
+00016 
+00017 /**
+00018  * \file
+00019  * SMTP example implementation
+00020  * \author Adam Dunkels <adam@dunkels.com>
+00021  */
+00022 
+00023 /*
+00024  * Copyright (c) 2004, Adam Dunkels.
+00025  * All rights reserved.
+00026  *
+00027  * Redistribution and use in source and binary forms, with or without
+00028  * modification, are permitted provided that the following conditions
+00029  * are met:
+00030  * 1. Redistributions of source code must retain the above copyright
+00031  *    notice, this list of conditions and the following disclaimer.
+00032  * 2. Redistributions in binary form must reproduce the above copyright
+00033  *    notice, this list of conditions and the following disclaimer in the
+00034  *    documentation and/or other materials provided with the distribution.
+00035  * 3. Neither the name of the Institute nor the names of its contributors
+00036  *    may be used to endorse or promote products derived from this software
+00037  *    without specific prior written permission.
+00038  *
+00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00049  * SUCH DAMAGE.
+00050  *
+00051  * This file is part of the uIP TCP/IP stack.
+00052  *
+00053  * Author: Adam Dunkels <adam@sics.se>
+00054  *
+00055  * $Id: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $
+00056  */
+00057 #include "smtp.h"
+00058 
+00059 #include "smtp-strings.h"
+00060 #include "psock.h"
+00061 #include "uip.h"
+00062 
+00063 #include <string.h>
+00064 
+00065 static struct smtp_state s;
+00066 
+00067 static char *localhostname;
+00068 static uip_ipaddr_t smtpserver;
+00069 
+00070 #define ISO_nl 0x0a
+00071 #define ISO_cr 0x0d
+00072 
+00073 #define ISO_period 0x2e
+00074 
+00075 #define ISO_2  0x32
+00076 #define ISO_3  0x33
+00077 #define ISO_4  0x34
+00078 #define ISO_5  0x35
+00079 
+00080 
+00081 /*---------------------------------------------------------------------------*/
+00082 static
+00083 PT_THREAD(smtp_thread(void))
+00084 {
+00085   PSOCK_BEGIN(&s.psock);
+00086 
+00087   PSOCK_READTO(&s.psock, ISO_nl);
+00088    
+00089   if(strncmp(s.inputbuffer, smtp_220, 3) != 0) {
+00090     PSOCK_CLOSE(&s.psock);
+00091     smtp_done(2);
+00092     PSOCK_EXIT(&s.psock);
+00093   }
+00094   
+00095   PSOCK_SEND_STR(&s.psock, (char *)smtp_helo);
+00096   PSOCK_SEND_STR(&s.psock, localhostname);
+00097   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00098 
+00099   PSOCK_READTO(&s.psock, ISO_nl);
+00100   
+00101   if(s.inputbuffer[0] != ISO_2) {
+00102     PSOCK_CLOSE(&s.psock);
+00103     smtp_done(3);
+00104     PSOCK_EXIT(&s.psock);
+00105   }
+00106 
+00107   PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from);
+00108   PSOCK_SEND_STR(&s.psock, s.from);
+00109   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00110 
+00111   PSOCK_READTO(&s.psock, ISO_nl);
+00112   
+00113   if(s.inputbuffer[0] != ISO_2) {
+00114     PSOCK_CLOSE(&s.psock);
+00115     smtp_done(4);
+00116     PSOCK_EXIT(&s.psock);
+00117   }
+00118 
+00119   PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
+00120   PSOCK_SEND_STR(&s.psock, s.to);
+00121   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00122 
+00123   PSOCK_READTO(&s.psock, ISO_nl);
+00124   
+00125   if(s.inputbuffer[0] != ISO_2) {
+00126     PSOCK_CLOSE(&s.psock);
+00127     smtp_done(5);
+00128     PSOCK_EXIT(&s.psock);
+00129   }
+00130   
+00131   if(s.cc != 0) {
+00132     PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
+00133     PSOCK_SEND_STR(&s.psock, s.cc);
+00134     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00135 
+00136     PSOCK_READTO(&s.psock, ISO_nl);
+00137   
+00138     if(s.inputbuffer[0] != ISO_2) {
+00139       PSOCK_CLOSE(&s.psock);
+00140       smtp_done(6);
+00141       PSOCK_EXIT(&s.psock);
+00142     }
+00143   }
+00144   
+00145   PSOCK_SEND_STR(&s.psock, (char *)smtp_data);
+00146   
+00147   PSOCK_READTO(&s.psock, ISO_nl);
+00148   
+00149   if(s.inputbuffer[0] != ISO_3) {
+00150     PSOCK_CLOSE(&s.psock);
+00151     smtp_done(7);
+00152     PSOCK_EXIT(&s.psock);
+00153   }
+00154 
+00155   PSOCK_SEND_STR(&s.psock, (char *)smtp_to);
+00156   PSOCK_SEND_STR(&s.psock, s.to);
+00157   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00158   
+00159   if(s.cc != 0) {
+00160     PSOCK_SEND_STR(&s.psock, (char *)smtp_cc);
+00161     PSOCK_SEND_STR(&s.psock, s.cc);
+00162     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00163   }
+00164   
+00165   PSOCK_SEND_STR(&s.psock, (char *)smtp_from);
+00166   PSOCK_SEND_STR(&s.psock, s.from);
+00167   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00168   
+00169   PSOCK_SEND_STR(&s.psock, (char *)smtp_subject);
+00170   PSOCK_SEND_STR(&s.psock, s.subject);
+00171   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
+00172 
+00173   PSOCK_SEND(&s.psock, s.msg, s.msglen);
+00174   
+00175   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl);
+00176 
+00177   PSOCK_READTO(&s.psock, ISO_nl);
+00178   if(s.inputbuffer[0] != ISO_2) {
+00179     PSOCK_CLOSE(&s.psock);
+00180     smtp_done(8);
+00181     PSOCK_EXIT(&s.psock);
+00182   }
+00183 
+00184   PSOCK_SEND_STR(&s.psock, (char *)smtp_quit);
+00185   smtp_done(SMTP_ERR_OK);
+00186   PSOCK_END(&s.psock);
+00187 }
+00188 /*---------------------------------------------------------------------------*/
+00189 void
+00190 smtp_appcall(void)
+00191 {
+00192   if(uip_closed()) {
+00193     s.connected = 0;
+00194     return;
+00195   }
+00196   if(uip_aborted() || uip_timedout()) {
+00197     s.connected = 0;
+00198     smtp_done(1);
+00199     return;
+00200   }
+00201   smtp_thread();
+00202 }
+00203 /*---------------------------------------------------------------------------*/
+00204 /**
+00205  * Specificy an SMTP server and hostname.
+00206  *
+00207  * This function is used to configure the SMTP module with an SMTP
+00208  * server and the hostname of the host.
+00209  *
+00210  * \param lhostname The hostname of the uIP host.
+00211  *
+00212  * \param server A pointer to a 4-byte array representing the IP
+00213  * address of the SMTP server to be configured.
+00214  */
+00215 void
+00216 smtp_configure(char *lhostname, void *server)
+00217 {
+00218   localhostname = lhostname;
+00219   uip_ipaddr_copy(smtpserver, server);
+00220 }
+00221 /*---------------------------------------------------------------------------*/
+00222 /**
+00223  * Send an e-mail.
+00224  *
+00225  * \param to The e-mail address of the receiver of the e-mail.
+00226  * \param cc The e-mail address of the CC: receivers of the e-mail.
+00227  * \param from The e-mail address of the sender of the e-mail.
+00228  * \param subject The subject of the e-mail.
+00229  * \param msg The actual e-mail message.
+00230  * \param msglen The length of the e-mail message.
+00231  */
+00232 unsigned char
+00233 smtp_send(char *to, char *cc, char *from,
+00234           char *subject, char *msg, u16_t msglen)
+00235 {
+00236   struct uip_conn *conn;
+00237 
+00238   conn = uip_connect(smtpserver, HTONS(25));
+00239   if(conn == NULL) {
+00240     return 0;
+00241   }
+00242   s.connected = 1;
+00243   s.to = to;
+00244   s.cc = cc;
+00245   s.from = from;
+00246   s.subject = subject;
+00247   s.msg = msg;
+00248   s.msglen = msglen;
+00249 
+00250   PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer));
+00251   
+00252   return 1;
+00253 }
+00254 /*---------------------------------------------------------------------------*/
+00255 void
+00256 smtp_init(void)
+00257 {
+00258   s.connected = 0;
+00259 }
+00260 /*---------------------------------------------------------------------------*/
+00261 /** @} */
+00262 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00175.html b/Target/Source/third_party/uip/doc/html/a00175.html new file mode 100644 index 00000000..9f7ddea4 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00175.html @@ -0,0 +1,128 @@ + + +uIP 1.0: apps/smtp/smtp.h Source File + + + + + + +

apps/smtp/smtp.h

Go to the documentation of this file.
00001 
+00002 /**
+00003  * \addtogroup smtp
+00004  * @{
+00005  */
+00006 
+00007 
+00008 /**
+00009  * \file
+00010  * SMTP header file
+00011  * \author Adam Dunkels <adam@dunkels.com>
+00012  */
+00013 
+00014 /*
+00015  * Copyright (c) 2002, Adam Dunkels.
+00016  * All rights reserved.
+00017  *
+00018  * Redistribution and use in source and binary forms, with or without
+00019  * modification, are permitted provided that the following conditions
+00020  * are met:
+00021  * 1. Redistributions of source code must retain the above copyright
+00022  *    notice, this list of conditions and the following disclaimer.
+00023  * 2. Redistributions in binary form must reproduce the above copyright
+00024  *    notice, this list of conditions and the following disclaimer in the
+00025  *    documentation and/or other materials provided with the distribution.
+00026  * 3. The name of the author may not be used to endorse or promote
+00027  *    products derived from this software without specific prior
+00028  *    written permission.
+00029  *
+00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00041  *
+00042  * This file is part of the uIP TCP/IP stack.
+00043  *
+00044  * $Id: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $
+00045  *
+00046  */
+00047 #ifndef __SMTP_H__
+00048 #define __SMTP_H__
+00049 
+00050 #include "uipopt.h"
+00051 
+00052 /**
+00053  * Error number that signifies a non-error condition.
+00054  */
+00055 #define SMTP_ERR_OK 0
+00056 
+00057 /**
+00058  * Callback function that is called when an e-mail transmission is
+00059  * done.
+00060  *
+00061  * This function must be implemented by the module that uses the SMTP
+00062  * module.
+00063  *
+00064  * \param error The number of the error if an error occured, or
+00065  * SMTP_ERR_OK.
+00066  */
+00067 void smtp_done(unsigned char error);
+00068 
+00069 void smtp_init(void);
+00070 
+00071 /* Functions. */
+00072 void smtp_configure(char *localhostname, u16_t *smtpserver);
+00073 unsigned char smtp_send(char *to, char *from,
+00074                         char *subject, char *msg,
+00075                         u16_t msglen);
+00076 #define SMTP_SEND(to, cc, from, subject, msg) \
+00077         smtp_send(to, cc, from, subject, msg, strlen(msg))
+00078 
+00079 void smtp_appcall(void);
+00080 
+00081 struct smtp_state {
+00082   u8_t state;
+00083   char *to;
+00084   char *from;
+00085   char *subject;
+00086   char *msg;
+00087   u16_t msglen;
+00088   
+00089   u16_t sentlen, textlen;
+00090   u16_t sendptr;
+00091 
+00092 };
+00093 
+00094 
+00095 #ifndef UIP_APPCALL
+00096 #define UIP_APPCALL     smtp_appcall
+00097 #endif
+00098 typedef struct smtp_state uip_tcp_appstate_t;
+00099 
+00100 
+00101 #endif /* __SMTP_H__ */
+00102 
+00103 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00176.html b/Target/Source/third_party/uip/doc/html/a00176.html new file mode 100644 index 00000000..2385ff03 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00176.html @@ -0,0 +1,148 @@ + + +uIP 1.0: apps/telnetd/shell.c Source File + + + + + + +

apps/telnetd/shell.c

00001  /*
+00002  * Copyright (c) 2003, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. The name of the author may not be used to endorse or promote
+00014  *    products derived from this software without specific prior
+00015  *    written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack.
+00030  *
+00031  * $Id: shell.c,v 1.1 2006/06/07 09:43:54 adam Exp $
+00032  *
+00033  */
+00034 
+00035 #include "shell.h"
+00036 
+00037 #include <string.h>
+00038 
+00039 struct ptentry {
+00040   char *commandstr;
+00041   void (* pfunc)(char *str);
+00042 };
+00043 
+00044 #define SHELL_PROMPT "uIP 1.0> "
+00045 
+00046 /*---------------------------------------------------------------------------*/
+00047 static void
+00048 parse(register char *str, struct ptentry *t)
+00049 {
+00050   struct ptentry *p;
+00051   for(p = t; p->commandstr != NULL; ++p) {
+00052     if(strncmp(p->commandstr, str, strlen(p->commandstr)) == 0) {
+00053       break;
+00054     }
+00055   }
+00056 
+00057   p->pfunc(str);
+00058 }
+00059 /*---------------------------------------------------------------------------*/
+00060 static void
+00061 inttostr(register char *str, unsigned int i)
+00062 {
+00063   str[0] = '0' + i / 100;
+00064   if(str[0] == '0') {
+00065     str[0] = ' ';
+00066   }
+00067   str[1] = '0' + (i / 10) % 10;
+00068   if(str[0] == ' ' && str[1] == '0') {
+00069     str[1] = ' ';
+00070   }
+00071   str[2] = '0' + i % 10;
+00072   str[3] = ' ';
+00073   str[4] = 0;
+00074 }
+00075 /*---------------------------------------------------------------------------*/
+00076 static void
+00077 help(char *str)
+00078 {
+00079   shell_output("Available commands:", "");
+00080   shell_output("stats   - show network statistics", "");
+00081   shell_output("conn    - show TCP connections", "");
+00082   shell_output("help, ? - show help", "");
+00083   shell_output("exit    - exit shell", "");
+00084 }
+00085 /*---------------------------------------------------------------------------*/
+00086 static void
+00087 unknown(char *str)
+00088 {
+00089   if(strlen(str) > 0) {
+00090     shell_output("Unknown command: ", str);
+00091   }
+00092 }
+00093 /*---------------------------------------------------------------------------*/
+00094 static struct ptentry parsetab[] =
+00095   {{"stats", help},
+00096    {"conn", help},
+00097    {"help", help},
+00098    {"exit", shell_quit},
+00099    {"?", help},
+00100 
+00101    /* Default action */
+00102    {NULL, unknown}};
+00103 /*---------------------------------------------------------------------------*/
+00104 void
+00105 shell_init(void)
+00106 {
+00107 }
+00108 /*---------------------------------------------------------------------------*/
+00109 void
+00110 shell_start(void)
+00111 {
+00112   shell_output("uIP command shell", "");
+00113   shell_output("Type '?' and return for help", "");
+00114   shell_prompt(SHELL_PROMPT);
+00115 }
+00116 /*---------------------------------------------------------------------------*/
+00117 void
+00118 shell_input(char *cmd)
+00119 {
+00120   parse(cmd, parsetab);
+00121   shell_prompt(SHELL_PROMPT);
+00122 }
+00123 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00177.html b/Target/Source/third_party/uip/doc/html/a00177.html new file mode 100644 index 00000000..39296cb0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00177.html @@ -0,0 +1,129 @@ + + +uIP 1.0: apps/telnetd/shell.h Source File + + + + + + +

apps/telnetd/shell.h

Go to the documentation of this file.
00001 /**
+00002  * \file
+00003  * Interface for the Contiki shell.
+00004  * \author Adam Dunkels <adam@dunkels.com>
+00005  *
+00006  * Some of the functions declared in this file must be implemented as
+00007  * a shell back-end in the architecture specific files of a Contiki
+00008  * port.
+00009  */
+00010 
+00011 
+00012 /*
+00013  * Copyright (c) 2003, Adam Dunkels.
+00014  * All rights reserved.
+00015  *
+00016  * Redistribution and use in source and binary forms, with or without
+00017  * modification, are permitted provided that the following conditions
+00018  * are met:
+00019  * 1. Redistributions of source code must retain the above copyright
+00020  *    notice, this list of conditions and the following disclaimer.
+00021  * 2. Redistributions in binary form must reproduce the above copyright
+00022  *    notice, this list of conditions and the following disclaimer in the
+00023  *    documentation and/or other materials provided with the distribution.
+00024  * 3. The name of the author may not be used to endorse or promote
+00025  *    products derived from this software without specific prior
+00026  *    written permission.
+00027  *
+00028  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00029  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00030  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00031  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00032  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00033  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00034  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00035  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00036  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00037  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00038  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00039  *
+00040  * This file is part of the Contiki desktop OS.
+00041  *
+00042  * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $
+00043  *
+00044  */
+00045 #ifndef __SHELL_H__
+00046 #define __SHELL_H__
+00047 
+00048 /**
+00049  * Initialize the shell.
+00050  *
+00051  * Called when the shell front-end process starts. This function may
+00052  * be used to start listening for signals.
+00053  */
+00054 void shell_init(void);
+00055 
+00056 /**
+00057  * Start the shell back-end.
+00058  *
+00059  * Called by the front-end when a new shell is started.
+00060  */
+00061 void shell_start(void);
+00062 
+00063 /**
+00064  * Process a shell command.
+00065  *
+00066  * This function will be called by the shell GUI / telnet server whan
+00067  * a command has been entered that should be processed by the shell
+00068  * back-end.
+00069  *
+00070  * \param command The command to be processed.
+00071  */
+00072 void shell_input(char *command);
+00073 
+00074 /**
+00075  * Quit the shell.
+00076  *
+00077  */
+00078 void shell_quit(char *);
+00079 
+00080 
+00081 /**
+00082  * Print a string to the shell window.
+00083  *
+00084  * This function is implemented by the shell GUI / telnet server and
+00085  * can be called by the shell back-end to output a string in the
+00086  * shell window. The string is automatically appended with a linebreak.
+00087  *
+00088  * \param str1 The first half of the string to be output.
+00089  * \param str2 The second half of the string to be output.
+00090  */
+00091 void shell_output(char *str1, char *str2);
+00092 
+00093 /**
+00094  * Print a prompt to the shell window.
+00095  *
+00096  * This function can be used by the shell back-end to print out a
+00097  * prompt to the shell window.
+00098  *
+00099  * \param prompt The prompt to be printed.
+00100  *
+00101  */
+00102 void shell_prompt(char *prompt);
+00103 
+00104 #endif /* __SHELL_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00178.html b/Target/Source/third_party/uip/doc/html/a00178.html new file mode 100644 index 00000000..b05a0557 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00178.html @@ -0,0 +1,375 @@ + + +uIP 1.0: apps/telnetd/telnetd.c Source File + + + + + + +

apps/telnetd/telnetd.c

00001 /*
+00002  * Copyright (c) 2003, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. The name of the author may not be used to endorse or promote
+00014  *    products derived from this software without specific prior
+00015  *    written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $
+00032  *
+00033  */
+00034 
+00035 #include "uip.h"
+00036 #include "telnetd.h"
+00037 #include "memb.h"
+00038 #include "shell.h"
+00039 
+00040 #include <string.h>
+00041 
+00042 #define ISO_nl       0x0a
+00043 #define ISO_cr       0x0d
+00044 
+00045 struct telnetd_line {
+00046   char line[TELNETD_CONF_LINELEN];
+00047 };
+00048 MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES);
+00049 
+00050 #define STATE_NORMAL 0
+00051 #define STATE_IAC    1
+00052 #define STATE_WILL   2
+00053 #define STATE_WONT   3
+00054 #define STATE_DO     4
+00055 #define STATE_DONT   5
+00056 #define STATE_CLOSE  6
+00057 
+00058 static struct telnetd_state s;
+00059 
+00060 #define TELNET_IAC   255
+00061 #define TELNET_WILL  251
+00062 #define TELNET_WONT  252
+00063 #define TELNET_DO    253
+00064 #define TELNET_DONT  254
+00065 /*---------------------------------------------------------------------------*/
+00066 static char *
+00067 alloc_line(void)
+00068 {
+00069   return memb_alloc(&linemem);
+00070 }
+00071 /*---------------------------------------------------------------------------*/
+00072 static void
+00073 dealloc_line(char *line)
+00074 {
+00075   memb_free(&linemem, line);
+00076 }
+00077 /*---------------------------------------------------------------------------*/
+00078 void
+00079 shell_quit(char *str)
+00080 {
+00081   s.state = STATE_CLOSE;
+00082 }
+00083 /*---------------------------------------------------------------------------*/
+00084 static void
+00085 sendline(char *line)
+00086 {
+00087   static unsigned int i;
+00088   
+00089   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00090     if(s.lines[i] == NULL) {
+00091       s.lines[i] = line;
+00092       break;
+00093     }
+00094   }
+00095   if(i == TELNETD_CONF_NUMLINES) {
+00096     dealloc_line(line);
+00097   }
+00098 }
+00099 /*---------------------------------------------------------------------------*/
+00100 void
+00101 shell_prompt(char *str)
+00102 {
+00103   char *line;
+00104   line = alloc_line();
+00105   if(line != NULL) {
+00106     strncpy(line, str, TELNETD_CONF_LINELEN);
+00107     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
+00108     sendline(line);
+00109   }
+00110 }
+00111 /*---------------------------------------------------------------------------*/
+00112 void
+00113 shell_output(char *str1, char *str2)
+00114 {
+00115   static unsigned len;
+00116   char *line;
+00117 
+00118   line = alloc_line();
+00119   if(line != NULL) {
+00120     len = strlen(str1);
+00121     strncpy(line, str1, TELNETD_CONF_LINELEN);
+00122     if(len < TELNETD_CONF_LINELEN) {
+00123       strncpy(line + len, str2, TELNETD_CONF_LINELEN - len);
+00124     }
+00125     len = strlen(line);
+00126     if(len < TELNETD_CONF_LINELEN - 2) {
+00127       line[len] = ISO_cr;
+00128       line[len+1] = ISO_nl;
+00129       line[len+2] = 0;
+00130     }
+00131     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
+00132     sendline(line);
+00133   }
+00134 }
+00135 /*---------------------------------------------------------------------------*/
+00136 void
+00137 telnetd_init(void)
+00138 {
+00139   uip_listen(HTONS(23));
+00140   memb_init(&linemem);
+00141   shell_init();
+00142 }
+00143 /*---------------------------------------------------------------------------*/
+00144 static void
+00145 acked(void)
+00146 {
+00147   static unsigned int i;
+00148   
+00149   while(s.numsent > 0) {
+00150     dealloc_line(s.lines[0]);
+00151     for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) {
+00152       s.lines[i - 1] = s.lines[i];
+00153     }
+00154     s.lines[TELNETD_CONF_NUMLINES - 1] = NULL;
+00155     --s.numsent;
+00156   }
+00157 }
+00158 /*---------------------------------------------------------------------------*/
+00159 static void
+00160 senddata(void)
+00161 {
+00162   static char *bufptr, *lineptr;
+00163   static int buflen, linelen;
+00164   
+00165   bufptr = uip_appdata;
+00166   buflen = 0;
+00167   for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES &&
+00168         s.lines[s.numsent] != NULL ; ++s.numsent) {
+00169     lineptr = s.lines[s.numsent];
+00170     linelen = strlen(lineptr);
+00171     if(linelen > TELNETD_CONF_LINELEN) {
+00172       linelen = TELNETD_CONF_LINELEN;
+00173     }
+00174     if(buflen + linelen < uip_mss()) {
+00175       memcpy(bufptr, lineptr, linelen);
+00176       bufptr += linelen;
+00177       buflen += linelen;
+00178     } else {
+00179       break;
+00180     }
+00181   }
+00182   uip_send(uip_appdata, buflen);
+00183 }
+00184 /*---------------------------------------------------------------------------*/
+00185 static void
+00186 closed(void)
+00187 {
+00188   static unsigned int i;
+00189   
+00190   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00191     if(s.lines[i] != NULL) {
+00192       dealloc_line(s.lines[i]);
+00193     }
+00194   }
+00195 }
+00196 /*---------------------------------------------------------------------------*/
+00197 static void
+00198 get_char(u8_t c)
+00199 {
+00200   if(c == ISO_cr) {
+00201     return;
+00202   }
+00203   
+00204   s.buf[(int)s.bufptr] = c;
+00205   if(s.buf[(int)s.bufptr] == ISO_nl ||
+00206      s.bufptr == sizeof(s.buf) - 1) {
+00207     if(s.bufptr > 0) {
+00208       s.buf[(int)s.bufptr] = 0;
+00209       /*      petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/
+00210     }
+00211     shell_input(s.buf);
+00212     s.bufptr = 0;
+00213   } else {
+00214     ++s.bufptr;
+00215   }
+00216 }
+00217 /*---------------------------------------------------------------------------*/
+00218 static void
+00219 sendopt(u8_t option, u8_t value)
+00220 {
+00221   char *line;
+00222   line = alloc_line();
+00223   if(line != NULL) {
+00224     line[0] = TELNET_IAC;
+00225     line[1] = option;
+00226     line[2] = value;
+00227     line[3] = 0;
+00228     sendline(line);
+00229   }
+00230 }
+00231 /*---------------------------------------------------------------------------*/
+00232 static void
+00233 newdata(void)
+00234 {
+00235   u16_t len;
+00236   u8_t c;
+00237   char *dataptr;
+00238     
+00239   
+00240   len = uip_datalen();
+00241   dataptr = (char *)uip_appdata;
+00242   
+00243   while(len > 0 && s.bufptr < sizeof(s.buf)) {
+00244     c = *dataptr;
+00245     ++dataptr;
+00246     --len;
+00247     switch(s.state) {
+00248     case STATE_IAC:
+00249       if(c == TELNET_IAC) {
+00250         get_char(c);
+00251         s.state = STATE_NORMAL;
+00252       } else {
+00253         switch(c) {
+00254         case TELNET_WILL:
+00255           s.state = STATE_WILL;
+00256           break;
+00257         case TELNET_WONT:
+00258           s.state = STATE_WONT;
+00259           break;
+00260         case TELNET_DO:
+00261           s.state = STATE_DO;
+00262           break;
+00263         case TELNET_DONT:
+00264           s.state = STATE_DONT;
+00265           break;
+00266         default:
+00267           s.state = STATE_NORMAL;
+00268           break;
+00269         }
+00270       }
+00271       break;
+00272     case STATE_WILL:
+00273       /* Reply with a DONT */
+00274       sendopt(TELNET_DONT, c);
+00275       s.state = STATE_NORMAL;
+00276       break;
+00277       
+00278     case STATE_WONT:
+00279       /* Reply with a DONT */
+00280       sendopt(TELNET_DONT, c);
+00281       s.state = STATE_NORMAL;
+00282       break;
+00283     case STATE_DO:
+00284       /* Reply with a WONT */
+00285       sendopt(TELNET_WONT, c);
+00286       s.state = STATE_NORMAL;
+00287       break;
+00288     case STATE_DONT:
+00289       /* Reply with a WONT */
+00290       sendopt(TELNET_WONT, c);
+00291       s.state = STATE_NORMAL;
+00292       break;
+00293     case STATE_NORMAL:
+00294       if(c == TELNET_IAC) {
+00295         s.state = STATE_IAC;
+00296       } else {
+00297         get_char(c);
+00298       }
+00299       break;
+00300     }
+00301 
+00302     
+00303   }
+00304   
+00305 }
+00306 /*---------------------------------------------------------------------------*/
+00307 void
+00308 telnetd_appcall(void)
+00309 {
+00310   static unsigned int i;
+00311   if(uip_connected()) {
+00312     /*    tcp_markconn(uip_conn, &s);*/
+00313     for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
+00314       s.lines[i] = NULL;
+00315     }
+00316     s.bufptr = 0;
+00317     s.state = STATE_NORMAL;
+00318 
+00319     shell_start();
+00320   }
+00321 
+00322   if(s.state == STATE_CLOSE) {
+00323     s.state = STATE_NORMAL;
+00324     uip_close();
+00325     return;
+00326   }
+00327   
+00328   if(uip_closed() ||
+00329      uip_aborted() ||
+00330      uip_timedout()) {
+00331     closed();
+00332   }
+00333   
+00334   if(uip_acked()) {
+00335     acked();
+00336   }
+00337   
+00338   if(uip_newdata()) {
+00339     newdata();
+00340   }
+00341   
+00342   if(uip_rexmit() ||
+00343      uip_newdata() ||
+00344      uip_acked() ||
+00345      uip_connected() ||
+00346      uip_poll()) {
+00347     senddata();
+00348   }
+00349 }
+00350 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00179.html b/Target/Source/third_party/uip/doc/html/a00179.html new file mode 100644 index 00000000..034d9ccb --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00179.html @@ -0,0 +1,88 @@ + + +uIP 1.0: apps/telnetd/telnetd.h Source File + + + + + + +

apps/telnetd/telnetd.h

00001 /*
+00002  * Copyright (c) 2003, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above
+00011  *    copyright notice, this list of conditions and the following
+00012  *    disclaimer in the documentation and/or other materials provided
+00013  *    with the distribution.
+00014  * 3. The name of the author may not be used to endorse or promote
+00015  *    products derived from this software without specific prior
+00016  *    written permission.
+00017  *
+00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00019  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00020  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00022  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00024  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00026  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00029  *
+00030  * This file is part of the uIP TCP/IP stack
+00031  *
+00032  * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $
+00033  *
+00034  */
+00035 #ifndef __TELNETD_H__
+00036 #define __TELNETD_H__
+00037 
+00038 #include "uipopt.h"
+00039 
+00040 void telnetd_appcall(void);
+00041 
+00042 #ifndef TELNETD_CONF_LINELEN
+00043 #define TELNETD_CONF_LINELEN 40
+00044 #endif
+00045 #ifndef TELNETD_CONF_NUMLINES
+00046 #define TELNETD_CONF_NUMLINES 16
+00047 #endif
+00048 
+00049 struct telnetd_state {
+00050   char *lines[TELNETD_CONF_NUMLINES];
+00051   char buf[TELNETD_CONF_LINELEN];
+00052   char bufptr;
+00053   u8_t numsent;
+00054   u8_t state;
+00055 };
+00056 
+00057 typedef struct telnetd_state uip_tcp_appstate_t;
+00058 
+00059 #ifndef UIP_APPCALL
+00060 #define UIP_APPCALL     telnetd_appcall
+00061 #endif
+00062 
+00063 #endif /* __TELNETD_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00180.html b/Target/Source/third_party/uip/doc/html/a00180.html new file mode 100644 index 00000000..d3a7a749 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00180.html @@ -0,0 +1,464 @@ + + +uIP 1.0: apps/webclient/webclient.c Source File + + + + + + +

apps/webclient/webclient.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup webclient Web client
+00008  * @{
+00009  *
+00010  * This example shows a HTTP client that is able to download web pages
+00011  * and files from web servers. It requires a number of callback
+00012  * functions to be implemented by the module that utilizes the code:
+00013  * webclient_datahandler(), webclient_connected(),
+00014  * webclient_timedout(), webclient_aborted(), webclient_closed().
+00015  */
+00016 
+00017 /**
+00018  * \file
+00019  * Implementation of the HTTP client.
+00020  * \author Adam Dunkels <adam@dunkels.com>
+00021  */
+00022 
+00023 /*
+00024  * Copyright (c) 2002, Adam Dunkels.
+00025  * All rights reserved.
+00026  *
+00027  * Redistribution and use in source and binary forms, with or without
+00028  * modification, are permitted provided that the following conditions
+00029  * are met:
+00030  * 1. Redistributions of source code must retain the above copyright
+00031  *    notice, this list of conditions and the following disclaimer.
+00032  * 2. Redistributions in binary form must reproduce the above
+00033  *    copyright notice, this list of conditions and the following
+00034  *    disclaimer in the documentation and/or other materials provided
+00035  *    with the distribution.
+00036  * 3. The name of the author may not be used to endorse or promote
+00037  *    products derived from this software without specific prior
+00038  *    written permission.
+00039  *
+00040  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00041  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00042  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00043  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00044  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00045  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00046  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00047  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00048  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00049  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00050  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00051  *
+00052  * This file is part of the uIP TCP/IP stack.
+00053  *
+00054  * $Id: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $
+00055  *
+00056  */
+00057 
+00058 #include "uip.h"
+00059 #include "uiplib.h"
+00060 #include "webclient.h"
+00061 #include "resolv.h"
+00062 
+00063 #include <string.h>
+00064 
+00065 #define WEBCLIENT_TIMEOUT 100
+00066 
+00067 #define WEBCLIENT_STATE_STATUSLINE 0
+00068 #define WEBCLIENT_STATE_HEADERS    1
+00069 #define WEBCLIENT_STATE_DATA       2
+00070 #define WEBCLIENT_STATE_CLOSE      3
+00071 
+00072 #define HTTPFLAG_NONE   0
+00073 #define HTTPFLAG_OK     1
+00074 #define HTTPFLAG_MOVED  2
+00075 #define HTTPFLAG_ERROR  3
+00076 
+00077 
+00078 #define ISO_nl       0x0a
+00079 #define ISO_cr       0x0d
+00080 #define ISO_space    0x20
+00081 
+00082 
+00083 static struct webclient_state s;
+00084 
+00085 /*-----------------------------------------------------------------------------------*/
+00086 char *
+00087 webclient_mimetype(void)
+00088 {
+00089   return s.mimetype;
+00090 }
+00091 /*-----------------------------------------------------------------------------------*/
+00092 char *
+00093 webclient_filename(void)
+00094 {
+00095   return s.file;
+00096 }
+00097 /*-----------------------------------------------------------------------------------*/
+00098 char *
+00099 webclient_hostname(void)
+00100 {
+00101   return s.host;
+00102 }
+00103 /*-----------------------------------------------------------------------------------*/
+00104 unsigned short
+00105 webclient_port(void)
+00106 {
+00107   return s.port;
+00108 }
+00109 /*-----------------------------------------------------------------------------------*/
+00110 void
+00111 webclient_init(void)
+00112 {
+00113 
+00114 }
+00115 /*-----------------------------------------------------------------------------------*/
+00116 static void
+00117 init_connection(void)
+00118 {
+00119   s.state = WEBCLIENT_STATE_STATUSLINE;
+00120 
+00121   s.getrequestleft = sizeof(http_get) - 1 + 1 +
+00122     sizeof(http_10) - 1 +
+00123     sizeof(http_crnl) - 1 +
+00124     sizeof(http_host) - 1 +
+00125     sizeof(http_crnl) - 1 +
+00126     strlen(http_user_agent_fields) +
+00127     strlen(s.file) + strlen(s.host);
+00128   s.getrequestptr = 0;
+00129 
+00130   s.httpheaderlineptr = 0;
+00131 }
+00132 /*-----------------------------------------------------------------------------------*/
+00133 void
+00134 webclient_close(void)
+00135 {
+00136   s.state = WEBCLIENT_STATE_CLOSE;
+00137 }
+00138 /*-----------------------------------------------------------------------------------*/
+00139 unsigned char
+00140 webclient_get(char *host, u16_t port, char *file)
+00141 {
+00142   struct uip_conn *conn;
+00143   uip_ipaddr_t *ipaddr;
+00144   static uip_ipaddr_t addr;
+00145   
+00146   /* First check if the host is an IP address. */
+00147   ipaddr = &addr;
+00148   if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) {
+00149     ipaddr = (uip_ipaddr_t *)resolv_lookup(host);
+00150     
+00151     if(ipaddr == NULL) {
+00152       return 0;
+00153     }
+00154   }
+00155   
+00156   conn = uip_connect(ipaddr, htons(port));
+00157   
+00158   if(conn == NULL) {
+00159     return 0;
+00160   }
+00161   
+00162   s.port = port;
+00163   strncpy(s.file, file, sizeof(s.file));
+00164   strncpy(s.host, host, sizeof(s.host));
+00165   
+00166   init_connection();
+00167   return 1;
+00168 }
+00169 /*-----------------------------------------------------------------------------------*/
+00170 static unsigned char *
+00171 copy_string(unsigned char *dest,
+00172             const unsigned char *src, unsigned char len)
+00173 {
+00174   strncpy(dest, src, len);
+00175   return dest + len;
+00176 }
+00177 /*-----------------------------------------------------------------------------------*/
+00178 static void
+00179 senddata(void)
+00180 {
+00181   u16_t len;
+00182   char *getrequest;
+00183   char *cptr;
+00184   
+00185   if(s.getrequestleft > 0) {
+00186     cptr = getrequest = (char *)uip_appdata;
+00187 
+00188     cptr = copy_string(cptr, http_get, sizeof(http_get) - 1);
+00189     cptr = copy_string(cptr, s.file, strlen(s.file));
+00190     *cptr++ = ISO_space;
+00191     cptr = copy_string(cptr, http_10, sizeof(http_10) - 1);
+00192 
+00193     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+00194     
+00195     cptr = copy_string(cptr, http_host, sizeof(http_host) - 1);
+00196     cptr = copy_string(cptr, s.host, strlen(s.host));
+00197     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+00198 
+00199     cptr = copy_string(cptr, http_user_agent_fields,
+00200                        strlen(http_user_agent_fields));
+00201     
+00202     len = s.getrequestleft > uip_mss()?
+00203       uip_mss():
+00204       s.getrequestleft;
+00205     uip_send(&(getrequest[s.getrequestptr]), len);
+00206   }
+00207 }
+00208 /*-----------------------------------------------------------------------------------*/
+00209 static void
+00210 acked(void)
+00211 {
+00212   u16_t len;
+00213   
+00214   if(s.getrequestleft > 0) {
+00215     len = s.getrequestleft > uip_mss()?
+00216       uip_mss():
+00217       s.getrequestleft;
+00218     s.getrequestleft -= len;
+00219     s.getrequestptr += len;
+00220   }
+00221 }
+00222 /*-----------------------------------------------------------------------------------*/
+00223 static u16_t
+00224 parse_statusline(u16_t len)
+00225 {
+00226   char *cptr;
+00227   
+00228   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+00229     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
+00230     ++((char *)uip_appdata);
+00231     --len;
+00232     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+00233 
+00234       if((strncmp(s.httpheaderline, http_10,
+00235                   sizeof(http_10) - 1) == 0) ||
+00236          (strncmp(s.httpheaderline, http_11,
+00237                   sizeof(http_11) - 1) == 0)) {
+00238         cptr = &(s.httpheaderline[9]);
+00239         s.httpflag = HTTPFLAG_NONE;
+00240         if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) {
+00241           /* 200 OK */
+00242           s.httpflag = HTTPFLAG_OK;
+00243         } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 ||
+00244                   strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) {
+00245           /* 301 Moved permanently or 302 Found. Location: header line
+00246              will contain thw new location. */
+00247           s.httpflag = HTTPFLAG_MOVED;
+00248         } else {
+00249           s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+00250         }
+00251       } else {
+00252         uip_abort();
+00253         webclient_aborted();
+00254         return 0;
+00255       }
+00256       
+00257       /* We're done parsing the status line, so we reset the pointer
+00258          and start parsing the HTTP headers.*/
+00259       s.httpheaderlineptr = 0;
+00260       s.state = WEBCLIENT_STATE_HEADERS;
+00261       break;
+00262     } else {
+00263       ++s.httpheaderlineptr;
+00264     }
+00265   }
+00266   return len;
+00267 }
+00268 /*-----------------------------------------------------------------------------------*/
+00269 static char
+00270 casecmp(char *str1, const char *str2, char len)
+00271 {
+00272   static char c;
+00273   
+00274   while(len > 0) {
+00275     c = *str1;
+00276     /* Force lower-case characters. */
+00277     if(c & 0x40) {
+00278       c |= 0x20;
+00279     }
+00280     if(*str2 != c) {
+00281       return 1;
+00282     }
+00283     ++str1;
+00284     ++str2;
+00285     --len;
+00286   }
+00287   return 0;
+00288 }
+00289 /*-----------------------------------------------------------------------------------*/
+00290 static u16_t
+00291 parse_headers(u16_t len)
+00292 {
+00293   char *cptr;
+00294   static unsigned char i;
+00295   
+00296   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+00297     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
+00298     ++((char *)uip_appdata);
+00299     --len;
+00300     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+00301       /* We have an entire HTTP header line in s.httpheaderline, so
+00302          we parse it. */
+00303       if(s.httpheaderline[0] == ISO_cr) {
+00304         /* This was the last header line (i.e., and empty "\r\n"), so
+00305            we are done with the headers and proceed with the actual
+00306            data. */
+00307         s.state = WEBCLIENT_STATE_DATA;
+00308         return len;
+00309       }
+00310 
+00311       s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+00312       /* Check for specific HTTP header fields. */
+00313       if(casecmp(s.httpheaderline, http_content_type,
+00314                      sizeof(http_content_type) - 1) == 0) {
+00315         /* Found Content-type field. */
+00316         cptr = strchr(s.httpheaderline, ';');
+00317         if(cptr != NULL) {
+00318           *cptr = 0;
+00319         }
+00320         strncpy(s.mimetype, s.httpheaderline +
+00321                 sizeof(http_content_type) - 1, sizeof(s.mimetype));
+00322       } else if(casecmp(s.httpheaderline, http_location,
+00323                             sizeof(http_location) - 1) == 0) {
+00324         cptr = s.httpheaderline +
+00325           sizeof(http_location) - 1;
+00326         
+00327         if(strncmp(cptr, http_http, 7) == 0) {
+00328           cptr += 7;
+00329           for(i = 0; i < s.httpheaderlineptr - 7; ++i) {
+00330             if(*cptr == 0 ||
+00331                *cptr == '/' ||
+00332                *cptr == ' ' ||
+00333                *cptr == ':') {
+00334               s.host[i] = 0;
+00335               break;
+00336             }
+00337             s.host[i] = *cptr;
+00338             ++cptr;
+00339           }
+00340         }
+00341         strncpy(s.file, cptr, sizeof(s.file));
+00342         /*      s.file[s.httpheaderlineptr - i] = 0;*/
+00343       }
+00344 
+00345 
+00346       /* We're done parsing, so we reset the pointer and start the
+00347          next line. */
+00348       s.httpheaderlineptr = 0;
+00349     } else {
+00350       ++s.httpheaderlineptr;
+00351     }
+00352   }
+00353   return len;
+00354 }
+00355 /*-----------------------------------------------------------------------------------*/
+00356 static void
+00357 newdata(void)
+00358 {
+00359   u16_t len;
+00360 
+00361   len = uip_datalen();
+00362 
+00363   if(s.state == WEBCLIENT_STATE_STATUSLINE) {
+00364     len = parse_statusline(len);
+00365   }
+00366   
+00367   if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) {
+00368     len = parse_headers(len);
+00369   }
+00370 
+00371   if(len > 0 && s.state == WEBCLIENT_STATE_DATA &&
+00372      s.httpflag != HTTPFLAG_MOVED) {
+00373     webclient_datahandler((char *)uip_appdata, len);
+00374   }
+00375 }
+00376 /*-----------------------------------------------------------------------------------*/
+00377 void
+00378 webclient_appcall(void)
+00379 {
+00380   if(uip_connected()) {
+00381     s.timer = 0;
+00382     s.state = WEBCLIENT_STATE_STATUSLINE;
+00383     senddata();
+00384     webclient_connected();
+00385     return;
+00386   }
+00387 
+00388   if(s.state == WEBCLIENT_STATE_CLOSE) {
+00389     webclient_closed();
+00390     uip_abort();
+00391     return;
+00392   }
+00393 
+00394   if(uip_aborted()) {
+00395     webclient_aborted();
+00396   }
+00397   if(uip_timedout()) {
+00398     webclient_timedout();
+00399   }
+00400 
+00401   
+00402   if(uip_acked()) {
+00403     s.timer = 0;
+00404     acked();
+00405   }
+00406   if(uip_newdata()) {
+00407     s.timer = 0;
+00408     newdata();
+00409   }
+00410   if(uip_rexmit() ||
+00411      uip_newdata() ||
+00412      uip_acked()) {
+00413     senddata();
+00414   } else if(uip_poll()) {
+00415     ++s.timer;
+00416     if(s.timer == WEBCLIENT_TIMEOUT) {
+00417       webclient_timedout();
+00418       uip_abort();
+00419       return;
+00420     }
+00421         /*    senddata();*/
+00422   }
+00423 
+00424   if(uip_closed()) {
+00425     if(s.httpflag != HTTPFLAG_MOVED) {
+00426       /* Send NULL data to signal EOF. */
+00427       webclient_datahandler(NULL, 0);
+00428     } else {
+00429       if(resolv_lookup(s.host) == NULL) {
+00430         resolv_query(s.host);
+00431       }
+00432       webclient_get(s.host, s.port, s.file);
+00433     }
+00434   }
+00435 }
+00436 /*-----------------------------------------------------------------------------------*/
+00437 
+00438 /** @} */
+00439 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00181.html b/Target/Source/third_party/uip/doc/html/a00181.html new file mode 100644 index 00000000..ecd81635 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00181.html @@ -0,0 +1,253 @@ + + +uIP 1.0: apps/webclient/webclient.h Source File + + + + + + +

apps/webclient/webclient.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup webclient
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  * Header file for the HTTP client.
+00009  * \author Adam Dunkels <adam@dunkels.com>
+00010  */
+00011 
+00012 /*
+00013  * Copyright (c) 2002, Adam Dunkels.
+00014  * All rights reserved.
+00015  *
+00016  * Redistribution and use in source and binary forms, with or without
+00017  * modification, are permitted provided that the following conditions
+00018  * are met:
+00019  * 1. Redistributions of source code must retain the above copyright
+00020  *    notice, this list of conditions and the following disclaimer.
+00021  * 2. Redistributions in binary form must reproduce the above
+00022  *    copyright notice, this list of conditions and the following
+00023  *    disclaimer in the documentation and/or other materials provided
+00024  *    with the distribution.
+00025  * 3. The name of the author may not be used to endorse or promote
+00026  *    products derived from this software without specific prior
+00027  *    written permission.
+00028  *
+00029  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00030  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00031  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00033  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00035  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00036  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00037  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00038  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00039  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00040  *
+00041  * This file is part of the uIP TCP/IP stack.
+00042  *
+00043  * $Id: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $
+00044  *
+00045  */
+00046 #ifndef __WEBCLIENT_H__
+00047 #define __WEBCLIENT_H__
+00048 
+00049 
+00050 #include "webclient-strings.h"
+00051 #include "uipopt.h"
+00052 
+00053 #define WEBCLIENT_CONF_MAX_URLLEN 100
+00054 
+00055 struct webclient_state {
+00056   u8_t timer;
+00057   u8_t state;
+00058   u8_t httpflag;
+00059 
+00060   u16_t port;
+00061   char host[40];
+00062   char file[WEBCLIENT_CONF_MAX_URLLEN];
+00063   u16_t getrequestptr;
+00064   u16_t getrequestleft;
+00065   
+00066   char httpheaderline[200];
+00067   u16_t httpheaderlineptr;
+00068 
+00069   char mimetype[32];
+00070 };
+00071 
+00072 typedef struct webclient_state uip_tcp_appstate_t;
+00073 #define UIP_APPCALL webclient_appcall
+00074 
+00075 /**
+00076  * Callback function that is called from the webclient code when HTTP
+00077  * data has been received.
+00078  *
+00079  * This function must be implemented by the module that uses the
+00080  * webclient code. The function is called from the webclient module
+00081  * when HTTP data has been received. The function is not called when
+00082  * HTTP headers are received, only for the actual data.
+00083  *
+00084  * \note This function is called many times, repetedly, when data is
+00085  * being received, and not once when all data has been received.
+00086  *
+00087  * \param data A pointer to the data that has been received.
+00088  * \param len The length of the data that has been received.
+00089  */
+00090 void webclient_datahandler(char *data, u16_t len);
+00091 
+00092 /**
+00093  * Callback function that is called from the webclient code when the
+00094  * HTTP connection has been connected to the web server.
+00095  *
+00096  * This function must be implemented by the module that uses the
+00097  * webclient code.
+00098  */
+00099 void webclient_connected(void);
+00100 
+00101 /**
+00102  * Callback function that is called from the webclient code if the
+00103  * HTTP connection to the web server has timed out.
+00104  *
+00105  * This function must be implemented by the module that uses the
+00106  * webclient code.
+00107  */
+00108 void webclient_timedout(void);
+00109 
+00110 /**
+00111  * Callback function that is called from the webclient code if the
+00112  * HTTP connection to the web server has been aborted by the web
+00113  * server.
+00114  *
+00115  * This function must be implemented by the module that uses the
+00116  * webclient code.
+00117  */
+00118 void webclient_aborted(void);
+00119 
+00120 /**
+00121  * Callback function that is called from the webclient code when the
+00122  * HTTP connection to the web server has been closed.
+00123  *
+00124  * This function must be implemented by the module that uses the
+00125  * webclient code.
+00126  */
+00127 void webclient_closed(void);
+00128 
+00129 
+00130 
+00131 /**
+00132  * Initialize the webclient module.
+00133  */
+00134 void webclient_init(void);
+00135 
+00136 /**
+00137  * Open an HTTP connection to a web server and ask for a file using
+00138  * the GET method.
+00139  *
+00140  * This function opens an HTTP connection to the specified web server
+00141  * and requests the specified file using the GET method. When the HTTP
+00142  * connection has been connected, the webclient_connected() callback
+00143  * function is called and when the HTTP data arrives the
+00144  * webclient_datahandler() callback function is called.
+00145  *
+00146  * The callback function webclient_timedout() is called if the web
+00147  * server could not be contacted, and the webclient_aborted() callback
+00148  * function is called if the HTTP connection is aborted by the web
+00149  * server.
+00150  *
+00151  * When the HTTP request has been completed and the HTTP connection is
+00152  * closed, the webclient_closed() callback function will be called.
+00153  *
+00154  * \note If the function is passed a host name, it must already be in
+00155  * the resolver cache in order for the function to connect to the web
+00156  * server. It is therefore up to the calling module to implement the
+00157  * resolver calls and the signal handler used for reporting a resolv
+00158  * query answer.
+00159  *
+00160  * \param host A pointer to a string containing either a host name or
+00161  * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
+00162  *
+00163  * \param port The port number to which to connect, in host byte order.
+00164  *
+00165  * \param file A pointer to the name of the file to get.
+00166  *
+00167  * \retval 0 if the host name could not be found in the cache, or
+00168  * if a TCP connection could not be created.
+00169  *
+00170  * \retval 1 if the connection was initiated.
+00171  */
+00172 unsigned char webclient_get(char *host, u16_t port, char *file);
+00173 
+00174 /**
+00175  * Close the currently open HTTP connection.
+00176  */
+00177 void webclient_close(void);
+00178 void webclient_appcall(void);
+00179 
+00180 /**
+00181  * Obtain the MIME type of the current HTTP data stream.
+00182  *
+00183  * \return A pointer to a string contaning the MIME type. The string
+00184  * may be empty if no MIME type was reported by the web server.
+00185  */
+00186 char *webclient_mimetype(void);
+00187 
+00188 /**
+00189  * Obtain the filename of the current HTTP data stream.
+00190  *
+00191  * The filename of an HTTP request may be changed by the web server,
+00192  * and may therefore not be the same as when the original GET request
+00193  * was made with webclient_get(). This function is used for obtaining
+00194  * the current filename.
+00195  *
+00196  * \return A pointer to the current filename.
+00197  */
+00198 char *webclient_filename(void);
+00199 
+00200 /**
+00201  * Obtain the hostname of the current HTTP data stream.
+00202  *
+00203  * The hostname of the web server of an HTTP request may be changed
+00204  * by the web server, and may therefore not be the same as when the
+00205  * original GET request was made with webclient_get(). This function
+00206  * is used for obtaining the current hostname.
+00207  *
+00208  * \return A pointer to the current hostname.
+00209  */
+00210 char *webclient_hostname(void);
+00211 
+00212 /**
+00213  * Obtain the port number of the current HTTP data stream.
+00214  *
+00215  * The port number of an HTTP request may be changed by the web
+00216  * server, and may therefore not be the same as when the original GET
+00217  * request was made with webclient_get(). This function is used for
+00218  * obtaining the current port number.
+00219  *
+00220  * \return The port number of the current HTTP data stream, in host byte order.
+00221  */
+00222 unsigned short webclient_port(void);
+00223 
+00224 
+00225 
+00226 #endif /* __WEBCLIENT_H__ */
+00227 
+00228 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00182.html b/Target/Source/third_party/uip/doc/html/a00182.html new file mode 100644 index 00000000..d4ba2181 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00182.html @@ -0,0 +1,228 @@ + + +uIP 1.0: apps/webserver/httpd-cgi.c Source File + + + + + + +

apps/webserver/httpd-cgi.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup httpd
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  *         Web server script interface
+00009  * \author
+00010  *         Adam Dunkels <adam@sics.se>
+00011  *
+00012  */
+00013 
+00014 /*
+00015  * Copyright (c) 2001-2006, Adam Dunkels.
+00016  * All rights reserved.
+00017  *
+00018  * Redistribution and use in source and binary forms, with or without
+00019  * modification, are permitted provided that the following conditions
+00020  * are met:
+00021  * 1. Redistributions of source code must retain the above copyright
+00022  *    notice, this list of conditions and the following disclaimer.
+00023  * 2. Redistributions in binary form must reproduce the above copyright
+00024  *    notice, this list of conditions and the following disclaimer in the
+00025  *    documentation and/or other materials provided with the distribution.
+00026  * 3. The name of the author may not be used to endorse or promote
+00027  *    products derived from this software without specific prior
+00028  *    written permission.
+00029  *
+00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00041  *
+00042  * This file is part of the uIP TCP/IP stack.
+00043  *
+00044  * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
+00045  *
+00046  */
+00047 
+00048 #include "uip.h"
+00049 #include "psock.h"
+00050 #include "httpd.h"
+00051 #include "httpd-cgi.h"
+00052 #include "httpd-fs.h"
+00053 
+00054 #include <stdio.h>
+00055 #include <string.h>
+00056 
+00057 HTTPD_CGI_CALL(file, "file-stats", file_stats);
+00058 HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
+00059 HTTPD_CGI_CALL(net, "net-stats", net_stats);
+00060 
+00061 static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL };
+00062 
+00063 /*---------------------------------------------------------------------------*/
+00064 static
+00065 PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
+00066 {
+00067   PSOCK_BEGIN(&s->sout);
+00068   PSOCK_END(&s->sout);
+00069 }
+00070 /*---------------------------------------------------------------------------*/
+00071 httpd_cgifunction
+00072 httpd_cgi(char *name)
+00073 {
+00074   const struct httpd_cgi_call **f;
+00075 
+00076   /* Find the matching name in the table, return the function. */
+00077   for(f = calls; *f != NULL; ++f) {
+00078     if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
+00079       return (*f)->function;
+00080     }
+00081   }
+00082   return nullfunction;
+00083 }
+00084 /*---------------------------------------------------------------------------*/
+00085 static unsigned short
+00086 generate_file_stats(void *arg)
+00087 {
+00088   char *f = (char *)arg;
+00089   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
+00090 }
+00091 /*---------------------------------------------------------------------------*/
+00092 static
+00093 PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
+00094 {
+00095   PSOCK_BEGIN(&s->sout);
+00096 
+00097   PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
+00098   
+00099   PSOCK_END(&s->sout);
+00100 }
+00101 /*---------------------------------------------------------------------------*/
+00102 static const char closed[] =   /*  "CLOSED",*/
+00103 {0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
+00104 static const char syn_rcvd[] = /*  "SYN-RCVD",*/
+00105 {0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
+00106  0x44,  0};
+00107 static const char syn_sent[] = /*  "SYN-SENT",*/
+00108 {0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
+00109  0x54,  0};
+00110 static const char established[] = /*  "ESTABLISHED",*/
+00111 {0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
+00112  0x45, 0x44, 0};
+00113 static const char fin_wait_1[] = /*  "FIN-WAIT-1",*/
+00114 {0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+00115  0x54, 0x2d, 0x31, 0};
+00116 static const char fin_wait_2[] = /*  "FIN-WAIT-2",*/
+00117 {0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+00118  0x54, 0x2d, 0x32, 0};
+00119 static const char closing[] = /*  "CLOSING",*/
+00120 {0x43, 0x4c, 0x4f, 0x53, 0x49,
+00121  0x4e, 0x47, 0};
+00122 static const char time_wait[] = /*  "TIME-WAIT,"*/
+00123 {0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
+00124  0x49, 0x54, 0};
+00125 static const char last_ack[] = /*  "LAST-ACK"*/
+00126 {0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
+00127  0x4b, 0};
+00128 
+00129 static const char *states[] = {
+00130   closed,
+00131   syn_rcvd,
+00132   syn_sent,
+00133   established,
+00134   fin_wait_1,
+00135   fin_wait_2,
+00136   closing,
+00137   time_wait,
+00138   last_ack};
+00139   
+00140 
+00141 static unsigned short
+00142 generate_tcp_stats(void *arg)
+00143 {
+00144   struct uip_conn *conn;
+00145   struct httpd_state *s = (struct httpd_state *)arg;
+00146     
+00147   conn = &uip_conns[s->count];
+00148   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
+00149                  "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
+00150                  htons(conn->lport),
+00151                  htons(conn->ripaddr[0]) >> 8,
+00152                  htons(conn->ripaddr[0]) & 0xff,
+00153                  htons(conn->ripaddr[1]) >> 8,
+00154                  htons(conn->ripaddr[1]) & 0xff,
+00155                  htons(conn->rport),
+00156                  states[conn->tcpstateflags & UIP_TS_MASK],
+00157                  conn->nrtx,
+00158                  conn->timer,
+00159                  (uip_outstanding(conn))? '*':' ',
+00160                  (uip_stopped(conn))? '!':' ');
+00161 }
+00162 /*---------------------------------------------------------------------------*/
+00163 static
+00164 PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
+00165 {
+00166   
+00167   PSOCK_BEGIN(&s->sout);
+00168 
+00169   for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
+00170     if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
+00171       PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
+00172     }
+00173   }
+00174 
+00175   PSOCK_END(&s->sout);
+00176 }
+00177 /*---------------------------------------------------------------------------*/
+00178 static unsigned short
+00179 generate_net_stats(void *arg)
+00180 {
+00181   struct httpd_state *s = (struct httpd_state *)arg;
+00182   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
+00183                   "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
+00184 }
+00185 
+00186 static
+00187 PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
+00188 {
+00189   PSOCK_BEGIN(&s->sout);
+00190 
+00191 #if UIP_STATISTICS
+00192 
+00193   for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
+00194       ++s->count) {
+00195     PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
+00196   }
+00197   
+00198 #endif /* UIP_STATISTICS */
+00199   
+00200   PSOCK_END(&s->sout);
+00201 }
+00202 /*---------------------------------------------------------------------------*/
+00203 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00183.html b/Target/Source/third_party/uip/doc/html/a00183.html new file mode 100644 index 00000000..4898da3f --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00183.html @@ -0,0 +1,109 @@ + + +uIP 1.0: apps/webserver/httpd-cgi.h Source File + + + + + + +

apps/webserver/httpd-cgi.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup httpd
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  *         Web server script interface header file
+00009  * \author
+00010  *         Adam Dunkels <adam@sics.se>
+00011  *
+00012  */
+00013 
+00014 
+00015 
+00016 /*
+00017  * Copyright (c) 2001, Adam Dunkels.
+00018  * All rights reserved.
+00019  *
+00020  * Redistribution and use in source and binary forms, with or without
+00021  * modification, are permitted provided that the following conditions
+00022  * are met:
+00023  * 1. Redistributions of source code must retain the above copyright
+00024  *    notice, this list of conditions and the following disclaimer.
+00025  * 2. Redistributions in binary form must reproduce the above copyright
+00026  *    notice, this list of conditions and the following disclaimer in the
+00027  *    documentation and/or other materials provided with the distribution.
+00028  * 3. The name of the author may not be used to endorse or promote
+00029  *    products derived from this software without specific prior
+00030  *    written permission.
+00031  *
+00032  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00033  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00034  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00035  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00036  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00037  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00038  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00039  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00040  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00041  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00042  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00043  *
+00044  * This file is part of the uIP TCP/IP stack.
+00045  *
+00046  * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $
+00047  *
+00048  */
+00049 
+00050 #ifndef __HTTPD_CGI_H__
+00051 #define __HTTPD_CGI_H__
+00052 
+00053 #include "psock.h"
+00054 #include "httpd.h"
+00055 
+00056 typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *));
+00057 
+00058 httpd_cgifunction httpd_cgi(char *name);
+00059 
+00060 struct httpd_cgi_call {
+00061   const char *name;
+00062   const httpd_cgifunction function;
+00063 };
+00064 
+00065 /**
+00066  * \brief      HTTPD CGI function declaration
+00067  * \param name The C variable name of the function
+00068  * \param str  The string name of the function, used in the script file
+00069  * \param function A pointer to the function that implements it
+00070  *
+00071  *             This macro is used for declaring a HTTPD CGI
+00072  *             function. This function is then added to the list of
+00073  *             HTTPD CGI functions with the httpd_cgi_add() function.
+00074  *
+00075  * \hideinitializer
+00076  */
+00077 #define HTTPD_CGI_CALL(name, str, function) \
+00078 static PT_THREAD(function(struct httpd_state *, char *)); \
+00079 static const struct httpd_cgi_call name = {str, function}
+00080 
+00081 void httpd_cgi_init(void);
+00082 #endif /* __HTTPD_CGI_H__ */
+00083 
+00084 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00184.html b/Target/Source/third_party/uip/doc/html/a00184.html new file mode 100644 index 00000000..cd539a9c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00184.html @@ -0,0 +1,363 @@ + + +uIP 1.0: apps/webserver/httpd.c Source File + + + + + + +

apps/webserver/httpd.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup apps
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup httpd Web server
+00008  * @{
+00009  * The uIP web server is a very simplistic implementation of an HTTP
+00010  * server. It can serve web pages and files from a read-only ROM
+00011  * filesystem, and provides a very small scripting language.
+00012 
+00013  */
+00014 
+00015 /**
+00016  * \file
+00017  *         Web server
+00018  * \author
+00019  *         Adam Dunkels <adam@sics.se>
+00020  */
+00021 
+00022 
+00023 /*
+00024  * Copyright (c) 2004, Adam Dunkels.
+00025  * All rights reserved.
+00026  *
+00027  * Redistribution and use in source and binary forms, with or without
+00028  * modification, are permitted provided that the following conditions
+00029  * are met:
+00030  * 1. Redistributions of source code must retain the above copyright
+00031  *    notice, this list of conditions and the following disclaimer.
+00032  * 2. Redistributions in binary form must reproduce the above copyright
+00033  *    notice, this list of conditions and the following disclaimer in the
+00034  *    documentation and/or other materials provided with the distribution.
+00035  * 3. Neither the name of the Institute nor the names of its contributors
+00036  *    may be used to endorse or promote products derived from this software
+00037  *    without specific prior written permission.
+00038  *
+00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00049  * SUCH DAMAGE.
+00050  *
+00051  * This file is part of the uIP TCP/IP stack.
+00052  *
+00053  * Author: Adam Dunkels <adam@sics.se>
+00054  *
+00055  * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $
+00056  */
+00057 
+00058 #include "uip.h"
+00059 #include "httpd.h"
+00060 #include "httpd-fs.h"
+00061 #include "httpd-cgi.h"
+00062 #include "http-strings.h"
+00063 
+00064 #include <string.h>
+00065 
+00066 #define STATE_WAITING 0
+00067 #define STATE_OUTPUT  1
+00068 
+00069 #define ISO_nl      0x0a
+00070 #define ISO_space   0x20
+00071 #define ISO_bang    0x21
+00072 #define ISO_percent 0x25
+00073 #define ISO_period  0x2e
+00074 #define ISO_slash   0x2f
+00075 #define ISO_colon   0x3a
+00076 
+00077 
+00078 /*---------------------------------------------------------------------------*/
+00079 static unsigned short
+00080 generate_part_of_file(void *state)
+00081 {
+00082   struct httpd_state *s = (struct httpd_state *)state;
+00083 
+00084   if(s->file.len > uip_mss()) {
+00085     s->len = uip_mss();
+00086   } else {
+00087     s->len = s->file.len;
+00088   }
+00089   memcpy(uip_appdata, s->file.data, s->len);
+00090   
+00091   return s->len;
+00092 }
+00093 /*---------------------------------------------------------------------------*/
+00094 static
+00095 PT_THREAD(send_file(struct httpd_state *s))
+00096 {
+00097   PSOCK_BEGIN(&s->sout);
+00098   
+00099   do {
+00100     PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
+00101     s->file.len -= s->len;
+00102     s->file.data += s->len;
+00103   } while(s->file.len > 0);
+00104       
+00105   PSOCK_END(&s->sout);
+00106 }
+00107 /*---------------------------------------------------------------------------*/
+00108 static
+00109 PT_THREAD(send_part_of_file(struct httpd_state *s))
+00110 {
+00111   PSOCK_BEGIN(&s->sout);
+00112 
+00113   PSOCK_SEND(&s->sout, s->file.data, s->len);
+00114   
+00115   PSOCK_END(&s->sout);
+00116 }
+00117 /*---------------------------------------------------------------------------*/
+00118 static void
+00119 next_scriptstate(struct httpd_state *s)
+00120 {
+00121   char *p;
+00122   p = strchr(s->scriptptr, ISO_nl) + 1;
+00123   s->scriptlen -= (unsigned short)(p - s->scriptptr);
+00124   s->scriptptr = p;
+00125 }
+00126 /*---------------------------------------------------------------------------*/
+00127 static
+00128 PT_THREAD(handle_script(struct httpd_state *s))
+00129 {
+00130   char *ptr;
+00131   
+00132   PT_BEGIN(&s->scriptpt);
+00133 
+00134 
+00135   while(s->file.len > 0) {
+00136 
+00137     /* Check if we should start executing a script. */
+00138     if(*s->file.data == ISO_percent &&
+00139        *(s->file.data + 1) == ISO_bang) {
+00140       s->scriptptr = s->file.data + 3;
+00141       s->scriptlen = s->file.len - 3;
+00142       if(*(s->scriptptr - 1) == ISO_colon) {
+00143         httpd_fs_open(s->scriptptr + 1, &s->file);
+00144         PT_WAIT_THREAD(&s->scriptpt, send_file(s));
+00145       } else {
+00146         PT_WAIT_THREAD(&s->scriptpt,
+00147                        httpd_cgi(s->scriptptr)(s, s->scriptptr));
+00148       }
+00149       next_scriptstate(s);
+00150       
+00151       /* The script is over, so we reset the pointers and continue
+00152          sending the rest of the file. */
+00153       s->file.data = s->scriptptr;
+00154       s->file.len = s->scriptlen;
+00155     } else {
+00156       /* See if we find the start of script marker in the block of HTML
+00157          to be sent. */
+00158 
+00159       if(s->file.len > uip_mss()) {
+00160         s->len = uip_mss();
+00161       } else {
+00162         s->len = s->file.len;
+00163       }
+00164 
+00165       if(*s->file.data == ISO_percent) {
+00166         ptr = strchr(s->file.data + 1, ISO_percent);
+00167       } else {
+00168         ptr = strchr(s->file.data, ISO_percent);
+00169       }
+00170       if(ptr != NULL &&
+00171          ptr != s->file.data) {
+00172         s->len = (int)(ptr - s->file.data);
+00173         if(s->len >= uip_mss()) {
+00174           s->len = uip_mss();
+00175         }
+00176       }
+00177       PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));
+00178       s->file.data += s->len;
+00179       s->file.len -= s->len;
+00180       
+00181     }
+00182   }
+00183   
+00184   PT_END(&s->scriptpt);
+00185 }
+00186 /*---------------------------------------------------------------------------*/
+00187 static
+00188 PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))
+00189 {
+00190   char *ptr;
+00191 
+00192   PSOCK_BEGIN(&s->sout);
+00193 
+00194   PSOCK_SEND_STR(&s->sout, statushdr);
+00195 
+00196   ptr = strrchr(s->filename, ISO_period);
+00197   if(ptr == NULL) {
+00198     PSOCK_SEND_STR(&s->sout, http_content_type_binary);
+00199   } else if(strncmp(http_html, ptr, 5) == 0 ||
+00200             strncmp(http_shtml, ptr, 6) == 0) {
+00201     PSOCK_SEND_STR(&s->sout, http_content_type_html);
+00202   } else if(strncmp(http_css, ptr, 4) == 0) {
+00203     PSOCK_SEND_STR(&s->sout, http_content_type_css);
+00204   } else if(strncmp(http_png, ptr, 4) == 0) {
+00205     PSOCK_SEND_STR(&s->sout, http_content_type_png);
+00206   } else if(strncmp(http_gif, ptr, 4) == 0) {
+00207     PSOCK_SEND_STR(&s->sout, http_content_type_gif);
+00208   } else if(strncmp(http_jpg, ptr, 4) == 0) {
+00209     PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
+00210   } else {
+00211     PSOCK_SEND_STR(&s->sout, http_content_type_plain);
+00212   }
+00213   PSOCK_END(&s->sout);
+00214 }
+00215 /*---------------------------------------------------------------------------*/
+00216 static
+00217 PT_THREAD(handle_output(struct httpd_state *s))
+00218 {
+00219   char *ptr;
+00220   
+00221   PT_BEGIN(&s->outputpt);
+00222  
+00223   if(!httpd_fs_open(s->filename, &s->file)) {
+00224     httpd_fs_open(http_404_html, &s->file);
+00225     strcpy(s->filename, http_404_html);
+00226     PT_WAIT_THREAD(&s->outputpt,
+00227                    send_headers(s,
+00228                    http_header_404));
+00229     PT_WAIT_THREAD(&s->outputpt,
+00230                    send_file(s));
+00231   } else {
+00232     PT_WAIT_THREAD(&s->outputpt,
+00233                    send_headers(s,
+00234                    http_header_200));
+00235     ptr = strchr(s->filename, ISO_period);
+00236     if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) {
+00237       PT_INIT(&s->scriptpt);
+00238       PT_WAIT_THREAD(&s->outputpt, handle_script(s));
+00239     } else {
+00240       PT_WAIT_THREAD(&s->outputpt,
+00241                      send_file(s));
+00242     }
+00243   }
+00244   PSOCK_CLOSE(&s->sout);
+00245   PT_END(&s->outputpt);
+00246 }
+00247 /*---------------------------------------------------------------------------*/
+00248 static
+00249 PT_THREAD(handle_input(struct httpd_state *s))
+00250 {
+00251   PSOCK_BEGIN(&s->sin);
+00252 
+00253   PSOCK_READTO(&s->sin, ISO_space);
+00254 
+00255   
+00256   if(strncmp(s->inputbuf, http_get, 4) != 0) {
+00257     PSOCK_CLOSE_EXIT(&s->sin);
+00258   }
+00259   PSOCK_READTO(&s->sin, ISO_space);
+00260 
+00261   if(s->inputbuf[0] != ISO_slash) {
+00262     PSOCK_CLOSE_EXIT(&s->sin);
+00263   }
+00264 
+00265   if(s->inputbuf[1] == ISO_space) {
+00266     strncpy(s->filename, http_index_html, sizeof(s->filename));
+00267   } else {
+00268     s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
+00269     strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));
+00270   }
+00271 
+00272   /*  httpd_log_file(uip_conn->ripaddr, s->filename);*/
+00273   
+00274   s->state = STATE_OUTPUT;
+00275 
+00276   while(1) {
+00277     PSOCK_READTO(&s->sin, ISO_nl);
+00278 
+00279     if(strncmp(s->inputbuf, http_referer, 8) == 0) {
+00280       s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
+00281       /*      httpd_log(&s->inputbuf[9]);*/
+00282     }
+00283   }
+00284   
+00285   PSOCK_END(&s->sin);
+00286 }
+00287 /*---------------------------------------------------------------------------*/
+00288 static void
+00289 handle_connection(struct httpd_state *s)
+00290 {
+00291   handle_input(s);
+00292   if(s->state == STATE_OUTPUT) {
+00293     handle_output(s);
+00294   }
+00295 }
+00296 /*---------------------------------------------------------------------------*/
+00297 void
+00298 httpd_appcall(void)
+00299 {
+00300   struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate);
+00301 
+00302   if(uip_closed() || uip_aborted() || uip_timedout()) {
+00303   } else if(uip_connected()) {
+00304     PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
+00305     PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
+00306     PT_INIT(&s->outputpt);
+00307     s->state = STATE_WAITING;
+00308     /*    timer_set(&s->timer, CLOCK_SECOND * 100);*/
+00309     s->timer = 0;
+00310     handle_connection(s);
+00311   } else if(s != NULL) {
+00312     if(uip_poll()) {
+00313       ++s->timer;
+00314       if(s->timer >= 20) {
+00315         uip_abort();
+00316       }
+00317     } else {
+00318       s->timer = 0;
+00319     }
+00320     handle_connection(s);
+00321   } else {
+00322     uip_abort();
+00323   }
+00324 }
+00325 /*---------------------------------------------------------------------------*/
+00326 /**
+00327  * \brief      Initialize the web server
+00328  *
+00329  *             This function initializes the web server and should be
+00330  *             called at system boot-up.
+00331  */
+00332 void
+00333 httpd_init(void)
+00334 {
+00335   uip_listen(HTONS(80));
+00336 }
+00337 /*---------------------------------------------------------------------------*/
+00338 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00185.html b/Target/Source/third_party/uip/doc/html/a00185.html new file mode 100644 index 00000000..f041e01e --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00185.html @@ -0,0 +1,87 @@ + + +uIP 1.0: apps/webserver/httpd.h Source File + + + + + + +

apps/webserver/httpd.h

00001 /*
+00002  * Copyright (c) 2001-2005, Adam Dunkels.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. The name of the author may not be used to endorse or promote
+00014  *    products derived from this software without specific prior
+00015  *    written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack.
+00030  *
+00031  * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $
+00032  *
+00033  */
+00034 
+00035 #ifndef __HTTPD_H__
+00036 #define __HTTPD_H__
+00037 
+00038 #include "psock.h"
+00039 #include "httpd-fs.h"
+00040 
+00041 struct httpd_state {
+00042   unsigned char timer;
+00043   struct psock sin, sout;
+00044   struct pt outputpt, scriptpt;
+00045   char inputbuf[50];
+00046   char filename[20];
+00047   char state;
+00048   struct httpd_fs_file file;
+00049   int len;
+00050   char *scriptptr;
+00051   int scriptlen;
+00052   
+00053   unsigned short count;
+00054 };
+00055 
+00056 void httpd_init(void);
+00057 void httpd_appcall(void);
+00058 
+00059 void httpd_log(char *msg);
+00060 void httpd_log_file(u16_t *requester, char *file);
+00061 
+00062 #endif /* __HTTPD_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00186.html b/Target/Source/third_party/uip/doc/html/a00186.html new file mode 100644 index 00000000..7bfb8c78 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00186.html @@ -0,0 +1,129 @@ + + +uIP 1.0: lib/memb.c Source File + + + + + + +

lib/memb.c

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: memb.c,v 1.1 2006/06/12 08:21:43 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \addtogroup memb
+00038  * @{
+00039  */
+00040 
+00041  /**
+00042  * \file
+00043  * Memory block allocation routines.
+00044  * \author Adam Dunkels <adam@sics.se>
+00045  */
+00046 #include <string.h>
+00047 
+00048 #include "memb.h"
+00049 
+00050 /*---------------------------------------------------------------------------*/
+00051 void
+00052 memb_init(struct memb_blocks *m)
+00053 {
+00054   memset(m->count, 0, m->num);
+00055   memset(m->mem, 0, m->size * m->num);
+00056 }
+00057 /*---------------------------------------------------------------------------*/
+00058 void *
+00059 memb_alloc(struct memb_blocks *m)
+00060 {
+00061   int i;
+00062 
+00063   for(i = 0; i < m->num; ++i) {
+00064     if(m->count[i] == 0) {
+00065       /* If this block was unused, we increase the reference count to
+00066          indicate that it now is used and return a pointer to the
+00067          memory block. */
+00068       ++(m->count[i]);
+00069       return (void *)((char *)m->mem + (i * m->size));
+00070     }
+00071   }
+00072 
+00073   /* No free block was found, so we return NULL to indicate failure to
+00074      allocate block. */
+00075   return NULL;
+00076 }
+00077 /*---------------------------------------------------------------------------*/
+00078 char
+00079 memb_free(struct memb_blocks *m, void *ptr)
+00080 {
+00081   int i;
+00082   char *ptr2;
+00083 
+00084   /* Walk through the list of blocks and try to find the block to
+00085      which the pointer "ptr" points to. */
+00086   ptr2 = (char *)m->mem;
+00087   for(i = 0; i < m->num; ++i) {
+00088     
+00089     if(ptr2 == (char *)ptr) {
+00090       /* We've found to block to which "ptr" points so we decrease the
+00091          reference count and return the new value of it. */
+00092       if(m->count[i] > 0) {
+00093         /* Make sure that we don't deallocate free memory. */
+00094         --(m->count[i]);
+00095       }
+00096       return m->count[i];
+00097     }
+00098     ptr2 += m->size;
+00099   }
+00100   return -1;
+00101 }
+00102 /*---------------------------------------------------------------------------*/
+00103 
+00104 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00187.html b/Target/Source/third_party/uip/doc/html/a00187.html new file mode 100644 index 00000000..d1f58658 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00187.html @@ -0,0 +1,167 @@ + + +uIP 1.0: lib/memb.h Source File + + + + + + +

lib/memb.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: memb.h,v 1.1 2006/06/12 08:21:43 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \defgroup memb Memory block management functions
+00038  *
+00039  * The memory block allocation routines provide a simple yet powerful
+00040  * set of functions for managing a set of memory blocks of fixed
+00041  * size. A set of memory blocks is statically declared with the
+00042  * MEMB() macro. Memory blocks are allocated from the declared
+00043  * memory by the memb_alloc() function, and are deallocated with the
+00044  * memb_free() function.
+00045  *
+00046  * \note Because of namespace clashes only one MEMB() can be
+00047  * declared per C module, and the name scope of a MEMB() memory
+00048  * block is local to each C module.
+00049  *
+00050  * The following example shows how to declare and use a memory block
+00051  * called "cmem" which has 8 chunks of memory with each memory chunk
+00052  * being 20 bytes large.
+00053  *
+00054  * @{
+00055  */
+00056 
+00057 
+00058 /**
+00059  * \file
+00060  *         Memory block allocation routines.
+00061  * \author
+00062  *         Adam Dunkels <adam@sics.se>
+00063  *
+00064  */
+00065 
+00066 #ifndef __MEMB_H__
+00067 #define __MEMB_H__
+00068 
+00069 /*
+00070  * Here we define a C preprocessing macro for concatenating to
+00071  * strings. We need use two macros in order to allow concatenation of
+00072  * two #defined macros.
+00073  */
+00074 #define MEMB_CONCAT2(s1, s2) s1##s2
+00075 #define MEMB_CONCAT(s1, s2) MEMB_CONCAT2(s1, s2)
+00076 
+00077 /**
+00078  * Declare a memory block.
+00079  *
+00080  * This macro is used to staticall declare a block of memory that can
+00081  * be used by the block allocation functions. The macro statically
+00082  * declares a C array with a size that matches the specified number of
+00083  * blocks and their individual sizes.
+00084  *
+00085  * Example:
+00086  \code
+00087 MEMB(connections, sizeof(struct connection), 16);
+00088  \endcode
+00089  *
+00090  * \param name The name of the memory block (later used with
+00091  * memb_init(), memb_alloc() and memb_free()).
+00092  *
+00093  * \param size The size of each memory chunk, in bytes.
+00094  *
+00095  * \param num The total number of memory chunks in the block.
+00096  *
+00097  */
+00098 #define MEMB(name, structure, num) \
+00099         static char MEMB_CONCAT(name,_memb_count)[num]; \
+00100         static structure MEMB_CONCAT(name,_memb_mem)[num]; \
+00101         static struct memb_blocks name = {sizeof(structure), num, \
+00102                                           MEMB_CONCAT(name,_memb_count), \
+00103                                           (void *)MEMB_CONCAT(name,_memb_mem)}
+00104 
+00105 struct memb_blocks {
+00106   unsigned short size;
+00107   unsigned short num;
+00108   char *count;
+00109   void *mem;
+00110 };
+00111 
+00112 /**
+00113  * Initialize a memory block that was declared with MEMB().
+00114  *
+00115  * \param m A memory block previosly declared with MEMB().
+00116  */
+00117 void  memb_init(struct memb_blocks *m);
+00118 
+00119 /**
+00120  * Allocate a memory block from a block of memory declared with MEMB().
+00121  *
+00122  * \param m A memory block previosly declared with MEMB().
+00123  */
+00124 void *memb_alloc(struct memb_blocks *m);
+00125 
+00126 /**
+00127  * Deallocate a memory block from a memory block previously declared
+00128  * with MEMB().
+00129  *
+00130  * \param m m A memory block previosly declared with MEMB().
+00131  *
+00132  * \param ptr A pointer to the memory block that is to be deallocated.
+00133  *
+00134  * \return The new reference count for the memory block (should be 0
+00135  * if successfully deallocated) or -1 if the pointer "ptr" did not
+00136  * point to a legal memory block.
+00137  */
+00138 char  memb_free(struct memb_blocks *m, void *ptr);
+00139 
+00140 /** @} */
+00141 
+00142 #endif /* __MEMB_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00188.html b/Target/Source/third_party/uip/doc/html/a00188.html new file mode 100644 index 00000000..5b7d0274 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00188.html @@ -0,0 +1,113 @@ + + +uIP 1.0: uip/clock.h Source File + + + + + + +

uip/clock.h

00001 /**
+00002  * \defgroup clock Clock interface
+00003  *
+00004  * The clock interface is the interface between the \ref timer "timer library"
+00005  * and the platform specific clock functionality. The clock
+00006  * interface must be implemented for each platform that uses the \ref
+00007  * timer "timer library".
+00008  *
+00009  * The clock interface does only one this: it measures time. The clock
+00010  * interface provides a macro, CLOCK_SECOND, which corresponds to one
+00011  * second of system time.
+00012  *
+00013  * \sa \ref timer "Timer library"
+00014  *
+00015  * @{
+00016  */
+00017 
+00018 /*
+00019  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00020  * All rights reserved.
+00021  *
+00022  * Redistribution and use in source and binary forms, with or without
+00023  * modification, are permitted provided that the following conditions
+00024  * are met:
+00025  * 1. Redistributions of source code must retain the above copyright
+00026  *    notice, this list of conditions and the following disclaimer.
+00027  * 2. Redistributions in binary form must reproduce the above copyright
+00028  *    notice, this list of conditions and the following disclaimer in the
+00029  *    documentation and/or other materials provided with the distribution.
+00030  * 3. Neither the name of the Institute nor the names of its contributors
+00031  *    may be used to endorse or promote products derived from this software
+00032  *    without specific prior written permission.
+00033  *
+00034  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00035  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00036  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00037  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00038  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00039  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00040  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00041  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00042  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00043  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00044  * SUCH DAMAGE.
+00045  *
+00046  * This file is part of the uIP TCP/IP stack
+00047  *
+00048  * Author: Adam Dunkels <adam@sics.se>
+00049  *
+00050  * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $
+00051  */
+00052 #ifndef __CLOCK_H__
+00053 #define __CLOCK_H__
+00054 
+00055 #include "clock-arch.h"
+00056 
+00057 /**
+00058  * Initialize the clock library.
+00059  *
+00060  * This function initializes the clock library and should be called
+00061  * from the main() function of the system.
+00062  *
+00063  */
+00064 void clock_init(void);
+00065 
+00066 /**
+00067  * Get the current clock time.
+00068  *
+00069  * This function returns the current system clock time.
+00070  *
+00071  * \return The current clock time, measured in system ticks.
+00072  */
+00073 clock_time_t clock_time(void);
+00074 
+00075 /**
+00076  * A second, measured in system clock time.
+00077  *
+00078  * \hideinitializer
+00079  */
+00080 #ifdef CLOCK_CONF_SECOND
+00081 #define CLOCK_SECOND CLOCK_CONF_SECOND
+00082 #else
+00083 #define CLOCK_SECOND (clock_time_t)32
+00084 #endif
+00085 
+00086 #endif /* __CLOCK_H__ */
+00087 
+00088 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00189.html b/Target/Source/third_party/uip/doc/html/a00189.html new file mode 100644 index 00000000..7eb5e3f0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00189.html @@ -0,0 +1,108 @@ + + +uIP 1.0: uip/lc-addrlabels.h Source File + + + + + + +

uip/lc-addrlabels.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \addtogroup lc
+00038  * @{
+00039  */
+00040 
+00041 /**
+00042  * \file
+00043  * Implementation of local continuations based on the "Labels as
+00044  * values" feature of gcc
+00045  * \author
+00046  * Adam Dunkels <adam@sics.se>
+00047  *
+00048  * This implementation of local continuations is based on a special
+00049  * feature of the GCC C compiler called "labels as values". This
+00050  * feature allows assigning pointers with the address of the code
+00051  * corresponding to a particular C label.
+00052  *
+00053  * For more information, see the GCC documentation:
+00054  * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
+00055  *
+00056  * Thanks to dividuum for finding the nice local scope label
+00057  * implementation.
+00058  */
+00059 
+00060 #ifndef __LC_ADDRLABELS_H__
+00061 #define __LC_ADDRLABELS_H__
+00062 
+00063 /** \hideinitializer */
+00064 typedef void * lc_t;
+00065 
+00066 #define LC_INIT(s) s = NULL
+00067 
+00068 
+00069 #define LC_RESUME(s)                            \
+00070   do {                                          \
+00071     if(s != NULL) {                             \
+00072       goto *s;                                  \
+00073     }                                           \
+00074   } while(0)
+00075 
+00076 #define LC_SET(s)                               \
+00077   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
+00078 
+00079 #define LC_END(s)
+00080 
+00081 #endif /* __LC_ADDRLABELS_H__ */
+00082 
+00083 /**  @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00190.html b/Target/Source/third_party/uip/doc/html/a00190.html new file mode 100644 index 00000000..81ce234d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00190.html @@ -0,0 +1,101 @@ + + +uIP 1.0: uip/lc-switch.h Source File + + + + + + +

uip/lc-switch.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \addtogroup lc
+00038  * @{
+00039  */
+00040 
+00041 /**
+00042  * \file
+00043  * Implementation of local continuations based on switch() statment
+00044  * \author Adam Dunkels <adam@sics.se>
+00045  *
+00046  * This implementation of local continuations uses the C switch()
+00047  * statement to resume execution of a function somewhere inside the
+00048  * function's body. The implementation is based on the fact that
+00049  * switch() statements are able to jump directly into the bodies of
+00050  * control structures such as if() or while() statmenets.
+00051  *
+00052  * This implementation borrows heavily from Simon Tatham's coroutines
+00053  * implementation in C:
+00054  * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
+00055  */
+00056 
+00057 #ifndef __LC_SWITCH_H__
+00058 #define __LC_SWTICH_H__
+00059 
+00060 /* WARNING! lc implementation using switch() does not work if an
+00061    LC_SET() is done within another switch() statement! */
+00062 
+00063 /** \hideinitializer */
+00064 typedef unsigned short lc_t;
+00065 
+00066 #define LC_INIT(s) s = 0;
+00067 
+00068 #define LC_RESUME(s) switch(s) { case 0:
+00069 
+00070 #define LC_SET(s) s = __LINE__; case __LINE__:
+00071 
+00072 #define LC_END(s) }
+00073 
+00074 #endif /* __LC_SWITCH_H__ */
+00075 
+00076 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00191.html b/Target/Source/third_party/uip/doc/html/a00191.html new file mode 100644 index 00000000..06fd8f6d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00191.html @@ -0,0 +1,156 @@ + + +uIP 1.0: uip/lc.h Source File + + + + + + +

uip/lc.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \addtogroup pt
+00038  * @{
+00039  */
+00040 
+00041 /**
+00042  * \defgroup lc Local continuations
+00043  * @{
+00044  *
+00045  * Local continuations form the basis for implementing protothreads. A
+00046  * local continuation can be <i>set</i> in a specific function to
+00047  * capture the state of the function. After a local continuation has
+00048  * been set can be <i>resumed</i> in order to restore the state of the
+00049  * function at the point where the local continuation was set.
+00050  *
+00051  *
+00052  */
+00053 
+00054 /**
+00055  * \file lc.h
+00056  * Local continuations
+00057  * \author
+00058  * Adam Dunkels <adam@sics.se>
+00059  *
+00060  */
+00061 
+00062 #ifdef DOXYGEN
+00063 /**
+00064  * Initialize a local continuation.
+00065  *
+00066  * This operation initializes the local continuation, thereby
+00067  * unsetting any previously set continuation state.
+00068  *
+00069  * \hideinitializer
+00070  */
+00071 #define LC_INIT(lc)
+00072 
+00073 /**
+00074  * Set a local continuation.
+00075  *
+00076  * The set operation saves the state of the function at the point
+00077  * where the operation is executed. As far as the set operation is
+00078  * concerned, the state of the function does <b>not</b> include the
+00079  * call-stack or local (automatic) variables, but only the program
+00080  * counter and such CPU registers that needs to be saved.
+00081  *
+00082  * \hideinitializer
+00083  */
+00084 #define LC_SET(lc)
+00085 
+00086 /**
+00087  * Resume a local continuation.
+00088  *
+00089  * The resume operation resumes a previously set local continuation, thus
+00090  * restoring the state in which the function was when the local
+00091  * continuation was set. If the local continuation has not been
+00092  * previously set, the resume operation does nothing.
+00093  *
+00094  * \hideinitializer
+00095  */
+00096 #define LC_RESUME(lc)
+00097 
+00098 /**
+00099  * Mark the end of local continuation usage.
+00100  *
+00101  * The end operation signifies that local continuations should not be
+00102  * used any more in the function. This operation is not needed for
+00103  * most implementations of local continuation, but is required by a
+00104  * few implementations.
+00105  *
+00106  * \hideinitializer
+00107  */
+00108 #define LC_END(lc)
+00109 
+00110 /**
+00111  * \var typedef lc_t;
+00112  *
+00113  * The local continuation type.
+00114  *
+00115  * \hideinitializer
+00116  */
+00117 #endif /* DOXYGEN */
+00118 
+00119 #ifndef __LC_H__
+00120 #define __LC_H__
+00121 
+00122 #ifdef LC_CONF_INCLUDE
+00123 #include LC_CONF_INCLUDE
+00124 #else
+00125 #include "lc-switch.h"
+00126 #endif /* LC_CONF_INCLUDE */
+00127 
+00128 #endif /* __LC_H__ */
+00129 
+00130 /** @} */
+00131 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00192.html b/Target/Source/third_party/uip/doc/html/a00192.html new file mode 100644 index 00000000..3e0fb555 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00192.html @@ -0,0 +1,363 @@ + + +uIP 1.0: uip/psock.c Source File + + + + + + +

uip/psock.c

00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 #include <stdio.h>
+00037 #include <string.h>
+00038 
+00039 #include "uipopt.h"
+00040 #include "psock.h"
+00041 #include "uip.h"
+00042 
+00043 #define STATE_NONE 0
+00044 #define STATE_ACKED 1
+00045 #define STATE_READ 2
+00046 #define STATE_BLOCKED_NEWDATA 3
+00047 #define STATE_BLOCKED_CLOSE 4
+00048 #define STATE_BLOCKED_SEND 5
+00049 #define STATE_DATA_SENT 6
+00050 
+00051 /*
+00052  * Return value of the buffering functions that indicates that a
+00053  * buffer was not filled by incoming data.
+00054  *
+00055  */
+00056 #define BUF_NOT_FULL 0
+00057 #define BUF_NOT_FOUND 0
+00058 
+00059 /*
+00060  * Return value of the buffering functions that indicates that a
+00061  * buffer was completely filled by incoming data.
+00062  *
+00063  */
+00064 #define BUF_FULL 1
+00065 
+00066 /*
+00067  * Return value of the buffering functions that indicates that an
+00068  * end-marker byte was found.
+00069  *
+00070  */
+00071 #define BUF_FOUND 2
+00072 
+00073 /*---------------------------------------------------------------------------*/
+00074 static void
+00075 buf_setup(struct psock_buf *buf,
+00076           u8_t *bufptr, u16_t bufsize)
+00077 {
+00078   buf->ptr = bufptr;
+00079   buf->left = bufsize;
+00080 }
+00081 /*---------------------------------------------------------------------------*/
+00082 static u8_t
+00083 buf_bufdata(struct psock_buf *buf, u16_t len,
+00084             u8_t **dataptr, u16_t *datalen)
+00085 {
+00086   if(*datalen < buf->left) {
+00087     memcpy(buf->ptr, *dataptr, *datalen);
+00088     buf->ptr += *datalen;
+00089     buf->left -= *datalen;
+00090     *dataptr += *datalen;
+00091     *datalen = 0;
+00092     return BUF_NOT_FULL;
+00093   } else if(*datalen == buf->left) {
+00094     memcpy(buf->ptr, *dataptr, *datalen);
+00095     buf->ptr += *datalen;
+00096     buf->left = 0;
+00097     *dataptr += *datalen;
+00098     *datalen = 0;
+00099     return BUF_FULL;
+00100   } else {
+00101     memcpy(buf->ptr, *dataptr, buf->left);
+00102     buf->ptr += buf->left;
+00103     *datalen -= buf->left;
+00104     *dataptr += buf->left;
+00105     buf->left = 0;
+00106     return BUF_FULL;
+00107   }
+00108 }
+00109 /*---------------------------------------------------------------------------*/
+00110 static u8_t
+00111 buf_bufto(register struct psock_buf *buf, u8_t endmarker,
+00112           register u8_t **dataptr, register u16_t *datalen)
+00113 {
+00114   u8_t c;
+00115   while(buf->left > 0 && *datalen > 0) {
+00116     c = *buf->ptr = **dataptr;
+00117     ++*dataptr;
+00118     ++buf->ptr;
+00119     --*datalen;
+00120     --buf->left;
+00121     
+00122     if(c == endmarker) {
+00123       return BUF_FOUND;
+00124     }
+00125   }
+00126 
+00127   if(*datalen == 0) {
+00128     return BUF_NOT_FOUND;
+00129   }
+00130 
+00131   while(*datalen > 0) {
+00132     c = **dataptr;
+00133     --*datalen;
+00134     ++*dataptr;
+00135     
+00136     if(c == endmarker) {
+00137       return BUF_FOUND | BUF_FULL;
+00138     }
+00139   }
+00140   
+00141   return BUF_FULL;
+00142 }
+00143 /*---------------------------------------------------------------------------*/
+00144 static char
+00145 send_data(register struct psock *s)
+00146 {
+00147   if(s->state != STATE_DATA_SENT || uip_rexmit()) {
+00148     if(s->sendlen > uip_mss()) {
+00149       uip_send(s->sendptr, uip_mss());
+00150     } else {
+00151       uip_send(s->sendptr, s->sendlen);
+00152     }
+00153     s->state = STATE_DATA_SENT;
+00154     return 1;
+00155   }
+00156   return 0;
+00157 }
+00158 /*---------------------------------------------------------------------------*/
+00159 static char
+00160 data_acked(register struct psock *s)
+00161 {
+00162   if(s->state == STATE_DATA_SENT && uip_acked()) {
+00163     if(s->sendlen > uip_mss()) {
+00164       s->sendlen -= uip_mss();
+00165       s->sendptr += uip_mss();
+00166     } else {
+00167       s->sendptr += s->sendlen;
+00168       s->sendlen = 0;
+00169     }
+00170     s->state = STATE_ACKED;
+00171     return 1;
+00172   }
+00173   return 0;
+00174 }
+00175 /*---------------------------------------------------------------------------*/
+00176 PT_THREAD(psock_send(register struct psock *s, const char *buf,
+00177                      unsigned int len))
+00178 {
+00179   PT_BEGIN(&s->psockpt);
+00180 
+00181   /* If there is no data to send, we exit immediately. */
+00182   if(len == 0) {
+00183     PT_EXIT(&s->psockpt);
+00184   }
+00185 
+00186   /* Save the length of and a pointer to the data that is to be
+00187      sent. */
+00188   s->sendptr = buf;
+00189   s->sendlen = len;
+00190 
+00191   s->state = STATE_NONE;
+00192 
+00193   /* We loop here until all data is sent. The s->sendlen variable is
+00194      updated by the data_sent() function. */
+00195   while(s->sendlen > 0) {
+00196 
+00197     /*
+00198      * The condition for this PT_WAIT_UNTIL is a little tricky: the
+00199      * protothread will wait here until all data has been acknowledged
+00200      * (data_acked() returns true) and until all data has been sent
+00201      * (send_data() returns true). The two functions data_acked() and
+00202      * send_data() must be called in succession to ensure that all
+00203      * data is sent. Therefore the & operator is used instead of the
+00204      * && operator, which would cause only the data_acked() function
+00205      * to be called when it returns false.
+00206      */
+00207     PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
+00208   }
+00209 
+00210   s->state = STATE_NONE;
+00211   
+00212   PT_END(&s->psockpt);
+00213 }
+00214 /*---------------------------------------------------------------------------*/
+00215 PT_THREAD(psock_generator_send(register struct psock *s,
+00216                                unsigned short (*generate)(void *), void *arg))
+00217 {
+00218   PT_BEGIN(&s->psockpt);
+00219 
+00220   /* Ensure that there is a generator function to call. */
+00221   if(generate == NULL) {
+00222     PT_EXIT(&s->psockpt);
+00223   }
+00224 
+00225   /* Call the generator function to generate the data in the
+00226      uip_appdata buffer. */
+00227   s->sendlen = generate(arg);
+00228   s->sendptr = uip_appdata;
+00229 
+00230   s->state = STATE_NONE;  
+00231   do {
+00232     /* Call the generator function again if we are called to perform a
+00233        retransmission. */
+00234     if(uip_rexmit()) {
+00235       generate(arg);
+00236     }
+00237     /* Wait until all data is sent and acknowledged. */
+00238     PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
+00239   } while(s->sendlen > 0);
+00240   
+00241   s->state = STATE_NONE;
+00242   
+00243   PT_END(&s->psockpt);
+00244 }
+00245 /*---------------------------------------------------------------------------*/
+00246 u16_t
+00247 psock_datalen(struct psock *psock)
+00248 {
+00249   return psock->bufsize - psock->buf.left;
+00250 }
+00251 /*---------------------------------------------------------------------------*/
+00252 char
+00253 psock_newdata(struct psock *s)
+00254 {
+00255   if(s->readlen > 0) {
+00256     /* There is data in the uip_appdata buffer that has not yet been
+00257        read with the PSOCK_READ functions. */
+00258     return 1;
+00259   } else if(s->state == STATE_READ) {
+00260     /* All data in uip_appdata buffer already consumed. */
+00261     s->state = STATE_BLOCKED_NEWDATA;
+00262     return 0;
+00263   } else if(uip_newdata()) {
+00264     /* There is new data that has not been consumed. */
+00265     return 1;
+00266   } else {
+00267     /* There is no new data. */
+00268     return 0;
+00269   }
+00270 }
+00271 /*---------------------------------------------------------------------------*/
+00272 PT_THREAD(psock_readto(register struct psock *psock, unsigned char c))
+00273 {
+00274   PT_BEGIN(&psock->psockpt);
+00275 
+00276   buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
+00277   
+00278   /* XXX: Should add buf_checkmarker() before do{} loop, if
+00279      incoming data has been handled while waiting for a write. */
+00280 
+00281   do {
+00282     if(psock->readlen == 0) {
+00283       PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
+00284       psock->state = STATE_READ;
+00285       psock->readptr = (u8_t *)uip_appdata;
+00286       psock->readlen = uip_datalen();
+00287     }
+00288   } while((buf_bufto(&psock->buf, c,
+00289                      &psock->readptr,
+00290                      &psock->readlen) & BUF_FOUND) == 0);
+00291   
+00292   if(psock_datalen(psock) == 0) {
+00293     psock->state = STATE_NONE;
+00294     PT_RESTART(&psock->psockpt);
+00295   }
+00296   PT_END(&psock->psockpt);
+00297 }
+00298 /*---------------------------------------------------------------------------*/
+00299 PT_THREAD(psock_readbuf(register struct psock *psock))
+00300 {
+00301   PT_BEGIN(&psock->psockpt);
+00302 
+00303   buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
+00304   
+00305   /* XXX: Should add buf_checkmarker() before do{} loop, if
+00306      incoming data has been handled while waiting for a write. */
+00307 
+00308   do {
+00309     if(psock->readlen == 0) {
+00310       PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
+00311       printf("Waited for newdata\n");
+00312       psock->state = STATE_READ;
+00313       psock->readptr = (u8_t *)uip_appdata;
+00314       psock->readlen = uip_datalen();
+00315     }
+00316   } while(buf_bufdata(&psock->buf, psock->bufsize,
+00317                          &psock->readptr,
+00318                          &psock->readlen) != BUF_FULL);
+00319 
+00320   if(psock_datalen(psock) == 0) {
+00321     psock->state = STATE_NONE;
+00322     PT_RESTART(&psock->psockpt);
+00323   }
+00324   PT_END(&psock->psockpt);
+00325 }
+00326 /*---------------------------------------------------------------------------*/
+00327 void
+00328 psock_init(register struct psock *psock, char *buffer, unsigned int buffersize)
+00329 {
+00330   psock->state = STATE_NONE;
+00331   psock->readlen = 0;
+00332   psock->bufptr = buffer;
+00333   psock->bufsize = buffersize;
+00334   buf_setup(&psock->buf, buffer, buffersize);
+00335   PT_INIT(&psock->pt);
+00336   PT_INIT(&psock->psockpt);
+00337 }
+00338 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00193.html b/Target/Source/third_party/uip/doc/html/a00193.html new file mode 100644 index 00000000..c9b6a9ce --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00193.html @@ -0,0 +1,405 @@ + + +uIP 1.0: uip/psock.h Source File + + + + + + +

uip/psock.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \defgroup psock Protosockets library
+00038  * @{
+00039  *
+00040  * The protosocket library provides an interface to the uIP stack that is
+00041  * similar to the traditional BSD socket interface. Unlike programs
+00042  * written for the ordinary uIP event-driven interface, programs
+00043  * written with the protosocket library are executed in a sequential
+00044  * fashion and does not have to be implemented as explicit state
+00045  * machines.
+00046  *
+00047  * Protosockets only work with TCP connections.
+00048  *
+00049  * The protosocket library uses \ref pt protothreads to provide
+00050  * sequential control flow. This makes the protosockets lightweight in
+00051  * terms of memory, but also means that protosockets inherits the
+00052  * functional limitations of protothreads. Each protosocket lives only
+00053  * within a single function. Automatic variables (stack variables) are
+00054  * not retained across a protosocket library function call.
+00055  *
+00056  * \note Because the protosocket library uses protothreads, local
+00057  * variables will not always be saved across a call to a protosocket
+00058  * library function. It is therefore advised that local variables are
+00059  * used with extreme care.
+00060  *
+00061  * The protosocket library provides functions for sending data without
+00062  * having to deal with retransmissions and acknowledgements, as well
+00063  * as functions for reading data without having to deal with data
+00064  * being split across more than one TCP segment.
+00065  *
+00066  * Because each protosocket runs as a protothread, the protosocket has to be
+00067  * started with a call to PSOCK_BEGIN() at the start of the function
+00068  * in which the protosocket is used. Similarly, the protosocket protothread can
+00069  * be terminated by a call to PSOCK_EXIT().
+00070  *
+00071  */
+00072 
+00073 /**
+00074  * \file
+00075  * Protosocket library header file
+00076  * \author
+00077  * Adam Dunkels <adam@sics.se>
+00078  *
+00079  */
+00080 
+00081 #ifndef __PSOCK_H__
+00082 #define __PSOCK_H__
+00083 
+00084 #include "uipopt.h"
+00085 #include "pt.h"
+00086 
+00087  /*
+00088  * The structure that holds the state of a buffer.
+00089  *
+00090  * This structure holds the state of a uIP buffer. The structure has
+00091  * no user-visible elements, but is used through the functions
+00092  * provided by the library.
+00093  *
+00094  */
+00095 struct psock_buf {
+00096   u8_t *ptr;
+00097   unsigned short left;
+00098 };
+00099 
+00100 /**
+00101  * The representation of a protosocket.
+00102  *
+00103  * The protosocket structrure is an opaque structure with no user-visible
+00104  * elements.
+00105  */
+00106 struct psock {
+00107   struct pt pt, psockpt; /* Protothreads - one that's using the psock
+00108                             functions, and one that runs inside the
+00109                             psock functions. */
+00110   const u8_t *sendptr;   /* Pointer to the next data to be sent. */
+00111   u8_t *readptr;         /* Pointer to the next data to be read. */
+00112   
+00113   char *bufptr;          /* Pointer to the buffer used for buffering
+00114                             incoming data. */
+00115   
+00116   u16_t sendlen;         /* The number of bytes left to be sent. */
+00117   u16_t readlen;         /* The number of bytes left to be read. */
+00118 
+00119   struct psock_buf buf;  /* The structure holding the state of the
+00120                             input buffer. */
+00121   unsigned int bufsize;  /* The size of the input buffer. */
+00122   
+00123   unsigned char state;   /* The state of the protosocket. */
+00124 };
+00125 
+00126 void psock_init(struct psock *psock, char *buffer, unsigned int buffersize);
+00127 /**
+00128  * Initialize a protosocket.
+00129  *
+00130  * This macro initializes a protosocket and must be called before the
+00131  * protosocket is used. The initialization also specifies the input buffer
+00132  * for the protosocket.
+00133  *
+00134  * \param psock (struct psock *) A pointer to the protosocket to be
+00135  * initialized
+00136  *
+00137  * \param buffer (char *) A pointer to the input buffer for the
+00138  * protosocket.
+00139  *
+00140  * \param buffersize (unsigned int) The size of the input buffer.
+00141  *
+00142  * \hideinitializer
+00143  */
+00144 #define PSOCK_INIT(psock, buffer, buffersize) \
+00145   psock_init(psock, buffer, buffersize)
+00146 
+00147 /**
+00148  * Start the protosocket protothread in a function.
+00149  *
+00150  * This macro starts the protothread associated with the protosocket and
+00151  * must come before other protosocket calls in the function it is used.
+00152  *
+00153  * \param psock (struct psock *) A pointer to the protosocket to be
+00154  * started.
+00155  *
+00156  * \hideinitializer
+00157  */
+00158 #define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt))
+00159 
+00160 PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len));
+00161 /**
+00162  * Send data.
+00163  *
+00164  * This macro sends data over a protosocket. The protosocket protothread blocks
+00165  * until all data has been sent and is known to have been received by
+00166  * the remote end of the TCP connection.
+00167  *
+00168  * \param psock (struct psock *) A pointer to the protosocket over which
+00169  * data is to be sent.
+00170  *
+00171  * \param data (char *) A pointer to the data that is to be sent.
+00172  *
+00173  * \param datalen (unsigned int) The length of the data that is to be
+00174  * sent.
+00175  *
+00176  * \hideinitializer
+00177  */
+00178 #define PSOCK_SEND(psock, data, datalen)                \
+00179     PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen))
+00180 
+00181 /**
+00182  * \brief      Send a null-terminated string.
+00183  * \param psock Pointer to the protosocket.
+00184  * \param str  The string to be sent.
+00185  *
+00186  *             This function sends a null-terminated string over the
+00187  *             protosocket.
+00188  *
+00189  * \hideinitializer
+00190  */
+00191 #define PSOCK_SEND_STR(psock, str)                      \
+00192     PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str)))
+00193 
+00194 PT_THREAD(psock_generator_send(struct psock *psock,
+00195                                 unsigned short (*f)(void *), void *arg));
+00196 
+00197 /**
+00198  * \brief      Generate data with a function and send it
+00199  * \param psock Pointer to the protosocket.
+00200  * \param generator Pointer to the generator function
+00201  * \param arg   Argument to the generator function
+00202  *
+00203  *             This function generates data and sends it over the
+00204  *             protosocket. This can be used to dynamically generate
+00205  *             data for a transmission, instead of generating the data
+00206  *             in a buffer beforehand. This function reduces the need for
+00207  *             buffer memory. The generator function is implemented by
+00208  *             the application, and a pointer to the function is given
+00209  *             as an argument with the call to PSOCK_GENERATOR_SEND().
+00210  *
+00211  *             The generator function should place the generated data
+00212  *             directly in the uip_appdata buffer, and return the
+00213  *             length of the generated data. The generator function is
+00214  *             called by the protosocket layer when the data first is
+00215  *             sent, and once for every retransmission that is needed.
+00216  *
+00217  * \hideinitializer
+00218  */
+00219 #define PSOCK_GENERATOR_SEND(psock, generator, arg)     \
+00220     PT_WAIT_THREAD(&((psock)->pt),                                      \
+00221                    psock_generator_send(psock, generator, arg))
+00222 
+00223 
+00224 /**
+00225  * Close a protosocket.
+00226  *
+00227  * This macro closes a protosocket and can only be called from within the
+00228  * protothread in which the protosocket lives.
+00229  *
+00230  * \param psock (struct psock *) A pointer to the protosocket that is to
+00231  * be closed.
+00232  *
+00233  * \hideinitializer
+00234  */
+00235 #define PSOCK_CLOSE(psock) uip_close()
+00236 
+00237 PT_THREAD(psock_readbuf(struct psock *psock));
+00238 /**
+00239  * Read data until the buffer is full.
+00240  *
+00241  * This macro will block waiting for data and read the data into the
+00242  * input buffer specified with the call to PSOCK_INIT(). Data is read
+00243  * until the buffer is full..
+00244  *
+00245  * \param psock (struct psock *) A pointer to the protosocket from which
+00246  * data should be read.
+00247  *
+00248  * \hideinitializer
+00249  */
+00250 #define PSOCK_READBUF(psock)                            \
+00251   PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock))
+00252 
+00253 PT_THREAD(psock_readto(struct psock *psock, unsigned char c));
+00254 /**
+00255  * Read data up to a specified character.
+00256  *
+00257  * This macro will block waiting for data and read the data into the
+00258  * input buffer specified with the call to PSOCK_INIT(). Data is only
+00259  * read until the specifieed character appears in the data stream.
+00260  *
+00261  * \param psock (struct psock *) A pointer to the protosocket from which
+00262  * data should be read.
+00263  *
+00264  * \param c (char) The character at which to stop reading.
+00265  *
+00266  * \hideinitializer
+00267  */
+00268 #define PSOCK_READTO(psock, c)                          \
+00269   PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c))
+00270 
+00271 /**
+00272  * The length of the data that was previously read.
+00273  *
+00274  * This macro returns the length of the data that was previously read
+00275  * using PSOCK_READTO() or PSOCK_READ().
+00276  *
+00277  * \param psock (struct psock *) A pointer to the protosocket holding the data.
+00278  *
+00279  * \hideinitializer
+00280  */
+00281 #define PSOCK_DATALEN(psock) psock_datalen(psock)
+00282 
+00283 u16_t psock_datalen(struct psock *psock);
+00284 
+00285 /**
+00286  * Exit the protosocket's protothread.
+00287  *
+00288  * This macro terminates the protothread of the protosocket and should
+00289  * almost always be used in conjunction with PSOCK_CLOSE().
+00290  *
+00291  * \sa PSOCK_CLOSE_EXIT()
+00292  *
+00293  * \param psock (struct psock *) A pointer to the protosocket.
+00294  *
+00295  * \hideinitializer
+00296  */
+00297 #define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt))
+00298 
+00299 /**
+00300  * Close a protosocket and exit the protosocket's protothread.
+00301  *
+00302  * This macro closes a protosocket and exits the protosocket's protothread.
+00303  *
+00304  * \param psock (struct psock *) A pointer to the protosocket.
+00305  *
+00306  * \hideinitializer
+00307  */
+00308 #define PSOCK_CLOSE_EXIT(psock)         \
+00309   do {                                          \
+00310     PSOCK_CLOSE(psock);                 \
+00311     PSOCK_EXIT(psock);                  \
+00312   } while(0)
+00313 
+00314 /**
+00315  * Declare the end of a protosocket's protothread.
+00316  *
+00317  * This macro is used for declaring that the protosocket's protothread
+00318  * ends. It must always be used together with a matching PSOCK_BEGIN()
+00319  * macro.
+00320  *
+00321  * \param psock (struct psock *) A pointer to the protosocket.
+00322  *
+00323  * \hideinitializer
+00324  */
+00325 #define PSOCK_END(psock) PT_END(&((psock)->pt))
+00326 
+00327 char psock_newdata(struct psock *s);
+00328 
+00329 /**
+00330  * Check if new data has arrived on a protosocket.
+00331  *
+00332  * This macro is used in conjunction with the PSOCK_WAIT_UNTIL()
+00333  * macro to check if data has arrived on a protosocket.
+00334  *
+00335  * \param psock (struct psock *) A pointer to the protosocket.
+00336  *
+00337  * \hideinitializer
+00338  */
+00339 #define PSOCK_NEWDATA(psock) psock_newdata(psock)
+00340 
+00341 /**
+00342  * Wait until a condition is true.
+00343  *
+00344  * This macro blocks the protothread until the specified condition is
+00345  * true. The macro PSOCK_NEWDATA() can be used to check if new data
+00346  * arrives when the protosocket is waiting.
+00347  *
+00348  * Typically, this macro is used as follows:
+00349  *
+00350  \code
+00351  PT_THREAD(thread(struct psock *s, struct timer *t))
+00352  {
+00353    PSOCK_BEGIN(s);
+00354 
+00355    PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t));
+00356    
+00357    if(PSOCK_NEWDATA(s)) {
+00358      PSOCK_READTO(s, '\n');
+00359    } else {
+00360      handle_timed_out(s);
+00361    }
+00362    
+00363    PSOCK_END(s);
+00364  }
+00365  \endcode
+00366  *
+00367  * \param psock (struct psock *) A pointer to the protosocket.
+00368  * \param condition The condition to wait for.
+00369  *
+00370  * \hideinitializer
+00371  */
+00372 #define PSOCK_WAIT_UNTIL(psock, condition)    \
+00373   PT_WAIT_UNTIL(&((psock)->pt), (condition));
+00374 
+00375 #define PSOCK_WAIT_THREAD(psock, condition)   \
+00376   PT_WAIT_THREAD(&((psock)->pt), (condition))
+00377 
+00378 #endif /* __PSOCK_H__ */
+00379 
+00380 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00194.html b/Target/Source/third_party/uip/doc/html/a00194.html new file mode 100644 index 00000000..4ab6544a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00194.html @@ -0,0 +1,348 @@ + + +uIP 1.0: uip/pt.h Source File + + + + + + +

uip/pt.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 /**
+00037  * \addtogroup pt
+00038  * @{
+00039  */
+00040 
+00041 /**
+00042  * \file
+00043  * Protothreads implementation.
+00044  * \author
+00045  * Adam Dunkels <adam@sics.se>
+00046  *
+00047  */
+00048 
+00049 #ifndef __PT_H__
+00050 #define __PT_H__
+00051 
+00052 #include "lc.h"
+00053 
+00054 struct pt {
+00055   lc_t lc;
+00056 };
+00057 
+00058 #define PT_WAITING 0
+00059 #define PT_EXITED  1
+00060 #define PT_ENDED   2
+00061 #define PT_YIELDED 3
+00062 
+00063 /**
+00064  * \name Initialization
+00065  * @{
+00066  */
+00067 
+00068 /**
+00069  * Initialize a protothread.
+00070  *
+00071  * Initializes a protothread. Initialization must be done prior to
+00072  * starting to execute the protothread.
+00073  *
+00074  * \param pt A pointer to the protothread control structure.
+00075  *
+00076  * \sa PT_SPAWN()
+00077  *
+00078  * \hideinitializer
+00079  */
+00080 #define PT_INIT(pt)   LC_INIT((pt)->lc)
+00081 
+00082 /** @} */
+00083 
+00084 /**
+00085  * \name Declaration and definition
+00086  * @{
+00087  */
+00088 
+00089 /**
+00090  * Declaration of a protothread.
+00091  *
+00092  * This macro is used to declare a protothread. All protothreads must
+00093  * be declared with this macro.
+00094  *
+00095  * \param name_args The name and arguments of the C function
+00096  * implementing the protothread.
+00097  *
+00098  * \hideinitializer
+00099  */
+00100 #define PT_THREAD(name_args) char name_args
+00101 
+00102 /**
+00103  * Declare the start of a protothread inside the C function
+00104  * implementing the protothread.
+00105  *
+00106  * This macro is used to declare the starting point of a
+00107  * protothread. It should be placed at the start of the function in
+00108  * which the protothread runs. All C statements above the PT_BEGIN()
+00109  * invokation will be executed each time the protothread is scheduled.
+00110  *
+00111  * \param pt A pointer to the protothread control structure.
+00112  *
+00113  * \hideinitializer
+00114  */
+00115 #define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)
+00116 
+00117 /**
+00118  * Declare the end of a protothread.
+00119  *
+00120  * This macro is used for declaring that a protothread ends. It must
+00121  * always be used together with a matching PT_BEGIN() macro.
+00122  *
+00123  * \param pt A pointer to the protothread control structure.
+00124  *
+00125  * \hideinitializer
+00126  */
+00127 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
+00128                    PT_INIT(pt); return PT_ENDED; }
+00129 
+00130 /** @} */
+00131 
+00132 /**
+00133  * \name Blocked wait
+00134  * @{
+00135  */
+00136 
+00137 /**
+00138  * Block and wait until condition is true.
+00139  *
+00140  * This macro blocks the protothread until the specified condition is
+00141  * true.
+00142  *
+00143  * \param pt A pointer to the protothread control structure.
+00144  * \param condition The condition.
+00145  *
+00146  * \hideinitializer
+00147  */
+00148 #define PT_WAIT_UNTIL(pt, condition)            \
+00149   do {                                          \
+00150     LC_SET((pt)->lc);                           \
+00151     if(!(condition)) {                          \
+00152       return PT_WAITING;                        \
+00153     }                                           \
+00154   } while(0)
+00155 
+00156 /**
+00157  * Block and wait while condition is true.
+00158  *
+00159  * This function blocks and waits while condition is true. See
+00160  * PT_WAIT_UNTIL().
+00161  *
+00162  * \param pt A pointer to the protothread control structure.
+00163  * \param cond The condition.
+00164  *
+00165  * \hideinitializer
+00166  */
+00167 #define PT_WAIT_WHILE(pt, cond)  PT_WAIT_UNTIL((pt), !(cond))
+00168 
+00169 /** @} */
+00170 
+00171 /**
+00172  * \name Hierarchical protothreads
+00173  * @{
+00174  */
+00175 
+00176 /**
+00177  * Block and wait until a child protothread completes.
+00178  *
+00179  * This macro schedules a child protothread. The current protothread
+00180  * will block until the child protothread completes.
+00181  *
+00182  * \note The child protothread must be manually initialized with the
+00183  * PT_INIT() function before this function is used.
+00184  *
+00185  * \param pt A pointer to the protothread control structure.
+00186  * \param thread The child protothread with arguments
+00187  *
+00188  * \sa PT_SPAWN()
+00189  *
+00190  * \hideinitializer
+00191  */
+00192 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread))
+00193 
+00194 /**
+00195  * Spawn a child protothread and wait until it exits.
+00196  *
+00197  * This macro spawns a child protothread and waits until it exits. The
+00198  * macro can only be used within a protothread.
+00199  *
+00200  * \param pt A pointer to the protothread control structure.
+00201  * \param child A pointer to the child protothread's control structure.
+00202  * \param thread The child protothread with arguments
+00203  *
+00204  * \hideinitializer
+00205  */
+00206 #define PT_SPAWN(pt, child, thread)             \
+00207   do {                                          \
+00208     PT_INIT((child));                           \
+00209     PT_WAIT_THREAD((pt), (thread));             \
+00210   } while(0)
+00211 
+00212 /** @} */
+00213 
+00214 /**
+00215  * \name Exiting and restarting
+00216  * @{
+00217  */
+00218 
+00219 /**
+00220  * Restart the protothread.
+00221  *
+00222  * This macro will block and cause the running protothread to restart
+00223  * its execution at the place of the PT_BEGIN() call.
+00224  *
+00225  * \param pt A pointer to the protothread control structure.
+00226  *
+00227  * \hideinitializer
+00228  */
+00229 #define PT_RESTART(pt)                          \
+00230   do {                                          \
+00231     PT_INIT(pt);                                \
+00232     return PT_WAITING;                  \
+00233   } while(0)
+00234 
+00235 /**
+00236  * Exit the protothread.
+00237  *
+00238  * This macro causes the protothread to exit. If the protothread was
+00239  * spawned by another protothread, the parent protothread will become
+00240  * unblocked and can continue to run.
+00241  *
+00242  * \param pt A pointer to the protothread control structure.
+00243  *
+00244  * \hideinitializer
+00245  */
+00246 #define PT_EXIT(pt)                             \
+00247   do {                                          \
+00248     PT_INIT(pt);                                \
+00249     return PT_EXITED;                   \
+00250   } while(0)
+00251 
+00252 /** @} */
+00253 
+00254 /**
+00255  * \name Calling a protothread
+00256  * @{
+00257  */
+00258 
+00259 /**
+00260  * Schedule a protothread.
+00261  *
+00262  * This function shedules a protothread. The return value of the
+00263  * function is non-zero if the protothread is running or zero if the
+00264  * protothread has exited.
+00265  *
+00266  * \param f The call to the C function implementing the protothread to
+00267  * be scheduled
+00268  *
+00269  * \hideinitializer
+00270  */
+00271 #define PT_SCHEDULE(f) ((f) == PT_WAITING)
+00272 
+00273 /** @} */
+00274 
+00275 /**
+00276  * \name Yielding from a protothread
+00277  * @{
+00278  */
+00279 
+00280 /**
+00281  * Yield from the current protothread.
+00282  *
+00283  * This function will yield the protothread, thereby allowing other
+00284  * processing to take place in the system.
+00285  *
+00286  * \param pt A pointer to the protothread control structure.
+00287  *
+00288  * \hideinitializer
+00289  */
+00290 #define PT_YIELD(pt)                            \
+00291   do {                                          \
+00292     PT_YIELD_FLAG = 0;                          \
+00293     LC_SET((pt)->lc);                           \
+00294     if(PT_YIELD_FLAG == 0) {                    \
+00295       return PT_YIELDED;                        \
+00296     }                                           \
+00297   } while(0)
+00298 
+00299 /**
+00300  * \brief      Yield from the protothread until a condition occurs.
+00301  * \param pt   A pointer to the protothread control structure.
+00302  * \param cond The condition.
+00303  *
+00304  *             This function will yield the protothread, until the
+00305  *             specified condition evaluates to true.
+00306  *
+00307  *
+00308  * \hideinitializer
+00309  */
+00310 #define PT_YIELD_UNTIL(pt, cond)                \
+00311   do {                                          \
+00312     PT_YIELD_FLAG = 0;                          \
+00313     LC_SET((pt)->lc);                           \
+00314     if((PT_YIELD_FLAG == 0) || !(cond)) {       \
+00315       return PT_YIELDED;                        \
+00316     }                                           \
+00317   } while(0)
+00318 
+00319 /** @} */
+00320 
+00321 #endif /* __PT_H__ */
+00322 
+00323 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00195.html b/Target/Source/third_party/uip/doc/html/a00195.html new file mode 100644 index 00000000..de584d07 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00195.html @@ -0,0 +1,152 @@ + + +uIP 1.0: uip/timer.c Source File + + + + + + +

uip/timer.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup timer
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \file
+00008  * Timer library implementation.
+00009  * \author
+00010  * Adam Dunkels <adam@sics.se>
+00011  */
+00012 
+00013 /*
+00014  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00015  * All rights reserved.
+00016  *
+00017  * Redistribution and use in source and binary forms, with or without
+00018  * modification, are permitted provided that the following conditions
+00019  * are met:
+00020  * 1. Redistributions of source code must retain the above copyright
+00021  *    notice, this list of conditions and the following disclaimer.
+00022  * 2. Redistributions in binary form must reproduce the above copyright
+00023  *    notice, this list of conditions and the following disclaimer in the
+00024  *    documentation and/or other materials provided with the distribution.
+00025  * 3. Neither the name of the Institute nor the names of its contributors
+00026  *    may be used to endorse or promote products derived from this software
+00027  *    without specific prior written permission.
+00028  *
+00029  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00030  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00031  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00033  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00035  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00036  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00037  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00038  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00039  * SUCH DAMAGE.
+00040  *
+00041  * This file is part of the uIP TCP/IP stack
+00042  *
+00043  * Author: Adam Dunkels <adam@sics.se>
+00044  *
+00045  * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $
+00046  */
+00047 
+00048 #include "clock.h"
+00049 #include "timer.h"
+00050 
+00051 /*---------------------------------------------------------------------------*/
+00052 /**
+00053  * Set a timer.
+00054  *
+00055  * This function is used to set a timer for a time sometime in the
+00056  * future. The function timer_expired() will evaluate to true after
+00057  * the timer has expired.
+00058  *
+00059  * \param t A pointer to the timer
+00060  * \param interval The interval before the timer expires.
+00061  *
+00062  */
+00063 void
+00064 timer_set(struct timer *t, clock_time_t interval)
+00065 {
+00066   t->interval = interval;
+00067   t->start = clock_time();
+00068 }
+00069 /*---------------------------------------------------------------------------*/
+00070 /**
+00071  * Reset the timer with the same interval.
+00072  *
+00073  * This function resets the timer with the same interval that was
+00074  * given to the timer_set() function. The start point of the interval
+00075  * is the exact time that the timer last expired. Therefore, this
+00076  * function will cause the timer to be stable over time, unlike the
+00077  * timer_rester() function.
+00078  *
+00079  * \param t A pointer to the timer.
+00080  *
+00081  * \sa timer_restart()
+00082  */
+00083 void
+00084 timer_reset(struct timer *t)
+00085 {
+00086   t->start += t->interval;
+00087 }
+00088 /*---------------------------------------------------------------------------*/
+00089 /**
+00090  * Restart the timer from the current point in time
+00091  *
+00092  * This function restarts a timer with the same interval that was
+00093  * given to the timer_set() function. The timer will start at the
+00094  * current time.
+00095  *
+00096  * \note A periodic timer will drift if this function is used to reset
+00097  * it. For preioric timers, use the timer_reset() function instead.
+00098  *
+00099  * \param t A pointer to the timer.
+00100  *
+00101  * \sa timer_reset()
+00102  */
+00103 void
+00104 timer_restart(struct timer *t)
+00105 {
+00106   t->start = clock_time();
+00107 }
+00108 /*---------------------------------------------------------------------------*/
+00109 /**
+00110  * Check if a timer has expired.
+00111  *
+00112  * This function tests if a timer has expired and returns true or
+00113  * false depending on its status.
+00114  *
+00115  * \param t A pointer to the timer
+00116  *
+00117  * \return Non-zero if the timer has expired, zero otherwise.
+00118  *
+00119  */
+00120 int
+00121 timer_expired(struct timer *t)
+00122 {
+00123   return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval;
+00124 }
+00125 /*---------------------------------------------------------------------------*/
+00126 
+00127 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00196.html b/Target/Source/third_party/uip/doc/html/a00196.html new file mode 100644 index 00000000..83f3824c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00196.html @@ -0,0 +1,111 @@ + + +uIP 1.0: uip/timer.h Source File + + + + + + +

uip/timer.h

Go to the documentation of this file.
00001 /**
+00002  * \defgroup timer Timer library
+00003  *
+00004  * The timer library provides functions for setting, resetting and
+00005  * restarting timers, and for checking if a timer has expired. An
+00006  * application must "manually" check if its timers have expired; this
+00007  * is not done automatically.
+00008  *
+00009  * A timer is declared as a \c struct \c timer and all access to the
+00010  * timer is made by a pointer to the declared timer.
+00011  *
+00012  * \note The timer library uses the \ref clock "Clock library" to
+00013  * measure time. Intervals should be specified in the format used by
+00014  * the clock library.
+00015  *
+00016  * @{
+00017  */
+00018 
+00019 
+00020 /**
+00021  * \file
+00022  * Timer library header file.
+00023  * \author
+00024  * Adam Dunkels <adam@sics.se>
+00025  */
+00026 
+00027 /*
+00028  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00029  * All rights reserved.
+00030  *
+00031  * Redistribution and use in source and binary forms, with or without
+00032  * modification, are permitted provided that the following conditions
+00033  * are met:
+00034  * 1. Redistributions of source code must retain the above copyright
+00035  *    notice, this list of conditions and the following disclaimer.
+00036  * 2. Redistributions in binary form must reproduce the above copyright
+00037  *    notice, this list of conditions and the following disclaimer in the
+00038  *    documentation and/or other materials provided with the distribution.
+00039  * 3. Neither the name of the Institute nor the names of its contributors
+00040  *    may be used to endorse or promote products derived from this software
+00041  *    without specific prior written permission.
+00042  *
+00043  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00044  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00045  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00047  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00049  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00050  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00051  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00052  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00053  * SUCH DAMAGE.
+00054  *
+00055  * This file is part of the uIP TCP/IP stack
+00056  *
+00057  * Author: Adam Dunkels <adam@sics.se>
+00058  *
+00059  * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $
+00060  */
+00061 #ifndef __TIMER_H__
+00062 #define __TIMER_H__
+00063 
+00064 #include "clock.h"
+00065 
+00066 /**
+00067  * A timer.
+00068  *
+00069  * This structure is used for declaring a timer. The timer must be set
+00070  * with timer_set() before it can be used.
+00071  *
+00072  * \hideinitializer
+00073  */
+00074 struct timer {
+00075   clock_time_t start;
+00076   clock_time_t interval;
+00077 };
+00078 
+00079 void timer_set(struct timer *t, clock_time_t interval);
+00080 void timer_reset(struct timer *t);
+00081 void timer_restart(struct timer *t);
+00082 int timer_expired(struct timer *t);
+00083 
+00084 #endif /* __TIMER_H__ */
+00085 
+00086 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00197.html b/Target/Source/third_party/uip/doc/html/a00197.html new file mode 100644 index 00000000..9b6016b0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00197.html @@ -0,0 +1,183 @@ + + +uIP 1.0: uip/uip-neighbor.c Source File + + + + + + +

uip/uip-neighbor.c

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2006, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $
+00032  */
+00033 
+00034 /**
+00035  * \file
+00036  *         Database of link-local neighbors, used by IPv6 code and
+00037  *         to be used by a future ARP code rewrite.
+00038  * \author
+00039  *         Adam Dunkels <adam@sics.se>
+00040  */
+00041 
+00042 #include "uip-neighbor.h"
+00043 
+00044 #include <string.h>
+00045 
+00046 #define MAX_TIME 128
+00047 
+00048 #ifdef UIP_NEIGHBOR_CONF_ENTRIES
+00049 #define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES
+00050 #else /* UIP_NEIGHBOR_CONF_ENTRIES */
+00051 #define ENTRIES 8
+00052 #endif /* UIP_NEIGHBOR_CONF_ENTRIES */
+00053 
+00054 struct neighbor_entry {
+00055   uip_ipaddr_t ipaddr;
+00056   struct uip_neighbor_addr addr;
+00057   u8_t time;
+00058 };
+00059 static struct neighbor_entry entries[ENTRIES];
+00060 
+00061 /*---------------------------------------------------------------------------*/
+00062 void
+00063 uip_neighbor_init(void)
+00064 {
+00065   int i;
+00066 
+00067   for(i = 0; i < ENTRIES; ++i) {
+00068     entries[i].time = MAX_TIME;
+00069   }
+00070 }
+00071 /*---------------------------------------------------------------------------*/
+00072 void
+00073 uip_neighbor_periodic(void)
+00074 {
+00075   int i;
+00076 
+00077   for(i = 0; i < ENTRIES; ++i) {
+00078     if(entries[i].time < MAX_TIME) {
+00079       entries[i].time++;
+00080     }
+00081   }
+00082 }
+00083 /*---------------------------------------------------------------------------*/
+00084 void
+00085 uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
+00086 {
+00087   int i, oldest;
+00088   u8_t oldest_time;
+00089 
+00090   printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
+00091          addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3],
+00092          addr->addr.addr[4], addr->addr.addr[5]);
+00093   
+00094   /* Find the first unused entry or the oldest used entry. */
+00095   oldest_time = 0;
+00096   oldest = 0;
+00097   for(i = 0; i < ENTRIES; ++i) {
+00098     if(entries[i].time == MAX_TIME) {
+00099       oldest = i;
+00100       break;
+00101     }
+00102     if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) {
+00103       oldest = i;
+00104       break;
+00105     }
+00106     if(entries[i].time > oldest_time) {
+00107       oldest = i;
+00108       oldest_time = entries[i].time;
+00109     }
+00110   }
+00111 
+00112   /* Use the oldest or first free entry (either pointed to by the
+00113      "oldest" variable). */
+00114   entries[oldest].time = 0;
+00115   uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr);
+00116   memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr));
+00117 }
+00118 /*---------------------------------------------------------------------------*/
+00119 static struct neighbor_entry *
+00120 find_entry(uip_ipaddr_t ipaddr)
+00121 {
+00122   int i;
+00123   
+00124   for(i = 0; i < ENTRIES; ++i) {
+00125     if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) {
+00126       return &entries[i];
+00127     }
+00128   }
+00129   return NULL;
+00130 }
+00131 /*---------------------------------------------------------------------------*/
+00132 void
+00133 uip_neighbor_update(uip_ipaddr_t ipaddr)
+00134 {
+00135   struct neighbor_entry *e;
+00136 
+00137   e = find_entry(ipaddr);
+00138   if(e != NULL) {
+00139     e->time = 0;
+00140   }
+00141 }
+00142 /*---------------------------------------------------------------------------*/
+00143 struct uip_neighbor_addr *
+00144 uip_neighbor_lookup(uip_ipaddr_t ipaddr)
+00145 {
+00146   struct neighbor_entry *e;
+00147 
+00148   e = find_entry(ipaddr);
+00149   if(e != NULL) {
+00150     /*    printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
+00151            e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3],
+00152            e->addr.addr.addr[4], e->addr.addr.addr[5]);*/
+00153 
+00154     return &e->addr;
+00155   }
+00156   return NULL;
+00157 }
+00158 /*---------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00198.html b/Target/Source/third_party/uip/doc/html/a00198.html new file mode 100644 index 00000000..8332e637 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00198.html @@ -0,0 +1,86 @@ + + +uIP 1.0: uip/uip-neighbor.h Source File + + + + + + +

uip/uip-neighbor.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2006, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $
+00032  */
+00033 
+00034 /**
+00035  * \file
+00036  *         Header file for database of link-local neighbors, used by
+00037  *         IPv6 code and to be used by future ARP code.
+00038  * \author
+00039  *         Adam Dunkels <adam@sics.se>
+00040  */
+00041 
+00042 #ifndef __UIP_NEIGHBOR_H__
+00043 #define __UIP_NEIGHBOR_H__
+00044 
+00045 #include "uip.h"
+00046 
+00047 struct uip_neighbor_addr {
+00048 #if UIP_NEIGHBOR_CONF_ADDRTYPE
+00049   UIP_NEIGHBOR_CONF_ADDRTYPE addr;
+00050 #else
+00051   struct uip_eth_addr addr;
+00052 #endif
+00053 };
+00054 
+00055 void uip_neighbor_init(void);
+00056 void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr);
+00057 void uip_neighbor_update(uip_ipaddr_t ipaddr);
+00058 struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr);
+00059 void uip_neighbor_periodic(void);
+00060 
+00061 #endif /* __UIP-NEIGHBOR_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00199.html b/Target/Source/third_party/uip/doc/html/a00199.html new file mode 100644 index 00000000..cefa82b2 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00199.html @@ -0,0 +1,161 @@ + + +uIP 1.0: uip/uip-split.c Source File + + + + + + +

uip/uip-split.c

00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 
+00036 #include <string.h>
+00037 
+00038 #include "uip-split.h"
+00039 #include "uip.h"
+00040 #include "uip-fw.h"
+00041 #include "uip_arch.h"
+00042 
+00043 
+00044 
+00045 #define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+00046 
+00047 /*-----------------------------------------------------------------------------*/
+00048 void
+00049 uip_split_output(void)
+00050 {
+00051   u16_t tcplen, len1, len2;
+00052 
+00053   /* We only try to split maximum sized TCP segments. */
+00054   if(BUF->proto == UIP_PROTO_TCP &&
+00055      uip_len == UIP_BUFSIZE - UIP_LLH_LEN) {
+00056 
+00057     tcplen = uip_len - UIP_TCPIP_HLEN;
+00058     /* Split the segment in two. If the original packet length was
+00059        odd, we make the second packet one byte larger. */
+00060     len1 = len2 = tcplen / 2;
+00061     if(len1 + len2 < tcplen) {
+00062       ++len2;
+00063     }
+00064 
+00065     /* Create the first packet. This is done by altering the length
+00066        field of the IP header and updating the checksums. */
+00067     uip_len = len1 + UIP_TCPIP_HLEN;
+00068 #if UIP_CONF_IPV6
+00069     /* For IPv6, the IP length field does not include the IPv6 IP header
+00070        length. */
+00071     BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+00072     BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+00073 #else /* UIP_CONF_IPV6 */
+00074     BUF->len[0] = uip_len >> 8;
+00075     BUF->len[1] = uip_len & 0xff;
+00076 #endif /* UIP_CONF_IPV6 */
+00077     
+00078     /* Recalculate the TCP checksum. */
+00079     BUF->tcpchksum = 0;
+00080     BUF->tcpchksum = ~(uip_tcpchksum());
+00081 
+00082 #if !UIP_CONF_IPV6
+00083     /* Recalculate the IP checksum. */
+00084     BUF->ipchksum = 0;
+00085     BUF->ipchksum = ~(uip_ipchksum());
+00086 #endif /* UIP_CONF_IPV6 */
+00087     
+00088     /* Transmit the first packet. */
+00089     /*    uip_fw_output();*/
+00090     tcpip_output();
+00091 
+00092     /* Now, create the second packet. To do this, it is not enough to
+00093        just alter the length field, but we must also update the TCP
+00094        sequence number and point the uip_appdata to a new place in
+00095        memory. This place is detemined by the length of the first
+00096        packet (len1). */
+00097     uip_len = len2 + UIP_TCPIP_HLEN;
+00098 #if UIP_CONF_IPV6
+00099     /* For IPv6, the IP length field does not include the IPv6 IP header
+00100        length. */
+00101     BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+00102     BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+00103 #else /* UIP_CONF_IPV6 */
+00104     BUF->len[0] = uip_len >> 8;
+00105     BUF->len[1] = uip_len & 0xff;
+00106 #endif /* UIP_CONF_IPV6 */
+00107     
+00108     /*    uip_appdata += len1;*/
+00109     memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2);
+00110 
+00111     uip_add32(BUF->seqno, len1);
+00112     BUF->seqno[0] = uip_acc32[0];
+00113     BUF->seqno[1] = uip_acc32[1];
+00114     BUF->seqno[2] = uip_acc32[2];
+00115     BUF->seqno[3] = uip_acc32[3];
+00116     
+00117     /* Recalculate the TCP checksum. */
+00118     BUF->tcpchksum = 0;
+00119     BUF->tcpchksum = ~(uip_tcpchksum());
+00120 
+00121 #if !UIP_CONF_IPV6
+00122     /* Recalculate the IP checksum. */
+00123     BUF->ipchksum = 0;
+00124     BUF->ipchksum = ~(uip_ipchksum());
+00125 #endif /* UIP_CONF_IPV6 */
+00126 
+00127     /* Transmit the second packet. */
+00128     /*    uip_fw_output();*/
+00129     tcpip_output();
+00130   } else {
+00131     /*    uip_fw_output();*/
+00132     tcpip_output();
+00133   }
+00134      
+00135 }
+00136 /*-----------------------------------------------------------------------------*/
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00200.html b/Target/Source/third_party/uip/doc/html/a00200.html new file mode 100644 index 00000000..25154844 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00200.html @@ -0,0 +1,121 @@ + + +uIP 1.0: uip/uip-split.h Source File + + + + + + +

uip/uip-split.h

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
+00003  * All rights reserved.
+00004  *
+00005  * Redistribution and use in source and binary forms, with or without
+00006  * modification, are permitted provided that the following conditions
+00007  * are met:
+00008  * 1. Redistributions of source code must retain the above copyright
+00009  *    notice, this list of conditions and the following disclaimer.
+00010  * 2. Redistributions in binary form must reproduce the above copyright
+00011  *    notice, this list of conditions and the following disclaimer in the
+00012  *    documentation and/or other materials provided with the distribution.
+00013  * 3. Neither the name of the Institute nor the names of its contributors
+00014  *    may be used to endorse or promote products derived from this software
+00015  *    without specific prior written permission.
+00016  *
+00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00027  * SUCH DAMAGE.
+00028  *
+00029  * This file is part of the uIP TCP/IP stack
+00030  *
+00031  * Author: Adam Dunkels <adam@sics.se>
+00032  *
+00033  * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $
+00034  */
+00035 /**
+00036  * \addtogroup uip
+00037  * @{
+00038  */
+00039 
+00040 /**
+00041  * \defgroup uipsplit uIP TCP throughput booster hack
+00042  * @{
+00043  *
+00044  * The basic uIP TCP implementation only allows each TCP connection to
+00045  * have a single TCP segment in flight at any given time. Because of
+00046  * the delayed ACK algorithm employed by most TCP receivers, uIP's
+00047  * limit on the amount of in-flight TCP segments seriously reduces the
+00048  * maximum achievable throughput for sending data from uIP.
+00049  *
+00050  * The uip-split module is a hack which tries to remedy this
+00051  * situation. By splitting maximum sized outgoing TCP segments into
+00052  * two, the delayed ACK algorithm is not invoked at TCP
+00053  * receivers. This improves the throughput when sending data from uIP
+00054  * by orders of magnitude.
+00055  *
+00056  * The uip-split module uses the uip-fw module (uIP IP packet
+00057  * forwarding) for sending packets. Therefore, the uip-fw module must
+00058  * be set up with the appropriate network interfaces for this module
+00059  * to work.
+00060  */
+00061 
+00062 
+00063 /**
+00064  * \file
+00065  * Module for splitting outbound TCP segments in two to avoid the
+00066  * delayed ACK throughput degradation.
+00067  * \author
+00068  * Adam Dunkels <adam@sics.se>
+00069  *
+00070  */
+00071 
+00072 #ifndef __UIP_SPLIT_H__
+00073 #define __UIP_SPLIT_H__
+00074 
+00075 /**
+00076  * Handle outgoing packets.
+00077  *
+00078  * This function inspects an outgoing packet in the uip_buf buffer and
+00079  * sends it out using the uip_fw_output() function. If the packet is a
+00080  * full-sized TCP segment it will be split into two segments and
+00081  * transmitted separately. This function should be called instead of
+00082  * the actual device driver output function, or the uip_fw_output()
+00083  * function.
+00084  *
+00085  * The headers of the outgoing packet is assumed to be in the uip_buf
+00086  * buffer and the payload is assumed to be wherever uip_appdata
+00087  * points. The length of the outgoing packet is assumed to be in the
+00088  * uip_len variable.
+00089  *
+00090  */
+00091 void uip_split_output(void);
+00092 
+00093 #endif /* __UIP_SPLIT_H__ */
+00094 
+00095 /** @} */
+00096 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00201.html b/Target/Source/third_party/uip/doc/html/a00201.html new file mode 100644 index 00000000..010d2161 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00201.html @@ -0,0 +1,1922 @@ + + +uIP 1.0: uip/uip.c Source File + + + + + + +

uip/uip.c

Go to the documentation of this file.
00001 #define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/
+00002 
+00003 /**
+00004  * \defgroup uip The uIP TCP/IP stack
+00005  * @{
+00006  *
+00007  * uIP is an implementation of the TCP/IP protocol stack intended for
+00008  * small 8-bit and 16-bit microcontrollers.
+00009  *
+00010  * uIP provides the necessary protocols for Internet communication,
+00011  * with a very small code footprint and RAM requirements - the uIP
+00012  * code size is on the order of a few kilobytes and RAM usage is on
+00013  * the order of a few hundred bytes.
+00014  */
+00015 
+00016 /**
+00017  * \file
+00018  * The uIP TCP/IP stack code.
+00019  * \author Adam Dunkels <adam@dunkels.com>
+00020  */
+00021 
+00022 /*
+00023  * Copyright (c) 2001-2003, Adam Dunkels.
+00024  * All rights reserved.
+00025  *
+00026  * Redistribution and use in source and binary forms, with or without
+00027  * modification, are permitted provided that the following conditions
+00028  * are met:
+00029  * 1. Redistributions of source code must retain the above copyright
+00030  *    notice, this list of conditions and the following disclaimer.
+00031  * 2. Redistributions in binary form must reproduce the above copyright
+00032  *    notice, this list of conditions and the following disclaimer in the
+00033  *    documentation and/or other materials provided with the distribution.
+00034  * 3. The name of the author may not be used to endorse or promote
+00035  *    products derived from this software without specific prior
+00036  *    written permission.
+00037  *
+00038  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00039  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00040  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00041  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00042  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00043  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00044  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00045  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00046  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00047  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00048  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00049  *
+00050  * This file is part of the uIP TCP/IP stack.
+00051  *
+00052  * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $
+00053  *
+00054  */
+00055 
+00056 /*
+00057  * uIP is a small implementation of the IP, UDP and TCP protocols (as
+00058  * well as some basic ICMP stuff). The implementation couples the IP,
+00059  * UDP, TCP and the application layers very tightly. To keep the size
+00060  * of the compiled code down, this code frequently uses the goto
+00061  * statement. While it would be possible to break the uip_process()
+00062  * function into many smaller functions, this would increase the code
+00063  * size because of the overhead of parameter passing and the fact that
+00064  * the optimier would not be as efficient.
+00065  *
+00066  * The principle is that we have a small buffer, called the uip_buf,
+00067  * in which the device driver puts an incoming packet. The TCP/IP
+00068  * stack parses the headers in the packet, and calls the
+00069  * application. If the remote host has sent data to the application,
+00070  * this data is present in the uip_buf and the application read the
+00071  * data from there. It is up to the application to put this data into
+00072  * a byte stream if needed. The application will not be fed with data
+00073  * that is out of sequence.
+00074  *
+00075  * If the application whishes to send data to the peer, it should put
+00076  * its data into the uip_buf. The uip_appdata pointer points to the
+00077  * first available byte. The TCP/IP stack will calculate the
+00078  * checksums, and fill in the necessary header fields and finally send
+00079  * the packet back to the peer.
+00080 */
+00081 
+00082 #include "uip.h"
+00083 #include "uipopt.h"
+00084 #include "uip_arch.h"
+00085 
+00086 #if UIP_CONF_IPV6
+00087 #include "uip-neighbor.h"
+00088 #endif /* UIP_CONF_IPV6 */
+00089 
+00090 #include <string.h>
+00091 
+00092 /*---------------------------------------------------------------------------*/
+00093 /* Variable definitions. */
+00094 
+00095 
+00096 /* The IP address of this host. If it is defined to be fixed (by
+00097    setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set
+00098    here. Otherwise, the address */
+00099 #if UIP_FIXEDADDR > 0
+00100 const uip_ipaddr_t uip_hostaddr =
+00101   {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1),
+00102    HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)};
+00103 const uip_ipaddr_t uip_draddr =
+00104   {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1),
+00105    HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)};
+00106 const uip_ipaddr_t uip_netmask =
+00107   {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1),
+00108    HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)};
+00109 #else
+00110 uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
+00111 #endif /* UIP_FIXEDADDR */
+00112 
+00113 static const uip_ipaddr_t all_ones_addr =
+00114 #if UIP_CONF_IPV6
+00115   {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
+00116 #else /* UIP_CONF_IPV6 */
+00117   {0xffff,0xffff};
+00118 #endif /* UIP_CONF_IPV6 */
+00119 static const uip_ipaddr_t all_zeroes_addr =
+00120 #if UIP_CONF_IPV6
+00121   {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};
+00122 #else /* UIP_CONF_IPV6 */
+00123   {0x0000,0x0000};
+00124 #endif /* UIP_CONF_IPV6 */
+00125 
+00126 
+00127 #if UIP_FIXEDETHADDR
+00128 const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0,
+00129                                           UIP_ETHADDR1,
+00130                                           UIP_ETHADDR2,
+00131                                           UIP_ETHADDR3,
+00132                                           UIP_ETHADDR4,
+00133                                           UIP_ETHADDR5}};
+00134 #else
+00135 struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}};
+00136 #endif
+00137 
+00138 #ifndef UIP_CONF_EXTERNAL_BUFFER
+00139 u8_t uip_buf[UIP_BUFSIZE + 2];   /* The packet buffer that contains
+00140                                     incoming packets. */
+00141 #endif /* UIP_CONF_EXTERNAL_BUFFER */
+00142 
+00143 void *uip_appdata;               /* The uip_appdata pointer points to
+00144                                     application data. */
+00145 void *uip_sappdata;              /* The uip_appdata pointer points to
+00146                                     the application data which is to
+00147                                     be sent. */
+00148 #if UIP_URGDATA > 0
+00149 void *uip_urgdata;               /* The uip_urgdata pointer points to
+00150                                     urgent data (out-of-band data), if
+00151                                     present. */
+00152 u16_t uip_urglen, uip_surglen;
+00153 #endif /* UIP_URGDATA > 0 */
+00154 
+00155 u16_t uip_len, uip_slen;
+00156                              /* The uip_len is either 8 or 16 bits,
+00157                                 depending on the maximum packet
+00158                                 size. */
+00159 
+00160 u8_t uip_flags;     /* The uip_flags variable is used for
+00161                                 communication between the TCP/IP stack
+00162                                 and the application program. */
+00163 struct uip_conn *uip_conn;   /* uip_conn always points to the current
+00164                                 connection. */
+00165 
+00166 struct uip_conn uip_conns[UIP_CONNS];
+00167                              /* The uip_conns array holds all TCP
+00168                                 connections. */
+00169 u16_t uip_listenports[UIP_LISTENPORTS];
+00170                              /* The uip_listenports list all currently
+00171                                 listning ports. */
+00172 #if UIP_UDP
+00173 struct uip_udp_conn *uip_udp_conn;
+00174 struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
+00175 #endif /* UIP_UDP */
+00176 
+00177 static u16_t ipid;           /* Ths ipid variable is an increasing
+00178                                 number that is used for the IP ID
+00179                                 field. */
+00180 
+00181 void uip_setipid(u16_t id) { ipid = id; }
+00182 
+00183 static u8_t iss[4];          /* The iss variable is used for the TCP
+00184                                 initial sequence number. */
+00185 
+00186 #if UIP_ACTIVE_OPEN
+00187 static u16_t lastport;       /* Keeps track of the last port used for
+00188                                 a new connection. */
+00189 #endif /* UIP_ACTIVE_OPEN */
+00190 
+00191 /* Temporary variables. */
+00192 u8_t uip_acc32[4];
+00193 static u8_t c, opt;
+00194 static u16_t tmp16;
+00195 
+00196 /* Structures and definitions. */
+00197 #define TCP_FIN 0x01
+00198 #define TCP_SYN 0x02
+00199 #define TCP_RST 0x04
+00200 #define TCP_PSH 0x08
+00201 #define TCP_ACK 0x10
+00202 #define TCP_URG 0x20
+00203 #define TCP_CTL 0x3f
+00204 
+00205 #define TCP_OPT_END     0   /* End of TCP options list */
+00206 #define TCP_OPT_NOOP    1   /* "No-operation" TCP option */
+00207 #define TCP_OPT_MSS     2   /* Maximum segment size TCP option */
+00208 
+00209 #define TCP_OPT_MSS_LEN 4   /* Length of TCP MSS option. */
+00210 
+00211 #define ICMP_ECHO_REPLY 0
+00212 #define ICMP_ECHO       8
+00213 
+00214 #define ICMP6_ECHO_REPLY             129
+00215 #define ICMP6_ECHO                   128
+00216 #define ICMP6_NEIGHBOR_SOLICITATION  135
+00217 #define ICMP6_NEIGHBOR_ADVERTISEMENT 136
+00218 
+00219 #define ICMP6_FLAG_S (1 << 6)
+00220 
+00221 #define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1
+00222 #define ICMP6_OPTION_TARGET_LINK_ADDRESS 2
+00223 
+00224 
+00225 /* Macros. */
+00226 #define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+00227 #define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
+00228 #define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
+00229 #define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
+00230 
+00231 
+00232 #if UIP_STATISTICS == 1
+00233 struct uip_stats uip_stat;
+00234 #define UIP_STAT(s) s
+00235 #else
+00236 #define UIP_STAT(s)
+00237 #endif /* UIP_STATISTICS == 1 */
+00238 
+00239 #if UIP_LOGGING == 1
+00240 #include <stdio.h>
+00241 void uip_log(char *msg);
+00242 #define UIP_LOG(m) uip_log(m)
+00243 #else
+00244 #define UIP_LOG(m)
+00245 #endif /* UIP_LOGGING == 1 */
+00246 
+00247 #if ! UIP_ARCH_ADD32
+00248 void
+00249 uip_add32(u8_t *op32, u16_t op16)
+00250 {
+00251   uip_acc32[3] = op32[3] + (op16 & 0xff);
+00252   uip_acc32[2] = op32[2] + (op16 >> 8);
+00253   uip_acc32[1] = op32[1];
+00254   uip_acc32[0] = op32[0];
+00255   
+00256   if(uip_acc32[2] < (op16 >> 8)) {
+00257     ++uip_acc32[1];
+00258     if(uip_acc32[1] == 0) {
+00259       ++uip_acc32[0];
+00260     }
+00261   }
+00262   
+00263   
+00264   if(uip_acc32[3] < (op16 & 0xff)) {
+00265     ++uip_acc32[2];
+00266     if(uip_acc32[2] == 0) {
+00267       ++uip_acc32[1];
+00268       if(uip_acc32[1] == 0) {
+00269         ++uip_acc32[0];
+00270       }
+00271     }
+00272   }
+00273 }
+00274 
+00275 #endif /* UIP_ARCH_ADD32 */
+00276 
+00277 #if ! UIP_ARCH_CHKSUM
+00278 /*---------------------------------------------------------------------------*/
+00279 static u16_t
+00280 chksum(u16_t sum, const u8_t *data, u16_t len)
+00281 {
+00282   u16_t t;
+00283   const u8_t *dataptr;
+00284   const u8_t *last_byte;
+00285 
+00286   dataptr = data;
+00287   last_byte = data + len - 1;
+00288   
+00289   while(dataptr < last_byte) {  /* At least two more bytes */
+00290     t = (dataptr[0] << 8) + dataptr[1];
+00291     sum += t;
+00292     if(sum < t) {
+00293       sum++;            /* carry */
+00294     }
+00295     dataptr += 2;
+00296   }
+00297   
+00298   if(dataptr == last_byte) {
+00299     t = (dataptr[0] << 8) + 0;
+00300     sum += t;
+00301     if(sum < t) {
+00302       sum++;            /* carry */
+00303     }
+00304   }
+00305 
+00306   /* Return sum in host byte order. */
+00307   return sum;
+00308 }
+00309 /*---------------------------------------------------------------------------*/
+00310 u16_t
+00311 uip_chksum(u16_t *data, u16_t len)
+00312 {
+00313   return htons(chksum(0, (u8_t *)data, len));
+00314 }
+00315 /*---------------------------------------------------------------------------*/
+00316 #ifndef UIP_ARCH_IPCHKSUM
+00317 u16_t
+00318 uip_ipchksum(void)
+00319 {
+00320   u16_t sum;
+00321 
+00322   sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
+00323   DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum);
+00324   return (sum == 0) ? 0xffff : htons(sum);
+00325 }
+00326 #endif
+00327 /*---------------------------------------------------------------------------*/
+00328 static u16_t
+00329 upper_layer_chksum(u8_t proto)
+00330 {
+00331   u16_t upper_layer_len;
+00332   u16_t sum;
+00333   
+00334 #if UIP_CONF_IPV6
+00335   upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]);
+00336 #else /* UIP_CONF_IPV6 */
+00337   upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN;
+00338 #endif /* UIP_CONF_IPV6 */
+00339   
+00340   /* First sum pseudoheader. */
+00341   
+00342   /* IP protocol and length fields. This addition cannot carry. */
+00343   sum = upper_layer_len + proto;
+00344   /* Sum IP source and destination addresses. */
+00345   sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t));
+00346 
+00347   /* Sum TCP header and data. */
+00348   sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN],
+00349                upper_layer_len);
+00350     
+00351   return (sum == 0) ? 0xffff : htons(sum);
+00352 }
+00353 /*---------------------------------------------------------------------------*/
+00354 #if UIP_CONF_IPV6
+00355 u16_t
+00356 uip_icmp6chksum(void)
+00357 {
+00358   return upper_layer_chksum(UIP_PROTO_ICMP6);
+00359   
+00360 }
+00361 #endif /* UIP_CONF_IPV6 */
+00362 /*---------------------------------------------------------------------------*/
+00363 u16_t
+00364 uip_tcpchksum(void)
+00365 {
+00366   return upper_layer_chksum(UIP_PROTO_TCP);
+00367 }
+00368 /*---------------------------------------------------------------------------*/
+00369 #if UIP_UDP_CHECKSUMS
+00370 u16_t
+00371 uip_udpchksum(void)
+00372 {
+00373   return upper_layer_chksum(UIP_PROTO_UDP);
+00374 }
+00375 #endif /* UIP_UDP_CHECKSUMS */
+00376 #endif /* UIP_ARCH_CHKSUM */
+00377 /*---------------------------------------------------------------------------*/
+00378 void
+00379 uip_init(void)
+00380 {
+00381   for(c = 0; c < UIP_LISTENPORTS; ++c) {
+00382     uip_listenports[c] = 0;
+00383   }
+00384   for(c = 0; c < UIP_CONNS; ++c) {
+00385     uip_conns[c].tcpstateflags = UIP_CLOSED;
+00386   }
+00387 #if UIP_ACTIVE_OPEN
+00388   lastport = 1024;
+00389 #endif /* UIP_ACTIVE_OPEN */
+00390 
+00391 #if UIP_UDP
+00392   for(c = 0; c < UIP_UDP_CONNS; ++c) {
+00393     uip_udp_conns[c].lport = 0;
+00394   }
+00395 #endif /* UIP_UDP */
+00396   
+00397 
+00398   /* IPv4 initialization. */
+00399 #if UIP_FIXEDADDR == 0
+00400   /*  uip_hostaddr[0] = uip_hostaddr[1] = 0;*/
+00401 #endif /* UIP_FIXEDADDR */
+00402 
+00403 }
+00404 /*---------------------------------------------------------------------------*/
+00405 #if UIP_ACTIVE_OPEN
+00406 struct uip_conn *
+00407 uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)
+00408 {
+00409   register struct uip_conn *conn, *cconn;
+00410   
+00411   /* Find an unused local port. */
+00412  again:
+00413   ++lastport;
+00414 
+00415   if(lastport >= 32000) {
+00416     lastport = 4096;
+00417   }
+00418 
+00419   /* Check if this port is already in use, and if so try to find
+00420      another one. */
+00421   for(c = 0; c < UIP_CONNS; ++c) {
+00422     conn = &uip_conns[c];
+00423     if(conn->tcpstateflags != UIP_CLOSED &&
+00424        conn->lport == htons(lastport)) {
+00425       goto again;
+00426     }
+00427   }
+00428 
+00429   conn = 0;
+00430   for(c = 0; c < UIP_CONNS; ++c) {
+00431     cconn = &uip_conns[c];
+00432     if(cconn->tcpstateflags == UIP_CLOSED) {
+00433       conn = cconn;
+00434       break;
+00435     }
+00436     if(cconn->tcpstateflags == UIP_TIME_WAIT) {
+00437       if(conn == 0 ||
+00438          cconn->timer > conn->timer) {
+00439         conn = cconn;
+00440       }
+00441     }
+00442   }
+00443 
+00444   if(conn == 0) {
+00445     return 0;
+00446   }
+00447   
+00448   conn->tcpstateflags = UIP_SYN_SENT;
+00449 
+00450   conn->snd_nxt[0] = iss[0];
+00451   conn->snd_nxt[1] = iss[1];
+00452   conn->snd_nxt[2] = iss[2];
+00453   conn->snd_nxt[3] = iss[3];
+00454 
+00455   conn->initialmss = conn->mss = UIP_TCP_MSS;
+00456   
+00457   conn->len = 1;   /* TCP length of the SYN is one. */
+00458   conn->nrtx = 0;
+00459   conn->timer = 1; /* Send the SYN next time around. */
+00460   conn->rto = UIP_RTO;
+00461   conn->sa = 0;
+00462   conn->sv = 16;   /* Initial value of the RTT variance. */
+00463   conn->lport = htons(lastport);
+00464   conn->rport = rport;
+00465   uip_ipaddr_copy(&conn->ripaddr, ripaddr);
+00466   
+00467   return conn;
+00468 }
+00469 #endif /* UIP_ACTIVE_OPEN */
+00470 /*---------------------------------------------------------------------------*/
+00471 #if UIP_UDP
+00472 struct uip_udp_conn *
+00473 uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport)
+00474 {
+00475   register struct uip_udp_conn *conn;
+00476   
+00477   /* Find an unused local port. */
+00478  again:
+00479   ++lastport;
+00480 
+00481   if(lastport >= 32000) {
+00482     lastport = 4096;
+00483   }
+00484   
+00485   for(c = 0; c < UIP_UDP_CONNS; ++c) {
+00486     if(uip_udp_conns[c].lport == htons(lastport)) {
+00487       goto again;
+00488     }
+00489   }
+00490 
+00491 
+00492   conn = 0;
+00493   for(c = 0; c < UIP_UDP_CONNS; ++c) {
+00494     if(uip_udp_conns[c].lport == 0) {
+00495       conn = &uip_udp_conns[c];
+00496       break;
+00497     }
+00498   }
+00499 
+00500   if(conn == 0) {
+00501     return 0;
+00502   }
+00503   
+00504   conn->lport = HTONS(lastport);
+00505   conn->rport = rport;
+00506   if(ripaddr == NULL) {
+00507     memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t));
+00508   } else {
+00509     uip_ipaddr_copy(&conn->ripaddr, ripaddr);
+00510   }
+00511   conn->ttl = UIP_TTL;
+00512   
+00513   return conn;
+00514 }
+00515 #endif /* UIP_UDP */
+00516 /*---------------------------------------------------------------------------*/
+00517 void
+00518 uip_unlisten(u16_t port)
+00519 {
+00520   for(c = 0; c < UIP_LISTENPORTS; ++c) {
+00521     if(uip_listenports[c] == port) {
+00522       uip_listenports[c] = 0;
+00523       return;
+00524     }
+00525   }
+00526 }
+00527 /*---------------------------------------------------------------------------*/
+00528 void
+00529 uip_listen(u16_t port)
+00530 {
+00531   for(c = 0; c < UIP_LISTENPORTS; ++c) {
+00532     if(uip_listenports[c] == 0) {
+00533       uip_listenports[c] = port;
+00534       return;
+00535     }
+00536   }
+00537 }
+00538 /*---------------------------------------------------------------------------*/
+00539 /* XXX: IP fragment reassembly: not well-tested. */
+00540 
+00541 #if UIP_REASSEMBLY && !UIP_CONF_IPV6
+00542 #define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN)
+00543 static u8_t uip_reassbuf[UIP_REASS_BUFSIZE];
+00544 static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)];
+00545 static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f,
+00546                                     0x0f, 0x07, 0x03, 0x01};
+00547 static u16_t uip_reasslen;
+00548 static u8_t uip_reassflags;
+00549 #define UIP_REASS_FLAG_LASTFRAG 0x01
+00550 static u8_t uip_reasstmr;
+00551 
+00552 #define IP_MF   0x20
+00553 
+00554 static u8_t
+00555 uip_reass(void)
+00556 {
+00557   u16_t offset, len;
+00558   u16_t i;
+00559 
+00560   /* If ip_reasstmr is zero, no packet is present in the buffer, so we
+00561      write the IP header of the fragment into the reassembly
+00562      buffer. The timer is updated with the maximum age. */
+00563   if(uip_reasstmr == 0) {
+00564     memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN);
+00565     uip_reasstmr = UIP_REASS_MAXAGE;
+00566     uip_reassflags = 0;
+00567     /* Clear the bitmap. */
+00568     memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap));
+00569   }
+00570 
+00571   /* Check if the incoming fragment matches the one currently present
+00572      in the reasembly buffer. If so, we proceed with copying the
+00573      fragment into the buffer. */
+00574   if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] &&
+00575      BUF->srcipaddr[1] == FBUF->srcipaddr[1] &&
+00576      BUF->destipaddr[0] == FBUF->destipaddr[0] &&
+00577      BUF->destipaddr[1] == FBUF->destipaddr[1] &&
+00578      BUF->ipid[0] == FBUF->ipid[0] &&
+00579      BUF->ipid[1] == FBUF->ipid[1]) {
+00580 
+00581     len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4;
+00582     offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8;
+00583 
+00584     /* If the offset or the offset + fragment length overflows the
+00585        reassembly buffer, we discard the entire packet. */
+00586     if(offset > UIP_REASS_BUFSIZE ||
+00587        offset + len > UIP_REASS_BUFSIZE) {
+00588       uip_reasstmr = 0;
+00589       goto nullreturn;
+00590     }
+00591 
+00592     /* Copy the fragment into the reassembly buffer, at the right
+00593        offset. */
+00594     memcpy(&uip_reassbuf[UIP_IPH_LEN + offset],
+00595            (char *)BUF + (int)((BUF->vhl & 0x0f) * 4),
+00596            len);
+00597       
+00598     /* Update the bitmap. */
+00599     if(offset / (8 * 8) == (offset + len) / (8 * 8)) {
+00600       /* If the two endpoints are in the same byte, we only update
+00601          that byte. */
+00602              
+00603       uip_reassbitmap[offset / (8 * 8)] |=
+00604              bitmap_bits[(offset / 8 ) & 7] &
+00605              ~bitmap_bits[((offset + len) / 8 ) & 7];
+00606     } else {
+00607       /* If the two endpoints are in different bytes, we update the
+00608          bytes in the endpoints and fill the stuff inbetween with
+00609          0xff. */
+00610       uip_reassbitmap[offset / (8 * 8)] |=
+00611         bitmap_bits[(offset / 8 ) & 7];
+00612       for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) {
+00613         uip_reassbitmap[i] = 0xff;
+00614       }
+00615       uip_reassbitmap[(offset + len) / (8 * 8)] |=
+00616         ~bitmap_bits[((offset + len) / 8 ) & 7];
+00617     }
+00618     
+00619     /* If this fragment has the More Fragments flag set to zero, we
+00620        know that this is the last fragment, so we can calculate the
+00621        size of the entire packet. We also set the
+00622        IP_REASS_FLAG_LASTFRAG flag to indicate that we have received
+00623        the final fragment. */
+00624 
+00625     if((BUF->ipoffset[0] & IP_MF) == 0) {
+00626       uip_reassflags |= UIP_REASS_FLAG_LASTFRAG;
+00627       uip_reasslen = offset + len;
+00628     }
+00629     
+00630     /* Finally, we check if we have a full packet in the buffer. We do
+00631        this by checking if we have the last fragment and if all bits
+00632        in the bitmap are set. */
+00633     if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) {
+00634       /* Check all bytes up to and including all but the last byte in
+00635          the bitmap. */
+00636       for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) {
+00637         if(uip_reassbitmap[i] != 0xff) {
+00638           goto nullreturn;
+00639         }
+00640       }
+00641       /* Check the last byte in the bitmap. It should contain just the
+00642          right amount of bits. */
+00643       if(uip_reassbitmap[uip_reasslen / (8 * 8)] !=
+00644          (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) {
+00645         goto nullreturn;
+00646       }
+00647 
+00648       /* If we have come this far, we have a full packet in the
+00649          buffer, so we allocate a pbuf and copy the packet into it. We
+00650          also reset the timer. */
+00651       uip_reasstmr = 0;
+00652       memcpy(BUF, FBUF, uip_reasslen);
+00653 
+00654       /* Pretend to be a "normal" (i.e., not fragmented) IP packet
+00655          from now on. */
+00656       BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
+00657       BUF->len[0] = uip_reasslen >> 8;
+00658       BUF->len[1] = uip_reasslen & 0xff;
+00659       BUF->ipchksum = 0;
+00660       BUF->ipchksum = ~(uip_ipchksum());
+00661 
+00662       return uip_reasslen;
+00663     }
+00664   }
+00665 
+00666  nullreturn:
+00667   return 0;
+00668 }
+00669 #endif /* UIP_REASSEMBLY */
+00670 /*---------------------------------------------------------------------------*/
+00671 static void
+00672 uip_add_rcv_nxt(u16_t n)
+00673 {
+00674   uip_add32(uip_conn->rcv_nxt, n);
+00675   uip_conn->rcv_nxt[0] = uip_acc32[0];
+00676   uip_conn->rcv_nxt[1] = uip_acc32[1];
+00677   uip_conn->rcv_nxt[2] = uip_acc32[2];
+00678   uip_conn->rcv_nxt[3] = uip_acc32[3];
+00679 }
+00680 /*---------------------------------------------------------------------------*/
+00681 void
+00682 uip_process(u8_t flag)
+00683 {
+00684   register struct uip_conn *uip_connr = uip_conn;
+00685 
+00686 #if UIP_UDP
+00687   if(flag == UIP_UDP_SEND_CONN) {
+00688     goto udp_send;
+00689   }
+00690 #endif /* UIP_UDP */
+00691   
+00692   uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN];
+00693 
+00694   /* Check if we were invoked because of a poll request for a
+00695      particular connection. */
+00696   if(flag == UIP_POLL_REQUEST) {
+00697     if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
+00698        !uip_outstanding(uip_connr)) {
+00699         uip_flags = UIP_POLL;
+00700         UIP_APPCALL();
+00701         goto appsend;
+00702     }
+00703     goto drop;
+00704     
+00705     /* Check if we were invoked because of the perodic timer fireing. */
+00706   } else if(flag == UIP_TIMER) {
+00707 #if UIP_REASSEMBLY
+00708     if(uip_reasstmr != 0) {
+00709       --uip_reasstmr;
+00710     }
+00711 #endif /* UIP_REASSEMBLY */
+00712     /* Increase the initial sequence number. */
+00713     if(++iss[3] == 0) {
+00714       if(++iss[2] == 0) {
+00715         if(++iss[1] == 0) {
+00716           ++iss[0];
+00717         }
+00718       }
+00719     }
+00720 
+00721     /* Reset the length variables. */
+00722     uip_len = 0;
+00723     uip_slen = 0;
+00724 
+00725     /* Check if the connection is in a state in which we simply wait
+00726        for the connection to time out. If so, we increase the
+00727        connection's timer and remove the connection if it times
+00728        out. */
+00729     if(uip_connr->tcpstateflags == UIP_TIME_WAIT ||
+00730        uip_connr->tcpstateflags == UIP_FIN_WAIT_2) {
+00731       ++(uip_connr->timer);
+00732       if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {
+00733         uip_connr->tcpstateflags = UIP_CLOSED;
+00734       }
+00735     } else if(uip_connr->tcpstateflags != UIP_CLOSED) {
+00736       /* If the connection has outstanding data, we increase the
+00737          connection's timer and see if it has reached the RTO value
+00738          in which case we retransmit. */
+00739       if(uip_outstanding(uip_connr)) {
+00740         if(uip_connr->timer-- == 0) {
+00741           if(uip_connr->nrtx == UIP_MAXRTX ||
+00742              ((uip_connr->tcpstateflags == UIP_SYN_SENT ||
+00743                uip_connr->tcpstateflags == UIP_SYN_RCVD) &&
+00744               uip_connr->nrtx == UIP_MAXSYNRTX)) {
+00745             uip_connr->tcpstateflags = UIP_CLOSED;
+00746 
+00747             /* We call UIP_APPCALL() with uip_flags set to
+00748                UIP_TIMEDOUT to inform the application that the
+00749                connection has timed out. */
+00750             uip_flags = UIP_TIMEDOUT;
+00751             UIP_APPCALL();
+00752 
+00753             /* We also send a reset packet to the remote host. */
+00754             BUF->flags = TCP_RST | TCP_ACK;
+00755             goto tcp_send_nodata;
+00756           }
+00757 
+00758           /* Exponential backoff. */
+00759           uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4?
+00760                                          4:
+00761                                          uip_connr->nrtx);
+00762           ++(uip_connr->nrtx);
+00763           
+00764           /* Ok, so we need to retransmit. We do this differently
+00765              depending on which state we are in. In ESTABLISHED, we
+00766              call upon the application so that it may prepare the
+00767              data for the retransmit. In SYN_RCVD, we resend the
+00768              SYNACK that we sent earlier and in LAST_ACK we have to
+00769              retransmit our FINACK. */
+00770           UIP_STAT(++uip_stat.tcp.rexmit);
+00771           switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
+00772           case UIP_SYN_RCVD:
+00773             /* In the SYN_RCVD state, we should retransmit our
+00774                SYNACK. */
+00775             goto tcp_send_synack;
+00776             
+00777 #if UIP_ACTIVE_OPEN
+00778           case UIP_SYN_SENT:
+00779             /* In the SYN_SENT state, we retransmit out SYN. */
+00780             BUF->flags = 0;
+00781             goto tcp_send_syn;
+00782 #endif /* UIP_ACTIVE_OPEN */
+00783             
+00784           case UIP_ESTABLISHED:
+00785             /* In the ESTABLISHED state, we call upon the application
+00786                to do the actual retransmit after which we jump into
+00787                the code for sending out the packet (the apprexmit
+00788                label). */
+00789             uip_flags = UIP_REXMIT;
+00790             UIP_APPCALL();
+00791             goto apprexmit;
+00792             
+00793           case UIP_FIN_WAIT_1:
+00794           case UIP_CLOSING:
+00795           case UIP_LAST_ACK:
+00796             /* In all these states we should retransmit a FINACK. */
+00797             goto tcp_send_finack;
+00798             
+00799           }
+00800         }
+00801       } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) {
+00802         /* If there was no need for a retransmission, we poll the
+00803            application for new data. */
+00804         uip_flags = UIP_POLL;
+00805         UIP_APPCALL();
+00806         goto appsend;
+00807       }
+00808     }
+00809     goto drop;
+00810   }
+00811 #if UIP_UDP
+00812   if(flag == UIP_UDP_TIMER) {
+00813     if(uip_udp_conn->lport != 0) {
+00814       uip_conn = NULL;
+00815       uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+00816       uip_len = uip_slen = 0;
+00817       uip_flags = UIP_POLL;
+00818       UIP_UDP_APPCALL();
+00819       goto udp_send;
+00820     } else {
+00821       goto drop;
+00822     }
+00823   }
+00824 #endif
+00825 
+00826   /* This is where the input processing starts. */
+00827   UIP_STAT(++uip_stat.ip.recv);
+00828 
+00829   /* Start of IP input header processing code. */
+00830   
+00831 #if UIP_CONF_IPV6
+00832   /* Check validity of the IP header. */
+00833   if((BUF->vtc & 0xf0) != 0x60)  { /* IP version and header length. */
+00834     UIP_STAT(++uip_stat.ip.drop);
+00835     UIP_STAT(++uip_stat.ip.vhlerr);
+00836     UIP_LOG("ipv6: invalid version.");
+00837     goto drop;
+00838   }
+00839 #else /* UIP_CONF_IPV6 */
+00840   /* Check validity of the IP header. */
+00841   if(BUF->vhl != 0x45)  { /* IP version and header length. */
+00842     UIP_STAT(++uip_stat.ip.drop);
+00843     UIP_STAT(++uip_stat.ip.vhlerr);
+00844     UIP_LOG("ip: invalid version or header length.");
+00845     goto drop;
+00846   }
+00847 #endif /* UIP_CONF_IPV6 */
+00848   
+00849   /* Check the size of the packet. If the size reported to us in
+00850      uip_len is smaller the size reported in the IP header, we assume
+00851      that the packet has been corrupted in transit. If the size of
+00852      uip_len is larger than the size reported in the IP packet header,
+00853      the packet has been padded and we set uip_len to the correct
+00854      value.. */
+00855 
+00856   if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
+00857     uip_len = (BUF->len[0] << 8) + BUF->len[1];
+00858 #if UIP_CONF_IPV6
+00859     uip_len += 40; /* The length reported in the IPv6 header is the
+00860                       length of the payload that follows the
+00861                       header. However, uIP uses the uip_len variable
+00862                       for holding the size of the entire packet,
+00863                       including the IP header. For IPv4 this is not a
+00864                       problem as the length field in the IPv4 header
+00865                       contains the length of the entire packet. But
+00866                       for IPv6 we need to add the size of the IPv6
+00867                       header (40 bytes). */
+00868 #endif /* UIP_CONF_IPV6 */
+00869   } else {
+00870     UIP_LOG("ip: packet shorter than reported in IP header.");
+00871     goto drop;
+00872   }
+00873 
+00874 #if !UIP_CONF_IPV6
+00875   /* Check the fragment flag. */
+00876   if((BUF->ipoffset[0] & 0x3f) != 0 ||
+00877      BUF->ipoffset[1] != 0) {
+00878 #if UIP_REASSEMBLY
+00879     uip_len = uip_reass();
+00880     if(uip_len == 0) {
+00881       goto drop;
+00882     }
+00883 #else /* UIP_REASSEMBLY */
+00884     UIP_STAT(++uip_stat.ip.drop);
+00885     UIP_STAT(++uip_stat.ip.fragerr);
+00886     UIP_LOG("ip: fragment dropped.");
+00887     goto drop;
+00888 #endif /* UIP_REASSEMBLY */
+00889   }
+00890 #endif /* UIP_CONF_IPV6 */
+00891 
+00892   if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) {
+00893     /* If we are configured to use ping IP address configuration and
+00894        hasn't been assigned an IP address yet, we accept all ICMP
+00895        packets. */
+00896 #if UIP_PINGADDRCONF && !UIP_CONF_IPV6
+00897     if(BUF->proto == UIP_PROTO_ICMP) {
+00898       UIP_LOG("ip: possible ping config packet received.");
+00899       goto icmp_input;
+00900     } else {
+00901       UIP_LOG("ip: packet dropped since no address assigned.");
+00902       goto drop;
+00903     }
+00904 #endif /* UIP_PINGADDRCONF */
+00905 
+00906   } else {
+00907     /* If IP broadcast support is configured, we check for a broadcast
+00908        UDP packet, which may be destined to us. */
+00909 #if UIP_BROADCAST
+00910     DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum());
+00911     if(BUF->proto == UIP_PROTO_UDP &&
+00912        uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr)
+00913        /*&&
+00914          uip_ipchksum() == 0xffff*/) {
+00915       goto udp_input;
+00916     }
+00917 #endif /* UIP_BROADCAST */
+00918     
+00919     /* Check if the packet is destined for our IP address. */
+00920 #if !UIP_CONF_IPV6
+00921     if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) {
+00922       UIP_STAT(++uip_stat.ip.drop);
+00923       goto drop;
+00924     }
+00925 #else /* UIP_CONF_IPV6 */
+00926     /* For IPv6, packet reception is a little trickier as we need to
+00927        make sure that we listen to certain multicast addresses (all
+00928        hosts multicast address, and the solicited-node multicast
+00929        address) as well. However, we will cheat here and accept all
+00930        multicast packets that are sent to the ff02::/16 addresses. */
+00931     if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) &&
+00932        BUF->destipaddr[0] != HTONS(0xff02)) {
+00933       UIP_STAT(++uip_stat.ip.drop);
+00934       goto drop;
+00935     }
+00936 #endif /* UIP_CONF_IPV6 */
+00937   }
+00938 
+00939 #if !UIP_CONF_IPV6
+00940   if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
+00941                                     checksum. */
+00942     UIP_STAT(++uip_stat.ip.drop);
+00943     UIP_STAT(++uip_stat.ip.chkerr);
+00944     UIP_LOG("ip: bad checksum.");
+00945     goto drop;
+00946   }
+00947 #endif /* UIP_CONF_IPV6 */
+00948 
+00949   if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so,
+00950                                        proceed with TCP input
+00951                                        processing. */
+00952     goto tcp_input;
+00953   }
+00954 
+00955 #if UIP_UDP
+00956   if(BUF->proto == UIP_PROTO_UDP) {
+00957     goto udp_input;
+00958   }
+00959 #endif /* UIP_UDP */
+00960 
+00961 #if !UIP_CONF_IPV6
+00962   /* ICMPv4 processing code follows. */
+00963   if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from
+00964                                         here. */
+00965     UIP_STAT(++uip_stat.ip.drop);
+00966     UIP_STAT(++uip_stat.ip.protoerr);
+00967     UIP_LOG("ip: neither tcp nor icmp.");
+00968     goto drop;
+00969   }
+00970 
+00971 #if UIP_PINGADDRCONF
+00972  icmp_input:
+00973 #endif /* UIP_PINGADDRCONF */
+00974   UIP_STAT(++uip_stat.icmp.recv);
+00975 
+00976   /* ICMP echo (i.e., ping) processing. This is simple, we only change
+00977      the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
+00978      checksum before we return the packet. */
+00979   if(ICMPBUF->type != ICMP_ECHO) {
+00980     UIP_STAT(++uip_stat.icmp.drop);
+00981     UIP_STAT(++uip_stat.icmp.typeerr);
+00982     UIP_LOG("icmp: not icmp echo.");
+00983     goto drop;
+00984   }
+00985 
+00986   /* If we are configured to use ping IP address assignment, we use
+00987      the destination IP address of this ping packet and assign it to
+00988      ourself. */
+00989 #if UIP_PINGADDRCONF
+00990   if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {
+00991     uip_hostaddr[0] = BUF->destipaddr[0];
+00992     uip_hostaddr[1] = BUF->destipaddr[1];
+00993   }
+00994 #endif /* UIP_PINGADDRCONF */
+00995 
+00996   ICMPBUF->type = ICMP_ECHO_REPLY;
+00997 
+00998   if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
+00999     ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
+01000   } else {
+01001     ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
+01002   }
+01003 
+01004   /* Swap IP addresses. */
+01005   uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+01006   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+01007 
+01008   UIP_STAT(++uip_stat.icmp.sent);
+01009   goto send;
+01010 
+01011   /* End of IPv4 input header processing code. */
+01012 #else /* !UIP_CONF_IPV6 */
+01013 
+01014   /* This is IPv6 ICMPv6 processing code. */
+01015   DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);
+01016 
+01017   if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from
+01018                                          here. */
+01019     UIP_STAT(++uip_stat.ip.drop);
+01020     UIP_STAT(++uip_stat.ip.protoerr);
+01021     UIP_LOG("ip: neither tcp nor icmp6.");
+01022     goto drop;
+01023   }
+01024 
+01025   UIP_STAT(++uip_stat.icmp.recv);
+01026 
+01027   /* If we get a neighbor solicitation for our address we should send
+01028      a neighbor advertisement message back. */
+01029   if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) {
+01030     if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) {
+01031 
+01032       if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) {
+01033         /* Save the sender's address in our neighbor list. */
+01034         uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2]));
+01035       }
+01036       
+01037       /* We should now send a neighbor advertisement back to where the
+01038          neighbor solicication came from. */
+01039       ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT;
+01040       ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */
+01041       
+01042       ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0;
+01043       
+01044       uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr);
+01045       uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr);
+01046       ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS;
+01047       ICMPBUF->options[1] = 1;  /* Options length, 1 = 8 bytes. */
+01048       memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr));
+01049       ICMPBUF->icmpchksum = 0;
+01050       ICMPBUF->icmpchksum = ~uip_icmp6chksum();
+01051       goto send;
+01052       
+01053     }
+01054     goto drop;
+01055   } else if(ICMPBUF->type == ICMP6_ECHO) {
+01056     /* ICMP echo (i.e., ping) processing. This is simple, we only
+01057        change the ICMP type from ECHO to ECHO_REPLY and update the
+01058        ICMP checksum before we return the packet. */
+01059 
+01060     ICMPBUF->type = ICMP6_ECHO_REPLY;
+01061     
+01062     uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+01063     uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+01064     ICMPBUF->icmpchksum = 0;
+01065     ICMPBUF->icmpchksum = ~uip_icmp6chksum();
+01066     
+01067     UIP_STAT(++uip_stat.icmp.sent);
+01068     goto send;
+01069   } else {
+01070     DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type);
+01071     UIP_STAT(++uip_stat.icmp.drop);
+01072     UIP_STAT(++uip_stat.icmp.typeerr);
+01073     UIP_LOG("icmp: unknown ICMP message.");
+01074     goto drop;
+01075   }
+01076 
+01077   /* End of IPv6 ICMP processing. */
+01078   
+01079 #endif /* !UIP_CONF_IPV6 */
+01080 
+01081 #if UIP_UDP
+01082   /* UDP input processing. */
+01083  udp_input:
+01084   /* UDP processing is really just a hack. We don't do anything to the
+01085      UDP/IP headers, but let the UDP application do all the hard
+01086      work. If the application sets uip_slen, it has a packet to
+01087      send. */
+01088 #if UIP_UDP_CHECKSUMS
+01089   uip_len = uip_len - UIP_IPUDPH_LEN;
+01090   uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+01091   if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) {
+01092     UIP_STAT(++uip_stat.udp.drop);
+01093     UIP_STAT(++uip_stat.udp.chkerr);
+01094     UIP_LOG("udp: bad checksum.");
+01095     goto drop;
+01096   }
+01097 #else /* UIP_UDP_CHECKSUMS */
+01098   uip_len = uip_len - UIP_IPUDPH_LEN;
+01099 #endif /* UIP_UDP_CHECKSUMS */
+01100 
+01101   /* Demultiplex this UDP packet between the UDP "connections". */
+01102   for(uip_udp_conn = &uip_udp_conns[0];
+01103       uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];
+01104       ++uip_udp_conn) {
+01105     /* If the local UDP port is non-zero, the connection is considered
+01106        to be used. If so, the local port number is checked against the
+01107        destination port number in the received packet. If the two port
+01108        numbers match, the remote port number is checked if the
+01109        connection is bound to a remote port. Finally, if the
+01110        connection is bound to a remote IP address, the source IP
+01111        address of the packet is checked. */
+01112     if(uip_udp_conn->lport != 0 &&
+01113        UDPBUF->destport == uip_udp_conn->lport &&
+01114        (uip_udp_conn->rport == 0 ||
+01115         UDPBUF->srcport == uip_udp_conn->rport) &&
+01116        (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
+01117         uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
+01118         uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) {
+01119       goto udp_found;
+01120     }
+01121   }
+01122   UIP_LOG("udp: no matching connection found");
+01123   goto drop;
+01124   
+01125  udp_found:
+01126   uip_conn = NULL;
+01127   uip_flags = UIP_NEWDATA;
+01128   uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+01129   uip_slen = 0;
+01130   UIP_UDP_APPCALL();
+01131  udp_send:
+01132   if(uip_slen == 0) {
+01133     goto drop;
+01134   }
+01135   uip_len = uip_slen + UIP_IPUDPH_LEN;
+01136 
+01137 #if UIP_CONF_IPV6
+01138   /* For IPv6, the IP length field does not include the IPv6 IP header
+01139      length. */
+01140   BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+01141   BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+01142 #else /* UIP_CONF_IPV6 */
+01143   BUF->len[0] = (uip_len >> 8);
+01144   BUF->len[1] = (uip_len & 0xff);
+01145 #endif /* UIP_CONF_IPV6 */
+01146 
+01147   BUF->ttl = uip_udp_conn->ttl;
+01148   BUF->proto = UIP_PROTO_UDP;
+01149 
+01150   UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN);
+01151   UDPBUF->udpchksum = 0;
+01152 
+01153   BUF->srcport  = uip_udp_conn->lport;
+01154   BUF->destport = uip_udp_conn->rport;
+01155 
+01156   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+01157   uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr);
+01158    
+01159   uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN];
+01160 
+01161 #if UIP_UDP_CHECKSUMS
+01162   /* Calculate UDP checksum. */
+01163   UDPBUF->udpchksum = ~(uip_udpchksum());
+01164   if(UDPBUF->udpchksum == 0) {
+01165     UDPBUF->udpchksum = 0xffff;
+01166   }
+01167 #endif /* UIP_UDP_CHECKSUMS */
+01168   
+01169   goto ip_send_nolen;
+01170 #endif /* UIP_UDP */
+01171   
+01172   /* TCP input processing. */
+01173  tcp_input:
+01174   UIP_STAT(++uip_stat.tcp.recv);
+01175 
+01176   /* Start of TCP input header processing code. */
+01177   
+01178   if(uip_tcpchksum() != 0xffff) {   /* Compute and check the TCP
+01179                                        checksum. */
+01180     UIP_STAT(++uip_stat.tcp.drop);
+01181     UIP_STAT(++uip_stat.tcp.chkerr);
+01182     UIP_LOG("tcp: bad checksum.");
+01183     goto drop;
+01184   }
+01185   
+01186   
+01187   /* Demultiplex this segment. */
+01188   /* First check any active connections. */
+01189   for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1];
+01190       ++uip_connr) {
+01191     if(uip_connr->tcpstateflags != UIP_CLOSED &&
+01192        BUF->destport == uip_connr->lport &&
+01193        BUF->srcport == uip_connr->rport &&
+01194        uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) {
+01195       goto found;
+01196     }
+01197   }
+01198 
+01199   /* If we didn't find and active connection that expected the packet,
+01200      either this packet is an old duplicate, or this is a SYN packet
+01201      destined for a connection in LISTEN. If the SYN flag isn't set,
+01202      it is an old packet and we send a RST. */
+01203   if((BUF->flags & TCP_CTL) != TCP_SYN) {
+01204     goto reset;
+01205   }
+01206   
+01207   tmp16 = BUF->destport;
+01208   /* Next, check listening connections. */
+01209   for(c = 0; c < UIP_LISTENPORTS; ++c) {
+01210     if(tmp16 == uip_listenports[c])
+01211       goto found_listen;
+01212   }
+01213   
+01214   /* No matching connection found, so we send a RST packet. */
+01215   UIP_STAT(++uip_stat.tcp.synrst);
+01216  reset:
+01217 
+01218   /* We do not send resets in response to resets. */
+01219   if(BUF->flags & TCP_RST) {
+01220     goto drop;
+01221   }
+01222 
+01223   UIP_STAT(++uip_stat.tcp.rst);
+01224   
+01225   BUF->flags = TCP_RST | TCP_ACK;
+01226   uip_len = UIP_IPTCPH_LEN;
+01227   BUF->tcpoffset = 5 << 4;
+01228 
+01229   /* Flip the seqno and ackno fields in the TCP header. */
+01230   c = BUF->seqno[3];
+01231   BUF->seqno[3] = BUF->ackno[3];
+01232   BUF->ackno[3] = c;
+01233   
+01234   c = BUF->seqno[2];
+01235   BUF->seqno[2] = BUF->ackno[2];
+01236   BUF->ackno[2] = c;
+01237   
+01238   c = BUF->seqno[1];
+01239   BUF->seqno[1] = BUF->ackno[1];
+01240   BUF->ackno[1] = c;
+01241   
+01242   c = BUF->seqno[0];
+01243   BUF->seqno[0] = BUF->ackno[0];
+01244   BUF->ackno[0] = c;
+01245 
+01246   /* We also have to increase the sequence number we are
+01247      acknowledging. If the least significant byte overflowed, we need
+01248      to propagate the carry to the other bytes as well. */
+01249   if(++BUF->ackno[3] == 0) {
+01250     if(++BUF->ackno[2] == 0) {
+01251       if(++BUF->ackno[1] == 0) {
+01252         ++BUF->ackno[0];
+01253       }
+01254     }
+01255   }
+01256  
+01257   /* Swap port numbers. */
+01258   tmp16 = BUF->srcport;
+01259   BUF->srcport = BUF->destport;
+01260   BUF->destport = tmp16;
+01261   
+01262   /* Swap IP addresses. */
+01263   uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+01264   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+01265   
+01266   /* And send out the RST packet! */
+01267   goto tcp_send_noconn;
+01268 
+01269   /* This label will be jumped to if we matched the incoming packet
+01270      with a connection in LISTEN. In that case, we should create a new
+01271      connection and send a SYNACK in return. */
+01272  found_listen:
+01273   /* First we check if there are any connections avaliable. Unused
+01274      connections are kept in the same table as used connections, but
+01275      unused ones have the tcpstate set to CLOSED. Also, connections in
+01276      TIME_WAIT are kept track of and we'll use the oldest one if no
+01277      CLOSED connections are found. Thanks to Eddie C. Dost for a very
+01278      nice algorithm for the TIME_WAIT search. */
+01279   uip_connr = 0;
+01280   for(c = 0; c < UIP_CONNS; ++c) {
+01281     if(uip_conns[c].tcpstateflags == UIP_CLOSED) {
+01282       uip_connr = &uip_conns[c];
+01283       break;
+01284     }
+01285     if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) {
+01286       if(uip_connr == 0 ||
+01287          uip_conns[c].timer > uip_connr->timer) {
+01288         uip_connr = &uip_conns[c];
+01289       }
+01290     }
+01291   }
+01292 
+01293   if(uip_connr == 0) {
+01294     /* All connections are used already, we drop packet and hope that
+01295        the remote end will retransmit the packet at a time when we
+01296        have more spare connections. */
+01297     UIP_STAT(++uip_stat.tcp.syndrop);
+01298     UIP_LOG("tcp: found no unused connections.");
+01299     goto drop;
+01300   }
+01301   uip_conn = uip_connr;
+01302   
+01303   /* Fill in the necessary fields for the new connection. */
+01304   uip_connr->rto = uip_connr->timer = UIP_RTO;
+01305   uip_connr->sa = 0;
+01306   uip_connr->sv = 4;
+01307   uip_connr->nrtx = 0;
+01308   uip_connr->lport = BUF->destport;
+01309   uip_connr->rport = BUF->srcport;
+01310   uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr);
+01311   uip_connr->tcpstateflags = UIP_SYN_RCVD;
+01312 
+01313   uip_connr->snd_nxt[0] = iss[0];
+01314   uip_connr->snd_nxt[1] = iss[1];
+01315   uip_connr->snd_nxt[2] = iss[2];
+01316   uip_connr->snd_nxt[3] = iss[3];
+01317   uip_connr->len = 1;
+01318 
+01319   /* rcv_nxt should be the seqno from the incoming packet + 1. */
+01320   uip_connr->rcv_nxt[3] = BUF->seqno[3];
+01321   uip_connr->rcv_nxt[2] = BUF->seqno[2];
+01322   uip_connr->rcv_nxt[1] = BUF->seqno[1];
+01323   uip_connr->rcv_nxt[0] = BUF->seqno[0];
+01324   uip_add_rcv_nxt(1);
+01325 
+01326   /* Parse the TCP MSS option, if present. */
+01327   if((BUF->tcpoffset & 0xf0) > 0x50) {
+01328     for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
+01329       opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c];
+01330       if(opt == TCP_OPT_END) {
+01331         /* End of options. */
+01332         break;
+01333       } else if(opt == TCP_OPT_NOOP) {
+01334         ++c;
+01335         /* NOP option. */
+01336       } else if(opt == TCP_OPT_MSS &&
+01337                 uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
+01338         /* An MSS option with the right option length. */
+01339         tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
+01340           (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c];
+01341         uip_connr->initialmss = uip_connr->mss =
+01342           tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
+01343         
+01344         /* And we are done processing options. */
+01345         break;
+01346       } else {
+01347         /* All other options have a length field, so that we easily
+01348            can skip past them. */
+01349         if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
+01350           /* If the length field is zero, the options are malformed
+01351              and we don't process them further. */
+01352           break;
+01353         }
+01354         c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
+01355       }
+01356     }
+01357   }
+01358   
+01359   /* Our response will be a SYNACK. */
+01360 #if UIP_ACTIVE_OPEN
+01361  tcp_send_synack:
+01362   BUF->flags = TCP_ACK;
+01363   
+01364  tcp_send_syn:
+01365   BUF->flags |= TCP_SYN;
+01366 #else /* UIP_ACTIVE_OPEN */
+01367  tcp_send_synack:
+01368   BUF->flags = TCP_SYN | TCP_ACK;
+01369 #endif /* UIP_ACTIVE_OPEN */
+01370   
+01371   /* We send out the TCP Maximum Segment Size option with our
+01372      SYNACK. */
+01373   BUF->optdata[0] = TCP_OPT_MSS;
+01374   BUF->optdata[1] = TCP_OPT_MSS_LEN;
+01375   BUF->optdata[2] = (UIP_TCP_MSS) / 256;
+01376   BUF->optdata[3] = (UIP_TCP_MSS) & 255;
+01377   uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN;
+01378   BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4;
+01379   goto tcp_send;
+01380 
+01381   /* This label will be jumped to if we found an active connection. */
+01382  found:
+01383   uip_conn = uip_connr;
+01384   uip_flags = 0;
+01385   /* We do a very naive form of TCP reset processing; we just accept
+01386      any RST and kill our connection. We should in fact check if the
+01387      sequence number of this reset is wihtin our advertised window
+01388      before we accept the reset. */
+01389   if(BUF->flags & TCP_RST) {
+01390     uip_connr->tcpstateflags = UIP_CLOSED;
+01391     UIP_LOG("tcp: got reset, aborting connection.");
+01392     uip_flags = UIP_ABORT;
+01393     UIP_APPCALL();
+01394     goto drop;
+01395   }
+01396   /* Calculated the length of the data, if the application has sent
+01397      any data to us. */
+01398   c = (BUF->tcpoffset >> 4) << 2;
+01399   /* uip_len will contain the length of the actual TCP data. This is
+01400      calculated by subtracing the length of the TCP header (in
+01401      c) and the length of the IP header (20 bytes). */
+01402   uip_len = uip_len - c - UIP_IPH_LEN;
+01403 
+01404   /* First, check if the sequence number of the incoming packet is
+01405      what we're expecting next. If not, we send out an ACK with the
+01406      correct numbers in. */
+01407   if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) &&
+01408        ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) {
+01409     if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) &&
+01410        (BUF->seqno[0] != uip_connr->rcv_nxt[0] ||
+01411         BUF->seqno[1] != uip_connr->rcv_nxt[1] ||
+01412         BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
+01413         BUF->seqno[3] != uip_connr->rcv_nxt[3])) {
+01414       goto tcp_send_ack;
+01415     }
+01416   }
+01417 
+01418   /* Next, check if the incoming segment acknowledges any outstanding
+01419      data. If so, we update the sequence number, reset the length of
+01420      the outstanding data, calculate RTT estimations, and reset the
+01421      retransmission timer. */
+01422   if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) {
+01423     uip_add32(uip_connr->snd_nxt, uip_connr->len);
+01424 
+01425     if(BUF->ackno[0] == uip_acc32[0] &&
+01426        BUF->ackno[1] == uip_acc32[1] &&
+01427        BUF->ackno[2] == uip_acc32[2] &&
+01428        BUF->ackno[3] == uip_acc32[3]) {
+01429       /* Update sequence number. */
+01430       uip_connr->snd_nxt[0] = uip_acc32[0];
+01431       uip_connr->snd_nxt[1] = uip_acc32[1];
+01432       uip_connr->snd_nxt[2] = uip_acc32[2];
+01433       uip_connr->snd_nxt[3] = uip_acc32[3];
+01434         
+01435 
+01436       /* Do RTT estimation, unless we have done retransmissions. */
+01437       if(uip_connr->nrtx == 0) {
+01438         signed char m;
+01439         m = uip_connr->rto - uip_connr->timer;
+01440         /* This is taken directly from VJs original code in his paper */
+01441         m = m - (uip_connr->sa >> 3);
+01442         uip_connr->sa += m;
+01443         if(m < 0) {
+01444           m = -m;
+01445         }
+01446         m = m - (uip_connr->sv >> 2);
+01447         uip_connr->sv += m;
+01448         uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv;
+01449 
+01450       }
+01451       /* Set the acknowledged flag. */
+01452       uip_flags = UIP_ACKDATA;
+01453       /* Reset the retransmission timer. */
+01454       uip_connr->timer = uip_connr->rto;
+01455 
+01456       /* Reset length of outstanding data. */
+01457       uip_connr->len = 0;
+01458     }
+01459     
+01460   }
+01461 
+01462   /* Do different things depending on in what state the connection is. */
+01463   switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
+01464     /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not
+01465         implemented, since we force the application to close when the
+01466         peer sends a FIN (hence the application goes directly from
+01467         ESTABLISHED to LAST_ACK). */
+01468   case UIP_SYN_RCVD:
+01469     /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and
+01470        we are waiting for an ACK that acknowledges the data we sent
+01471        out the last time. Therefore, we want to have the UIP_ACKDATA
+01472        flag set. If so, we enter the ESTABLISHED state. */
+01473     if(uip_flags & UIP_ACKDATA) {
+01474       uip_connr->tcpstateflags = UIP_ESTABLISHED;
+01475       uip_flags = UIP_CONNECTED;
+01476       uip_connr->len = 0;
+01477       if(uip_len > 0) {
+01478         uip_flags |= UIP_NEWDATA;
+01479         uip_add_rcv_nxt(uip_len);
+01480       }
+01481       uip_slen = 0;
+01482       UIP_APPCALL();
+01483       goto appsend;
+01484     }
+01485     goto drop;
+01486 #if UIP_ACTIVE_OPEN
+01487   case UIP_SYN_SENT:
+01488     /* In SYN_SENT, we wait for a SYNACK that is sent in response to
+01489        our SYN. The rcv_nxt is set to sequence number in the SYNACK
+01490        plus one, and we send an ACK. We move into the ESTABLISHED
+01491        state. */
+01492     if((uip_flags & UIP_ACKDATA) &&
+01493        (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) {
+01494 
+01495       /* Parse the TCP MSS option, if present. */
+01496       if((BUF->tcpoffset & 0xf0) > 0x50) {
+01497         for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
+01498           opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c];
+01499           if(opt == TCP_OPT_END) {
+01500             /* End of options. */
+01501             break;
+01502           } else if(opt == TCP_OPT_NOOP) {
+01503             ++c;
+01504             /* NOP option. */
+01505           } else if(opt == TCP_OPT_MSS &&
+01506                     uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
+01507             /* An MSS option with the right option length. */
+01508             tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
+01509               uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
+01510             uip_connr->initialmss =
+01511               uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
+01512 
+01513             /* And we are done processing options. */
+01514             break;
+01515           } else {
+01516             /* All other options have a length field, so that we easily
+01517                can skip past them. */
+01518             if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
+01519               /* If the length field is zero, the options are malformed
+01520                  and we don't process them further. */
+01521               break;
+01522             }
+01523             c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
+01524           }
+01525         }
+01526       }
+01527       uip_connr->tcpstateflags = UIP_ESTABLISHED;
+01528       uip_connr->rcv_nxt[0] = BUF->seqno[0];
+01529       uip_connr->rcv_nxt[1] = BUF->seqno[1];
+01530       uip_connr->rcv_nxt[2] = BUF->seqno[2];
+01531       uip_connr->rcv_nxt[3] = BUF->seqno[3];
+01532       uip_add_rcv_nxt(1);
+01533       uip_flags = UIP_CONNECTED | UIP_NEWDATA;
+01534       uip_connr->len = 0;
+01535       uip_len = 0;
+01536       uip_slen = 0;
+01537       UIP_APPCALL();
+01538       goto appsend;
+01539     }
+01540     /* Inform the application that the connection failed */
+01541     uip_flags = UIP_ABORT;
+01542     UIP_APPCALL();
+01543     /* The connection is closed after we send the RST */
+01544     uip_conn->tcpstateflags = UIP_CLOSED;
+01545     goto reset;
+01546 #endif /* UIP_ACTIVE_OPEN */
+01547     
+01548   case UIP_ESTABLISHED:
+01549     /* In the ESTABLISHED state, we call upon the application to feed
+01550     data into the uip_buf. If the UIP_ACKDATA flag is set, the
+01551     application should put new data into the buffer, otherwise we are
+01552     retransmitting an old segment, and the application should put that
+01553     data into the buffer.
+01554 
+01555     If the incoming packet is a FIN, we should close the connection on
+01556     this side as well, and we send out a FIN and enter the LAST_ACK
+01557     state. We require that there is no outstanding data; otherwise the
+01558     sequence numbers will be screwed up. */
+01559 
+01560     if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
+01561       if(uip_outstanding(uip_connr)) {
+01562         goto drop;
+01563       }
+01564       uip_add_rcv_nxt(1 + uip_len);
+01565       uip_flags |= UIP_CLOSE;
+01566       if(uip_len > 0) {
+01567         uip_flags |= UIP_NEWDATA;
+01568       }
+01569       UIP_APPCALL();
+01570       uip_connr->len = 1;
+01571       uip_connr->tcpstateflags = UIP_LAST_ACK;
+01572       uip_connr->nrtx = 0;
+01573     tcp_send_finack:
+01574       BUF->flags = TCP_FIN | TCP_ACK;
+01575       goto tcp_send_nodata;
+01576     }
+01577 
+01578     /* Check the URG flag. If this is set, the segment carries urgent
+01579        data that we must pass to the application. */
+01580     if((BUF->flags & TCP_URG) != 0) {
+01581 #if UIP_URGDATA > 0
+01582       uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
+01583       if(uip_urglen > uip_len) {
+01584         /* There is more urgent data in the next segment to come. */
+01585         uip_urglen = uip_len;
+01586       }
+01587       uip_add_rcv_nxt(uip_urglen);
+01588       uip_len -= uip_urglen;
+01589       uip_urgdata = uip_appdata;
+01590       uip_appdata += uip_urglen;
+01591     } else {
+01592       uip_urglen = 0;
+01593 #else /* UIP_URGDATA > 0 */
+01594       uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]);
+01595       uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
+01596 #endif /* UIP_URGDATA > 0 */
+01597     }
+01598 
+01599     /* If uip_len > 0 we have TCP data in the packet, and we flag this
+01600        by setting the UIP_NEWDATA flag and update the sequence number
+01601        we acknowledge. If the application has stopped the dataflow
+01602        using uip_stop(), we must not accept any data packets from the
+01603        remote host. */
+01604     if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
+01605       uip_flags |= UIP_NEWDATA;
+01606       uip_add_rcv_nxt(uip_len);
+01607     }
+01608 
+01609     /* Check if the available buffer space advertised by the other end
+01610        is smaller than the initial MSS for this connection. If so, we
+01611        set the current MSS to the window size to ensure that the
+01612        application does not send more data than the other end can
+01613        handle.
+01614 
+01615        If the remote host advertises a zero window, we set the MSS to
+01616        the initial MSS so that the application will send an entire MSS
+01617        of data. This data will not be acknowledged by the receiver,
+01618        and the application will retransmit it. This is called the
+01619        "persistent timer" and uses the retransmission mechanim.
+01620     */
+01621     tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
+01622     if(tmp16 > uip_connr->initialmss ||
+01623        tmp16 == 0) {
+01624       tmp16 = uip_connr->initialmss;
+01625     }
+01626     uip_connr->mss = tmp16;
+01627 
+01628     /* If this packet constitutes an ACK for outstanding data (flagged
+01629        by the UIP_ACKDATA flag, we should call the application since it
+01630        might want to send more data. If the incoming packet had data
+01631        from the peer (as flagged by the UIP_NEWDATA flag), the
+01632        application must also be notified.
+01633 
+01634        When the application is called, the global variable uip_len
+01635        contains the length of the incoming data. The application can
+01636        access the incoming data through the global pointer
+01637        uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN
+01638        bytes into the uip_buf array.
+01639 
+01640        If the application wishes to send any data, this data should be
+01641        put into the uip_appdata and the length of the data should be
+01642        put into uip_len. If the application don't have any data to
+01643        send, uip_len must be set to 0. */
+01644     if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {
+01645       uip_slen = 0;
+01646       UIP_APPCALL();
+01647 
+01648     appsend:
+01649       
+01650       if(uip_flags & UIP_ABORT) {
+01651         uip_slen = 0;
+01652         uip_connr->tcpstateflags = UIP_CLOSED;
+01653         BUF->flags = TCP_RST | TCP_ACK;
+01654         goto tcp_send_nodata;
+01655       }
+01656 
+01657       if(uip_flags & UIP_CLOSE) {
+01658         uip_slen = 0;
+01659         uip_connr->len = 1;
+01660         uip_connr->tcpstateflags = UIP_FIN_WAIT_1;
+01661         uip_connr->nrtx = 0;
+01662         BUF->flags = TCP_FIN | TCP_ACK;
+01663         goto tcp_send_nodata;
+01664       }
+01665 
+01666       /* If uip_slen > 0, the application has data to be sent. */
+01667       if(uip_slen > 0) {
+01668 
+01669         /* If the connection has acknowledged data, the contents of
+01670            the ->len variable should be discarded. */
+01671         if((uip_flags & UIP_ACKDATA) != 0) {
+01672           uip_connr->len = 0;
+01673         }
+01674 
+01675         /* If the ->len variable is non-zero the connection has
+01676            already data in transit and cannot send anymore right
+01677            now. */
+01678         if(uip_connr->len == 0) {
+01679 
+01680           /* The application cannot send more than what is allowed by
+01681              the mss (the minumum of the MSS and the available
+01682              window). */
+01683           if(uip_slen > uip_connr->mss) {
+01684             uip_slen = uip_connr->mss;
+01685           }
+01686 
+01687           /* Remember how much data we send out now so that we know
+01688              when everything has been acknowledged. */
+01689           uip_connr->len = uip_slen;
+01690         } else {
+01691 
+01692           /* If the application already had unacknowledged data, we
+01693              make sure that the application does not send (i.e.,
+01694              retransmit) out more than it previously sent out. */
+01695           uip_slen = uip_connr->len;
+01696         }
+01697       }
+01698       uip_connr->nrtx = 0;
+01699     apprexmit:
+01700       uip_appdata = uip_sappdata;
+01701       
+01702       /* If the application has data to be sent, or if the incoming
+01703          packet had new data in it, we must send out a packet. */
+01704       if(uip_slen > 0 && uip_connr->len > 0) {
+01705         /* Add the length of the IP and TCP headers. */
+01706         uip_len = uip_connr->len + UIP_TCPIP_HLEN;
+01707         /* We always set the ACK flag in response packets. */
+01708         BUF->flags = TCP_ACK | TCP_PSH;
+01709         /* Send the packet. */
+01710         goto tcp_send_noopts;
+01711       }
+01712       /* If there is no data to send, just send out a pure ACK if
+01713          there is newdata. */
+01714       if(uip_flags & UIP_NEWDATA) {
+01715         uip_len = UIP_TCPIP_HLEN;
+01716         BUF->flags = TCP_ACK;
+01717         goto tcp_send_noopts;
+01718       }
+01719     }
+01720     goto drop;
+01721   case UIP_LAST_ACK:
+01722     /* We can close this connection if the peer has acknowledged our
+01723        FIN. This is indicated by the UIP_ACKDATA flag. */
+01724     if(uip_flags & UIP_ACKDATA) {
+01725       uip_connr->tcpstateflags = UIP_CLOSED;
+01726       uip_flags = UIP_CLOSE;
+01727       UIP_APPCALL();
+01728     }
+01729     break;
+01730     
+01731   case UIP_FIN_WAIT_1:
+01732     /* The application has closed the connection, but the remote host
+01733        hasn't closed its end yet. Thus we do nothing but wait for a
+01734        FIN from the other side. */
+01735     if(uip_len > 0) {
+01736       uip_add_rcv_nxt(uip_len);
+01737     }
+01738     if(BUF->flags & TCP_FIN) {
+01739       if(uip_flags & UIP_ACKDATA) {
+01740         uip_connr->tcpstateflags = UIP_TIME_WAIT;
+01741         uip_connr->timer = 0;
+01742         uip_connr->len = 0;
+01743       } else {
+01744         uip_connr->tcpstateflags = UIP_CLOSING;
+01745       }
+01746       uip_add_rcv_nxt(1);
+01747       uip_flags = UIP_CLOSE;
+01748       UIP_APPCALL();
+01749       goto tcp_send_ack;
+01750     } else if(uip_flags & UIP_ACKDATA) {
+01751       uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
+01752       uip_connr->len = 0;
+01753       goto drop;
+01754     }
+01755     if(uip_len > 0) {
+01756       goto tcp_send_ack;
+01757     }
+01758     goto drop;
+01759       
+01760   case UIP_FIN_WAIT_2:
+01761     if(uip_len > 0) {
+01762       uip_add_rcv_nxt(uip_len);
+01763     }
+01764     if(BUF->flags & TCP_FIN) {
+01765       uip_connr->tcpstateflags = UIP_TIME_WAIT;
+01766       uip_connr->timer = 0;
+01767       uip_add_rcv_nxt(1);
+01768       uip_flags = UIP_CLOSE;
+01769       UIP_APPCALL();
+01770       goto tcp_send_ack;
+01771     }
+01772     if(uip_len > 0) {
+01773       goto tcp_send_ack;
+01774     }
+01775     goto drop;
+01776 
+01777   case UIP_TIME_WAIT:
+01778     goto tcp_send_ack;
+01779     
+01780   case UIP_CLOSING:
+01781     if(uip_flags & UIP_ACKDATA) {
+01782       uip_connr->tcpstateflags = UIP_TIME_WAIT;
+01783       uip_connr->timer = 0;
+01784     }
+01785   }
+01786   goto drop;
+01787   
+01788 
+01789   /* We jump here when we are ready to send the packet, and just want
+01790      to set the appropriate TCP sequence numbers in the TCP header. */
+01791  tcp_send_ack:
+01792   BUF->flags = TCP_ACK;
+01793  tcp_send_nodata:
+01794   uip_len = UIP_IPTCPH_LEN;
+01795  tcp_send_noopts:
+01796   BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4;
+01797  tcp_send:
+01798   /* We're done with the input processing. We are now ready to send a
+01799      reply. Our job is to fill in all the fields of the TCP and IP
+01800      headers before calculating the checksum and finally send the
+01801      packet. */
+01802   BUF->ackno[0] = uip_connr->rcv_nxt[0];
+01803   BUF->ackno[1] = uip_connr->rcv_nxt[1];
+01804   BUF->ackno[2] = uip_connr->rcv_nxt[2];
+01805   BUF->ackno[3] = uip_connr->rcv_nxt[3];
+01806   
+01807   BUF->seqno[0] = uip_connr->snd_nxt[0];
+01808   BUF->seqno[1] = uip_connr->snd_nxt[1];
+01809   BUF->seqno[2] = uip_connr->snd_nxt[2];
+01810   BUF->seqno[3] = uip_connr->snd_nxt[3];
+01811 
+01812   BUF->proto = UIP_PROTO_TCP;
+01813   
+01814   BUF->srcport  = uip_connr->lport;
+01815   BUF->destport = uip_connr->rport;
+01816 
+01817   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+01818   uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr);
+01819 
+01820   if(uip_connr->tcpstateflags & UIP_STOPPED) {
+01821     /* If the connection has issued uip_stop(), we advertise a zero
+01822        window so that the remote host will stop sending data. */
+01823     BUF->wnd[0] = BUF->wnd[1] = 0;
+01824   } else {
+01825     BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8);
+01826     BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff);
+01827   }
+01828 
+01829  tcp_send_noconn:
+01830   BUF->ttl = UIP_TTL;
+01831 #if UIP_CONF_IPV6
+01832   /* For IPv6, the IP length field does not include the IPv6 IP header
+01833      length. */
+01834   BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+01835   BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+01836 #else /* UIP_CONF_IPV6 */
+01837   BUF->len[0] = (uip_len >> 8);
+01838   BUF->len[1] = (uip_len & 0xff);
+01839 #endif /* UIP_CONF_IPV6 */
+01840 
+01841   BUF->urgp[0] = BUF->urgp[1] = 0;
+01842   
+01843   /* Calculate TCP checksum. */
+01844   BUF->tcpchksum = 0;
+01845   BUF->tcpchksum = ~(uip_tcpchksum());
+01846   
+01847  ip_send_nolen:
+01848 
+01849 #if UIP_CONF_IPV6
+01850   BUF->vtc = 0x60;
+01851   BUF->tcflow = 0x00;
+01852   BUF->flow = 0x00;
+01853 #else /* UIP_CONF_IPV6 */
+01854   BUF->vhl = 0x45;
+01855   BUF->tos = 0;
+01856   BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
+01857   ++ipid;
+01858   BUF->ipid[0] = ipid >> 8;
+01859   BUF->ipid[1] = ipid & 0xff;
+01860   /* Calculate IP checksum. */
+01861   BUF->ipchksum = 0;
+01862   BUF->ipchksum = ~(uip_ipchksum());
+01863   DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
+01864 #endif /* UIP_CONF_IPV6 */
+01865    
+01866   UIP_STAT(++uip_stat.tcp.sent);
+01867  send:
+01868   DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
+01869                (BUF->len[0] << 8) | BUF->len[1]);
+01870   
+01871   UIP_STAT(++uip_stat.ip.sent);
+01872   /* Return and let the caller do the actual transmission. */
+01873   uip_flags = 0;
+01874   return;
+01875  drop:
+01876   uip_len = 0;
+01877   uip_flags = 0;
+01878   return;
+01879 }
+01880 /*---------------------------------------------------------------------------*/
+01881 u16_t
+01882 htons(u16_t val)
+01883 {
+01884   return HTONS(val);
+01885 }
+01886 /*---------------------------------------------------------------------------*/
+01887 void
+01888 uip_send(const void *data, int len)
+01889 {
+01890   if(len > 0) {
+01891     uip_slen = len;
+01892     if(data != uip_sappdata) {
+01893       memcpy(uip_sappdata, (data), uip_slen);
+01894     }
+01895   }
+01896 }
+01897 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00202.html b/Target/Source/third_party/uip/doc/html/a00202.html new file mode 100644 index 00000000..53a41d38 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00202.html @@ -0,0 +1,1626 @@ + + +uIP 1.0: uip/uip.h Source File + + + + + + +

uip/uip.h

Go to the documentation of this file.
00001 
+00002 /**
+00003  * \addtogroup uip
+00004  * @{
+00005  */
+00006 
+00007 /**
+00008  * \file
+00009  * Header file for the uIP TCP/IP stack.
+00010  * \author Adam Dunkels <adam@dunkels.com>
+00011  *
+00012  * The uIP TCP/IP stack header file contains definitions for a number
+00013  * of C macros that are used by uIP programs as well as internal uIP
+00014  * structures, TCP/IP header structures and function declarations.
+00015  *
+00016  */
+00017 
+00018 
+00019 /*
+00020  * Copyright (c) 2001-2003, Adam Dunkels.
+00021  * All rights reserved.
+00022  *
+00023  * Redistribution and use in source and binary forms, with or without
+00024  * modification, are permitted provided that the following conditions
+00025  * are met:
+00026  * 1. Redistributions of source code must retain the above copyright
+00027  *    notice, this list of conditions and the following disclaimer.
+00028  * 2. Redistributions in binary form must reproduce the above copyright
+00029  *    notice, this list of conditions and the following disclaimer in the
+00030  *    documentation and/or other materials provided with the distribution.
+00031  * 3. The name of the author may not be used to endorse or promote
+00032  *    products derived from this software without specific prior
+00033  *    written permission.
+00034  *
+00035  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00036  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00037  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00038  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00039  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00040  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00041  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00042  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00043  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00044  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00045  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00046  *
+00047  * This file is part of the uIP TCP/IP stack.
+00048  *
+00049  * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $
+00050  *
+00051  */
+00052 
+00053 #ifndef __UIP_H__
+00054 #define __UIP_H__
+00055 
+00056 #include "uipopt.h"
+00057 
+00058 /**
+00059  * Repressentation of an IP address.
+00060  *
+00061  */
+00062 typedef u16_t uip_ip4addr_t[2];
+00063 typedef u16_t uip_ip6addr_t[8];
+00064 #if UIP_CONF_IPV6
+00065 typedef uip_ip6addr_t uip_ipaddr_t;
+00066 #else /* UIP_CONF_IPV6 */
+00067 typedef uip_ip4addr_t uip_ipaddr_t;
+00068 #endif /* UIP_CONF_IPV6 */
+00069 
+00070 /*---------------------------------------------------------------------------*/
+00071 /* First, the functions that should be called from the
+00072  * system. Initialization, the periodic timer and incoming packets are
+00073  * handled by the following three functions.
+00074  */
+00075 
+00076 /**
+00077  * \defgroup uipconffunc uIP configuration functions
+00078  * @{
+00079  *
+00080  * The uIP configuration functions are used for setting run-time
+00081  * parameters in uIP such as IP addresses.
+00082  */
+00083 
+00084 /**
+00085  * Set the IP address of this host.
+00086  *
+00087  * The IP address is represented as a 4-byte array where the first
+00088  * octet of the IP address is put in the first member of the 4-byte
+00089  * array.
+00090  *
+00091  * Example:
+00092  \code
+00093 
+00094  uip_ipaddr_t addr;
+00095 
+00096  uip_ipaddr(&addr, 192,168,1,2);
+00097  uip_sethostaddr(&addr);
+00098  
+00099  \endcode
+00100  * \param addr A pointer to an IP address of type uip_ipaddr_t;
+00101  *
+00102  * \sa uip_ipaddr()
+00103  *
+00104  * \hideinitializer
+00105  */
+00106 #define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr))
+00107 
+00108 /**
+00109  * Get the IP address of this host.
+00110  *
+00111  * The IP address is represented as a 4-byte array where the first
+00112  * octet of the IP address is put in the first member of the 4-byte
+00113  * array.
+00114  *
+00115  * Example:
+00116  \code
+00117  uip_ipaddr_t hostaddr;
+00118 
+00119  uip_gethostaddr(&hostaddr);
+00120  \endcode
+00121  * \param addr A pointer to a uip_ipaddr_t variable that will be
+00122  * filled in with the currently configured IP address.
+00123  *
+00124  * \hideinitializer
+00125  */
+00126 #define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr)
+00127 
+00128 /**
+00129  * Set the default router's IP address.
+00130  *
+00131  * \param addr A pointer to a uip_ipaddr_t variable containing the IP
+00132  * address of the default router.
+00133  *
+00134  * \sa uip_ipaddr()
+00135  *
+00136  * \hideinitializer
+00137  */
+00138 #define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr))
+00139 
+00140 /**
+00141  * Set the netmask.
+00142  *
+00143  * \param addr A pointer to a uip_ipaddr_t variable containing the IP
+00144  * address of the netmask.
+00145  *
+00146  * \sa uip_ipaddr()
+00147  *
+00148  * \hideinitializer
+00149  */
+00150 #define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr))
+00151 
+00152 
+00153 /**
+00154  * Get the default router's IP address.
+00155  *
+00156  * \param addr A pointer to a uip_ipaddr_t variable that will be
+00157  * filled in with the IP address of the default router.
+00158  *
+00159  * \hideinitializer
+00160  */
+00161 #define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr)
+00162 
+00163 /**
+00164  * Get the netmask.
+00165  *
+00166  * \param addr A pointer to a uip_ipaddr_t variable that will be
+00167  * filled in with the value of the netmask.
+00168  *
+00169  * \hideinitializer
+00170  */
+00171 #define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask)
+00172 
+00173 /** @} */
+00174 
+00175 /**
+00176  * \defgroup uipinit uIP initialization functions
+00177  * @{
+00178  *
+00179  * The uIP initialization functions are used for booting uIP.
+00180  */
+00181 
+00182 /**
+00183  * uIP initialization function.
+00184  *
+00185  * This function should be called at boot up to initilize the uIP
+00186  * TCP/IP stack.
+00187  */
+00188 void uip_init(void);
+00189 
+00190 /**
+00191  * uIP initialization function.
+00192  *
+00193  * This function may be used at boot time to set the initial ip_id.
+00194  */
+00195 void uip_setipid(u16_t id);
+00196 
+00197 /** @} */
+00198 
+00199 /**
+00200  * \defgroup uipdevfunc uIP device driver functions
+00201  * @{
+00202  *
+00203  * These functions are used by a network device driver for interacting
+00204  * with uIP.
+00205  */
+00206 
+00207 /**
+00208  * Process an incoming packet.
+00209  *
+00210  * This function should be called when the device driver has received
+00211  * a packet from the network. The packet from the device driver must
+00212  * be present in the uip_buf buffer, and the length of the packet
+00213  * should be placed in the uip_len variable.
+00214  *
+00215  * When the function returns, there may be an outbound packet placed
+00216  * in the uip_buf packet buffer. If so, the uip_len variable is set to
+00217  * the length of the packet. If no packet is to be sent out, the
+00218  * uip_len variable is set to 0.
+00219  *
+00220  * The usual way of calling the function is presented by the source
+00221  * code below.
+00222  \code
+00223   uip_len = devicedriver_poll();
+00224   if(uip_len > 0) {
+00225     uip_input();
+00226     if(uip_len > 0) {
+00227       devicedriver_send();
+00228     }
+00229   }
+00230  \endcode
+00231  *
+00232  * \note If you are writing a uIP device driver that needs ARP
+00233  * (Address Resolution Protocol), e.g., when running uIP over
+00234  * Ethernet, you will need to call the uIP ARP code before calling
+00235  * this function:
+00236  \code
+00237   #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+00238   uip_len = ethernet_devicedrver_poll();
+00239   if(uip_len > 0) {
+00240     if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
+00241       uip_arp_ipin();
+00242       uip_input();
+00243       if(uip_len > 0) {
+00244         uip_arp_out();
+00245         ethernet_devicedriver_send();
+00246       }
+00247     } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
+00248       uip_arp_arpin();
+00249       if(uip_len > 0) {
+00250         ethernet_devicedriver_send();
+00251       }
+00252     }
+00253  \endcode
+00254  *
+00255  * \hideinitializer
+00256  */
+00257 #define uip_input()        uip_process(UIP_DATA)
+00258 
+00259 /**
+00260  * Periodic processing for a connection identified by its number.
+00261  *
+00262  * This function does the necessary periodic processing (timers,
+00263  * polling) for a uIP TCP conneciton, and should be called when the
+00264  * periodic uIP timer goes off. It should be called for every
+00265  * connection, regardless of whether they are open of closed.
+00266  *
+00267  * When the function returns, it may have an outbound packet waiting
+00268  * for service in the uIP packet buffer, and if so the uip_len
+00269  * variable is set to a value larger than zero. The device driver
+00270  * should be called to send out the packet.
+00271  *
+00272  * The ususal way of calling the function is through a for() loop like
+00273  * this:
+00274  \code
+00275   for(i = 0; i < UIP_CONNS; ++i) {
+00276     uip_periodic(i);
+00277     if(uip_len > 0) {
+00278       devicedriver_send();
+00279     }
+00280   }
+00281  \endcode
+00282  *
+00283  * \note If you are writing a uIP device driver that needs ARP
+00284  * (Address Resolution Protocol), e.g., when running uIP over
+00285  * Ethernet, you will need to call the uip_arp_out() function before
+00286  * calling the device driver:
+00287  \code
+00288   for(i = 0; i < UIP_CONNS; ++i) {
+00289     uip_periodic(i);
+00290     if(uip_len > 0) {
+00291       uip_arp_out();
+00292       ethernet_devicedriver_send();
+00293     }
+00294   }
+00295  \endcode
+00296  *
+00297  * \param conn The number of the connection which is to be periodically polled.
+00298  *
+00299  * \hideinitializer
+00300  */
+00301 #define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \
+00302                                 uip_process(UIP_TIMER); } while (0)
+00303 
+00304 /**
+00305  *
+00306  *
+00307  */
+00308 #define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED)
+00309 
+00310 /**
+00311  * Perform periodic processing for a connection identified by a pointer
+00312  * to its structure.
+00313  *
+00314  * Same as uip_periodic() but takes a pointer to the actual uip_conn
+00315  * struct instead of an integer as its argument. This function can be
+00316  * used to force periodic processing of a specific connection.
+00317  *
+00318  * \param conn A pointer to the uip_conn struct for the connection to
+00319  * be processed.
+00320  *
+00321  * \hideinitializer
+00322  */
+00323 #define uip_periodic_conn(conn) do { uip_conn = conn; \
+00324                                      uip_process(UIP_TIMER); } while (0)
+00325 
+00326 /**
+00327  * Reuqest that a particular connection should be polled.
+00328  *
+00329  * Similar to uip_periodic_conn() but does not perform any timer
+00330  * processing. The application is polled for new data.
+00331  *
+00332  * \param conn A pointer to the uip_conn struct for the connection to
+00333  * be processed.
+00334  *
+00335  * \hideinitializer
+00336  */
+00337 #define uip_poll_conn(conn) do { uip_conn = conn; \
+00338                                  uip_process(UIP_POLL_REQUEST); } while (0)
+00339 
+00340 
+00341 #if UIP_UDP
+00342 /**
+00343  * Periodic processing for a UDP connection identified by its number.
+00344  *
+00345  * This function is essentially the same as uip_periodic(), but for
+00346  * UDP connections. It is called in a similar fashion as the
+00347  * uip_periodic() function:
+00348  \code
+00349   for(i = 0; i < UIP_UDP_CONNS; i++) {
+00350     uip_udp_periodic(i);
+00351     if(uip_len > 0) {
+00352       devicedriver_send();
+00353     }
+00354   }
+00355  \endcode
+00356  *
+00357  * \note As for the uip_periodic() function, special care has to be
+00358  * taken when using uIP together with ARP and Ethernet:
+00359  \code
+00360   for(i = 0; i < UIP_UDP_CONNS; i++) {
+00361     uip_udp_periodic(i);
+00362     if(uip_len > 0) {
+00363       uip_arp_out();
+00364       ethernet_devicedriver_send();
+00365     }
+00366   }
+00367  \endcode
+00368  *
+00369  * \param conn The number of the UDP connection to be processed.
+00370  *
+00371  * \hideinitializer
+00372  */
+00373 #define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \
+00374                                 uip_process(UIP_UDP_TIMER); } while (0)
+00375 
+00376 /**
+00377  * Periodic processing for a UDP connection identified by a pointer to
+00378  * its structure.
+00379  *
+00380  * Same as uip_udp_periodic() but takes a pointer to the actual
+00381  * uip_conn struct instead of an integer as its argument. This
+00382  * function can be used to force periodic processing of a specific
+00383  * connection.
+00384  *
+00385  * \param conn A pointer to the uip_udp_conn struct for the connection
+00386  * to be processed.
+00387  *
+00388  * \hideinitializer
+00389  */
+00390 #define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \
+00391                                          uip_process(UIP_UDP_TIMER); } while (0)
+00392 
+00393 
+00394 #endif /* UIP_UDP */
+00395 
+00396 /**
+00397  * The uIP packet buffer.
+00398  *
+00399  * The uip_buf array is used to hold incoming and outgoing
+00400  * packets. The device driver should place incoming data into this
+00401  * buffer. When sending data, the device driver should read the link
+00402  * level headers and the TCP/IP headers from this buffer. The size of
+00403  * the link level headers is configured by the UIP_LLH_LEN define.
+00404  *
+00405  * \note The application data need not be placed in this buffer, so
+00406  * the device driver must read it from the place pointed to by the
+00407  * uip_appdata pointer as illustrated by the following example:
+00408  \code
+00409  void
+00410  devicedriver_send(void)
+00411  {
+00412     hwsend(&uip_buf[0], UIP_LLH_LEN);
+00413     if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
+00414       hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
+00415     } else {
+00416       hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
+00417       hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
+00418     }
+00419  }
+00420  \endcode
+00421  */
+00422 extern u8_t uip_buf[UIP_BUFSIZE+2];
+00423 
+00424 /** @} */
+00425 
+00426 /*---------------------------------------------------------------------------*/
+00427 /* Functions that are used by the uIP application program. Opening and
+00428  * closing connections, sending and receiving data, etc. is all
+00429  * handled by the functions below.
+00430 */
+00431 /**
+00432  * \defgroup uipappfunc uIP application functions
+00433  * @{
+00434  *
+00435  * Functions used by an application running of top of uIP.
+00436  */
+00437 
+00438 /**
+00439  * Start listening to the specified port.
+00440  *
+00441  * \note Since this function expects the port number in network byte
+00442  * order, a conversion using HTONS() or htons() is necessary.
+00443  *
+00444  \code
+00445  uip_listen(HTONS(80));
+00446  \endcode
+00447  *
+00448  * \param port A 16-bit port number in network byte order.
+00449  */
+00450 void uip_listen(u16_t port);
+00451 
+00452 /**
+00453  * Stop listening to the specified port.
+00454  *
+00455  * \note Since this function expects the port number in network byte
+00456  * order, a conversion using HTONS() or htons() is necessary.
+00457  *
+00458  \code
+00459  uip_unlisten(HTONS(80));
+00460  \endcode
+00461  *
+00462  * \param port A 16-bit port number in network byte order.
+00463  */
+00464 void uip_unlisten(u16_t port);
+00465 
+00466 /**
+00467  * Connect to a remote host using TCP.
+00468  *
+00469  * This function is used to start a new connection to the specified
+00470  * port on the specied host. It allocates a new connection identifier,
+00471  * sets the connection to the SYN_SENT state and sets the
+00472  * retransmission timer to 0. This will cause a TCP SYN segment to be
+00473  * sent out the next time this connection is periodically processed,
+00474  * which usually is done within 0.5 seconds after the call to
+00475  * uip_connect().
+00476  *
+00477  * \note This function is avaliable only if support for active open
+00478  * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.
+00479  *
+00480  * \note Since this function requires the port number to be in network
+00481  * byte order, a conversion using HTONS() or htons() is necessary.
+00482  *
+00483  \code
+00484  uip_ipaddr_t ipaddr;
+00485 
+00486  uip_ipaddr(&ipaddr, 192,168,1,2);
+00487  uip_connect(&ipaddr, HTONS(80));
+00488  \endcode
+00489  *
+00490  * \param ripaddr The IP address of the remote hot.
+00491  *
+00492  * \param port A 16-bit port number in network byte order.
+00493  *
+00494  * \return A pointer to the uIP connection identifier for the new connection,
+00495  * or NULL if no connection could be allocated.
+00496  *
+00497  */
+00498 struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port);
+00499 
+00500 
+00501 
+00502 /**
+00503  * \internal
+00504  *
+00505  * Check if a connection has outstanding (i.e., unacknowledged) data.
+00506  *
+00507  * \param conn A pointer to the uip_conn structure for the connection.
+00508  *
+00509  * \hideinitializer
+00510  */
+00511 #define uip_outstanding(conn) ((conn)->len)
+00512 
+00513 /**
+00514  * Send data on the current connection.
+00515  *
+00516  * This function is used to send out a single segment of TCP
+00517  * data. Only applications that have been invoked by uIP for event
+00518  * processing can send data.
+00519  *
+00520  * The amount of data that actually is sent out after a call to this
+00521  * funcion is determined by the maximum amount of data TCP allows. uIP
+00522  * will automatically crop the data so that only the appropriate
+00523  * amount of data is sent. The function uip_mss() can be used to query
+00524  * uIP for the amount of data that actually will be sent.
+00525  *
+00526  * \note This function does not guarantee that the sent data will
+00527  * arrive at the destination. If the data is lost in the network, the
+00528  * application will be invoked with the uip_rexmit() event being
+00529  * set. The application will then have to resend the data using this
+00530  * function.
+00531  *
+00532  * \param data A pointer to the data which is to be sent.
+00533  *
+00534  * \param len The maximum amount of data bytes to be sent.
+00535  *
+00536  * \hideinitializer
+00537  */
+00538 void uip_send(const void *data, int len);
+00539 
+00540 /**
+00541  * The length of any incoming data that is currently avaliable (if avaliable)
+00542  * in the uip_appdata buffer.
+00543  *
+00544  * The test function uip_data() must first be used to check if there
+00545  * is any data available at all.
+00546  *
+00547  * \hideinitializer
+00548  */
+00549 /*void uip_datalen(void);*/
+00550 #define uip_datalen()       uip_len
+00551 
+00552 /**
+00553  * The length of any out-of-band data (urgent data) that has arrived
+00554  * on the connection.
+00555  *
+00556  * \note The configuration parameter UIP_URGDATA must be set for this
+00557  * function to be enabled.
+00558  *
+00559  * \hideinitializer
+00560  */
+00561 #define uip_urgdatalen()    uip_urglen
+00562 
+00563 /**
+00564  * Close the current connection.
+00565  *
+00566  * This function will close the current connection in a nice way.
+00567  *
+00568  * \hideinitializer
+00569  */
+00570 #define uip_close()         (uip_flags = UIP_CLOSE)
+00571 
+00572 /**
+00573  * Abort the current connection.
+00574  *
+00575  * This function will abort (reset) the current connection, and is
+00576  * usually used when an error has occured that prevents using the
+00577  * uip_close() function.
+00578  *
+00579  * \hideinitializer
+00580  */
+00581 #define uip_abort()         (uip_flags = UIP_ABORT)
+00582 
+00583 /**
+00584  * Tell the sending host to stop sending data.
+00585  *
+00586  * This function will close our receiver's window so that we stop
+00587  * receiving data for the current connection.
+00588  *
+00589  * \hideinitializer
+00590  */
+00591 #define uip_stop()          (uip_conn->tcpstateflags |= UIP_STOPPED)
+00592 
+00593 /**
+00594  * Find out if the current connection has been previously stopped with
+00595  * uip_stop().
+00596  *
+00597  * \hideinitializer
+00598  */
+00599 #define uip_stopped(conn)   ((conn)->tcpstateflags & UIP_STOPPED)
+00600 
+00601 /**
+00602  * Restart the current connection, if is has previously been stopped
+00603  * with uip_stop().
+00604  *
+00605  * This function will open the receiver's window again so that we
+00606  * start receiving data for the current connection.
+00607  *
+00608  * \hideinitializer
+00609  */
+00610 #define uip_restart()         do { uip_flags |= UIP_NEWDATA; \
+00611                                    uip_conn->tcpstateflags &= ~UIP_STOPPED; \
+00612                               } while(0)
+00613 
+00614 
+00615 /* uIP tests that can be made to determine in what state the current
+00616    connection is, and what the application function should do. */
+00617 
+00618 /**
+00619  * Is the current connection a UDP connection?
+00620  *
+00621  * This function checks whether the current connection is a UDP connection.
+00622  *
+00623  * \hideinitializer
+00624  *
+00625  */
+00626 #define uip_udpconnection() (uip_conn == NULL)
+00627 
+00628 /**
+00629  * Is new incoming data available?
+00630  *
+00631  * Will reduce to non-zero if there is new data for the application
+00632  * present at the uip_appdata pointer. The size of the data is
+00633  * avaliable through the uip_len variable.
+00634  *
+00635  * \hideinitializer
+00636  */
+00637 #define uip_newdata()   (uip_flags & UIP_NEWDATA)
+00638 
+00639 /**
+00640  * Has previously sent data been acknowledged?
+00641  *
+00642  * Will reduce to non-zero if the previously sent data has been
+00643  * acknowledged by the remote host. This means that the application
+00644  * can send new data.
+00645  *
+00646  * \hideinitializer
+00647  */
+00648 #define uip_acked()   (uip_flags & UIP_ACKDATA)
+00649 
+00650 /**
+00651  * Has the connection just been connected?
+00652  *
+00653  * Reduces to non-zero if the current connection has been connected to
+00654  * a remote host. This will happen both if the connection has been
+00655  * actively opened (with uip_connect()) or passively opened (with
+00656  * uip_listen()).
+00657  *
+00658  * \hideinitializer
+00659  */
+00660 #define uip_connected() (uip_flags & UIP_CONNECTED)
+00661 
+00662 /**
+00663  * Has the connection been closed by the other end?
+00664  *
+00665  * Is non-zero if the connection has been closed by the remote
+00666  * host. The application may then do the necessary clean-ups.
+00667  *
+00668  * \hideinitializer
+00669  */
+00670 #define uip_closed()    (uip_flags & UIP_CLOSE)
+00671 
+00672 /**
+00673  * Has the connection been aborted by the other end?
+00674  *
+00675  * Non-zero if the current connection has been aborted (reset) by the
+00676  * remote host.
+00677  *
+00678  * \hideinitializer
+00679  */
+00680 #define uip_aborted()    (uip_flags & UIP_ABORT)
+00681 
+00682 /**
+00683  * Has the connection timed out?
+00684  *
+00685  * Non-zero if the current connection has been aborted due to too many
+00686  * retransmissions.
+00687  *
+00688  * \hideinitializer
+00689  */
+00690 #define uip_timedout()    (uip_flags & UIP_TIMEDOUT)
+00691 
+00692 /**
+00693  * Do we need to retransmit previously data?
+00694  *
+00695  * Reduces to non-zero if the previously sent data has been lost in
+00696  * the network, and the application should retransmit it. The
+00697  * application should send the exact same data as it did the last
+00698  * time, using the uip_send() function.
+00699  *
+00700  * \hideinitializer
+00701  */
+00702 #define uip_rexmit()     (uip_flags & UIP_REXMIT)
+00703 
+00704 /**
+00705  * Is the connection being polled by uIP?
+00706  *
+00707  * Is non-zero if the reason the application is invoked is that the
+00708  * current connection has been idle for a while and should be
+00709  * polled.
+00710  *
+00711  * The polling event can be used for sending data without having to
+00712  * wait for the remote host to send data.
+00713  *
+00714  * \hideinitializer
+00715  */
+00716 #define uip_poll()       (uip_flags & UIP_POLL)
+00717 
+00718 /**
+00719  * Get the initial maxium segment size (MSS) of the current
+00720  * connection.
+00721  *
+00722  * \hideinitializer
+00723  */
+00724 #define uip_initialmss()             (uip_conn->initialmss)
+00725 
+00726 /**
+00727  * Get the current maxium segment size that can be sent on the current
+00728  * connection.
+00729  *
+00730  * The current maxiumum segment size that can be sent on the
+00731  * connection is computed from the receiver's window and the MSS of
+00732  * the connection (which also is available by calling
+00733  * uip_initialmss()).
+00734  *
+00735  * \hideinitializer
+00736  */
+00737 #define uip_mss()             (uip_conn->mss)
+00738 
+00739 /**
+00740  * Set up a new UDP connection.
+00741  *
+00742  * This function sets up a new UDP connection. The function will
+00743  * automatically allocate an unused local port for the new
+00744  * connection. However, another port can be chosen by using the
+00745  * uip_udp_bind() call, after the uip_udp_new() function has been
+00746  * called.
+00747  *
+00748  * Example:
+00749  \code
+00750  uip_ipaddr_t addr;
+00751  struct uip_udp_conn *c;
+00752  
+00753  uip_ipaddr(&addr, 192,168,2,1);
+00754  c = uip_udp_new(&addr, HTONS(12345));
+00755  if(c != NULL) {
+00756    uip_udp_bind(c, HTONS(12344));
+00757  }
+00758  \endcode
+00759  * \param ripaddr The IP address of the remote host.
+00760  *
+00761  * \param rport The remote port number in network byte order.
+00762  *
+00763  * \return The uip_udp_conn structure for the new connection or NULL
+00764  * if no connection could be allocated.
+00765  */
+00766 struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport);
+00767 
+00768 /**
+00769  * Removed a UDP connection.
+00770  *
+00771  * \param conn A pointer to the uip_udp_conn structure for the connection.
+00772  *
+00773  * \hideinitializer
+00774  */
+00775 #define uip_udp_remove(conn) (conn)->lport = 0
+00776 
+00777 /**
+00778  * Bind a UDP connection to a local port.
+00779  *
+00780  * \param conn A pointer to the uip_udp_conn structure for the
+00781  * connection.
+00782  *
+00783  * \param port The local port number, in network byte order.
+00784  *
+00785  * \hideinitializer
+00786  */
+00787 #define uip_udp_bind(conn, port) (conn)->lport = port
+00788 
+00789 /**
+00790  * Send a UDP datagram of length len on the current connection.
+00791  *
+00792  * This function can only be called in response to a UDP event (poll
+00793  * or newdata). The data must be present in the uip_buf buffer, at the
+00794  * place pointed to by the uip_appdata pointer.
+00795  *
+00796  * \param len The length of the data in the uip_buf buffer.
+00797  *
+00798  * \hideinitializer
+00799  */
+00800 #define uip_udp_send(len) uip_send((char *)uip_appdata, len)
+00801 
+00802 /** @} */
+00803 
+00804 /* uIP convenience and converting functions. */
+00805 
+00806 /**
+00807  * \defgroup uipconvfunc uIP conversion functions
+00808  * @{
+00809  *
+00810  * These functions can be used for converting between different data
+00811  * formats used by uIP.
+00812  */
+00813  
+00814 /**
+00815  * Construct an IP address from four bytes.
+00816  *
+00817  * This function constructs an IP address of the type that uIP handles
+00818  * internally from four bytes. The function is handy for specifying IP
+00819  * addresses to use with e.g. the uip_connect() function.
+00820  *
+00821  * Example:
+00822  \code
+00823  uip_ipaddr_t ipaddr;
+00824  struct uip_conn *c;
+00825  
+00826  uip_ipaddr(&ipaddr, 192,168,1,2);
+00827  c = uip_connect(&ipaddr, HTONS(80));
+00828  \endcode
+00829  *
+00830  * \param addr A pointer to a uip_ipaddr_t variable that will be
+00831  * filled in with the IP address.
+00832  *
+00833  * \param addr0 The first octet of the IP address.
+00834  * \param addr1 The second octet of the IP address.
+00835  * \param addr2 The third octet of the IP address.
+00836  * \param addr3 The forth octet of the IP address.
+00837  *
+00838  * \hideinitializer
+00839  */
+00840 #define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \
+00841                      ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \
+00842                      ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \
+00843                   } while(0)
+00844 
+00845 /**
+00846  * Construct an IPv6 address from eight 16-bit words.
+00847  *
+00848  * This function constructs an IPv6 address.
+00849  *
+00850  * \hideinitializer
+00851  */
+00852 #define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \
+00853                      ((u16_t *)(addr))[0] = HTONS((addr0)); \
+00854                      ((u16_t *)(addr))[1] = HTONS((addr1)); \
+00855                      ((u16_t *)(addr))[2] = HTONS((addr2)); \
+00856                      ((u16_t *)(addr))[3] = HTONS((addr3)); \
+00857                      ((u16_t *)(addr))[4] = HTONS((addr4)); \
+00858                      ((u16_t *)(addr))[5] = HTONS((addr5)); \
+00859                      ((u16_t *)(addr))[6] = HTONS((addr6)); \
+00860                      ((u16_t *)(addr))[7] = HTONS((addr7)); \
+00861                   } while(0)
+00862 
+00863 /**
+00864  * Copy an IP address to another IP address.
+00865  *
+00866  * Copies an IP address from one place to another.
+00867  *
+00868  * Example:
+00869  \code
+00870  uip_ipaddr_t ipaddr1, ipaddr2;
+00871 
+00872  uip_ipaddr(&ipaddr1, 192,16,1,2);
+00873  uip_ipaddr_copy(&ipaddr2, &ipaddr1);
+00874  \endcode
+00875  *
+00876  * \param dest The destination for the copy.
+00877  * \param src The source from where to copy.
+00878  *
+00879  * \hideinitializer
+00880  */
+00881 #if !UIP_CONF_IPV6
+00882 #define uip_ipaddr_copy(dest, src) do { \
+00883                      ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \
+00884                      ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \
+00885                   } while(0)
+00886 #else /* !UIP_CONF_IPV6 */
+00887 #define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t))
+00888 #endif /* !UIP_CONF_IPV6 */
+00889 
+00890 /**
+00891  * Compare two IP addresses
+00892  *
+00893  * Compares two IP addresses.
+00894  *
+00895  * Example:
+00896  \code
+00897  uip_ipaddr_t ipaddr1, ipaddr2;
+00898 
+00899  uip_ipaddr(&ipaddr1, 192,16,1,2);
+00900  if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
+00901     printf("They are the same");
+00902  }
+00903  \endcode
+00904  *
+00905  * \param addr1 The first IP address.
+00906  * \param addr2 The second IP address.
+00907  *
+00908  * \hideinitializer
+00909  */
+00910 #if !UIP_CONF_IPV6
+00911 #define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \
+00912                                       ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1])
+00913 #else /* !UIP_CONF_IPV6 */
+00914 #define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
+00915 #endif /* !UIP_CONF_IPV6 */
+00916 
+00917 /**
+00918  * Compare two IP addresses with netmasks
+00919  *
+00920  * Compares two IP addresses with netmasks. The masks are used to mask
+00921  * out the bits that are to be compared.
+00922  *
+00923  * Example:
+00924  \code
+00925  uip_ipaddr_t ipaddr1, ipaddr2, mask;
+00926 
+00927  uip_ipaddr(&mask, 255,255,255,0);
+00928  uip_ipaddr(&ipaddr1, 192,16,1,2);
+00929  uip_ipaddr(&ipaddr2, 192,16,1,3);
+00930  if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) {
+00931     printf("They are the same");
+00932  }
+00933  \endcode
+00934  *
+00935  * \param addr1 The first IP address.
+00936  * \param addr2 The second IP address.
+00937  * \param mask The netmask.
+00938  *
+00939  * \hideinitializer
+00940  */
+00941 #define uip_ipaddr_maskcmp(addr1, addr2, mask) \
+00942                           (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \
+00943                             (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \
+00944                            ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \
+00945                             (((u16_t *)addr2)[1] & ((u16_t *)mask)[1])))
+00946 
+00947 
+00948 /**
+00949  * Mask out the network part of an IP address.
+00950  *
+00951  * Masks out the network part of an IP address, given the address and
+00952  * the netmask.
+00953  *
+00954  * Example:
+00955  \code
+00956  uip_ipaddr_t ipaddr1, ipaddr2, netmask;
+00957 
+00958  uip_ipaddr(&ipaddr1, 192,16,1,2);
+00959  uip_ipaddr(&netmask, 255,255,255,0);
+00960  uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask);
+00961  \endcode
+00962  *
+00963  * In the example above, the variable "ipaddr2" will contain the IP
+00964  * address 192.168.1.0.
+00965  *
+00966  * \param dest Where the result is to be placed.
+00967  * \param src The IP address.
+00968  * \param mask The netmask.
+00969  *
+00970  * \hideinitializer
+00971  */
+00972 #define uip_ipaddr_mask(dest, src, mask) do { \
+00973                      ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \
+00974                      ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \
+00975                   } while(0)
+00976 
+00977 /**
+00978  * Pick the first octet of an IP address.
+00979  *
+00980  * Picks out the first octet of an IP address.
+00981  *
+00982  * Example:
+00983  \code
+00984  uip_ipaddr_t ipaddr;
+00985  u8_t octet;
+00986 
+00987  uip_ipaddr(&ipaddr, 1,2,3,4);
+00988  octet = uip_ipaddr1(&ipaddr);
+00989  \endcode
+00990  *
+00991  * In the example above, the variable "octet" will contain the value 1.
+00992  *
+00993  * \hideinitializer
+00994  */
+00995 #define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8)
+00996 
+00997 /**
+00998  * Pick the second octet of an IP address.
+00999  *
+01000  * Picks out the second octet of an IP address.
+01001  *
+01002  * Example:
+01003  \code
+01004  uip_ipaddr_t ipaddr;
+01005  u8_t octet;
+01006 
+01007  uip_ipaddr(&ipaddr, 1,2,3,4);
+01008  octet = uip_ipaddr2(&ipaddr);
+01009  \endcode
+01010  *
+01011  * In the example above, the variable "octet" will contain the value 2.
+01012  *
+01013  * \hideinitializer
+01014  */
+01015 #define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff)
+01016 
+01017 /**
+01018  * Pick the third octet of an IP address.
+01019  *
+01020  * Picks out the third octet of an IP address.
+01021  *
+01022  * Example:
+01023  \code
+01024  uip_ipaddr_t ipaddr;
+01025  u8_t octet;
+01026 
+01027  uip_ipaddr(&ipaddr, 1,2,3,4);
+01028  octet = uip_ipaddr3(&ipaddr);
+01029  \endcode
+01030  *
+01031  * In the example above, the variable "octet" will contain the value 3.
+01032  *
+01033  * \hideinitializer
+01034  */
+01035 #define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8)
+01036 
+01037 /**
+01038  * Pick the fourth octet of an IP address.
+01039  *
+01040  * Picks out the fourth octet of an IP address.
+01041  *
+01042  * Example:
+01043  \code
+01044  uip_ipaddr_t ipaddr;
+01045  u8_t octet;
+01046 
+01047  uip_ipaddr(&ipaddr, 1,2,3,4);
+01048  octet = uip_ipaddr4(&ipaddr);
+01049  \endcode
+01050  *
+01051  * In the example above, the variable "octet" will contain the value 4.
+01052  *
+01053  * \hideinitializer
+01054  */
+01055 #define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff)
+01056 
+01057 /**
+01058  * Convert 16-bit quantity from host byte order to network byte order.
+01059  *
+01060  * This macro is primarily used for converting constants from host
+01061  * byte order to network byte order. For converting variables to
+01062  * network byte order, use the htons() function instead.
+01063  *
+01064  * \hideinitializer
+01065  */
+01066 #ifndef HTONS
+01067 #   if UIP_BYTE_ORDER == UIP_BIG_ENDIAN
+01068 #      define HTONS(n) (n)
+01069 #   else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
+01070 #      define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))
+01071 #   endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
+01072 #else
+01073 #error "HTONS already defined!"
+01074 #endif /* HTONS */
+01075 
+01076 /**
+01077  * Convert 16-bit quantity from host byte order to network byte order.
+01078  *
+01079  * This function is primarily used for converting variables from host
+01080  * byte order to network byte order. For converting constants to
+01081  * network byte order, use the HTONS() macro instead.
+01082  */
+01083 #ifndef htons
+01084 u16_t htons(u16_t val);
+01085 #endif /* htons */
+01086 #ifndef ntohs
+01087 #define ntohs htons
+01088 #endif
+01089 
+01090 /** @} */
+01091 
+01092 /**
+01093  * Pointer to the application data in the packet buffer.
+01094  *
+01095  * This pointer points to the application data when the application is
+01096  * called. If the application wishes to send data, the application may
+01097  * use this space to write the data into before calling uip_send().
+01098  */
+01099 extern void *uip_appdata;
+01100 
+01101 #if UIP_URGDATA > 0
+01102 /* u8_t *uip_urgdata:
+01103  *
+01104  * This pointer points to any urgent data that has been received. Only
+01105  * present if compiled with support for urgent data (UIP_URGDATA).
+01106  */
+01107 extern void *uip_urgdata;
+01108 #endif /* UIP_URGDATA > 0 */
+01109 
+01110 
+01111 /**
+01112  * \defgroup uipdrivervars Variables used in uIP device drivers
+01113  * @{
+01114  *
+01115  * uIP has a few global variables that are used in device drivers for
+01116  * uIP.
+01117  */
+01118 
+01119 /**
+01120  * The length of the packet in the uip_buf buffer.
+01121  *
+01122  * The global variable uip_len holds the length of the packet in the
+01123  * uip_buf buffer.
+01124  *
+01125  * When the network device driver calls the uIP input function,
+01126  * uip_len should be set to the length of the packet in the uip_buf
+01127  * buffer.
+01128  *
+01129  * When sending packets, the device driver should use the contents of
+01130  * the uip_len variable to determine the length of the outgoing
+01131  * packet.
+01132  *
+01133  */
+01134 extern u16_t uip_len;
+01135 
+01136 /** @} */
+01137 
+01138 #if UIP_URGDATA > 0
+01139 extern u16_t uip_urglen, uip_surglen;
+01140 #endif /* UIP_URGDATA > 0 */
+01141 
+01142 
+01143 /**
+01144  * Representation of a uIP TCP connection.
+01145  *
+01146  * The uip_conn structure is used for identifying a connection. All
+01147  * but one field in the structure are to be considered read-only by an
+01148  * application. The only exception is the appstate field whos purpose
+01149  * is to let the application store application-specific state (e.g.,
+01150  * file pointers) for the connection. The type of this field is
+01151  * configured in the "uipopt.h" header file.
+01152  */
+01153 struct uip_conn {
+01154   uip_ipaddr_t ripaddr;   /**< The IP address of the remote host. */
+01155   
+01156   u16_t lport;        /**< The local TCP port, in network byte order. */
+01157   u16_t rport;        /**< The local remote TCP port, in network byte
+01158                          order. */
+01159   
+01160   u8_t rcv_nxt[4];    /**< The sequence number that we expect to
+01161                          receive next. */
+01162   u8_t snd_nxt[4];    /**< The sequence number that was last sent by
+01163                          us. */
+01164   u16_t len;          /**< Length of the data that was previously sent. */
+01165   u16_t mss;          /**< Current maximum segment size for the
+01166                          connection. */
+01167   u16_t initialmss;   /**< Initial maximum segment size for the
+01168                          connection. */
+01169   u8_t sa;            /**< Retransmission time-out calculation state
+01170                          variable. */
+01171   u8_t sv;            /**< Retransmission time-out calculation state
+01172                          variable. */
+01173   u8_t rto;           /**< Retransmission time-out. */
+01174   u8_t tcpstateflags; /**< TCP state and flags. */
+01175   u8_t timer;         /**< The retransmission timer. */
+01176   u8_t nrtx;          /**< The number of retransmissions for the last
+01177                          segment sent. */
+01178 
+01179   /** The application state. */
+01180   uip_tcp_appstate_t appstate;
+01181 };
+01182 
+01183 
+01184 /**
+01185  * Pointer to the current TCP connection.
+01186  *
+01187  * The uip_conn pointer can be used to access the current TCP
+01188  * connection.
+01189  */
+01190 extern struct uip_conn *uip_conn;
+01191 /* The array containing all uIP connections. */
+01192 extern struct uip_conn uip_conns[UIP_CONNS];
+01193 /**
+01194  * \addtogroup uiparch
+01195  * @{
+01196  */
+01197 
+01198 /**
+01199  * 4-byte array used for the 32-bit sequence number calculations.
+01200  */
+01201 extern u8_t uip_acc32[4];
+01202 
+01203 /** @} */
+01204 
+01205 
+01206 #if UIP_UDP
+01207 /**
+01208  * Representation of a uIP UDP connection.
+01209  */
+01210 struct uip_udp_conn {
+01211   uip_ipaddr_t ripaddr;   /**< The IP address of the remote peer. */
+01212   u16_t lport;        /**< The local port number in network byte order. */
+01213   u16_t rport;        /**< The remote port number in network byte order. */
+01214   u8_t  ttl;          /**< Default time-to-live. */
+01215 
+01216   /** The application state. */
+01217   uip_udp_appstate_t appstate;
+01218 };
+01219 
+01220 /**
+01221  * The current UDP connection.
+01222  */
+01223 extern struct uip_udp_conn *uip_udp_conn;
+01224 extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
+01225 #endif /* UIP_UDP */
+01226 
+01227 /**
+01228  * The structure holding the TCP/IP statistics that are gathered if
+01229  * UIP_STATISTICS is set to 1.
+01230  *
+01231  */
+01232 struct uip_stats {
+01233   struct {
+01234     uip_stats_t drop;     /**< Number of dropped packets at the IP
+01235                              layer. */
+01236     uip_stats_t recv;     /**< Number of received packets at the IP
+01237                              layer. */
+01238     uip_stats_t sent;     /**< Number of sent packets at the IP
+01239                              layer. */
+01240     uip_stats_t vhlerr;   /**< Number of packets dropped due to wrong
+01241                              IP version or header length. */
+01242     uip_stats_t hblenerr; /**< Number of packets dropped due to wrong
+01243                              IP length, high byte. */
+01244     uip_stats_t lblenerr; /**< Number of packets dropped due to wrong
+01245                              IP length, low byte. */
+01246     uip_stats_t fragerr;  /**< Number of packets dropped since they
+01247                              were IP fragments. */
+01248     uip_stats_t chkerr;   /**< Number of packets dropped due to IP
+01249                              checksum errors. */
+01250     uip_stats_t protoerr; /**< Number of packets dropped since they
+01251                              were neither ICMP, UDP nor TCP. */
+01252   } ip;                   /**< IP statistics. */
+01253   struct {
+01254     uip_stats_t drop;     /**< Number of dropped ICMP packets. */
+01255     uip_stats_t recv;     /**< Number of received ICMP packets. */
+01256     uip_stats_t sent;     /**< Number of sent ICMP packets. */
+01257     uip_stats_t typeerr;  /**< Number of ICMP packets with a wrong
+01258                              type. */
+01259   } icmp;                 /**< ICMP statistics. */
+01260   struct {
+01261     uip_stats_t drop;     /**< Number of dropped TCP segments. */
+01262     uip_stats_t recv;     /**< Number of recived TCP segments. */
+01263     uip_stats_t sent;     /**< Number of sent TCP segments. */
+01264     uip_stats_t chkerr;   /**< Number of TCP segments with a bad
+01265                              checksum. */
+01266     uip_stats_t ackerr;   /**< Number of TCP segments with a bad ACK
+01267                              number. */
+01268     uip_stats_t rst;      /**< Number of recevied TCP RST (reset) segments. */
+01269     uip_stats_t rexmit;   /**< Number of retransmitted TCP segments. */
+01270     uip_stats_t syndrop;  /**< Number of dropped SYNs due to too few
+01271                              connections was avaliable. */
+01272     uip_stats_t synrst;   /**< Number of SYNs for closed ports,
+01273                              triggering a RST. */
+01274   } tcp;                  /**< TCP statistics. */
+01275 #if UIP_UDP
+01276   struct {
+01277     uip_stats_t drop;     /**< Number of dropped UDP segments. */
+01278     uip_stats_t recv;     /**< Number of recived UDP segments. */
+01279     uip_stats_t sent;     /**< Number of sent UDP segments. */
+01280     uip_stats_t chkerr;   /**< Number of UDP segments with a bad
+01281                              checksum. */
+01282   } udp;                  /**< UDP statistics. */
+01283 #endif /* UIP_UDP */
+01284 };
+01285 
+01286 /**
+01287  * The uIP TCP/IP statistics.
+01288  *
+01289  * This is the variable in which the uIP TCP/IP statistics are gathered.
+01290  */
+01291 extern struct uip_stats uip_stat;
+01292 
+01293 
+01294 /*---------------------------------------------------------------------------*/
+01295 /* All the stuff below this point is internal to uIP and should not be
+01296  * used directly by an application or by a device driver.
+01297  */
+01298 /*---------------------------------------------------------------------------*/
+01299 /* u8_t uip_flags:
+01300  *
+01301  * When the application is called, uip_flags will contain the flags
+01302  * that are defined in this file. Please read below for more
+01303  * infomation.
+01304  */
+01305 extern u8_t uip_flags;
+01306 
+01307 /* The following flags may be set in the global variable uip_flags
+01308    before calling the application callback. The UIP_ACKDATA,
+01309    UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time,
+01310    whereas the others are mutualy exclusive. Note that these flags
+01311    should *NOT* be accessed directly, but only through the uIP
+01312    functions/macros. */
+01313 
+01314 #define UIP_ACKDATA   1     /* Signifies that the outstanding data was
+01315                                acked and the application should send
+01316                                out new data instead of retransmitting
+01317                                the last data. */
+01318 #define UIP_NEWDATA   2     /* Flags the fact that the peer has sent
+01319                                us new data. */
+01320 #define UIP_REXMIT    4     /* Tells the application to retransmit the
+01321                                data that was last sent. */
+01322 #define UIP_POLL      8     /* Used for polling the application, to
+01323                                check if the application has data that
+01324                                it wants to send. */
+01325 #define UIP_CLOSE     16    /* The remote host has closed the
+01326                                connection, thus the connection has
+01327                                gone away. Or the application signals
+01328                                that it wants to close the
+01329                                connection. */
+01330 #define UIP_ABORT     32    /* The remote host has aborted the
+01331                                connection, thus the connection has
+01332                                gone away. Or the application signals
+01333                                that it wants to abort the
+01334                                connection. */
+01335 #define UIP_CONNECTED 64    /* We have got a connection from a remote
+01336                                host and have set up a new connection
+01337                                for it, or an active connection has
+01338                                been successfully established. */
+01339 
+01340 #define UIP_TIMEDOUT  128   /* The connection has been aborted due to
+01341                                too many retransmissions. */
+01342 
+01343 /* uip_process(flag):
+01344  *
+01345  * The actual uIP function which does all the work.
+01346  */
+01347 void uip_process(u8_t flag);
+01348 
+01349 /* The following flags are passed as an argument to the uip_process()
+01350    function. They are used to distinguish between the two cases where
+01351    uip_process() is called. It can be called either because we have
+01352    incoming data that should be processed, or because the periodic
+01353    timer has fired. These values are never used directly, but only in
+01354    the macrose defined in this file. */
+01355  
+01356 #define UIP_DATA          1     /* Tells uIP that there is incoming
+01357                                    data in the uip_buf buffer. The
+01358                                    length of the data is stored in the
+01359                                    global variable uip_len. */
+01360 #define UIP_TIMER         2     /* Tells uIP that the periodic timer
+01361                                    has fired. */
+01362 #define UIP_POLL_REQUEST  3     /* Tells uIP that a connection should
+01363                                    be polled. */
+01364 #define UIP_UDP_SEND_CONN 4     /* Tells uIP that a UDP datagram
+01365                                    should be constructed in the
+01366                                    uip_buf buffer. */
+01367 #if UIP_UDP
+01368 #define UIP_UDP_TIMER     5
+01369 #endif /* UIP_UDP */
+01370 
+01371 /* The TCP states used in the uip_conn->tcpstateflags. */
+01372 #define UIP_CLOSED      0
+01373 #define UIP_SYN_RCVD    1
+01374 #define UIP_SYN_SENT    2
+01375 #define UIP_ESTABLISHED 3
+01376 #define UIP_FIN_WAIT_1  4
+01377 #define UIP_FIN_WAIT_2  5
+01378 #define UIP_CLOSING     6
+01379 #define UIP_TIME_WAIT   7
+01380 #define UIP_LAST_ACK    8
+01381 #define UIP_TS_MASK     15
+01382   
+01383 #define UIP_STOPPED      16
+01384 
+01385 /* The TCP and IP headers. */
+01386 struct uip_tcpip_hdr {
+01387 #if UIP_CONF_IPV6
+01388   /* IPv6 header. */
+01389   u8_t vtc,
+01390     tcflow;
+01391   u16_t flow;
+01392   u8_t len[2];
+01393   u8_t proto, ttl;
+01394   uip_ip6addr_t srcipaddr, destipaddr;
+01395 #else /* UIP_CONF_IPV6 */
+01396   /* IPv4 header. */
+01397   u8_t vhl,
+01398     tos,
+01399     len[2],
+01400     ipid[2],
+01401     ipoffset[2],
+01402     ttl,
+01403     proto;
+01404   u16_t ipchksum;
+01405   u16_t srcipaddr[2],
+01406     destipaddr[2];
+01407 #endif /* UIP_CONF_IPV6 */
+01408   
+01409   /* TCP header. */
+01410   u16_t srcport,
+01411     destport;
+01412   u8_t seqno[4],
+01413     ackno[4],
+01414     tcpoffset,
+01415     flags,
+01416     wnd[2];
+01417   u16_t tcpchksum;
+01418   u8_t urgp[2];
+01419   u8_t optdata[4];
+01420 };
+01421 
+01422 /* The ICMP and IP headers. */
+01423 struct uip_icmpip_hdr {
+01424 #if UIP_CONF_IPV6
+01425   /* IPv6 header. */
+01426   u8_t vtc,
+01427     tcf;
+01428   u16_t flow;
+01429   u8_t len[2];
+01430   u8_t proto, ttl;
+01431   uip_ip6addr_t srcipaddr, destipaddr;
+01432 #else /* UIP_CONF_IPV6 */
+01433   /* IPv4 header. */
+01434   u8_t vhl,
+01435     tos,
+01436     len[2],
+01437     ipid[2],
+01438     ipoffset[2],
+01439     ttl,
+01440     proto;
+01441   u16_t ipchksum;
+01442   u16_t srcipaddr[2],
+01443     destipaddr[2];
+01444 #endif /* UIP_CONF_IPV6 */
+01445   
+01446   /* ICMP (echo) header. */
+01447   u8_t type, icode;
+01448   u16_t icmpchksum;
+01449 #if !UIP_CONF_IPV6
+01450   u16_t id, seqno;
+01451 #else /* !UIP_CONF_IPV6 */
+01452   u8_t flags, reserved1, reserved2, reserved3;
+01453   u8_t icmp6data[16];
+01454   u8_t options[1];
+01455 #endif /* !UIP_CONF_IPV6 */
+01456 };
+01457 
+01458 
+01459 /* The UDP and IP headers. */
+01460 struct uip_udpip_hdr {
+01461 #if UIP_CONF_IPV6
+01462   /* IPv6 header. */
+01463   u8_t vtc,
+01464     tcf;
+01465   u16_t flow;
+01466   u8_t len[2];
+01467   u8_t proto, ttl;
+01468   uip_ip6addr_t srcipaddr, destipaddr;
+01469 #else /* UIP_CONF_IPV6 */
+01470   /* IP header. */
+01471   u8_t vhl,
+01472     tos,
+01473     len[2],
+01474     ipid[2],
+01475     ipoffset[2],
+01476     ttl,
+01477     proto;
+01478   u16_t ipchksum;
+01479   u16_t srcipaddr[2],
+01480     destipaddr[2];
+01481 #endif /* UIP_CONF_IPV6 */
+01482   
+01483   /* UDP header. */
+01484   u16_t srcport,
+01485     destport;
+01486   u16_t udplen;
+01487   u16_t udpchksum;
+01488 };
+01489 
+01490 
+01491 
+01492 /**
+01493  * The buffer size available for user data in the \ref uip_buf buffer.
+01494  *
+01495  * This macro holds the available size for user data in the \ref
+01496  * uip_buf buffer. The macro is intended to be used for checking
+01497  * bounds of available user data.
+01498  *
+01499  * Example:
+01500  \code
+01501  snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
+01502  \endcode
+01503  *
+01504  * \hideinitializer
+01505  */
+01506 #define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
+01507 
+01508 
+01509 #define UIP_PROTO_ICMP  1
+01510 #define UIP_PROTO_TCP   6
+01511 #define UIP_PROTO_UDP   17
+01512 #define UIP_PROTO_ICMP6 58
+01513 
+01514 /* Header sizes. */
+01515 #if UIP_CONF_IPV6
+01516 #define UIP_IPH_LEN    40
+01517 #else /* UIP_CONF_IPV6 */
+01518 #define UIP_IPH_LEN    20    /* Size of IP header */
+01519 #endif /* UIP_CONF_IPV6 */
+01520 #define UIP_UDPH_LEN    8    /* Size of UDP header */
+01521 #define UIP_TCPH_LEN   20    /* Size of TCP header */
+01522 #define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN)    /* Size of IP +
+01523                                                           UDP
+01524                                                           header */
+01525 #define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN)    /* Size of IP +
+01526                                                           TCP
+01527                                                           header */
+01528 #define UIP_TCPIP_HLEN UIP_IPTCPH_LEN
+01529 
+01530 
+01531 #if UIP_FIXEDADDR
+01532 extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
+01533 #else /* UIP_FIXEDADDR */
+01534 extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
+01535 #endif /* UIP_FIXEDADDR */
+01536 
+01537 
+01538 
+01539 /**
+01540  * Representation of a 48-bit Ethernet address.
+01541  */
+01542 struct uip_eth_addr {
+01543   u8_t addr[6];
+01544 };
+01545 
+01546 /**
+01547  * Calculate the Internet checksum over a buffer.
+01548  *
+01549  * The Internet checksum is the one's complement of the one's
+01550  * complement sum of all 16-bit words in the buffer.
+01551  *
+01552  * See RFC1071.
+01553  *
+01554  * \param buf A pointer to the buffer over which the checksum is to be
+01555  * computed.
+01556  *
+01557  * \param len The length of the buffer over which the checksum is to
+01558  * be computed.
+01559  *
+01560  * \return The Internet checksum of the buffer.
+01561  */
+01562 u16_t uip_chksum(u16_t *buf, u16_t len);
+01563 
+01564 /**
+01565  * Calculate the IP header checksum of the packet header in uip_buf.
+01566  *
+01567  * The IP header checksum is the Internet checksum of the 20 bytes of
+01568  * the IP header.
+01569  *
+01570  * \return The IP header checksum of the IP header in the uip_buf
+01571  * buffer.
+01572  */
+01573 u16_t uip_ipchksum(void);
+01574 
+01575 /**
+01576  * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
+01577  *
+01578  * The TCP checksum is the Internet checksum of data contents of the
+01579  * TCP segment, and a pseudo-header as defined in RFC793.
+01580  *
+01581  * \return The TCP checksum of the TCP segment in uip_buf and pointed
+01582  * to by uip_appdata.
+01583  */
+01584 u16_t uip_tcpchksum(void);
+01585 
+01586 /**
+01587  * Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
+01588  *
+01589  * The UDP checksum is the Internet checksum of data contents of the
+01590  * UDP segment, and a pseudo-header as defined in RFC768.
+01591  *
+01592  * \return The UDP checksum of the UDP segment in uip_buf and pointed
+01593  * to by uip_appdata.
+01594  */
+01595 u16_t uip_udpchksum(void);
+01596 
+01597 
+01598 #endif /* __UIP_H__ */
+01599 
+01600 
+01601 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00203.html b/Target/Source/third_party/uip/doc/html/a00203.html new file mode 100644 index 00000000..5a506441 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00203.html @@ -0,0 +1,163 @@ + + +uIP 1.0: uip/uip_arch.h Source File + + + + + + +

uip/uip_arch.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup uip
+00003  * {@
+00004  */
+00005 
+00006 /**
+00007  * \defgroup uiparch Architecture specific uIP functions
+00008  * @{
+00009  *
+00010  * The functions in the architecture specific module implement the IP
+00011  * check sum and 32-bit additions.
+00012  *
+00013  * The IP checksum calculation is the most computationally expensive
+00014  * operation in the TCP/IP stack and it therefore pays off to
+00015  * implement this in efficient assembler. The purpose of the uip-arch
+00016  * module is to let the checksum functions to be implemented in
+00017  * architecture specific assembler.
+00018  *
+00019  */
+00020 
+00021 /**
+00022  * \file
+00023  * Declarations of architecture specific functions.
+00024  * \author Adam Dunkels <adam@dunkels.com>
+00025  */
+00026 
+00027 /*
+00028  * Copyright (c) 2001, Adam Dunkels.
+00029  * All rights reserved.
+00030  *
+00031  * Redistribution and use in source and binary forms, with or without
+00032  * modification, are permitted provided that the following conditions
+00033  * are met:
+00034  * 1. Redistributions of source code must retain the above copyright
+00035  *    notice, this list of conditions and the following disclaimer.
+00036  * 2. Redistributions in binary form must reproduce the above copyright
+00037  *    notice, this list of conditions and the following disclaimer in the
+00038  *    documentation and/or other materials provided with the distribution.
+00039  * 3. The name of the author may not be used to endorse or promote
+00040  *    products derived from this software without specific prior
+00041  *    written permission.
+00042  *
+00043  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00044  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00045  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00047  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00049  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00050  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00051  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00052  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00053  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00054  *
+00055  * This file is part of the uIP TCP/IP stack.
+00056  *
+00057  * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $
+00058  *
+00059  */
+00060 
+00061 #ifndef __UIP_ARCH_H__
+00062 #define __UIP_ARCH_H__
+00063 
+00064 #include "uip.h"
+00065 
+00066 /**
+00067  * Carry out a 32-bit addition.
+00068  *
+00069  * Because not all architectures for which uIP is intended has native
+00070  * 32-bit arithmetic, uIP uses an external C function for doing the
+00071  * required 32-bit additions in the TCP protocol processing. This
+00072  * function should add the two arguments and place the result in the
+00073  * global variable uip_acc32.
+00074  *
+00075  * \note The 32-bit integer pointed to by the op32 parameter and the
+00076  * result in the uip_acc32 variable are in network byte order (big
+00077  * endian).
+00078  *
+00079  * \param op32 A pointer to a 4-byte array representing a 32-bit
+00080  * integer in network byte order (big endian).
+00081  *
+00082  * \param op16 A 16-bit integer in host byte order.
+00083  */
+00084 void uip_add32(u8_t *op32, u16_t op16);
+00085 
+00086 /**
+00087  * Calculate the Internet checksum over a buffer.
+00088  *
+00089  * The Internet checksum is the one's complement of the one's
+00090  * complement sum of all 16-bit words in the buffer.
+00091  *
+00092  * See RFC1071.
+00093  *
+00094  * \note This function is not called in the current version of uIP,
+00095  * but future versions might make use of it.
+00096  *
+00097  * \param buf A pointer to the buffer over which the checksum is to be
+00098  * computed.
+00099  *
+00100  * \param len The length of the buffer over which the checksum is to
+00101  * be computed.
+00102  *
+00103  * \return The Internet checksum of the buffer.
+00104  */
+00105 u16_t uip_chksum(u16_t *buf, u16_t len);
+00106 
+00107 /**
+00108  * Calculate the IP header checksum of the packet header in uip_buf.
+00109  *
+00110  * The IP header checksum is the Internet checksum of the 20 bytes of
+00111  * the IP header.
+00112  *
+00113  * \return The IP header checksum of the IP header in the uip_buf
+00114  * buffer.
+00115  */
+00116 u16_t uip_ipchksum(void);
+00117 
+00118 /**
+00119  * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
+00120  *
+00121  * The TCP checksum is the Internet checksum of data contents of the
+00122  * TCP segment, and a pseudo-header as defined in RFC793.
+00123  *
+00124  * \note The uip_appdata pointer that points to the packet data may
+00125  * point anywhere in memory, so it is not possible to simply calculate
+00126  * the Internet checksum of the contents of the uip_buf buffer.
+00127  *
+00128  * \return The TCP checksum of the TCP segment in uip_buf and pointed
+00129  * to by uip_appdata.
+00130  */
+00131 u16_t uip_tcpchksum(void);
+00132 
+00133 u16_t uip_udpchksum(void);
+00134 
+00135 /** @} */
+00136 /** @} */
+00137 
+00138 #endif /* __UIP_ARCH_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00204.html b/Target/Source/third_party/uip/doc/html/a00204.html new file mode 100644 index 00000000..3b8a0ae6 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00204.html @@ -0,0 +1,448 @@ + + +uIP 1.0: uip/uip_arp.c Source File + + + + + + +

uip/uip_arp.c

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup uip
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \defgroup uiparp uIP Address Resolution Protocol
+00008  * @{
+00009  *
+00010  * The Address Resolution Protocol ARP is used for mapping between IP
+00011  * addresses and link level addresses such as the Ethernet MAC
+00012  * addresses. ARP uses broadcast queries to ask for the link level
+00013  * address of a known IP address and the host which is configured with
+00014  * the IP address for which the query was meant, will respond with its
+00015  * link level address.
+00016  *
+00017  * \note This ARP implementation only supports Ethernet.
+00018  */
+00019  
+00020 /**
+00021  * \file
+00022  * Implementation of the ARP Address Resolution Protocol.
+00023  * \author Adam Dunkels <adam@dunkels.com>
+00024  *
+00025  */
+00026 
+00027 /*
+00028  * Copyright (c) 2001-2003, Adam Dunkels.
+00029  * All rights reserved.
+00030  *
+00031  * Redistribution and use in source and binary forms, with or without
+00032  * modification, are permitted provided that the following conditions
+00033  * are met:
+00034  * 1. Redistributions of source code must retain the above copyright
+00035  *    notice, this list of conditions and the following disclaimer.
+00036  * 2. Redistributions in binary form must reproduce the above copyright
+00037  *    notice, this list of conditions and the following disclaimer in the
+00038  *    documentation and/or other materials provided with the distribution.
+00039  * 3. The name of the author may not be used to endorse or promote
+00040  *    products derived from this software without specific prior
+00041  *    written permission.
+00042  *
+00043  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00044  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00045  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00047  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00049  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00050  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00051  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00052  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00053  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00054  *
+00055  * This file is part of the uIP TCP/IP stack.
+00056  *
+00057  * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $
+00058  *
+00059  */
+00060 
+00061 
+00062 #include "uip_arp.h"
+00063 
+00064 #include <string.h>
+00065 
+00066 struct arp_hdr {
+00067   struct uip_eth_hdr ethhdr;
+00068   u16_t hwtype;
+00069   u16_t protocol;
+00070   u8_t hwlen;
+00071   u8_t protolen;
+00072   u16_t opcode;
+00073   struct uip_eth_addr shwaddr;
+00074   u16_t sipaddr[2];
+00075   struct uip_eth_addr dhwaddr;
+00076   u16_t dipaddr[2];
+00077 };
+00078 
+00079 struct ethip_hdr {
+00080   struct uip_eth_hdr ethhdr;
+00081   /* IP header. */
+00082   u8_t vhl,
+00083     tos,
+00084     len[2],
+00085     ipid[2],
+00086     ipoffset[2],
+00087     ttl,
+00088     proto;
+00089   u16_t ipchksum;
+00090   u16_t srcipaddr[2],
+00091     destipaddr[2];
+00092 };
+00093 
+00094 #define ARP_REQUEST 1
+00095 #define ARP_REPLY   2
+00096 
+00097 #define ARP_HWTYPE_ETH 1
+00098 
+00099 struct arp_entry {
+00100   u16_t ipaddr[2];
+00101   struct uip_eth_addr ethaddr;
+00102   u8_t time;
+00103 };
+00104 
+00105 static const struct uip_eth_addr broadcast_ethaddr =
+00106   {{0xff,0xff,0xff,0xff,0xff,0xff}};
+00107 static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff};
+00108 
+00109 static struct arp_entry arp_table[UIP_ARPTAB_SIZE];
+00110 static u16_t ipaddr[2];
+00111 static u8_t i, c;
+00112 
+00113 static u8_t arptime;
+00114 static u8_t tmpage;
+00115 
+00116 #define BUF   ((struct arp_hdr *)&uip_buf[0])
+00117 #define IPBUF ((struct ethip_hdr *)&uip_buf[0])
+00118 /*-----------------------------------------------------------------------------------*/
+00119 /**
+00120  * Initialize the ARP module.
+00121  *
+00122  */
+00123 /*-----------------------------------------------------------------------------------*/
+00124 void
+00125 uip_arp_init(void)
+00126 {
+00127   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00128     memset(arp_table[i].ipaddr, 0, 4);
+00129   }
+00130 }
+00131 /*-----------------------------------------------------------------------------------*/
+00132 /**
+00133  * Periodic ARP processing function.
+00134  *
+00135  * This function performs periodic timer processing in the ARP module
+00136  * and should be called at regular intervals. The recommended interval
+00137  * is 10 seconds between the calls.
+00138  *
+00139  */
+00140 /*-----------------------------------------------------------------------------------*/
+00141 void
+00142 uip_arp_timer(void)
+00143 {
+00144   struct arp_entry *tabptr;
+00145   
+00146   ++arptime;
+00147   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00148     tabptr = &arp_table[i];
+00149     if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 &&
+00150        arptime - tabptr->time >= UIP_ARP_MAXAGE) {
+00151       memset(tabptr->ipaddr, 0, 4);
+00152     }
+00153   }
+00154 
+00155 }
+00156 /*-----------------------------------------------------------------------------------*/
+00157 static void
+00158 uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr)
+00159 {
+00160   register struct arp_entry *tabptr;
+00161   /* Walk through the ARP mapping table and try to find an entry to
+00162      update. If none is found, the IP -> MAC address mapping is
+00163      inserted in the ARP table. */
+00164   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00165 
+00166     tabptr = &arp_table[i];
+00167     /* Only check those entries that are actually in use. */
+00168     if(tabptr->ipaddr[0] != 0 &&
+00169        tabptr->ipaddr[1] != 0) {
+00170 
+00171       /* Check if the source IP address of the incoming packet matches
+00172          the IP address in this ARP table entry. */
+00173       if(ipaddr[0] == tabptr->ipaddr[0] &&
+00174          ipaddr[1] == tabptr->ipaddr[1]) {
+00175          
+00176         /* An old entry found, update this and return. */
+00177         memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
+00178         tabptr->time = arptime;
+00179 
+00180         return;
+00181       }
+00182     }
+00183   }
+00184 
+00185   /* If we get here, no existing ARP table entry was found, so we
+00186      create one. */
+00187 
+00188   /* First, we try to find an unused entry in the ARP table. */
+00189   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00190     tabptr = &arp_table[i];
+00191     if(tabptr->ipaddr[0] == 0 &&
+00192        tabptr->ipaddr[1] == 0) {
+00193       break;
+00194     }
+00195   }
+00196 
+00197   /* If no unused entry is found, we try to find the oldest entry and
+00198      throw it away. */
+00199   if(i == UIP_ARPTAB_SIZE) {
+00200     tmpage = 0;
+00201     c = 0;
+00202     for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00203       tabptr = &arp_table[i];
+00204       if(arptime - tabptr->time > tmpage) {
+00205         tmpage = arptime - tabptr->time;
+00206         c = i;
+00207       }
+00208     }
+00209     i = c;
+00210     tabptr = &arp_table[i];
+00211   }
+00212 
+00213   /* Now, i is the ARP table entry which we will fill with the new
+00214      information. */
+00215   memcpy(tabptr->ipaddr, ipaddr, 4);
+00216   memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
+00217   tabptr->time = arptime;
+00218 }
+00219 /*-----------------------------------------------------------------------------------*/
+00220 /**
+00221  * ARP processing for incoming IP packets
+00222  *
+00223  * This function should be called by the device driver when an IP
+00224  * packet has been received. The function will check if the address is
+00225  * in the ARP cache, and if so the ARP cache entry will be
+00226  * refreshed. If no ARP cache entry was found, a new one is created.
+00227  *
+00228  * This function expects an IP packet with a prepended Ethernet header
+00229  * in the uip_buf[] buffer, and the length of the packet in the global
+00230  * variable uip_len.
+00231  */
+00232 /*-----------------------------------------------------------------------------------*/
+00233 #if 0
+00234 void
+00235 uip_arp_ipin(void)
+00236 {
+00237   uip_len -= sizeof(struct uip_eth_hdr);
+00238         
+00239   /* Only insert/update an entry if the source IP address of the
+00240      incoming IP packet comes from a host on the local network. */
+00241   if((IPBUF->srcipaddr[0] & uip_netmask[0]) !=
+00242      (uip_hostaddr[0] & uip_netmask[0])) {
+00243     return;
+00244   }
+00245   if((IPBUF->srcipaddr[1] & uip_netmask[1]) !=
+00246      (uip_hostaddr[1] & uip_netmask[1])) {
+00247     return;
+00248   }
+00249   uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src));
+00250   
+00251   return;
+00252 }
+00253 #endif /* 0 */
+00254 /*-----------------------------------------------------------------------------------*/
+00255 /**
+00256  * ARP processing for incoming ARP packets.
+00257  *
+00258  * This function should be called by the device driver when an ARP
+00259  * packet has been received. The function will act differently
+00260  * depending on the ARP packet type: if it is a reply for a request
+00261  * that we previously sent out, the ARP cache will be filled in with
+00262  * the values from the ARP reply. If the incoming ARP packet is an ARP
+00263  * request for our IP address, an ARP reply packet is created and put
+00264  * into the uip_buf[] buffer.
+00265  *
+00266  * When the function returns, the value of the global variable uip_len
+00267  * indicates whether the device driver should send out a packet or
+00268  * not. If uip_len is zero, no packet should be sent. If uip_len is
+00269  * non-zero, it contains the length of the outbound packet that is
+00270  * present in the uip_buf[] buffer.
+00271  *
+00272  * This function expects an ARP packet with a prepended Ethernet
+00273  * header in the uip_buf[] buffer, and the length of the packet in the
+00274  * global variable uip_len.
+00275  */
+00276 /*-----------------------------------------------------------------------------------*/
+00277 void
+00278 uip_arp_arpin(void)
+00279 {
+00280   
+00281   if(uip_len < sizeof(struct arp_hdr)) {
+00282     uip_len = 0;
+00283     return;
+00284   }
+00285   uip_len = 0;
+00286   
+00287   switch(BUF->opcode) {
+00288   case HTONS(ARP_REQUEST):
+00289     /* ARP request. If it asked for our address, we send out a
+00290        reply. */
+00291     if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
+00292       /* First, we register the one who made the request in our ARP
+00293          table, since it is likely that we will do more communication
+00294          with this host in the future. */
+00295       uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
+00296       
+00297       /* The reply opcode is 2. */
+00298       BUF->opcode = HTONS(2);
+00299 
+00300       memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6);
+00301       memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
+00302       memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+00303       memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6);
+00304       
+00305       BUF->dipaddr[0] = BUF->sipaddr[0];
+00306       BUF->dipaddr[1] = BUF->sipaddr[1];
+00307       BUF->sipaddr[0] = uip_hostaddr[0];
+00308       BUF->sipaddr[1] = uip_hostaddr[1];
+00309 
+00310       BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
+00311       uip_len = sizeof(struct arp_hdr);
+00312     }
+00313     break;
+00314   case HTONS(ARP_REPLY):
+00315     /* ARP reply. We insert or update the ARP table if it was meant
+00316        for us. */
+00317     if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
+00318       uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
+00319     }
+00320     break;
+00321   }
+00322 
+00323   return;
+00324 }
+00325 /*-----------------------------------------------------------------------------------*/
+00326 /**
+00327  * Prepend Ethernet header to an outbound IP packet and see if we need
+00328  * to send out an ARP request.
+00329  *
+00330  * This function should be called before sending out an IP packet. The
+00331  * function checks the destination IP address of the IP packet to see
+00332  * what Ethernet MAC address that should be used as a destination MAC
+00333  * address on the Ethernet.
+00334  *
+00335  * If the destination IP address is in the local network (determined
+00336  * by logical ANDing of netmask and our IP address), the function
+00337  * checks the ARP cache to see if an entry for the destination IP
+00338  * address is found. If so, an Ethernet header is prepended and the
+00339  * function returns. If no ARP cache entry is found for the
+00340  * destination IP address, the packet in the uip_buf[] is replaced by
+00341  * an ARP request packet for the IP address. The IP packet is dropped
+00342  * and it is assumed that they higher level protocols (e.g., TCP)
+00343  * eventually will retransmit the dropped packet.
+00344  *
+00345  * If the destination IP address is not on the local network, the IP
+00346  * address of the default router is used instead.
+00347  *
+00348  * When the function returns, a packet is present in the uip_buf[]
+00349  * buffer, and the length of the packet is in the global variable
+00350  * uip_len.
+00351  */
+00352 /*-----------------------------------------------------------------------------------*/
+00353 void
+00354 uip_arp_out(void)
+00355 {
+00356   struct arp_entry *tabptr;
+00357   
+00358   /* Find the destination IP address in the ARP table and construct
+00359      the Ethernet header. If the destination IP addres isn't on the
+00360      local network, we use the default router's IP address instead.
+00361 
+00362      If not ARP table entry is found, we overwrite the original IP
+00363      packet with an ARP request for the IP address. */
+00364 
+00365   /* First check if destination is a local broadcast. */
+00366   if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) {
+00367     memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6);
+00368   } else {
+00369     /* Check if the destination address is on the local network. */
+00370     if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) {
+00371       /* Destination address was not on the local network, so we need to
+00372          use the default router's IP address instead of the destination
+00373          address when determining the MAC address. */
+00374       uip_ipaddr_copy(ipaddr, uip_draddr);
+00375     } else {
+00376       /* Else, we use the destination IP address. */
+00377       uip_ipaddr_copy(ipaddr, IPBUF->destipaddr);
+00378     }
+00379       
+00380     for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+00381       tabptr = &arp_table[i];
+00382       if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) {
+00383         break;
+00384       }
+00385     }
+00386 
+00387     if(i == UIP_ARPTAB_SIZE) {
+00388       /* The destination address was not in our ARP table, so we
+00389          overwrite the IP packet with an ARP request. */
+00390 
+00391       memset(BUF->ethhdr.dest.addr, 0xff, 6);
+00392       memset(BUF->dhwaddr.addr, 0x00, 6);
+00393       memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+00394       memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
+00395     
+00396       uip_ipaddr_copy(BUF->dipaddr, ipaddr);
+00397       uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr);
+00398       BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */
+00399       BUF->hwtype = HTONS(ARP_HWTYPE_ETH);
+00400       BUF->protocol = HTONS(UIP_ETHTYPE_IP);
+00401       BUF->hwlen = 6;
+00402       BUF->protolen = 4;
+00403       BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
+00404 
+00405       uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN];
+00406     
+00407       uip_len = sizeof(struct arp_hdr);
+00408       return;
+00409     }
+00410 
+00411     /* Build an ethernet header. */
+00412     memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6);
+00413   }
+00414   memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+00415   
+00416   IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP);
+00417 
+00418   uip_len += sizeof(struct uip_eth_hdr);
+00419 }
+00420 /*-----------------------------------------------------------------------------------*/
+00421 
+00422 /** @} */
+00423 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00205.html b/Target/Source/third_party/uip/doc/html/a00205.html new file mode 100644 index 00000000..aef434f1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00205.html @@ -0,0 +1,169 @@ + + +uIP 1.0: uip/uip_arp.h Source File + + + + + + +

uip/uip_arp.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup uip
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \addtogroup uiparp
+00008  * @{
+00009  */
+00010  
+00011 /**
+00012  * \file
+00013  * Macros and definitions for the ARP module.
+00014  * \author Adam Dunkels <adam@dunkels.com>
+00015  */
+00016   
+00017 
+00018 /*
+00019  * Copyright (c) 2001-2003, Adam Dunkels.
+00020  * All rights reserved.
+00021  *
+00022  * Redistribution and use in source and binary forms, with or without
+00023  * modification, are permitted provided that the following conditions
+00024  * are met:
+00025  * 1. Redistributions of source code must retain the above copyright
+00026  *    notice, this list of conditions and the following disclaimer.
+00027  * 2. Redistributions in binary form must reproduce the above copyright
+00028  *    notice, this list of conditions and the following disclaimer in the
+00029  *    documentation and/or other materials provided with the distribution.
+00030  * 3. The name of the author may not be used to endorse or promote
+00031  *    products derived from this software without specific prior
+00032  *    written permission.
+00033  *
+00034  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00035  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00036  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00037  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00038  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00039  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00040  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00041  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00042  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00043  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00044  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00045  *
+00046  * This file is part of the uIP TCP/IP stack.
+00047  *
+00048  * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $
+00049  *
+00050  */
+00051 
+00052 #ifndef __UIP_ARP_H__
+00053 #define __UIP_ARP_H__
+00054 
+00055 #include "uip.h"
+00056 
+00057 
+00058 extern struct uip_eth_addr uip_ethaddr;
+00059 
+00060 /**
+00061  * The Ethernet header.
+00062  */
+00063 struct uip_eth_hdr {
+00064   struct uip_eth_addr dest;
+00065   struct uip_eth_addr src;
+00066   u16_t type;
+00067 };
+00068 
+00069 #define UIP_ETHTYPE_ARP 0x0806
+00070 #define UIP_ETHTYPE_IP  0x0800
+00071 #define UIP_ETHTYPE_IP6 0x86dd
+00072 
+00073 
+00074 /* The uip_arp_init() function must be called before any of the other
+00075    ARP functions. */
+00076 void uip_arp_init(void);
+00077 
+00078 /* The uip_arp_ipin() function should be called whenever an IP packet
+00079    arrives from the Ethernet. This function refreshes the ARP table or
+00080    inserts a new mapping if none exists. The function assumes that an
+00081    IP packet with an Ethernet header is present in the uip_buf buffer
+00082    and that the length of the packet is in the uip_len variable. */
+00083 /*void uip_arp_ipin(void);*/
+00084 #define uip_arp_ipin()
+00085 
+00086 /* The uip_arp_arpin() should be called when an ARP packet is received
+00087    by the Ethernet driver. This function also assumes that the
+00088    Ethernet frame is present in the uip_buf buffer. When the
+00089    uip_arp_arpin() function returns, the contents of the uip_buf
+00090    buffer should be sent out on the Ethernet if the uip_len variable
+00091    is > 0. */
+00092 void uip_arp_arpin(void);
+00093 
+00094 /* The uip_arp_out() function should be called when an IP packet
+00095    should be sent out on the Ethernet. This function creates an
+00096    Ethernet header before the IP header in the uip_buf buffer. The
+00097    Ethernet header will have the correct Ethernet MAC destination
+00098    address filled in if an ARP table entry for the destination IP
+00099    address (or the IP address of the default router) is present. If no
+00100    such table entry is found, the IP packet is overwritten with an ARP
+00101    request and we rely on TCP to retransmit the packet that was
+00102    overwritten. In any case, the uip_len variable holds the length of
+00103    the Ethernet frame that should be transmitted. */
+00104 void uip_arp_out(void);
+00105 
+00106 /* The uip_arp_timer() function should be called every ten seconds. It
+00107    is responsible for flushing old entries in the ARP table. */
+00108 void uip_arp_timer(void);
+00109 
+00110 /** @} */
+00111 
+00112 /**
+00113  * \addtogroup uipconffunc
+00114  * @{
+00115  */
+00116 
+00117 
+00118 /**
+00119  * Specifiy the Ethernet MAC address.
+00120  *
+00121  * The ARP code needs to know the MAC address of the Ethernet card in
+00122  * order to be able to respond to ARP queries and to generate working
+00123  * Ethernet headers.
+00124  *
+00125  * \note This macro only specifies the Ethernet MAC address to the ARP
+00126  * code. It cannot be used to change the MAC address of the Ethernet
+00127  * card.
+00128  *
+00129  * \param eaddr A pointer to a struct uip_eth_addr containing the
+00130  * Ethernet MAC address of the Ethernet card.
+00131  *
+00132  * \hideinitializer
+00133  */
+00134 #define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \
+00135                               uip_ethaddr.addr[1] = eaddr.addr[1];\
+00136                               uip_ethaddr.addr[2] = eaddr.addr[2];\
+00137                               uip_ethaddr.addr[3] = eaddr.addr[3];\
+00138                               uip_ethaddr.addr[4] = eaddr.addr[4];\
+00139                               uip_ethaddr.addr[5] = eaddr.addr[5];} while(0)
+00140 
+00141 /** @} */
+00142 /** @} */
+00143 
+00144 #endif /* __UIP_ARP_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00206.html b/Target/Source/third_party/uip/doc/html/a00206.html new file mode 100644 index 00000000..346c58a4 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00206.html @@ -0,0 +1,564 @@ + + +uIP 1.0: uip/uipopt.h Source File + + + + + + +

uip/uipopt.h

Go to the documentation of this file.
00001 /**
+00002  * \defgroup uipopt Configuration options for uIP
+00003  * @{
+00004  *
+00005  * uIP is configured using the per-project configuration file
+00006  * uipopt.h. This file contains all compile-time options for uIP and
+00007  * should be tweaked to match each specific project. The uIP
+00008  * distribution contains a documented example "uipopt.h" that can be
+00009  * copied and modified for each project.
+00010  *
+00011  * \note Most of the configuration options in the uipopt.h should not
+00012  * be changed, but rather the per-project uip-conf.h file.
+00013  */
+00014 
+00015 /**
+00016  * \file
+00017  * Configuration options for uIP.
+00018  * \author Adam Dunkels <adam@dunkels.com>
+00019  *
+00020  * This file is used for tweaking various configuration options for
+00021  * uIP. You should make a copy of this file into one of your project's
+00022  * directories instead of editing this example "uipopt.h" file that
+00023  * comes with the uIP distribution.
+00024  */
+00025 
+00026 /*
+00027  * Copyright (c) 2001-2003, Adam Dunkels.
+00028  * All rights reserved.
+00029  *
+00030  * Redistribution and use in source and binary forms, with or without
+00031  * modification, are permitted provided that the following conditions
+00032  * are met:
+00033  * 1. Redistributions of source code must retain the above copyright
+00034  *    notice, this list of conditions and the following disclaimer.
+00035  * 2. Redistributions in binary form must reproduce the above copyright
+00036  *    notice, this list of conditions and the following disclaimer in the
+00037  *    documentation and/or other materials provided with the distribution.
+00038  * 3. The name of the author may not be used to endorse or promote
+00039  *    products derived from this software without specific prior
+00040  *    written permission.
+00041  *
+00042  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+00043  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+00044  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00045  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+00046  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00047  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+00048  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+00049  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+00050  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00051  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00052  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00053  *
+00054  * This file is part of the uIP TCP/IP stack.
+00055  *
+00056  * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $
+00057  *
+00058  */
+00059 
+00060 #ifndef __UIPOPT_H__
+00061 #define __UIPOPT_H__
+00062 
+00063 #ifndef UIP_LITTLE_ENDIAN
+00064 #define UIP_LITTLE_ENDIAN  3412
+00065 #endif /* UIP_LITTLE_ENDIAN */
+00066 #ifndef UIP_BIG_ENDIAN
+00067 #define UIP_BIG_ENDIAN     1234
+00068 #endif /* UIP_BIG_ENDIAN */
+00069 
+00070 #include "uip-conf.h"
+00071 
+00072 /*------------------------------------------------------------------------------*/
+00073 
+00074 /**
+00075  * \name Static configuration options
+00076  * @{
+00077  *
+00078  * These configuration options can be used for setting the IP address
+00079  * settings statically, but only if UIP_FIXEDADDR is set to 1. The
+00080  * configuration options for a specific node includes IP address,
+00081  * netmask and default router as well as the Ethernet address. The
+00082  * netmask, default router and Ethernet address are appliciable only
+00083  * if uIP should be run over Ethernet.
+00084  *
+00085  * All of these should be changed to suit your project.
+00086 */
+00087 
+00088 /**
+00089  * Determines if uIP should use a fixed IP address or not.
+00090  *
+00091  * If uIP should use a fixed IP address, the settings are set in the
+00092  * uipopt.h file. If not, the macros uip_sethostaddr(),
+00093  * uip_setdraddr() and uip_setnetmask() should be used instead.
+00094  *
+00095  * \hideinitializer
+00096  */
+00097 #define UIP_FIXEDADDR    0
+00098 
+00099 /**
+00100  * Ping IP address asignment.
+00101  *
+00102  * uIP uses a "ping" packets for setting its own IP address if this
+00103  * option is set. If so, uIP will start with an empty IP address and
+00104  * the destination IP address of the first incoming "ping" (ICMP echo)
+00105  * packet will be used for setting the hosts IP address.
+00106  *
+00107  * \note This works only if UIP_FIXEDADDR is 0.
+00108  *
+00109  * \hideinitializer
+00110  */
+00111 #ifdef UIP_CONF_PINGADDRCONF
+00112 #define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF
+00113 #else /* UIP_CONF_PINGADDRCONF */
+00114 #define UIP_PINGADDRCONF 0
+00115 #endif /* UIP_CONF_PINGADDRCONF */
+00116 
+00117 
+00118 /**
+00119  * Specifies if the uIP ARP module should be compiled with a fixed
+00120  * Ethernet MAC address or not.
+00121  *
+00122  * If this configuration option is 0, the macro uip_setethaddr() can
+00123  * be used to specify the Ethernet address at run-time.
+00124  *
+00125  * \hideinitializer
+00126  */
+00127 #define UIP_FIXEDETHADDR 0
+00128 
+00129 /** @} */
+00130 /*------------------------------------------------------------------------------*/
+00131 /**
+00132  * \name IP configuration options
+00133  * @{
+00134  *
+00135  */
+00136 /**
+00137  * The IP TTL (time to live) of IP packets sent by uIP.
+00138  *
+00139  * This should normally not be changed.
+00140  */
+00141 #define UIP_TTL         64
+00142 
+00143 /**
+00144  * Turn on support for IP packet reassembly.
+00145  *
+00146  * uIP supports reassembly of fragmented IP packets. This features
+00147  * requires an additonal amount of RAM to hold the reassembly buffer
+00148  * and the reassembly code size is approximately 700 bytes.  The
+00149  * reassembly buffer is of the same size as the uip_buf buffer
+00150  * (configured by UIP_BUFSIZE).
+00151  *
+00152  * \note IP packet reassembly is not heavily tested.
+00153  *
+00154  * \hideinitializer
+00155  */
+00156 #define UIP_REASSEMBLY 0
+00157 
+00158 /**
+00159  * The maximum time an IP fragment should wait in the reassembly
+00160  * buffer before it is dropped.
+00161  *
+00162  */
+00163 #define UIP_REASS_MAXAGE 40
+00164 
+00165 /** @} */
+00166 
+00167 /*------------------------------------------------------------------------------*/
+00168 /**
+00169  * \name UDP configuration options
+00170  * @{
+00171  */
+00172 
+00173 /**
+00174  * Toggles wether UDP support should be compiled in or not.
+00175  *
+00176  * \hideinitializer
+00177  */
+00178 #ifdef UIP_CONF_UDP
+00179 #define UIP_UDP UIP_CONF_UDP
+00180 #else /* UIP_CONF_UDP */
+00181 #define UIP_UDP           0
+00182 #endif /* UIP_CONF_UDP */
+00183 
+00184 /**
+00185  * Toggles if UDP checksums should be used or not.
+00186  *
+00187  * \note Support for UDP checksums is currently not included in uIP,
+00188  * so this option has no function.
+00189  *
+00190  * \hideinitializer
+00191  */
+00192 #ifdef UIP_CONF_UDP_CHECKSUMS
+00193 #define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS
+00194 #else
+00195 #define UIP_UDP_CHECKSUMS 0
+00196 #endif
+00197 
+00198 /**
+00199  * The maximum amount of concurrent UDP connections.
+00200  *
+00201  * \hideinitializer
+00202  */
+00203 #ifdef UIP_CONF_UDP_CONNS
+00204 #define UIP_UDP_CONNS UIP_CONF_UDP_CONNS
+00205 #else /* UIP_CONF_UDP_CONNS */
+00206 #define UIP_UDP_CONNS    10
+00207 #endif /* UIP_CONF_UDP_CONNS */
+00208 
+00209 /**
+00210  * The name of the function that should be called when UDP datagrams arrive.
+00211  *
+00212  * \hideinitializer
+00213  */
+00214 
+00215 
+00216 /** @} */
+00217 /*------------------------------------------------------------------------------*/
+00218 /**
+00219  * \name TCP configuration options
+00220  * @{
+00221  */
+00222 
+00223 /**
+00224  * Determines if support for opening connections from uIP should be
+00225  * compiled in.
+00226  *
+00227  * If the applications that are running on top of uIP for this project
+00228  * do not need to open outgoing TCP connections, this configration
+00229  * option can be turned off to reduce the code size of uIP.
+00230  *
+00231  * \hideinitializer
+00232  */
+00233 #define UIP_ACTIVE_OPEN 1
+00234 
+00235 /**
+00236  * The maximum number of simultaneously open TCP connections.
+00237  *
+00238  * Since the TCP connections are statically allocated, turning this
+00239  * configuration knob down results in less RAM used. Each TCP
+00240  * connection requires approximatly 30 bytes of memory.
+00241  *
+00242  * \hideinitializer
+00243  */
+00244 #ifndef UIP_CONF_MAX_CONNECTIONS
+00245 #define UIP_CONNS       10
+00246 #else /* UIP_CONF_MAX_CONNECTIONS */
+00247 #define UIP_CONNS UIP_CONF_MAX_CONNECTIONS
+00248 #endif /* UIP_CONF_MAX_CONNECTIONS */
+00249 
+00250 
+00251 /**
+00252  * The maximum number of simultaneously listening TCP ports.
+00253  *
+00254  * Each listening TCP port requires 2 bytes of memory.
+00255  *
+00256  * \hideinitializer
+00257  */
+00258 #ifndef UIP_CONF_MAX_LISTENPORTS
+00259 #define UIP_LISTENPORTS 20
+00260 #else /* UIP_CONF_MAX_LISTENPORTS */
+00261 #define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS
+00262 #endif /* UIP_CONF_MAX_LISTENPORTS */
+00263 
+00264 /**
+00265  * Determines if support for TCP urgent data notification should be
+00266  * compiled in.
+00267  *
+00268  * Urgent data (out-of-band data) is a rarely used TCP feature that
+00269  * very seldom would be required.
+00270  *
+00271  * \hideinitializer
+00272  */
+00273 #define UIP_URGDATA      0
+00274 
+00275 /**
+00276  * The initial retransmission timeout counted in timer pulses.
+00277  *
+00278  * This should not be changed.
+00279  */
+00280 #define UIP_RTO         3
+00281 
+00282 /**
+00283  * The maximum number of times a segment should be retransmitted
+00284  * before the connection should be aborted.
+00285  *
+00286  * This should not be changed.
+00287  */
+00288 #define UIP_MAXRTX      8
+00289 
+00290 /**
+00291  * The maximum number of times a SYN segment should be retransmitted
+00292  * before a connection request should be deemed to have been
+00293  * unsuccessful.
+00294  *
+00295  * This should not need to be changed.
+00296  */
+00297 #define UIP_MAXSYNRTX      5
+00298 
+00299 /**
+00300  * The TCP maximum segment size.
+00301  *
+00302  * This is should not be to set to more than
+00303  * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
+00304  */
+00305 #define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
+00306 
+00307 /**
+00308  * The size of the advertised receiver's window.
+00309  *
+00310  * Should be set low (i.e., to the size of the uip_buf buffer) is the
+00311  * application is slow to process incoming data, or high (32768 bytes)
+00312  * if the application processes data quickly.
+00313  *
+00314  * \hideinitializer
+00315  */
+00316 #ifndef UIP_CONF_RECEIVE_WINDOW
+00317 #define UIP_RECEIVE_WINDOW UIP_TCP_MSS
+00318 #else
+00319 #define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW
+00320 #endif
+00321 
+00322 /**
+00323  * How long a connection should stay in the TIME_WAIT state.
+00324  *
+00325  * This configiration option has no real implication, and it should be
+00326  * left untouched.
+00327  */
+00328 #define UIP_TIME_WAIT_TIMEOUT 120
+00329 
+00330 
+00331 /** @} */
+00332 /*------------------------------------------------------------------------------*/
+00333 /**
+00334  * \name ARP configuration options
+00335  * @{
+00336  */
+00337 
+00338 /**
+00339  * The size of the ARP table.
+00340  *
+00341  * This option should be set to a larger value if this uIP node will
+00342  * have many connections from the local network.
+00343  *
+00344  * \hideinitializer
+00345  */
+00346 #ifdef UIP_CONF_ARPTAB_SIZE
+00347 #define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE
+00348 #else
+00349 #define UIP_ARPTAB_SIZE 8
+00350 #endif
+00351 
+00352 /**
+00353  * The maxium age of ARP table entries measured in 10ths of seconds.
+00354  *
+00355  * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
+00356  * default).
+00357  */
+00358 #define UIP_ARP_MAXAGE 120
+00359 
+00360 /** @} */
+00361 
+00362 /*------------------------------------------------------------------------------*/
+00363 
+00364 /**
+00365  * \name General configuration options
+00366  * @{
+00367  */
+00368 
+00369 /**
+00370  * The size of the uIP packet buffer.
+00371  *
+00372  * The uIP packet buffer should not be smaller than 60 bytes, and does
+00373  * not need to be larger than 1500 bytes. Lower size results in lower
+00374  * TCP throughput, larger size results in higher TCP throughput.
+00375  *
+00376  * \hideinitializer
+00377  */
+00378 #ifndef UIP_CONF_BUFFER_SIZE
+00379 #define UIP_BUFSIZE     400
+00380 #else /* UIP_CONF_BUFFER_SIZE */
+00381 #define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE
+00382 #endif /* UIP_CONF_BUFFER_SIZE */
+00383 
+00384 
+00385 /**
+00386  * Determines if statistics support should be compiled in.
+00387  *
+00388  * The statistics is useful for debugging and to show the user.
+00389  *
+00390  * \hideinitializer
+00391  */
+00392 #ifndef UIP_CONF_STATISTICS
+00393 #define UIP_STATISTICS  0
+00394 #else /* UIP_CONF_STATISTICS */
+00395 #define UIP_STATISTICS UIP_CONF_STATISTICS
+00396 #endif /* UIP_CONF_STATISTICS */
+00397 
+00398 /**
+00399  * Determines if logging of certain events should be compiled in.
+00400  *
+00401  * This is useful mostly for debugging. The function uip_log()
+00402  * must be implemented to suit the architecture of the project, if
+00403  * logging is turned on.
+00404  *
+00405  * \hideinitializer
+00406  */
+00407 #ifndef UIP_CONF_LOGGING
+00408 #define UIP_LOGGING     0
+00409 #else /* UIP_CONF_LOGGING */
+00410 #define UIP_LOGGING     UIP_CONF_LOGGING
+00411 #endif /* UIP_CONF_LOGGING */
+00412 
+00413 /**
+00414  * Broadcast support.
+00415  *
+00416  * This flag configures IP broadcast support. This is useful only
+00417  * together with UDP.
+00418  *
+00419  * \hideinitializer
+00420  *
+00421  */
+00422 #ifndef UIP_CONF_BROADCAST
+00423 #define UIP_BROADCAST 0
+00424 #else /* UIP_CONF_BROADCAST */
+00425 #define UIP_BROADCAST UIP_CONF_BROADCAST
+00426 #endif /* UIP_CONF_BROADCAST */
+00427 
+00428 /**
+00429  * Print out a uIP log message.
+00430  *
+00431  * This function must be implemented by the module that uses uIP, and
+00432  * is called by uIP whenever a log message is generated.
+00433  */
+00434 void uip_log(char *msg);
+00435 
+00436 /**
+00437  * The link level header length.
+00438  *
+00439  * This is the offset into the uip_buf where the IP header can be
+00440  * found. For Ethernet, this should be set to 14. For SLIP, this
+00441  * should be set to 0.
+00442  *
+00443  * \hideinitializer
+00444  */
+00445 #ifdef UIP_CONF_LLH_LEN
+00446 #define UIP_LLH_LEN UIP_CONF_LLH_LEN
+00447 #else /* UIP_CONF_LLH_LEN */
+00448 #define UIP_LLH_LEN     14
+00449 #endif /* UIP_CONF_LLH_LEN */
+00450 
+00451 /** @} */
+00452 /*------------------------------------------------------------------------------*/
+00453 /**
+00454  * \name CPU architecture configuration
+00455  * @{
+00456  *
+00457  * The CPU architecture configuration is where the endianess of the
+00458  * CPU on which uIP is to be run is specified. Most CPUs today are
+00459  * little endian, and the most notable exception are the Motorolas
+00460  * which are big endian. The BYTE_ORDER macro should be changed to
+00461  * reflect the CPU architecture on which uIP is to be run.
+00462  */
+00463 
+00464 /**
+00465  * The byte order of the CPU architecture on which uIP is to be run.
+00466  *
+00467  * This option can be either BIG_ENDIAN (Motorola byte order) or
+00468  * LITTLE_ENDIAN (Intel byte order).
+00469  *
+00470  * \hideinitializer
+00471  */
+00472 #ifdef UIP_CONF_BYTE_ORDER
+00473 #define UIP_BYTE_ORDER     UIP_CONF_BYTE_ORDER
+00474 #else /* UIP_CONF_BYTE_ORDER */
+00475 #define UIP_BYTE_ORDER     UIP_LITTLE_ENDIAN
+00476 #endif /* UIP_CONF_BYTE_ORDER */
+00477 
+00478 /** @} */
+00479 /*------------------------------------------------------------------------------*/
+00480 
+00481 /**
+00482  * \name Appication specific configurations
+00483  * @{
+00484  *
+00485  * An uIP application is implemented using a single application
+00486  * function that is called by uIP whenever a TCP/IP event occurs. The
+00487  * name of this function must be registered with uIP at compile time
+00488  * using the UIP_APPCALL definition.
+00489  *
+00490  * uIP applications can store the application state within the
+00491  * uip_conn structure by specifying the type of the application
+00492  * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.
+00493  *
+00494  * The file containing the definitions must be included in the
+00495  * uipopt.h file.
+00496  *
+00497  * The following example illustrates how this can look.
+00498  \code
+00499 
+00500 void httpd_appcall(void);
+00501 #define UIP_APPCALL     httpd_appcall
+00502 
+00503 struct httpd_state {
+00504   u8_t state;
+00505   u16_t count;
+00506   char *dataptr;
+00507   char *script;
+00508 };
+00509 typedef struct httpd_state uip_tcp_appstate_t
+00510  \endcode
+00511  */
+00512 
+00513 /**
+00514  * \var #define UIP_APPCALL
+00515  *
+00516  * The name of the application function that uIP should call in
+00517  * response to TCP/IP events.
+00518  *
+00519  */
+00520 
+00521 /**
+00522  * \var typedef uip_tcp_appstate_t
+00523  *
+00524  * The type of the application state that is to be stored in the
+00525  * uip_conn structure. This usually is typedef:ed to a struct holding
+00526  * application state information.
+00527  */
+00528 
+00529 /**
+00530  * \var typedef uip_udp_appstate_t
+00531  *
+00532  * The type of the application state that is to be stored in the
+00533  * uip_conn structure. This usually is typedef:ed to a struct holding
+00534  * application state information.
+00535  */
+00536 /** @} */
+00537 /** @} */
+00538 
+00539 #endif /* __UIPOPT_H__ */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/a00207.html b/Target/Source/third_party/uip/doc/html/a00207.html new file mode 100644 index 00000000..1bf1c511 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/a00207.html @@ -0,0 +1,182 @@ + + +uIP 1.0: unix/uip-conf.h Source File + + + + + + +

unix/uip-conf.h

Go to the documentation of this file.
00001 /**
+00002  * \addtogroup uipopt
+00003  * @{
+00004  */
+00005 
+00006 /**
+00007  * \name Project-specific configuration options
+00008  * @{
+00009  *
+00010  * uIP has a number of configuration options that can be overridden
+00011  * for each project. These are kept in a project-specific uip-conf.h
+00012  * file and all configuration names have the prefix UIP_CONF.
+00013  */
+00014 
+00015 /*
+00016  * Copyright (c) 2006, Swedish Institute of Computer Science.
+00017  * All rights reserved.
+00018  *
+00019  * Redistribution and use in source and binary forms, with or without
+00020  * modification, are permitted provided that the following conditions
+00021  * are met:
+00022  * 1. Redistributions of source code must retain the above copyright
+00023  *    notice, this list of conditions and the following disclaimer.
+00024  * 2. Redistributions in binary form must reproduce the above copyright
+00025  *    notice, this list of conditions and the following disclaimer in the
+00026  *    documentation and/or other materials provided with the distribution.
+00027  * 3. Neither the name of the Institute nor the names of its contributors
+00028  *    may be used to endorse or promote products derived from this software
+00029  *    without specific prior written permission.
+00030  *
+00031  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+00032  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+00033  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+00034  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+00035  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+00036  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+00037  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+00038  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+00039  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+00040  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+00041  * SUCH DAMAGE.
+00042  *
+00043  * This file is part of the uIP TCP/IP stack
+00044  *
+00045  * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
+00046  */
+00047 
+00048 /**
+00049  * \file
+00050  *         An example uIP configuration file
+00051  * \author
+00052  *         Adam Dunkels <adam@sics.se>
+00053  */
+00054 
+00055 #ifndef __UIP_CONF_H__
+00056 #define __UIP_CONF_H__
+00057 
+00058 #include <inttypes.h>
+00059 
+00060 /**
+00061  * 8 bit datatype
+00062  *
+00063  * This typedef defines the 8-bit type used throughout uIP.
+00064  *
+00065  * \hideinitializer
+00066  */
+00067 typedef uint8_t u8_t;
+00068 
+00069 /**
+00070  * 16 bit datatype
+00071  *
+00072  * This typedef defines the 16-bit type used throughout uIP.
+00073  *
+00074  * \hideinitializer
+00075  */
+00076 typedef uint16_t u16_t;
+00077 
+00078 /**
+00079  * Statistics datatype
+00080  *
+00081  * This typedef defines the dataype used for keeping statistics in
+00082  * uIP.
+00083  *
+00084  * \hideinitializer
+00085  */
+00086 typedef unsigned short uip_stats_t;
+00087 
+00088 /**
+00089  * Maximum number of TCP connections.
+00090  *
+00091  * \hideinitializer
+00092  */
+00093 #define UIP_CONF_MAX_CONNECTIONS 40
+00094 
+00095 /**
+00096  * Maximum number of listening TCP ports.
+00097  *
+00098  * \hideinitializer
+00099  */
+00100 #define UIP_CONF_MAX_LISTENPORTS 40
+00101 
+00102 /**
+00103  * uIP buffer size.
+00104  *
+00105  * \hideinitializer
+00106  */
+00107 #define UIP_CONF_BUFFER_SIZE     420
+00108 
+00109 /**
+00110  * CPU byte order.
+00111  *
+00112  * \hideinitializer
+00113  */
+00114 #define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
+00115 
+00116 /**
+00117  * Logging on or off
+00118  *
+00119  * \hideinitializer
+00120  */
+00121 #define UIP_CONF_LOGGING         1
+00122 
+00123 /**
+00124  * UDP support on or off
+00125  *
+00126  * \hideinitializer
+00127  */
+00128 #define UIP_CONF_UDP             0
+00129 
+00130 /**
+00131  * UDP checksums on or off
+00132  *
+00133  * \hideinitializer
+00134  */
+00135 #define UIP_CONF_UDP_CHECKSUMS   1
+00136 
+00137 /**
+00138  * uIP statistics on or off
+00139  *
+00140  * \hideinitializer
+00141  */
+00142 #define UIP_CONF_STATISTICS      1
+00143 
+00144 /* Here we include the header file for the application(s) we use in
+00145    our project. */
+00146 /*#include "smtp.h"*/
+00147 /*#include "hello-world.h"*/
+00148 /*#include "telnetd.h"*/
+00149 #include "webserver.h"
+00150 /*#include "dhcpc.h"*/
+00151 /*#include "resolv.h"*/
+00152 /*#include "webclient.h"*/
+00153 
+00154 #endif /* __UIP_CONF_H__ */
+00155 
+00156 /** @} */
+00157 /** @} */
+

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/annotated.html b/Target/Source/third_party/uip/doc/html/annotated.html new file mode 100644 index 00000000..0753c5b1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/annotated.html @@ -0,0 +1,50 @@ + + +uIP 1.0: Data Structures + + + + + + +

uIP 1.0 Data Structures

Here are the data structures with brief descriptions: + + + + + + + + + + + + + + + + + + + + + +
dhcpc_state
hello_world_state
httpd_cgi_call
httpd_state
memb_blocks
psockThe representation of a protosocket
psock_buf
pt
smtp_state
telnetd_state
timerA timer
uip_connRepresentation of a uIP TCP connection
uip_eth_addrRepresentation of a 48-bit Ethernet address
uip_eth_hdrThe Ethernet header
uip_icmpip_hdr
uip_neighbor_addr
uip_statsThe structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1
uip_tcpip_hdr
uip_udp_connRepresentation of a uIP UDP connection
uip_udpip_hdr
webclient_state
+
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/classes.html b/Target/Source/third_party/uip/doc/html/classes.html new file mode 100644 index 00000000..5ada66ed --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/classes.html @@ -0,0 +1,38 @@ + + +uIP 1.0: Alphabetical List + + + + + + +

uIP 1.0 Data Structure Index

D | H | M | P | S | T | U | W

+ +
  D  
+
  M  
+
  S  
+
uip_conn   uip_tcpip_hdr   
dhcpc_state   memb_blocks   smtp_state   uip_eth_addr   uip_udp_conn   
  H  
+
  P  
+
  T  
+
uip_eth_hdr   uip_udpip_hdr   
hello_world_state   psock   telnetd_state   uip_icmpip_hdr   
  W  
+
httpd_cgi_call   psock_buf   timer   uip_neighbor_addr   webclient_state   
httpd_state   pt   
  U  
+
uip_stats   

D | H | M | P | S | T | U | W

+


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/doxygen.css b/Target/Source/third_party/uip/doc/html/doxygen.css new file mode 100644 index 00000000..17790f3b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/Target/Source/third_party/uip/doc/html/doxygen.png b/Target/Source/third_party/uip/doc/html/doxygen.png new file mode 100644 index 00000000..f0a274bb Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/doxygen.png differ diff --git a/Target/Source/third_party/uip/doc/html/examples.html b/Target/Source/third_party/uip/doc/html/examples.html new file mode 100644 index 00000000..0eedf175 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/examples.html @@ -0,0 +1,38 @@ + + +uIP 1.0: Examples + + + + + +

uIP 1.0 Examples

Here is a list of all examples: +
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/files.html b/Target/Source/third_party/uip/doc/html/files.html new file mode 100644 index 00000000..e7023f8d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/files.html @@ -0,0 +1,67 @@ + + +uIP 1.0: File Index + + + + + + +

uIP 1.0 File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
apps/dhcpc/dhcpc.c [code]
apps/dhcpc/dhcpc.h [code]
apps/hello-world/hello-world.c [code]An example of how to write uIP applications with protosockets
apps/hello-world/hello-world.h [code]Header file for an example of how to write uIP applications with protosockets
apps/resolv/resolv.c [code]DNS host name to IP address resolver
apps/resolv/resolv.h [code]DNS resolver code header file
apps/smtp/smtp.c [code]SMTP example implementation
apps/smtp/smtp.h [code]SMTP header file
apps/telnetd/shell.c [code]
apps/telnetd/shell.h [code]Interface for the Contiki shell
apps/telnetd/telnetd.c [code]
apps/telnetd/telnetd.h [code]
apps/webclient/webclient.c [code]Implementation of the HTTP client
apps/webclient/webclient.h [code]Header file for the HTTP client
apps/webserver/httpd-cgi.c [code]Web server script interface
apps/webserver/httpd-cgi.h [code]Web server script interface header file
apps/webserver/httpd.c [code]Web server
apps/webserver/httpd.h [code]
lib/memb.c [code]Memory block allocation routines
lib/memb.h [code]Memory block allocation routines
uip/clock.h [code]
uip/lc-addrlabels.h [code]Implementation of local continuations based on the "Labels as values" feature of gcc
uip/lc-switch.h [code]Implementation of local continuations based on switch() statment
uip/lc.h [code]Local continuations
uip/psock.c [code]
uip/psock.h [code]Protosocket library header file
uip/pt.h [code]Protothreads implementation
uip/timer.c [code]Timer library implementation
uip/timer.h [code]Timer library header file
uip/uip-neighbor.c [code]Database of link-local neighbors, used by IPv6 code and to be used by a future ARP code rewrite
uip/uip-neighbor.h [code]Header file for database of link-local neighbors, used by IPv6 code and to be used by future ARP code
uip/uip-split.c [code]
uip/uip-split.h [code]Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation
uip/uip.c [code]The uIP TCP/IP stack code
uip/uip.h [code]Header file for the uIP TCP/IP stack
uip/uip_arch.h [code]Declarations of architecture specific functions
uip/uip_arp.c [code]Implementation of the ARP Address Resolution Protocol
uip/uip_arp.h [code]Macros and definitions for the ARP module
uip/uipopt.h [code]Configuration options for uIP
unix/uip-conf.h [code]An example uIP configuration file
+
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/ftv2blank.png b/Target/Source/third_party/uip/doc/html/ftv2blank.png new file mode 100644 index 00000000..493c3c0b Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2blank.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2doc.png b/Target/Source/third_party/uip/doc/html/ftv2doc.png new file mode 100644 index 00000000..f72999f9 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2doc.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2folderclosed.png b/Target/Source/third_party/uip/doc/html/ftv2folderclosed.png new file mode 100644 index 00000000..d6d06344 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2folderclosed.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2folderopen.png b/Target/Source/third_party/uip/doc/html/ftv2folderopen.png new file mode 100644 index 00000000..bbe2c913 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2folderopen.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2lastnode.png b/Target/Source/third_party/uip/doc/html/ftv2lastnode.png new file mode 100644 index 00000000..e7b9ba90 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2lastnode.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2link.png b/Target/Source/third_party/uip/doc/html/ftv2link.png new file mode 100644 index 00000000..14f3fed0 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2link.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2mlastnode.png b/Target/Source/third_party/uip/doc/html/ftv2mlastnode.png new file mode 100644 index 00000000..09ceb6ad Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2mlastnode.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2mnode.png b/Target/Source/third_party/uip/doc/html/ftv2mnode.png new file mode 100644 index 00000000..3254c051 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2mnode.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2node.png b/Target/Source/third_party/uip/doc/html/ftv2node.png new file mode 100644 index 00000000..c9f06a57 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2node.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2plastnode.png b/Target/Source/third_party/uip/doc/html/ftv2plastnode.png new file mode 100644 index 00000000..0b07e009 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2plastnode.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2pnode.png b/Target/Source/third_party/uip/doc/html/ftv2pnode.png new file mode 100644 index 00000000..2001b797 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2pnode.png differ diff --git a/Target/Source/third_party/uip/doc/html/ftv2vertline.png b/Target/Source/third_party/uip/doc/html/ftv2vertline.png new file mode 100644 index 00000000..b330f3a3 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/ftv2vertline.png differ diff --git a/Target/Source/third_party/uip/doc/html/functions.html b/Target/Source/third_party/uip/doc/html/functions.html new file mode 100644 index 00000000..ba505482 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/functions.html @@ -0,0 +1,217 @@ + + +uIP 1.0: Data Fields + + + + + + +
+ +
+
+ +
+ +

+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field: +

+

- a -

+

- b -

+

- c -

+

- d -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/functions_vars.html b/Target/Source/third_party/uip/doc/html/functions_vars.html new file mode 100644 index 00000000..979215f8 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/functions_vars.html @@ -0,0 +1,217 @@ + + +uIP 1.0: Data Fields - Variables + + + + + + +
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals.html b/Target/Source/third_party/uip/doc/html/globals.html new file mode 100644 index 00000000..d397465c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- _ -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x61.html b/Target/Source/third_party/uip/doc/html/globals_0x61.html new file mode 100644 index 00000000..a17d6ed2 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x61.html @@ -0,0 +1,64 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- a -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x62.html b/Target/Source/third_party/uip/doc/html/globals_0x62.html new file mode 100644 index 00000000..19cadd63 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x62.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- b -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x64.html b/Target/Source/third_party/uip/doc/html/globals_0x64.html new file mode 100644 index 00000000..748e08e9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x64.html @@ -0,0 +1,73 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- d -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x65.html b/Target/Source/third_party/uip/doc/html/globals_0x65.html new file mode 100644 index 00000000..4fbc9b7d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x65.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- e -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x66.html b/Target/Source/third_party/uip/doc/html/globals_0x66.html new file mode 100644 index 00000000..68e8d6cd --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x66.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- f -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x68.html b/Target/Source/third_party/uip/doc/html/globals_0x68.html new file mode 100644 index 00000000..b72fb761 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x68.html @@ -0,0 +1,73 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- h -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x69.html b/Target/Source/third_party/uip/doc/html/globals_0x69.html new file mode 100644 index 00000000..e48d02a6 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x69.html @@ -0,0 +1,84 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- i -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x6c.html b/Target/Source/third_party/uip/doc/html/globals_0x6c.html new file mode 100644 index 00000000..ef2c1804 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x6c.html @@ -0,0 +1,66 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- l -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x6d.html b/Target/Source/third_party/uip/doc/html/globals_0x6d.html new file mode 100644 index 00000000..58da80d1 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x6d.html @@ -0,0 +1,69 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- m -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x6e.html b/Target/Source/third_party/uip/doc/html/globals_0x6e.html new file mode 100644 index 00000000..01e87196 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x6e.html @@ -0,0 +1,63 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- n -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x70.html b/Target/Source/third_party/uip/doc/html/globals_0x70.html new file mode 100644 index 00000000..d7f12da5 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x70.html @@ -0,0 +1,95 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- p -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x72.html b/Target/Source/third_party/uip/doc/html/globals_0x72.html new file mode 100644 index 00000000..d7789f4b --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x72.html @@ -0,0 +1,69 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- r -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x73.html b/Target/Source/third_party/uip/doc/html/globals_0x73.html new file mode 100644 index 00000000..78234514 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x73.html @@ -0,0 +1,81 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- s -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x74.html b/Target/Source/third_party/uip/doc/html/globals_0x74.html new file mode 100644 index 00000000..be8583a3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x74.html @@ -0,0 +1,76 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- t -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x75.html b/Target/Source/third_party/uip/doc/html/globals_0x75.html new file mode 100644 index 00000000..bc731b99 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x75.html @@ -0,0 +1,237 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- u -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_0x77.html b/Target/Source/third_party/uip/doc/html/globals_0x77.html new file mode 100644 index 00000000..2b9a7fe0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_0x77.html @@ -0,0 +1,80 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- w -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs.html b/Target/Source/third_party/uip/doc/html/globals_defs.html new file mode 100644 index 00000000..46da3d34 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- _ -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x61.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x61.html new file mode 100644 index 00000000..456b2368 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x61.html @@ -0,0 +1,64 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- a -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x62.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x62.html new file mode 100644 index 00000000..d311097f --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x62.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- b -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x64.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x64.html new file mode 100644 index 00000000..bc835491 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x64.html @@ -0,0 +1,73 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- d -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x65.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x65.html new file mode 100644 index 00000000..e2ef3c98 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x65.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- e -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x66.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x66.html new file mode 100644 index 00000000..92a60e6d --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x66.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- f -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x68.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x68.html new file mode 100644 index 00000000..ff1a426a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x68.html @@ -0,0 +1,67 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- h -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x69.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x69.html new file mode 100644 index 00000000..955f91b9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x69.html @@ -0,0 +1,84 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- i -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x6c.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x6c.html new file mode 100644 index 00000000..d970ddbb --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x6c.html @@ -0,0 +1,65 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- l -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x6d.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x6d.html new file mode 100644 index 00000000..3e8c8d93 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x6d.html @@ -0,0 +1,66 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- m -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x6e.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x6e.html new file mode 100644 index 00000000..51e37079 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x6e.html @@ -0,0 +1,63 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- n -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x70.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x70.html new file mode 100644 index 00000000..d470b292 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x70.html @@ -0,0 +1,93 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- p -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x72.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x72.html new file mode 100644 index 00000000..0d224b7a --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x72.html @@ -0,0 +1,62 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- r -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x73.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x73.html new file mode 100644 index 00000000..9a4c61f8 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x73.html @@ -0,0 +1,70 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- s -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x74.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x74.html new file mode 100644 index 00000000..360896dd --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x74.html @@ -0,0 +1,72 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- t -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x75.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x75.html new file mode 100644 index 00000000..322b62a3 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x75.html @@ -0,0 +1,188 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- u -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_defs_0x77.html b/Target/Source/third_party/uip/doc/html/globals_defs_0x77.html new file mode 100644 index 00000000..821a8abe --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_defs_0x77.html @@ -0,0 +1,67 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- w -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_func.html b/Target/Source/third_party/uip/doc/html/globals_func.html new file mode 100644 index 00000000..49e7f129 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_func.html @@ -0,0 +1,136 @@ + + +uIP 1.0: Data Fields + + + + + + + +
+ +
+ +

+  +

+

- h -

+

- m -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- w -

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_type.html b/Target/Source/third_party/uip/doc/html/globals_type.html new file mode 100644 index 00000000..d5650f53 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_type.html @@ -0,0 +1,47 @@ + + +uIP 1.0: Data Fields + + + + + + + +  +

+

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/globals_vars.html b/Target/Source/third_party/uip/doc/html/globals_vars.html new file mode 100644 index 00000000..17aaa986 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/globals_vars.html @@ -0,0 +1,55 @@ + + +uIP 1.0: Data Fields + + + + + + + +  +

+

+
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/hierarchy.html b/Target/Source/third_party/uip/doc/html/hierarchy.html new file mode 100644 index 00000000..e6abde81 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/hierarchy.html @@ -0,0 +1,50 @@ + + +uIP 1.0: Hierarchical Index + + + + + + +

uIP 1.0 Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/index.hhc b/Target/Source/third_party/uip/doc/html/index.hhc new file mode 100644 index 00000000..b2548037 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/index.hhc @@ -0,0 +1,192 @@ + + + + + +
    +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
  • +
      +
    • +
        +
      • +
          +
        +
      +
    • +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      +
    • +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      • +
          +
        +
      +
    • +
        +
      +
    • +
        +
      +
    • +
        +
      +
    • +
        +
      +
    • +
        +
      +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
diff --git a/Target/Source/third_party/uip/doc/html/index.hhk b/Target/Source/third_party/uip/doc/html/index.hhk new file mode 100644 index 00000000..7e496628 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/index.hhk @@ -0,0 +1,450 @@ + + + + + +
    +
  • +
      +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
  • +
      +
    • +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
diff --git a/Target/Source/third_party/uip/doc/html/index.hhp b/Target/Source/third_party/uip/doc/html/index.hhp new file mode 100644 index 00000000..b196db11 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/index.hhp @@ -0,0 +1,197 @@ +[OPTIONS] +Compatibility=1.1 +Full-text search=Yes +Contents file=index.hhc +Default Window=main +Default topic=main.html +Index file=index.hhk +Language=0x409 English (United States) +Binary TOC=YES +Create CHI file=YES +Title=uIP 1.0 + +[WINDOWS] +main="uIP 1.0","index.hhc","index.hhk","main.html","main.html",,,,,0x23520,,0x387e,,,,,,,,0 + +[FILES] +main.html +files.html +a00048.html +a00049.html +a00042.html +a00043.html +a00036.html +a00037.html +a00046.html +a00047.html +a00038.html +a00039.html +a00044.html +a00045.html +a00051.html +a00050.html +a00040.html +a00041.html +a00168.html +a00169.html +a00170.html +a00171.html +a00172.html +a00173.html +a00174.html +a00175.html +a00176.html +a00177.html +a00178.html +a00179.html +a00180.html +a00181.html +a00182.html +a00183.html +a00184.html +a00185.html +a00186.html +a00187.html +a00188.html +a00189.html +a00190.html +a00191.html +a00192.html +a00193.html +a00194.html +a00195.html +a00196.html +a00197.html +a00198.html +a00199.html +a00200.html +a00201.html +a00202.html +a00203.html +a00204.html +a00205.html +a00206.html +a00207.html +a00100.html +a00101.html +a00102.html +a00103.html +a00104.html +a00105.html +a00107.html +a00110.html +a00111.html +a00112.html +a00113.html +a00114.html +a00120.html +a00121.html +a00123.html +a00124.html +a00125.html +a00127.html +a00128.html +a00129.html +a00130.html +a00131.html +a00132.html +a00134.html +a00135.html +a00136.html +a00137.html +a00138.html +a00139.html +a00140.html +a00141.html +annotated.html +classes.html +hierarchy.html +functions.html +functions_vars.html +a00077.html +a00078.html +a00079.html +a00080.html +a00081.html +a00082.html +a00083.html +a00084.html +a00085.html +a00086.html +a00087.html +a00088.html +a00089.html +a00090.html +a00091.html +a00092.html +a00093.html +a00094.html +a00095.html +a00096.html +a00097.html +a00142.html +a00143.html +a00144.html +a00145.html +a00146.html +a00147.html +a00148.html +a00149.html +a00150.html +a00151.html +a00152.html +a00153.html +a00154.html +a00155.html +a00156.html +a00157.html +a00158.html +a00159.html +a00160.html +a00161.html +a00162.html +a00163.html +a00164.html +modules.html +examples.html +globals.html +globals_0x61.html +globals_0x62.html +globals_0x64.html +globals_0x65.html +globals_0x66.html +globals_0x68.html +globals_0x69.html +globals_0x6c.html +globals_0x6d.html +globals_0x6e.html +globals_0x70.html +globals_0x72.html +globals_0x73.html +globals_0x74.html +globals_0x75.html +globals_0x77.html +globals_func.html +globals_vars.html +globals_type.html +globals_defs.html +globals_defs_0x61.html +globals_defs_0x62.html +globals_defs_0x64.html +globals_defs_0x65.html +globals_defs_0x66.html +globals_defs_0x68.html +globals_defs_0x69.html +globals_defs_0x6c.html +globals_defs_0x6d.html +globals_defs_0x6e.html +globals_defs_0x70.html +globals_defs_0x72.html +globals_defs_0x73.html +globals_defs_0x74.html +globals_defs_0x75.html +globals_defs_0x77.html +tabs.css +tab_b.gif +tab_l.gif +tab_r.gif diff --git a/Target/Source/third_party/uip/doc/html/index.html b/Target/Source/third_party/uip/doc/html/index.html new file mode 100644 index 00000000..4ac2a69c --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/index.html @@ -0,0 +1,8 @@ + + +uIP 1.0 + + + + + diff --git a/Target/Source/third_party/uip/doc/html/main.html b/Target/Source/third_party/uip/doc/html/main.html new file mode 100644 index 00000000..8fcb26b9 --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/main.html @@ -0,0 +1,421 @@ + + +uIP 1.0: The uIP TCP/IP stack + + + + + +

The uIP TCP/IP stack

+

+

Author:
Adam Dunkels, http://www.sics.se/~adam/
+The uIP TCP/IP stack is intended to make it possible to communicate using the TCP/IP protocol suite even on small 8-bit micro-controllers. Despite being small and simple, uIP do not require their peers to have complex, full-size stacks, but can communicate with peers running a similarly light-weight stack. The code size is on the order of a few kilobytes and RAM usage can be configured to be as low as a few hundred bytes.

+uIP can be found at the uIP web page: http://www.sics.se/~adam/uip/

+

See also:
Application programs

+Compile-time configuration options

+Run-time configuration functions

+Initialization functions

+Device driver interface and variables used by device drivers

+uIP functions called from application programs (see below) and the protosockets API and their underlying protothreads

+

+Introduction

+With the success of the Internet, the TCP/IP protocol suite has become a global standard for communication. TCP/IP is the underlying protocol used for web page transfers, e-mail transmissions, file transfers, and peer-to-peer networking over the Internet. For embedded systems, being able to run native TCP/IP makes it possible to connect the system directly to an intranet or even the global Internet. Embedded devices with full TCP/IP support will be first-class network citizens, thus being able to fully communicate with other hosts in the network.

+Traditional TCP/IP implementations have required far too much resources both in terms of code size and memory usage to be useful in small 8 or 16-bit systems. Code size of a few hundred kilobytes and RAM requirements of several hundreds of kilobytes have made it impossible to fit the full TCP/IP stack into systems with a few tens of kilobytes of RAM and room for less than 100 kilobytes of code.

+The uIP implementation is designed to have only the absolute minimal set of features needed for a full TCP/IP stack. It can only handle a single network interface and contains the IP, ICMP, UDP and TCP protocols. uIP is written in the C programming language.

+Many other TCP/IP implementations for small systems assume that the embedded device always will communicate with a full-scale TCP/IP implementation running on a workstation-class machine. Under this assumption, it is possible to remove certain TCP/IP mechanisms that are very rarely used in such situations. Many of those mechanisms are essential, however, if the embedded device is to communicate with another equally limited device, e.g., when running distributed peer-to-peer services and protocols. uIP is designed to be RFC compliant in order to let the embedded devices to act as first-class network citizens. The uIP TCP/IP implementation that is not tailored for any specific application.

+TCP/IP Communication

+The full TCP/IP suite consists of numerous protocols, ranging from low level protocols such as ARP which translates IP addresses to MAC addresses, to application level protocols such as SMTP that is used to transfer e-mail. The uIP is mostly concerned with the TCP and IP protocols and upper layer protocols will be referred to as "the application". Lower layer protocols are often implemented in hardware or firmware and will be referred to as "the network device" that are controlled by the network device driver.

+TCP provides a reliable byte stream to the upper layer protocols. It breaks the byte stream into appropriately sized segments and each segment is sent in its own IP packet. The IP packets are sent out on the network by the network device driver. If the destination is not on the physically connected network, the IP packet is forwarded onto another network by a router that is situated between the two networks. If the maximum packet size of the other network is smaller than the size of the IP packet, the packet is fragmented into smaller packets by the router. If possible, the size of the TCP segments are chosen so that fragmentation is minimized. The final recipient of the packet will have to reassemble any fragmented IP packets before they can be passed to higher layers.

+The formal requirements for the protocols in the TCP/IP stack is specified in a number of RFC documents published by the Internet Engineering Task Force, IETF. Each of the protocols in the stack is defined in one more RFC documents and RFC1122 collects all requirements and updates the previous RFCs.

+The RFC1122 requirements can be divided into two categories; those that deal with the host to host communication and those that deal with communication between the application and the networking stack. An example of the first kind is "A TCP MUST be able to receive a TCP option in any segment" and an example of the second kind is "There MUST be a mechanism for reporting soft TCP error conditions to the application." A TCP/IP implementation that violates requirements of the first kind may not be able to communicate with other TCP/IP implementations and may even lead to network failures. Violation of the second kind of requirements will only affect the communication within the system and will not affect host-to-host communication.

+In uIP, all RFC requirements that affect host-to-host communication are implemented. However, in order to reduce code size, we have removed certain mechanisms in the interface between the application and the stack, such as the soft error reporting mechanism and dynamically configurable type-of-service bits for TCP connections. Since there are only very few applications that make use of those features they can be removed without loss of generality.

+Main Control Loop

+The uIP stack can be run either as a task in a multitasking system, or as the main program in a singletasking system. In both cases, the main control loop does two things repeatedly:

+

    +
  • Check if a packet has arrived from the network.
  • Check if a periodic timeout has occurred.
+

+If a packet has arrived, the input handler function, uip_input(), should be invoked by the main control loop. The input handler function will never block, but will return at once. When it returns, the stack or the application for which the incoming packet was intended may have produced one or more reply packets which should be sent out. If so, the network device driver should be called to send out these packets.

+Periodic timeouts are used to drive TCP mechanisms that depend on timers, such as delayed acknowledgments, retransmissions and round-trip time estimations. When the main control loop infers that the periodic timer should fire, it should invoke the timer handler function uip_periodic(). Because the TCP/IP stack may perform retransmissions when dealing with a timer event, the network device driver should called to send out the packets that may have been produced.

+Architecture Specific Functions

+uIP requires a few functions to be implemented specifically for the architecture on which uIP is intended to run. These functions should be hand-tuned for the particular architecture, but generic C implementations are given as part of the uIP distribution.

+Checksum Calculation

+The TCP and IP protocols implement a checksum that covers the data and header portions of the TCP and IP packets. Since the calculation of this checksum is made over all bytes in every packet being sent and received it is important that the function that calculates the checksum is efficient. Most often, this means that the checksum calculation must be fine-tuned for the particular architecture on which the uIP stack runs.

+While uIP includes a generic checksum function, it also leaves it open for an architecture specific implementation of the two functions uip_ipchksum() and uip_tcpchksum(). The checksum calculations in those functions can be written in highly optimized assembler rather than generic C code.

+32-bit Arithmetic

+The TCP protocol uses 32-bit sequence numbers, and a TCP implementation will have to do a number of 32-bit additions as part of the normal protocol processing. Since 32-bit arithmetic is not natively available on many of the platforms for which uIP is intended, uIP leaves the 32-bit additions to be implemented by the architecture specific module and does not make use of any 32-bit arithmetic in the main code base.

+While uIP implements a generic 32-bit addition, there is support for having an architecture specific implementation of the uip_add32() function.

+Memory Management

+In the architectures for which uIP is intended, RAM is the most scarce resource. With only a few kilobytes of RAM available for the TCP/IP stack to use, mechanisms used in traditional TCP/IP cannot be directly applied.

+The uIP stack does not use explicit dynamic memory allocation. Instead, it uses a single global buffer for holding packets and has a fixed table for holding connection state. The global packet buffer is large enough to contain one packet of maximum size. When a packet arrives from the network, the device driver places it in the global buffer and calls the TCP/IP stack. If the packet contains data, the TCP/IP stack will notify the corresponding application. Because the data in the buffer will be overwritten by the next incoming packet, the application will either have to act immediately on the data or copy the data into a secondary buffer for later processing. The packet buffer will not be overwritten by new packets before the application has processed the data. Packets that arrive when the application is processing the data must be queued, either by the network device or by the device driver. Most single-chip Ethernet controllers have on-chip buffers that are large enough to contain at least 4 maximum sized Ethernet frames. Devices that are handled by the processor, such as RS-232 ports, can copy incoming bytes to a separate buffer during application processing. If the buffers are full, the incoming packet is dropped. This will cause performance degradation, but only when multiple connections are running in parallel. This is because uIP advertises a very small receiver window, which means that only a single TCP segment will be in the network per connection.

+In uIP, the same global packet buffer that is used for incoming packets is also used for the TCP/IP headers of outgoing data. If the application sends dynamic data, it may use the parts of the global packet buffer that are not used for headers as a temporary storage buffer. To send the data, the application passes a pointer to the data as well as the length of the data to the stack. The TCP/IP headers are written into the global buffer and once the headers have been produced, the device driver sends the headers and the application data out on the network. The data is not queued for retransmissions. Instead, the application will have to reproduce the data if a retransmission is necessary.

+The total amount of memory usage for uIP depends heavily on the applications of the particular device in which the implementations are to be run. The memory configuration determines both the amount of traffic the system should be able to handle and the maximum amount of simultaneous connections. A device that will be sending large e-mails while at the same time running a web server with highly dynamic web pages and multiple simultaneous clients, will require more RAM than a simple Telnet server. It is possible to run the uIP implementation with as little as 200 bytes of RAM, but such a configuration will provide extremely low throughput and will only allow a small number of simultaneous connections.

+Application Program Interface (API)

+The Application Program Interface (API) defines the way the application program interacts with the TCP/IP stack. The most commonly used API for TCP/IP is the BSD socket API which is used in most Unix systems and has heavily influenced the Microsoft Windows WinSock API. Because the socket API uses stop-and-wait semantics, it requires support from an underlying multitasking operating system. Since the overhead of task management, context switching and allocation of stack space for the tasks might be too high in the intended uIP target architectures, the BSD socket interface is not suitable for our purposes.

+uIP provides two APIs to programmers: protosockets, a BSD socket-like API without the overhead of full multi-threading, and a "raw" event-based API that is nore low-level than protosockets but uses less memory.

+

See also:
Protosockets library

+Protothreads

+

+The uIP raw API

+The "raw" uIP API uses an event driven interface where the application is invoked in response to certain events. An application running on top of uIP is implemented as a C function that is called by uIP in response to certain events. uIP calls the application when data is received, when data has been successfully delivered to the other end of the connection, when a new connection has been set up, or when data has to be retransmitted. The application is also periodically polled for new data. The application program provides only one callback function; it is up to the application to deal with mapping different network services to different ports and connections. Because the application is able to act on incoming data and connection requests as soon as the TCP/IP stack receives the packet, low response times can be achieved even in low-end systems.

+uIP is different from other TCP/IP stacks in that it requires help from the application when doing retransmissions. Other TCP/IP stacks buffer the transmitted data in memory until the data is known to be successfully delivered to the remote end of the connection. If the data needs to be retransmitted, the stack takes care of the retransmission without notifying the application. With this approach, the data has to be buffered in memory while waiting for an acknowledgment even if the application might be able to quickly regenerate the data if a retransmission has to be made.

+In order to reduce memory usage, uIP utilizes the fact that the application may be able to regenerate sent data and lets the application take part in retransmissions. uIP does not keep track of packet contents after they have been sent by the device driver, and uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, it calls the application with a flag set indicating that a retransmission is required. The application checks the retransmission flag and produces the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefore the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

+Application Events

+The application must be implemented as a C function, UIP_APPCALL(), that uIP calls whenever an event occurs. Each event has a corresponding test function that is used to distinguish between different events. The functions are implemented as C macros that will evaluate to either zero or non-zero. Note that certain events can happen in conjunction with each other (i.e., new data can arrive at the same time as data is acknowledged).

+The Connection Pointer

+When the application is called by uIP, the global variable uip_conn is set to point to the uip_conn structure for the connection that currently is handled, and is called the "current connection". The fields in the uip_conn structure for the current connection can be used, e.g., to distinguish between different services, or to check to which IP address the connection is connected. One typical use would be to inspect the uip_conn->lport (the local TCP port number) to decide which service the connection should provide. For instance, an application might decide to act as an HTTP server if the value of uip_conn->lport is equal to 80 and act as a TELNET server if the value is 23.

+Receiving Data

+If the uIP test function uip_newdata() is non-zero, the remote host of the connection has sent new data. The uip_appdata pointer point to the actual data. The size of the data is obtained through the uIP function uip_datalen(). The data is not buffered by uIP, but will be overwritten after the application function returns, and the application will therefor have to either act directly on the incoming data, or by itself copy the incoming data into a buffer for later processing.

+Sending Data

+When sending data, uIP adjusts the length of the data sent by the application according to the available buffer space and the current TCP window advertised by the receiver. The amount of buffer space is dictated by the memory configuration. It is therefore possible that all data sent from the application does not arrive at the receiver, and the application may use the uip_mss() function to see how much data that actually will be sent by the stack.

+The application sends data by using the uIP function uip_send(). The uip_send() function takes two arguments; a pointer to the data to be sent and the length of the data. If the application needs RAM space for producing the actual data that should be sent, the packet buffer (pointed to by the uip_appdata pointer) can be used for this purpose.

+The application can send only one chunk of data at a time on a connection and it is not possible to call uip_send() more than once per application invocation; only the data from the last call will be sent.

+Retransmitting Data

+Retransmissions are driven by the periodic TCP timer. Every time the periodic timer is invoked, the retransmission timer for each connection is decremented. If the timer reaches zero, a retransmission should be made. As uIP does not keep track of packet contents after they have been sent by the device driver, uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, the application function is called with the uip_rexmit() flag set, indicating that a retransmission is required.

+The application must check the uip_rexmit() flag and produce the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefor, the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

+Closing Connections

+The application closes the current connection by calling the uip_close() during an application call. This will cause the connection to be cleanly closed. In order to indicate a fatal error, the application might want to abort the connection and does so by calling the uip_abort() function.

+If the connection has been closed by the remote end, the test function uip_closed() is true. The application may then do any necessary cleanups.

+Reporting Errors

+There are two fatal errors that can happen to a connection, either that the connection was aborted by the remote host, or that the connection retransmitted the last data too many times and has been aborted. uIP reports this by calling the application function. The application can use the two test functions uip_aborted() and uip_timedout() to test for those error conditions.

+Polling

+When a connection is idle, uIP polls the application every time the periodic timer fires. The application uses the test function uip_poll() to check if it is being polled by uIP.

+The polling event has two purposes. The first is to let the application periodically know that a connection is idle, which allows the application to close connections that have been idle for too long. The other purpose is to let the application send new data that has been produced. The application can only send data when invoked by uIP, and therefore the poll event is the only way to send data on an otherwise idle connection.

+Listening Ports

+uIP maintains a list of listening TCP ports. A new port is opened for listening with the uip_listen() function. When a connection request arrives on a listening port, uIP creates a new connection and calls the application function. The test function uip_connected() is true if the application was invoked because a new connection was created.

+The application can check the lport field in the uip_conn structure to check to which port the new connection was connected.

+Opening Connections

+New connections can be opened from within uIP by the function uip_connect(). This function allocates a new connection and sets a flag in the connection state which will open a TCP connection to the specified IP address and port the next time the connection is polled by uIP. The uip_connect() function returns a pointer to the uip_conn structure for the new connection. If there are no free connection slots, the function returns NULL.

+The function uip_ipaddr() may be used to pack an IP address into the two element 16-bit array used by uIP to represent IP addresses.

+Two examples of usage are shown below. The first example shows how to open a connection to TCP port 8080 of the remote end of the current connection. If there are not enough TCP connection slots to allow a new connection to be opened, the uip_connect() function returns NULL and the current connection is aborted by uip_abort().

+

void connect_example1_app(void) {
+   if(uip_connect(uip_conn->ripaddr, HTONS(8080)) == NULL) {
+      uip_abort();
+   }
+}   
+

+The second example shows how to open a new connection to a specific IP address. No error checks are made in this example.

+

void connect_example2(void) {
+   u16_t ipaddr[2];
+
+   uip_ipaddr(ipaddr, 192,168,0,1);
+   uip_connect(ipaddr, HTONS(8080));
+}
+

+Examples

+This section presents a number of very simple uIP applications. The uIP code distribution contains several more complex applications.

+A Very Simple Application

+This first example shows a very simple application. The application listens for incoming connections on port 1234. When a connection has been established, the application replies to all data sent to it by saying "ok"

+The implementation of this application is shown below. The application is initialized with the function called example1_init() and the uIP callback function is called example1_app(). For this application, the configuration variable UIP_APPCALL should be defined to be example1_app().

+

void example1_init(void) {
+   uip_listen(HTONS(1234));
+}
+
+void example1_app(void) {
+   if(uip_newdata() || uip_rexmit()) {
+      uip_send("ok\n", 3);
+   }
+}
+

+The initialization function calls the uIP function uip_listen() to register a listening port. The actual application function example1_app() uses the test functions uip_newdata() and uip_rexmit() to determine why it was called. If the application was called because the remote end has sent it data, it responds with an "ok". If the application function was called because data was lost in the network and has to be retransmitted, it also sends an "ok". Note that this example actually shows a complete uIP application. It is not required for an application to deal with all types of events such as uip_connected() or uip_timedout().

+A More Advanced Application

+This second example is slightly more advanced than the previous one, and shows how the application state field in the uip_conn structure is used.

+This application is similar to the first application in that it listens to a port for incoming connections and responds to data sent to it with a single "ok". The big difference is that this application prints out a welcoming "Welcome!" message when the connection has been established.

+This seemingly small change of operation makes a big difference in how the application is implemented. The reason for the increase in complexity is that if data should be lost in the network, the application must know what data to retransmit. If the "Welcome!" message was lost, the application must retransmit the welcome and if one of the "ok" messages is lost, the application must send a new "ok".

+The application knows that as long as the "Welcome!" message has not been acknowledged by the remote host, it might have been dropped in the network. But once the remote host has sent an acknowledgment back, the application can be sure that the welcome has been received and knows that any lost data must be an "ok" message. Thus the application can be in either of two states: either in the WELCOME-SENT state where the "Welcome!" has been sent but not acknowledged, or in the WELCOME-ACKED state where the "Welcome!" has been acknowledged.

+When a remote host connects to the application, the application sends the "Welcome!" message and sets it's state to WELCOME-SENT. When the welcome message is acknowledged, the application moves to the WELCOME-ACKED state. If the application receives any new data from the remote host, it responds by sending an "ok" back.

+If the application is requested to retransmit the last message, it looks at in which state the application is. If the application is in the WELCOME-SENT state, it sends a "Welcome!" message since it knows that the previous welcome message hasn't been acknowledged. If the application is in the WELCOME-ACKED state, it knows that the last message was an "ok" message and sends such a message.

+The implementation of this application is seen below. This configuration settings for the application is follows after its implementation.

+

struct example2_state {
+   enum {WELCOME_SENT, WELCOME_ACKED} state;
+};
+
+void example2_init(void) {
+   uip_listen(HTONS(2345));
+}
+
+void example2_app(void) {
+   struct example2_state *s;
+
+   s = (struct example2_state *)uip_conn->appstate;
+   
+   if(uip_connected()) {
+      s->state = WELCOME_SENT;
+      uip_send("Welcome!\n", 9);
+      return;
+   } 
+
+   if(uip_acked() && s->state == WELCOME_SENT) {
+      s->state = WELCOME_ACKED;
+   }
+
+   if(uip_newdata()) {
+      uip_send("ok\n", 3);
+   }
+
+   if(uip_rexmit()) {
+      switch(s->state) {
+      case WELCOME_SENT:
+         uip_send("Welcome!\n", 9);
+         break;
+      case WELCOME_ACKED:
+         uip_send("ok\n", 3);
+         break;
+      }
+   }
+}
+

+The configuration for the application:

+

#define UIP_APPCALL       example2_app
+#define UIP_APPSTATE_SIZE sizeof(struct example2_state)
+

+Differentiating Between Applications

+If the system should run multiple applications, one technique to differentiate between them is to use the TCP port number of either the remote end or the local end of the connection. The example below shows how the two examples above can be combined into one application.

+

void example3_init(void) {
+   example1_init();
+   example2_init();   
+}
+
+void example3_app(void) {
+   switch(uip_conn->lport) {
+   case HTONS(1234):
+      example1_app();
+      break;
+   case HTONS(2345):
+      example2_app();
+      break;
+   }
+}
+

+Utilizing TCP Flow Control

+This example shows a simple application that connects to a host, sends an HTTP request for a file and downloads it to a slow device such a disk drive. This shows how to use the flow control functions of uIP.

+

void example4_init(void) {
+   u16_t ipaddr[2];
+   uip_ipaddr(ipaddr, 192,168,0,1);
+   uip_connect(ipaddr, HTONS(80));
+}
+
+void example4_app(void) {
+   if(uip_connected() || uip_rexmit()) {
+      uip_send("GET /file HTTP/1.0\r\nServer:192.186.0.1\r\n\r\n",
+               48);
+      return;
+   }
+
+   if(uip_newdata()) {
+      device_enqueue(uip_appdata, uip_datalen());
+      if(device_queue_full()) {
+         uip_stop();
+      }
+   }
+
+   if(uip_poll() && uip_stopped()) {
+      if(!device_queue_full()) {
+         uip_restart();
+      }
+   }
+}
+

+When the connection has been established, an HTTP request is sent to the server. Since this is the only data that is sent, the application knows that if it needs to retransmit any data, it is that request that should be retransmitted. It is therefore possible to combine these two events as is done in the example.

+When the application receives new data from the remote host, it sends this data to the device by using the function device_enqueue(). It is important to note that this example assumes that this function copies the data into its own buffers. The data in the uip_appdata buffer will be overwritten by the next incoming packet.

+If the device's queue is full, the application stops the data from the remote host by calling the uIP function uip_stop(). The application can then be sure that it will not receive any new data until uip_restart() is called. The application polling event is used to check if the device's queue is no longer full and if so, the data flow is restarted with uip_restart().

+A Simple Web Server

+This example shows a very simple file server application that listens to two ports and uses the port number to determine which file to send. If the files are properly formatted, this simple application can be used as a web server with static pages. The implementation follows.

+

struct example5_state {
+   char *dataptr;
+   unsigned int dataleft;
+};
+
+void example5_init(void) {
+   uip_listen(HTONS(80));
+   uip_listen(HTONS(81));
+}
+
+void example5_app(void) {
+   struct example5_state *s;
+   s = (struct example5_state)uip_conn->appstate;
+   
+   if(uip_connected()) {
+      switch(uip_conn->lport) {
+      case HTONS(80):
+         s->dataptr = data_port_80;
+         s->dataleft = datalen_port_80;
+         break;
+      case HTONS(81):
+         s->dataptr = data_port_81;
+         s->dataleft = datalen_port_81;
+         break;
+      }
+      uip_send(s->dataptr, s->dataleft);
+      return;      
+   }
+
+   if(uip_acked()) {
+      if(s->dataleft < uip_mss()) {
+         uip_close();
+         return;
+      }
+      s->dataptr += uip_conn->len;
+      s->dataleft -= uip_conn->len;
+      uip_send(s->dataptr, s->dataleft);      
+   }
+}
+

+The application state consists of a pointer to the data that should be sent and the size of the data that is left to send. When a remote host connects to the application, the local port number is used to determine which file to send. The first chunk of data is sent using uip_send(). uIP makes sure that no more than MSS bytes of data is actually sent, even though s->dataleft may be larger than the MSS.

+The application is driven by incoming acknowledgments. When data has been acknowledged, new data can be sent. If there is no more data to send, the connection is closed using uip_close().

+Structured Application Program Design

+When writing larger programs using uIP it is useful to be able to utilize the uIP API in a structured way. The following example provides a structured design that has showed itself to be useful for writing larger protocol implementations than the previous examples showed here. The program is divided into an uIP event handler function that calls seven application handler functions that process new data, act on acknowledged data, send new data, deal with connection establishment or closure events and handle errors. The functions are called newdata(), acked(), senddata(), connected(), closed(), aborted(), and timedout(), and needs to be written specifically for the protocol that is being implemented.

+The uIP event handler function is shown below.

+

void example6_app(void) {
+  if(uip_aborted()) {
+    aborted();
+  }
+  if(uip_timedout()) {
+    timedout();
+  }
+  if(uip_closed()) {
+    closed();
+  }
+  if(uip_connected()) {
+    connected();
+  }
+  if(uip_acked()) {
+    acked();
+  }
+  if(uip_newdata()) {
+    newdata();
+  }
+  if(uip_rexmit() ||
+     uip_newdata() ||
+     uip_acked() ||
+     uip_connected() ||
+     uip_poll()) {
+    senddata();
+  }
+}
+

+The function starts with dealing with any error conditions that might have happened by checking if uip_aborted() or uip_timedout() are true. If so, the appropriate error function is called. Also, if the connection has been closed, the closed() function is called to the it deal with the event.

+Next, the function checks if the connection has just been established by checking if uip_connected() is true. The connected() function is called and is supposed to do whatever needs to be done when the connection is established, such as intializing the application state for the connection. Since it may be the case that data should be sent out, the senddata() function is called to deal with the outgoing data.

+The following very simple application serves as an example of how the application handler functions might look. This application simply waits for any data to arrive on the connection, and responds to the data by sending out the message "Hello world!". To illustrate how to develop an application state machine, this message is sent in two parts, first the "Hello" part and then the "world!" part.

+

#define STATE_WAITING 0
+#define STATE_HELLO   1
+#define STATE_WORLD   2
+
+struct example6_state {
+  u8_t state;
+  char *textptr;
+  int  textlen;
+};
+
+static void aborted(void) {}
+static void timedout(void) {}
+static void closed(void) {}
+
+static void connected(void) {
+  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
+
+  s->state   = STATE_WAITING;
+  s->textlen = 0;
+}
+
+static void newdata(void) {
+  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
+
+  if(s->state == STATE_WAITING) {
+    s->state   = STATE_HELLO;
+    s->textptr = "Hello ";
+    s->textlen = 6;
+  }
+}
+
+static void acked(void) {
+  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
+  
+  s->textlen -= uip_conn->len;
+  s->textptr += uip_conn->len;
+  if(s->textlen == 0) {
+    switch(s->state) {
+    case STATE_HELLO:
+      s->state   = STATE_WORLD;
+      s->textptr = "world!\n";
+      s->textlen = 7;
+      break;
+    case STATE_WORLD:
+      uip_close();
+      break;
+    }
+  }
+}
+
+static void senddata(void) {
+  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
+
+  if(s->textlen > 0) {
+    uip_send(s->textptr, s->textlen);
+  }
+}
+

+The application state consists of a "state" variable, a "textptr" pointer to a text message and the "textlen" length of the text message. The "state" variable can be either "STATE_WAITING", meaning that the application is waiting for data to arrive from the network, "STATE_HELLO", in which the application is sending the "Hello" part of the message, or "STATE_WORLD", in which the application is sending the "world!" message.

+The application does not handle errors or connection closing events, and therefore the aborted(), timedout() and closed() functions are implemented as empty functions.

+The connected() function will be called when a connection has been established, and in this case sets the "state" variable to be "STATE_WAITING" and the "textlen" variable to be zero, indicating that there is no message to be sent out.

+When new data arrives from the network, the newdata() function will be called by the event handler function. The newdata() function will check if the connection is in the "STATE_WAITING" state, and if so switches to the "STATE_HELLO" state and registers a 6 byte long "Hello " message with the connection. This message will later be sent out by the senddata() function.

+The acked() function is called whenever data that previously was sent has been acknowleged by the receiving host. This acked() function first reduces the amount of data that is left to send, by subtracting the length of the previously sent data (obtained from "uip_conn->len") from the "textlen" variable, and also adjusts the "textptr" pointer accordingly. It then checks if the "textlen" variable now is zero, which indicates that all data now has been successfully received, and if so changes application state. If the application was in the "STATE_HELLO" state, it switches state to "STATE_WORLD" and sets up a 7 byte "world!\n" message to be sent. If the application was in the "STATE_WORLD" state, it closes the connection.

+Finally, the senddata() function takes care of actually sending the data that is to be sent. It is called by the event handler function when new data has been received, when data has been acknowledged, when a new connection has been established, when the connection is polled because of inactivity, or when a retransmission should be made. The purpose of the senddata() function is to optionally format the data that is to be sent, and to call the uip_send() function to actually send out the data. In this particular example, the function simply calls uip_send() with the appropriate arguments if data is to be sent, after checking if data should be sent out or not as indicated by the "textlen" variable.

+It is important to note that the senddata() function never should affect the application state; this should only be done in the acked() and newdata() functions.

+Protocol Implementations

+The protocols in the TCP/IP protocol suite are designed in a layered fashion where each protocol performs a specific function and the interactions between the protocol layers are strictly defined. While the layered approach is a good way to design protocols, it is not always the best way to implement them. In uIP, the protocol implementations are tightly coupled in order to save code space.

+This section gives detailed information on the specific protocol implementations in uIP.

+IP --- Internet Protocol

+When incoming packets are processed by uIP, the IP layer is the first protocol that examines the packet. The IP layer does a few simple checks such as if the destination IP address of the incoming packet matches any of the local IP address and verifies the IP header checksum. Since there are no IP options that are strictly required and because they are very uncommon, any IP options in received packets are dropped.

+IP Fragment Reassembly

+IP fragment reassembly is implemented using a separate buffer that holds the packet to be reassembled. An incoming fragment is copied into the right place in the buffer and a bit map is used to keep track of which fragments have been received. Because the first byte of an IP fragment is aligned on an 8-byte boundary, the bit map requires a small amount of memory. When all fragments have been reassembled, the resulting IP packet is passed to the transport layer. If all fragments have not been received within a specified time frame, the packet is dropped.

+The current implementation only has a single buffer for holding packets to be reassembled, and therefore does not support simultaneous reassembly of more than one packet. Since fragmented packets are uncommon, this ought to be a reasonable decision. Extending the implementation to support multiple buffers would be straightforward, however.

+Broadcasts and Multicasts

+IP has the ability to broadcast and multicast packets on the local network. Such packets are addressed to special broadcast and multicast addresses. Broadcast is used heavily in many UDP based protocols such as the Microsoft Windows file-sharing SMB protocol. Multicast is primarily used in protocols used for multimedia distribution such as RTP. TCP is a point-to-point protocol and does not use broadcast or multicast packets. uIP current supports broadcast packets as well as sending multicast packets. Joining multicast groups (IGMP) and receiving non-local multicast packets is not currently supported.

+ICMP --- Internet Control Message Protocol

+The ICMP protocol is used for reporting soft error conditions and for querying host parameters. Its main use is, however, the echo mechanism which is used by the "ping" program.

+The ICMP implementation in uIP is very simple as itis restricted to only implement ICMP echo messages. Replies to echo messages are constructed by simply swapping the source and destination IP addresses of incoming echo requests and rewriting the ICMP header with the Echo-Reply message type. The ICMP checksum is adjusted using standard techniques (see RFC1624).

+Since only the ICMP echo message is implemented, there is no support for Path MTU discovery or ICMP redirect messages. Neither of these is strictly required for interoperability; they are performance enhancement mechanisms.

+TCP --- Transmission Control Protocol

+The TCP implementation in uIP is driven by incoming packets and timer events. Incoming packets are parsed by TCP and if the packet contains data that is to be delivered to the application, the application is invoked by the means of the application function call. If the incoming packet acknowledges previously sent data, the connection state is updated and the application is informed, allowing it to send out new data.

+Listening Connections

+TCP allows a connection to listen for incoming connection requests. In uIP, a listening connection is identified by the 16-bit port number and incoming connection requests are checked against the list of listening connections. This list of listening connections is dynamic and can be altered by the applications in the system.

+Sliding Window

+Most TCP implementations use a sliding window mechanism for sending data. Multiple data segments are sent in succession without waiting for an acknowledgment for each segment.

+The sliding window algorithm uses a lot of 32-bit operations and because 32-bit arithmetic is fairly expensive on most 8-bit CPUs, uIP does not implement it. Also, uIP does not buffer sent packets and a sliding window implementation that does not buffer sent packets will have to be supported by a complex application layer. Instead, uIP allows only a single TCP segment per connection to be unacknowledged at any given time.

+It is important to note that even though most TCP implementations use the sliding window algorithm, it is not required by the TCP specifications. Removing the sliding window mechanism does not affect interoperability in any way.

+Round-Trip Time Estimation

+TCP continuously estimates the current Round-Trip Time (RTT) of every active connection in order to find a suitable value for the retransmission time-out.

+The RTT estimation in uIP is implemented using TCP's periodic timer. Each time the periodic timer fires, it increments a counter for each connection that has unacknowledged data in the network. When an acknowledgment is received, the current value of the counter is used as a sample of the RTT. The sample is used together with Van Jacobson's standard TCP RTT estimation function to calculate an estimate of the RTT. Karn's algorithm is used to ensure that retransmissions do not skew the estimates.

+Retransmissions

+Retransmissions are driven by the periodic TCP timer. Every time the periodic timer is invoked, the retransmission timer for each connection is decremented. If the timer reaches zero, a retransmission should be made.

+As uIP does not keep track of packet contents after they have been sent by the device driver, uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, it calls the application with a flag set indicating that a retransmission is required. The application checks the retransmission flag and produces the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefore the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

+Flow Control

+The purpose of TCP's flow control mechanisms is to allow communication between hosts with wildly varying memory dimensions. In each TCP segment, the sender of the segment indicates its available buffer space. A TCP sender must not send more data than the buffer space indicated by the receiver.

+In uIP, the application cannot send more data than the receiving host can buffer. And application cannot send more data than the amount of bytes it is allowed to send by the receiving host. If the remote host cannot accept any data at all, the stack initiates the zero window probing mechanism.

+Congestion Control

+The congestion control mechanisms limit the number of simultaneous TCP segments in the network. The algorithms used for congestion control are designed to be simple to implement and require only a few lines of code.

+Since uIP only handles one in-flight TCP segment per connection, the amount of simultaneous segments cannot be further limited, thus the congestion control mechanisms are not needed.

+Urgent Data

+TCP's urgent data mechanism provides an application-to-application notification mechanism, which can be used by an application to mark parts of the data stream as being more urgent than the normal stream. It is up to the receiving application to interpret the meaning of the urgent data.

+In many TCP implementations, including the BSD implementation, the urgent data feature increases the complexity of the implementation because it requires an asynchronous notification mechanism in an otherwise synchronous API. As uIP already use an asynchronous event based API, the implementation of the urgent data feature does not lead to increased complexity.

+Performance

+In TCP/IP implementations for high-end systems, processing time is dominated by the checksum calculation loop, the operation of copying packet data and context switching. Operating systems for high-end systems often have multiple protection domains for protecting kernel data from user processes and user processes from each other. Because the TCP/IP stack is run in the kernel, data has to be copied between the kernel space and the address space of the user processes and a context switch has to be performed once the data has been copied. Performance can be enhanced by combining the copy operation with the checksum calculation. Because high-end systems usually have numerous active connections, packet demultiplexing is also an expensive operation.

+A small embedded device does not have the necessary processing power to have multiple protection domains and the power to run a multitasking operating system. Therefore there is no need to copy data between the TCP/IP stack and the application program. With an event based API there is no context switch between the TCP/IP stack and the applications.

+In such limited systems, the TCP/IP processing overhead is dominated by the copying of packet data from the network device to host memory, and checksum calculation. Apart from the checksum calculation and copying, the TCP processing done for an incoming packet involves only updating a few counters and flags before handing the data over to the application. Thus an estimate of the CPU overhead of our TCP/IP implementations can be obtained by calculating the amount of CPU cycles needed for the checksum calculation and copying of a maximum sized packet.

+The Impact of Delayed Acknowledgments

+Most TCP receivers implement the delayed acknowledgment algorithm for reducing the number of pure acknowledgment packets sent. A TCP receiver using this algorithm will only send acknowledgments for every other received segment. If no segment is received within a specific time-frame, an acknowledgment is sent. The time-frame can be as high as 500 ms but typically is 200 ms.

+A TCP sender such as uIP that only handles a single outstanding TCP segment will interact poorly with the delayed acknowledgment algorithm. Because the receiver only receives a single segment at a time, it will wait as much as 500 ms before an acknowledgment is sent. This means that the maximum possible throughput is severely limited by the 500 ms idle time.

+Thus the maximum throughput equation when sending data from uIP will be $p = s / (t + t_d)$ where $s$ is the segment size and $t_d$ is the delayed acknowledgment timeout, which typically is between 200 and 500 ms. With a segment size of 1000 bytes, a round-trip time of 40 ms and a delayed acknowledgment timeout of 200 ms, the maximum throughput will be 4166 bytes per second. With the delayed acknowledgment algorithm disabled at the receiver, the maximum throughput would be 25000 bytes per second.

+It should be noted, however, that since small systems running uIP are not very likely to have large amounts of data to send, the delayed acknowledgmen t throughput degradation of uIP need not be very severe. Small amounts of data sent by such a system will not span more than a single TCP segment, and would therefore not be affected by the throughput degradation anyway.

+The maximum throughput when uIP acts as a receiver is not affected by the delayed acknowledgment throughput degradation.


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/modules.html b/Target/Source/third_party/uip/doc/html/modules.html new file mode 100644 index 00000000..419784ad --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/modules.html @@ -0,0 +1,51 @@ + + +uIP 1.0: Module Index + + + + + +

uIP 1.0 Modules

Here is a list of all modules: +
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  + +doxygen 1.4.6
+ + diff --git a/Target/Source/third_party/uip/doc/html/tab_b.gif b/Target/Source/third_party/uip/doc/html/tab_b.gif new file mode 100644 index 00000000..0d623483 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/tab_b.gif differ diff --git a/Target/Source/third_party/uip/doc/html/tab_l.gif b/Target/Source/third_party/uip/doc/html/tab_l.gif new file mode 100644 index 00000000..9b1e6337 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/tab_l.gif differ diff --git a/Target/Source/third_party/uip/doc/html/tab_r.gif b/Target/Source/third_party/uip/doc/html/tab_r.gif new file mode 100644 index 00000000..ce9dd9f5 Binary files /dev/null and b/Target/Source/third_party/uip/doc/html/tab_r.gif differ diff --git a/Target/Source/third_party/uip/doc/html/tabs.css b/Target/Source/third_party/uip/doc/html/tabs.css new file mode 100644 index 00000000..8442b9bf --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/Target/Source/third_party/uip/doc/html/tree.html b/Target/Source/third_party/uip/doc/html/tree.html new file mode 100644 index 00000000..cab947ce --- /dev/null +++ b/Target/Source/third_party/uip/doc/html/tree.html @@ -0,0 +1,223 @@ + + + + + + + TreeView + + + + + +
+

uIP 1.0

+
+

o*The uIP TCP/IP stack

+

o+File List

+ +

o+Data Structures

+ +

o+Class Hierarchy

+ +

o*Data Fields

+

o+Modules

+ +

o+Examples

+ +

\*Globals

+
+
+ + diff --git a/Target/Source/third_party/uip/doc/mobisys2003.pdf b/Target/Source/third_party/uip/doc/mobisys2003.pdf new file mode 100644 index 00000000..f5e7425d Binary files /dev/null and b/Target/Source/third_party/uip/doc/mobisys2003.pdf differ diff --git a/Target/Source/third_party/uip/doc/pt-doc.txt b/Target/Source/third_party/uip/doc/pt-doc.txt new file mode 100644 index 00000000..5dbceef5 --- /dev/null +++ b/Target/Source/third_party/uip/doc/pt-doc.txt @@ -0,0 +1,173 @@ +/** +\defgroup pt Protothreads + +Protothreads are a type of lightweight stackless threads designed for +severly memory constrained systems such as deeply embedded systems or +sensor network nodes. Protothreads provides linear code execution for +event-driven systems implemented in C. Protothreads can be used with +or without an RTOS. + +Protothreads are a extremely lightweight, stackless type of threads +that provides a blocking context on top of an event-driven system, +without the overhead of per-thread stacks. The purpose of protothreads +is to implement sequential flow of control without complex state +machines or full multi-threading. Protothreads provides conditional +blocking inside C functions. + +The advantage of protothreads over a purely event-driven approach is +that protothreads provides a sequential code structure that allows for +blocking functions. In purely event-driven systems, blocking must be +implemented by manually breaking the function into two pieces - one +for the piece of code before the blocking call and one for the code +after the blocking call. This makes it hard to use control structures +such as if() conditionals and while() loops. + +The advantage of protothreads over ordinary threads is that a +protothread do not require a separate stack. In memory constrained +systems, the overhead of allocating multiple stacks can consume large +amounts of the available memory. In contrast, each protothread only +requires between two and twelve bytes of state, depending on the +architecture. + +\note Because protothreads do not save the stack context across a +blocking call, local variables are not preserved when the +protothread blocks. This means that local variables should be used +with utmost care - if in doubt, do not use local variables inside a +protothread! + + +Main features: + + - No machine specific code - the protothreads library is pure C + + - Does not use error-prone functions such as longjmp() + + - Very small RAM overhead - only two bytes per protothread + + - Can be used with or without an OS + + - Provides blocking wait without full multi-threading or + stack-switching + +Examples applications: + + - Memory constrained systems + + - Event-driven protocol stacks + + - Deeply embedded systems + + - Sensor network nodes + +The protothreads API consists of four basic operations: +initialization: PT_INIT(), execution: PT_BEGIN(), conditional +blocking: PT_WAIT_UNTIL() and exit: PT_END(). On top of these, two +convenience functions are built: reversed condition blocking: +PT_WAIT_WHILE() and protothread blocking: PT_WAIT_THREAD(). + +\sa \ref pt "Protothreads API documentation" + +The protothreads library is released under a BSD-style license that +allows for both non-commercial and commercial usage. The only +requirement is that credit is given. + +\section authors Authors + +The protothreads library was written by Adam Dunkels +with support from Oliver Schmidt . + +\section pt-desc Protothreads + +Protothreads are a extremely lightweight, stackless threads that +provides a blocking context on top of an event-driven system, without +the overhead of per-thread stacks. The purpose of protothreads is to +implement sequential flow of control without using complex state +machines or full multi-threading. Protothreads provides conditional +blocking inside a C function. + +In memory constrained systems, such as deeply embedded systems, +traditional multi-threading may have a too large memory overhead. In +traditional multi-threading, each thread requires its own stack, that +typically is over-provisioned. The stacks may use large parts of the +available memory. + +The main advantage of protothreads over ordinary threads is that +protothreads are very lightweight: a protothread does not require its +own stack. Rather, all protothreads run on the same stack and context +switching is done by stack rewinding. This is advantageous in memory +constrained systems, where a stack for a thread might use a large part +of the available memory. A protothread only requires only two bytes of +memory per protothread. Moreover, protothreads are implemented in pure +C and do not require any machine-specific assembler code. + +A protothread runs within a single C function and cannot span over +other functions. A protothread may call normal C functions, but cannot +block inside a called function. Blocking inside nested function calls +is instead made by spawning a separate protothread for each +potentially blocking function. The advantage of this approach is that +blocking is explicit: the programmer knows exactly which functions +that block that which functions the never blocks. + +Protothreads are similar to asymmetric co-routines. The main +difference is that co-routines uses a separate stack for each +co-routine, whereas protothreads are stackless. The most similar +mechanism to protothreads are Python generators. These are also +stackless constructs, but have a different purpose. Protothreads +provides blocking contexts inside a C function, whereas Python +generators provide multiple exit points from a generator function. + +\section pt-autovars Local variables + +\note +Because protothreads do not save the stack context across a blocking +call, local variables are not preserved when the protothread +blocks. This means that local variables should be used with utmost +care - if in doubt, do not use local variables inside a protothread! + +\section pt-scheduling Scheduling + +A protothread is driven by repeated calls to the function in which the +protothread is running. Each time the function is called, the +protothread will run until it blocks or exits. Thus the scheduling of +protothreads is done by the application that uses protothreads. + +\section pt-impl Implementation + +Protothreads are implemented using \ref lc "local continuations". A +local continuation represents the current state of execution at a +particular place in the program, but does not provide any call history +or local variables. A local continuation can be set in a specific +function to capture the state of the function. After a local +continuation has been set can be resumed in order to restore the state +of the function at the point where the local continuation was set. + + +Local continuations can be implemented in a variety of ways: + + -# by using machine specific assembler code, + -# by using standard C constructs, or + -# by using compiler extensions. + +The first way works by saving and restoring the processor state, +except for stack pointers, and requires between 16 and 32 bytes of +memory per protothread. The exact amount of memory required depends on +the architecture. + +The standard C implementation requires only two bytes of state per +protothread and utilizes the C switch() statement in a non-obvious way +that is similar to Duff's device. This implementation does, however, +impose a slight restriction to the code that uses protothreads in that +the code cannot use switch() statements itself. + +Certain compilers has C extensions that can be used to implement +protothreads. GCC supports label pointers that can be used for this +purpose. With this implementation, protothreads require 4 bytes of RAM +per protothread. + +@{ + + +*/ + +/** @} */ + diff --git a/Target/Source/third_party/uip/doc/sicslogo.pdf b/Target/Source/third_party/uip/doc/sicslogo.pdf new file mode 100644 index 00000000..239a1bff Binary files /dev/null and b/Target/Source/third_party/uip/doc/sicslogo.pdf differ diff --git a/Target/Source/third_party/uip/doc/uip-code-style.c b/Target/Source/third_party/uip/doc/uip-code-style.c new file mode 100644 index 00000000..f4b8f879 --- /dev/null +++ b/Target/Source/third_party/uip/doc/uip-code-style.c @@ -0,0 +1,118 @@ +/* This is the official code style of uIP. */ + +/** + * \defgroup codestyle Coding style + * + * This is how a Doxygen module is documented - start with a \defgroup + * Doxygen keyword at the beginning of the file to define a module, + * and use the \addtogroup Doxygen keyword in all other files that + * belong to the same module. Typically, the \defgroup is placed in + * the .h file and \addtogroup in the .c file. + * + * @{ + */ + +/** + * \file + * A brief description of what this file is. + * \author + * Adam Dunkels + * + * Every file that is part of a documented module has to have + * a \file block, else it will not show up in the Doxygen + * "Modules" * section. + */ + +/* Single line comments look like this. */ + +/* + * Multi-line comments look like this. Comments should prefferably be + * full sentences, filled to look like real paragraphs. + */ + +#include "uip.h" + +/* + * Make sure that non-global variables are all maked with the static + * keyword. This keeps the size of the symbol table down. + */ +static int flag; + +/* + * All variables and functions that are visible outside of the file + * should have the module name prepended to them. This makes it easy + * to know where to look for function and variable definitions. + * + * Put dividers (a single-line comment consisting only of dashes) + * between functions. + */ +/*---------------------------------------------------------------------------*/ +/** + * \brief Use Doxygen documentation for functions. + * \param c Briefly describe all parameters. + * \return Briefly describe the return value. + * \retval 0 Functions that return a few specified values + * \retval 1 can use the \retval keyword instead of \return. + * + * Put a longer description of what the function does + * after the preamble of Doxygen keywords. + * + * This template should always be used to document + * functions. The text following the introduction is used + * as the function's documentation. + * + * Function prototypes have the return type on one line, + * the name and arguments on one line (with no space + * between the name and the first parenthesis), followed + * by a single curly bracket on its own line. + */ +void +code_style_example_function(void) +{ + /* + * Local variables should always be declared at the start of the + * function. + */ + int i; /* Use short variable names for loop + counters. */ + + /* + * There should be no space between keywords and the first + * parenthesis. There should be spaces around binary operators, no + * spaces between a unary operator and its operand. + * + * Curly brackets following for(), if(), do, and case() statements + * should follow the statement on the same line. + */ + for(i = 0; i < 10; ++i) { + /* + * Always use full blocks (curly brackets) after if(), for(), and + * while() statements, even though the statement is a single line + * of code. This makes the code easier to read and modifications + * are less error prone. + */ + if(i == c) { + return c; /* No parentesis around return values. */ + } else { /* The else keyword is placed inbetween + curly brackers, always on its own line. */ + c++; + } + } +} +/*---------------------------------------------------------------------------*/ +/* + * Static (non-global) functions do not need Doxygen comments. The + * name should not be prepended with the module name - doing so would + * create confusion. + */ +static void +an_example_function(void) +{ + +} +/*---------------------------------------------------------------------------*/ + +/* The following stuff ends the \defgroup block at the beginning of + the file: */ + +/** @} */ diff --git a/Target/Source/third_party/uip/doc/uip-code-style.txt b/Target/Source/third_party/uip/doc/uip-code-style.txt new file mode 100644 index 00000000..3cf54eb0 --- /dev/null +++ b/Target/Source/third_party/uip/doc/uip-code-style.txt @@ -0,0 +1,3 @@ +/** + \example uip-code-style.c + */ diff --git a/Target/Source/third_party/uip/doc/uip-doc.txt b/Target/Source/third_party/uip/doc/uip-doc.txt new file mode 100644 index 00000000..7afe0094 --- /dev/null +++ b/Target/Source/third_party/uip/doc/uip-doc.txt @@ -0,0 +1,1180 @@ + + +/** +\mainpage The uIP TCP/IP stack +\author Adam Dunkels, http://www.sics.se/~adam/ + +The uIP TCP/IP stack is intended to make it possible to communicate +using the TCP/IP protocol suite even on small 8-bit +micro-controllers. Despite being small and simple, uIP do not require +their peers to have complex, full-size stacks, but can communicate +with peers running a similarly light-weight stack. The code size is on +the order of a few kilobytes and RAM usage can be configured to be as +low as a few hundred bytes. + +uIP can be found at the uIP web page: http://www.sics.se/~adam/uip/ + +\sa \ref apps "Application programs" +\sa \ref uipopt "Compile-time configuration options" +\sa \ref uipconffunc "Run-time configuration functions" +\sa \ref uipinit "Initialization functions" +\sa \ref uipdevfunc "Device driver interface" and + \ref uipdrivervars "variables used by device drivers" +\sa \ref uipappfunc "uIP functions called from application programs" +(see below) and the \ref psock "protosockets API" and their underlying +\ref pt "protothreads" + +\section uIPIntroduction Introduction + +With the success of the Internet, the TCP/IP protocol suite has become +a global standard for communication. TCP/IP is the underlying protocol +used for web page transfers, e-mail transmissions, file transfers, and +peer-to-peer networking over the Internet. For embedded systems, being +able to run native TCP/IP makes it possible to connect the system +directly to an intranet or even the global Internet. Embedded devices +with full TCP/IP support will be first-class network citizens, thus +being able to fully communicate with other hosts in the network. + +Traditional TCP/IP implementations have required far too much +resources both in terms of code size and memory usage to be useful in +small 8 or 16-bit systems. Code size of a few hundred kilobytes and +RAM requirements of several hundreds of kilobytes have made it +impossible to fit the full TCP/IP stack into systems with a few tens +of kilobytes of RAM and room for less than 100 kilobytes of +code. + +The uIP implementation is designed to have only the absolute minimal +set of features needed for a full TCP/IP stack. It can only handle a +single network interface and contains the IP, ICMP, UDP and TCP +protocols. uIP is written in the C programming language. + +Many other TCP/IP implementations for small systems assume that the +embedded device always will communicate with a full-scale TCP/IP +implementation running on a workstation-class machine. Under this +assumption, it is possible to remove certain TCP/IP mechanisms that +are very rarely used in such situations. Many of those mechanisms are +essential, however, if the embedded device is to communicate with +another equally limited device, e.g., when running distributed +peer-to-peer services and protocols. uIP is designed to be RFC +compliant in order to let the embedded devices to act as first-class +network citizens. The uIP TCP/IP implementation that is not tailored +for any specific application. + + +\section tcpip TCP/IP Communication + +The full TCP/IP suite consists of numerous protocols, ranging from low +level protocols such as ARP which translates IP addresses to MAC +addresses, to application level protocols such as SMTP that is used to +transfer e-mail. The uIP is mostly concerned with the TCP and IP +protocols and upper layer protocols will be referred to as "the +application". Lower layer protocols are often implemented in hardware +or firmware and will be referred to as "the network device" that are +controlled by the network device driver. + +TCP provides a reliable byte stream to the upper layer protocols. It +breaks the byte stream into appropriately sized segments and each +segment is sent in its own IP packet. The IP packets are sent out on +the network by the network device driver. If the destination is not on +the physically connected network, the IP packet is forwarded onto +another network by a router that is situated between the two +networks. If the maximum packet size of the other network is smaller +than the size of the IP packet, the packet is fragmented into smaller +packets by the router. If possible, the size of the TCP segments are +chosen so that fragmentation is minimized. The final recipient of the +packet will have to reassemble any fragmented IP packets before they +can be passed to higher layers. + +The formal requirements for the protocols in the TCP/IP stack is +specified in a number of RFC documents published by the Internet +Engineering Task Force, IETF. Each of the protocols in the stack is +defined in one more RFC documents and RFC1122 collects +all requirements and updates the previous RFCs. + +The RFC1122 requirements can be divided into two categories; those +that deal with the host to host communication and those that deal with +communication between the application and the networking stack. An +example of the first kind is "A TCP MUST be able to receive a TCP +option in any segment" and an example of the second kind is "There +MUST be a mechanism for reporting soft TCP error conditions to the +application." A TCP/IP implementation that violates requirements of +the first kind may not be able to communicate with other TCP/IP +implementations and may even lead to network failures. Violation of +the second kind of requirements will only affect the communication +within the system and will not affect host-to-host communication. + +In uIP, all RFC requirements that affect host-to-host communication +are implemented. However, in order to reduce code size, we have +removed certain mechanisms in the interface between the application +and the stack, such as the soft error reporting mechanism and +dynamically configurable type-of-service bits for TCP +connections. Since there are only very few applications that make use +of those features they can be removed without loss of generality. + +\section mainloop Main Control Loop + +The uIP stack can be run either as a task in a multitasking system, or +as the main program in a singletasking system. In both cases, the main +control loop does two things repeatedly: + + - Check if a packet has arrived from the network. + - Check if a periodic timeout has occurred. + +If a packet has arrived, the input handler function, uip_input(), +should be invoked by the main control loop. The input handler function +will never block, but will return at once. When it returns, the stack +or the application for which the incoming packet was intended may have +produced one or more reply packets which should be sent out. If so, +the network device driver should be called to send out these packets. + +Periodic timeouts are used to drive TCP mechanisms that depend on +timers, such as delayed acknowledgments, retransmissions and +round-trip time estimations. When the main control loop infers that +the periodic timer should fire, it should invoke the timer handler +function uip_periodic(). Because the TCP/IP stack may perform +retransmissions when dealing with a timer event, the network device +driver should called to send out the packets that may have been produced. + +\section arch Architecture Specific Functions + +uIP requires a few functions to be implemented specifically for the +architecture on which uIP is intended to run. These functions should +be hand-tuned for the particular architecture, but generic C +implementations are given as part of the uIP distribution. + +\subsection checksums Checksum Calculation + +The TCP and IP protocols implement a checksum that covers the data and +header portions of the TCP and IP packets. Since the calculation of +this checksum is made over all bytes in every packet being sent and +received it is important that the function that calculates the +checksum is efficient. Most often, this means that the checksum +calculation must be fine-tuned for the particular architecture on +which the uIP stack runs. + +While uIP includes a generic checksum function, it also leaves it open +for an architecture specific implementation of the two functions +uip_ipchksum() and uip_tcpchksum(). The checksum calculations in those +functions can be written in highly optimized assembler rather than +generic C code. + +\subsection longarith 32-bit Arithmetic + +The TCP protocol uses 32-bit sequence numbers, and a TCP +implementation will have to do a number of 32-bit additions as part of +the normal protocol processing. Since 32-bit arithmetic is not +natively available on many of the platforms for which uIP is intended, +uIP leaves the 32-bit additions to be implemented by the architecture +specific module and does not make use of any 32-bit arithmetic in the +main code base. + +While uIP implements a generic 32-bit addition, there is support for +having an architecture specific implementation of the uip_add32() +function. + + +\section memory Memory Management + +In the architectures for which uIP is intended, RAM is the most +scarce resource. With only a few kilobytes of RAM available for the +TCP/IP stack to use, mechanisms used in traditional TCP/IP cannot be +directly applied. + + +The uIP stack does not use explicit dynamic memory +allocation. Instead, it uses a single global buffer for holding +packets and has a fixed table for holding connection state. The global +packet buffer is large enough to contain one packet of maximum +size. When a packet arrives from the network, the device driver places +it in the global buffer and calls the TCP/IP stack. If the packet +contains data, the TCP/IP stack will notify the corresponding +application. Because the data in the buffer will be overwritten by the +next incoming packet, the application will either have to act +immediately on the data or copy the data into a secondary buffer for +later processing. The packet buffer will not be overwritten by new +packets before the application has processed the data. Packets that +arrive when the application is processing the data must be queued, +either by the network device or by the device driver. Most single-chip +Ethernet controllers have on-chip buffers that are large enough to +contain at least 4 maximum sized Ethernet frames. Devices that are +handled by the processor, such as RS-232 ports, can copy incoming +bytes to a separate buffer during application processing. If the +buffers are full, the incoming packet is dropped. This will cause +performance degradation, but only when multiple connections are +running in parallel. This is because uIP advertises a very small +receiver window, which means that only a single TCP segment will be in +the network per connection. + +In uIP, the same global packet buffer that is used for incoming +packets is also used for the TCP/IP headers of outgoing data. If the +application sends dynamic data, it may use the parts of the global +packet buffer that are not used for headers as a temporary storage +buffer. To send the data, the application passes a pointer to the data +as well as the length of the data to the stack. The TCP/IP headers are +written into the global buffer and once the headers have been +produced, the device driver sends the headers and the application data +out on the network. The data is not queued for +retransmissions. Instead, the application will have to reproduce the +data if a retransmission is necessary. + +The total amount of memory usage for uIP depends heavily on the +applications of the particular device in which the implementations are +to be run. The memory configuration determines both the amount of +traffic the system should be able to handle and the maximum amount of +simultaneous connections. A device that will be sending large e-mails +while at the same time running a web server with highly dynamic web +pages and multiple simultaneous clients, will require more RAM than a +simple Telnet server. It is possible to run the uIP implementation +with as little as 200 bytes of RAM, but such a configuration will +provide extremely low throughput and will only allow a small number of +simultaneous connections. + +\section api Application Program Interface (API) + + +The Application Program Interface (API) defines the way the +application program interacts with the TCP/IP stack. The most commonly +used API for TCP/IP is the BSD socket API which is used in most Unix +systems and has heavily influenced the Microsoft Windows WinSock +API. Because the socket API uses stop-and-wait semantics, it requires +support from an underlying multitasking operating system. Since the +overhead of task management, context switching and allocation of stack +space for the tasks might be too high in the intended uIP target +architectures, the BSD socket interface is not suitable for our +purposes. + +uIP provides two APIs to programmers: protosockets, a BSD socket-like +API without the overhead of full multi-threading, and a "raw" +event-based API that is nore low-level than protosockets but uses less +memory. + +\sa \ref psock +\sa \ref pt + + +\subsection rawapi The uIP raw API + +The "raw" uIP API uses an event driven interface where the application is +invoked in response to certain events. An application running on top +of uIP is implemented as a C function that is called by uIP in +response to certain events. uIP calls the application when data is +received, when data has been successfully delivered to the other end +of the connection, when a new connection has been set up, or when data +has to be retransmitted. The application is also periodically polled +for new data. The application program provides only one callback +function; it is up to the application to deal with mapping different +network services to different ports and connections. Because the +application is able to act on incoming data and connection requests as +soon as the TCP/IP stack receives the packet, low response times can +be achieved even in low-end systems. + +uIP is different from other TCP/IP stacks in that it requires help +from the application when doing retransmissions. Other TCP/IP stacks +buffer the transmitted data in memory until the data is known to be +successfully delivered to the remote end of the connection. If the +data needs to be retransmitted, the stack takes care of the +retransmission without notifying the application. With this approach, +the data has to be buffered in memory while waiting for an +acknowledgment even if the application might be able to quickly +regenerate the data if a retransmission has to be made. + +In order to reduce memory usage, uIP utilizes the fact that the +application may be able to regenerate sent data and lets the +application take part in retransmissions. uIP does not keep track of +packet contents after they have been sent by the device driver, and +uIP requires that the application takes an active part in performing +the retransmission. When uIP decides that a segment should be +retransmitted, it calls the application with a flag set indicating +that a retransmission is required. The application checks the +retransmission flag and produces the same data that was previously +sent. From the application's standpoint, performing a retransmission +is not different from how the data originally was sent. Therefore the +application can be written in such a way that the same code is used +both for sending data and retransmitting data. Also, it is important +to note that even though the actual retransmission operation is +carried out by the application, it is the responsibility of the stack +to know when the retransmission should be made. Thus the complexity of +the application does not necessarily increase because it takes an +active part in doing retransmissions. + +\subsubsection appevents Application Events + +The application must be implemented as a C function, UIP_APPCALL(), +that uIP calls whenever an event occurs. Each event has a corresponding +test function that is used to distinguish between different +events. The functions are implemented as C macros that will evaluate +to either zero or non-zero. Note that certain events can happen in +conjunction with each other (i.e., new data can arrive at the same +time as data is acknowledged). + +\subsubsection connstate The Connection Pointer + +When the application is called by uIP, the global variable uip_conn is +set to point to the uip_conn structure for the connection that +currently is handled, and is called the "current connection". The +fields in the uip_conn structure for the current connection can be +used, e.g., to distinguish between different services, or to check to +which IP address the connection is connected. One typical use would be +to inspect the uip_conn->lport (the local TCP port number) to decide +which service the connection should provide. For instance, an +application might decide to act as an HTTP server if the value of +uip_conn->lport is equal to 80 and act as a TELNET server if the value +is 23. + +\subsubsection recvdata Receiving Data + +If the uIP test function uip_newdata() is non-zero, the remote host of +the connection has sent new data. The uip_appdata pointer point to the +actual data. The size of the data is obtained through the uIP function +uip_datalen(). The data is not buffered by uIP, but will be +overwritten after the application function returns, and the +application will therefor have to either act directly on the incoming +data, or by itself copy the incoming data into a buffer for later +processing. + +\subsubsection senddata Sending Data + +When sending data, uIP adjusts the length of the data sent by the +application according to the available buffer space and the current +TCP window advertised by the receiver. The amount of buffer space is +dictated by the memory configuration. It is therefore possible that +all data sent from the application does not arrive at the receiver, +and the application may use the uip_mss() function to see how much +data that actually will be sent by the stack. + +The application sends data by using the uIP function uip_send(). The +uip_send() function takes two arguments; a pointer to the data to be +sent and the length of the data. If the application needs RAM space +for producing the actual data that should be sent, the packet buffer +(pointed to by the uip_appdata pointer) can be used for this purpose. + +The application can send only one chunk of data at a time on a +connection and it is not possible to call uip_send() more than once +per application invocation; only the data from the last call will be +sent. + +\subsubsection rexmitdata Retransmitting Data + +Retransmissions are driven by the periodic TCP timer. Every time the +periodic timer is invoked, the retransmission timer for each +connection is decremented. If the timer reaches zero, a retransmission +should be made. As uIP does not keep track of packet contents after they have +been sent by the device driver, uIP requires that the +application takes an active part in performing the +retransmission. When uIP decides that a segment should be +retransmitted, the application function is called with the +uip_rexmit() flag set, indicating that a retransmission is +required. + +The application must check the uip_rexmit() flag and produce the same +data that was previously sent. From the application's standpoint, +performing a retransmission is not different from how the data +originally was sent. Therefor, the application can be written in such +a way that the same code is used both for sending data and +retransmitting data. Also, it is important to note that even though +the actual retransmission operation is carried out by the application, +it is the responsibility of the stack to know when the retransmission +should be made. Thus the complexity of the application does not +necessarily increase because it takes an active part in doing +retransmissions. + +\subsubsection closing Closing Connections + +The application closes the current connection by calling the +uip_close() during an application call. This will cause the connection +to be cleanly closed. In order to indicate a fatal error, the +application might want to abort the connection and does so by calling +the uip_abort() function. + +If the connection has been closed by the remote end, the test function +uip_closed() is true. The application may then do any necessary +cleanups. + +\subsubsection errors Reporting Errors + +There are two fatal errors that can happen to a connection, either +that the connection was aborted by the remote host, or that the +connection retransmitted the last data too many times and has been +aborted. uIP reports this by calling the application function. The +application can use the two test functions uip_aborted() and +uip_timedout() to test for those error conditions. + +\subsubsection polling Polling + +When a connection is idle, uIP polls the application every time the +periodic timer fires. The application uses the test function +uip_poll() to check if it is being polled by uIP. + +The polling event has two purposes. The first is to let the +application periodically know that a connection is idle, which allows +the application to close connections that have been idle for too +long. The other purpose is to let the application send new data that +has been produced. The application can only send data when invoked by +uIP, and therefore the poll event is the only way to send data on an +otherwise idle connection. + +\subsubsection listen Listening Ports + +uIP maintains a list of listening TCP ports. A new port is opened for +listening with the uip_listen() function. When a connection request +arrives on a listening port, uIP creates a new connection and calls +the application function. The test function uip_connected() is true if +the application was invoked because a new connection was created. + +The application can check the lport field in the uip_conn structure to +check to which port the new connection was connected. + +\subsubsection connect Opening Connections + +New connections can be opened from within +uIP by the function uip_connect(). This function +allocates a new connection and sets a flag in the connection state +which will open a TCP connection to the specified IP address and port +the next time the connection is polled by uIP. The uip_connect() +function returns +a pointer to the uip_conn structure for the new +connection. If there are no free connection slots, the function +returns NULL. + +The function uip_ipaddr() may be used to pack an IP address into the +two element 16-bit array used by uIP to represent IP addresses. + +Two examples of usage are shown below. The first example shows how to +open a connection to TCP port 8080 of the remote end of the current +connection. If there are not enough TCP connection slots to allow a +new connection to be opened, the uip_connect() function returns NULL +and the current connection is aborted by uip_abort(). + +\code +void connect_example1_app(void) { + if(uip_connect(uip_conn->ripaddr, HTONS(8080)) == NULL) { + uip_abort(); + } +} +\endcode + +The second example shows how to open a new connection to a specific IP +address. No error checks are made in this example. + +\code +void connect_example2(void) { + u16_t ipaddr[2]; + + uip_ipaddr(ipaddr, 192,168,0,1); + uip_connect(ipaddr, HTONS(8080)); +} +\endcode + +\section examples Examples + +This section presents a number of very simple uIP applications. The +uIP code distribution contains several more complex applications. + +\subsection example1 A Very Simple Application + +This first example shows a very simple application. The application +listens for incoming connections on port 1234. When a connection has +been established, the application replies to all data sent to it by +saying "ok" + +The implementation of this application is shown below. The application +is initialized with the function called example1_init() and the uIP +callback function is called example1_app(). For this application, the +configuration variable UIP_APPCALL should be defined to be +example1_app(). + +\code +void example1_init(void) { + uip_listen(HTONS(1234)); +} + +void example1_app(void) { + if(uip_newdata() || uip_rexmit()) { + uip_send("ok\n", 3); + } +} +\endcode + +The initialization function calls the uIP function uip_listen() to +register a listening port. The actual application function +example1_app() uses the test functions uip_newdata() and uip_rexmit() +to determine why it was called. If the application was called because +the remote end has sent it data, it responds with an "ok". If the +application function was called because data was lost in the network +and has to be retransmitted, it also sends an "ok". Note that this +example actually shows a complete uIP application. It is not required +for an application to deal with all types of events such as +uip_connected() or uip_timedout(). + +\subsection example2 A More Advanced Application + +This second example is slightly more advanced than the previous one, +and shows how the application state field in the uip_conn structure is +used. + +This application is similar to the first application in that it +listens to a port for incoming connections and responds to data sent +to it with a single "ok". The big difference is that this application +prints out a welcoming "Welcome!" message when the connection has been +established. + +This seemingly small change of operation makes a big difference in how +the application is implemented. The reason for the increase in +complexity is that if data should be lost in the network, the +application must know what data to retransmit. If the "Welcome!" +message was lost, the application must retransmit the welcome and if +one of the "ok" messages is lost, the application must send a new +"ok". + +The application knows that as long as the "Welcome!" message has not +been acknowledged by the remote host, it might have been dropped in +the network. But once the remote host has sent an acknowledgment +back, the application can be sure that the welcome has been received +and knows that any lost data must be an "ok" message. Thus the +application can be in either of two states: either in the WELCOME-SENT +state where the "Welcome!" has been sent but not acknowledged, or in +the WELCOME-ACKED state where the "Welcome!" has been acknowledged. + +When a remote host connects to the application, the application sends +the "Welcome!" message and sets it's state to WELCOME-SENT. When the +welcome message is acknowledged, the application moves to the +WELCOME-ACKED state. If the application receives any new data from the +remote host, it responds by sending an "ok" back. + +If the application is requested to retransmit the last message, it +looks at in which state the application is. If the application is in +the WELCOME-SENT state, it sends a "Welcome!" message since it +knows that the previous welcome message hasn't been acknowledged. If +the application is in the WELCOME-ACKED state, it knows that the last +message was an "ok" message and sends such a message. + +The implementation of this application is seen below. This +configuration settings for the application is follows after its +implementation. + +\code +struct example2_state { + enum {WELCOME_SENT, WELCOME_ACKED} state; +}; + +void example2_init(void) { + uip_listen(HTONS(2345)); +} + +void example2_app(void) { + struct example2_state *s; + + s = (struct example2_state *)uip_conn->appstate; + + if(uip_connected()) { + s->state = WELCOME_SENT; + uip_send("Welcome!\n", 9); + return; + } + + if(uip_acked() && s->state == WELCOME_SENT) { + s->state = WELCOME_ACKED; + } + + if(uip_newdata()) { + uip_send("ok\n", 3); + } + + if(uip_rexmit()) { + switch(s->state) { + case WELCOME_SENT: + uip_send("Welcome!\n", 9); + break; + case WELCOME_ACKED: + uip_send("ok\n", 3); + break; + } + } +} +\endcode + +The configuration for the application: + +\code +#define UIP_APPCALL example2_app +#define UIP_APPSTATE_SIZE sizeof(struct example2_state) +\endcode + +\subsection example3 Differentiating Between Applications + +If the system should run multiple applications, one technique to +differentiate between them is to use the TCP port number of either the +remote end or the local end of the connection. The example below shows +how the two examples above can be combined into one application. + +\code +void example3_init(void) { + example1_init(); + example2_init(); +} + +void example3_app(void) { + switch(uip_conn->lport) { + case HTONS(1234): + example1_app(); + break; + case HTONS(2345): + example2_app(); + break; + } +} +\endcode + +\subsection example4 Utilizing TCP Flow Control + +This example shows a simple application that connects to a host, sends +an HTTP request for a file and downloads it to a slow device such a +disk drive. This shows how to use the flow control functions of uIP. + +\code +void example4_init(void) { + u16_t ipaddr[2]; + uip_ipaddr(ipaddr, 192,168,0,1); + uip_connect(ipaddr, HTONS(80)); +} + +void example4_app(void) { + if(uip_connected() || uip_rexmit()) { + uip_send("GET /file HTTP/1.0\r\nServer:192.186.0.1\r\n\r\n", + 48); + return; + } + + if(uip_newdata()) { + device_enqueue(uip_appdata, uip_datalen()); + if(device_queue_full()) { + uip_stop(); + } + } + + if(uip_poll() && uip_stopped()) { + if(!device_queue_full()) { + uip_restart(); + } + } +} +\endcode + +When the connection has been established, an HTTP request is sent to +the server. Since this is the only data that is sent, the application +knows that if it needs to retransmit any data, it is that request that +should be retransmitted. It is therefore possible to combine these two +events as is done in the example. + +When the application receives new data from the remote host, it sends +this data to the device by using the function device_enqueue(). It is +important to note that this example assumes that this function copies +the data into its own buffers. The data in the uip_appdata buffer will +be overwritten by the next incoming packet. + +If the device's queue is full, the application stops the data from the +remote host by calling the uIP function uip_stop(). The application +can then be sure that it will not receive any new data until +uip_restart() is called. The application polling event is used to +check if the device's queue is no longer full and if so, the data flow +is restarted with uip_restart(). + +\subsection example5 A Simple Web Server + +This example shows a very simple file server application that listens +to two ports and uses the port number to determine which file to +send. If the files are properly formatted, this simple application can +be used as a web server with static pages. The implementation follows. + +\code +struct example5_state { + char *dataptr; + unsigned int dataleft; +}; + +void example5_init(void) { + uip_listen(HTONS(80)); + uip_listen(HTONS(81)); +} + +void example5_app(void) { + struct example5_state *s; + s = (struct example5_state)uip_conn->appstate; + + if(uip_connected()) { + switch(uip_conn->lport) { + case HTONS(80): + s->dataptr = data_port_80; + s->dataleft = datalen_port_80; + break; + case HTONS(81): + s->dataptr = data_port_81; + s->dataleft = datalen_port_81; + break; + } + uip_send(s->dataptr, s->dataleft); + return; + } + + if(uip_acked()) { + if(s->dataleft < uip_mss()) { + uip_close(); + return; + } + s->dataptr += uip_conn->len; + s->dataleft -= uip_conn->len; + uip_send(s->dataptr, s->dataleft); + } +} +\endcode + +The application state consists of a pointer to the data that should be +sent and the size of the data that is left to send. When a remote host +connects to the application, the local port number is used to +determine which file to send. The first chunk of data is sent using +uip_send(). uIP makes sure that no more than MSS bytes of data is +actually sent, even though s->dataleft may be larger than the MSS. + +The application is driven by incoming acknowledgments. When data has +been acknowledged, new data can be sent. If there is no more data to +send, the connection is closed using uip_close(). + +\subsection example6 Structured Application Program Design + +When writing larger programs using uIP it is useful to be able to +utilize the uIP API in a structured way. The following example +provides a structured design that has showed itself to be useful for +writing larger protocol implementations than the previous examples +showed here. The program is divided into an uIP event handler function +that calls seven application handler functions that process new data, +act on acknowledged data, send new data, deal with connection +establishment or closure events and handle errors. The functions are +called newdata(), acked(), senddata(), connected(), closed(), +aborted(), and timedout(), and needs to be written specifically for +the protocol that is being implemented. + +The uIP event handler function is shown below. + +\code +void example6_app(void) { + if(uip_aborted()) { + aborted(); + } + if(uip_timedout()) { + timedout(); + } + if(uip_closed()) { + closed(); + } + if(uip_connected()) { + connected(); + } + if(uip_acked()) { + acked(); + } + if(uip_newdata()) { + newdata(); + } + if(uip_rexmit() || + uip_newdata() || + uip_acked() || + uip_connected() || + uip_poll()) { + senddata(); + } +} +\endcode + +The function starts with dealing with any error conditions that might +have happened by checking if uip_aborted() or uip_timedout() are +true. If so, the appropriate error function is called. Also, if the +connection has been closed, the closed() function is called to the it +deal with the event. + +Next, the function checks if the connection has just been established +by checking if uip_connected() is true. The connected() function is +called and is supposed to do whatever needs to be done when the +connection is established, such as intializing the application state +for the connection. Since it may be the case that data should be sent +out, the senddata() function is called to deal with the outgoing data. + +The following very simple application serves as an example of how the +application handler functions might look. This application simply +waits for any data to arrive on the connection, and responds to the +data by sending out the message "Hello world!". To illustrate how to +develop an application state machine, this message is sent in two +parts, first the "Hello" part and then the "world!" part. + +\code +#define STATE_WAITING 0 +#define STATE_HELLO 1 +#define STATE_WORLD 2 + +struct example6_state { + u8_t state; + char *textptr; + int textlen; +}; + +static void aborted(void) {} +static void timedout(void) {} +static void closed(void) {} + +static void connected(void) { + struct example6_state *s = (struct example6_state *)uip_conn->appstate; + + s->state = STATE_WAITING; + s->textlen = 0; +} + +static void newdata(void) { + struct example6_state *s = (struct example6_state *)uip_conn->appstate; + + if(s->state == STATE_WAITING) { + s->state = STATE_HELLO; + s->textptr = "Hello "; + s->textlen = 6; + } +} + +static void acked(void) { + struct example6_state *s = (struct example6_state *)uip_conn->appstate; + + s->textlen -= uip_conn->len; + s->textptr += uip_conn->len; + if(s->textlen == 0) { + switch(s->state) { + case STATE_HELLO: + s->state = STATE_WORLD; + s->textptr = "world!\n"; + s->textlen = 7; + break; + case STATE_WORLD: + uip_close(); + break; + } + } +} + +static void senddata(void) { + struct example6_state *s = (struct example6_state *)uip_conn->appstate; + + if(s->textlen > 0) { + uip_send(s->textptr, s->textlen); + } +} +\endcode + +The application state consists of a "state" variable, a "textptr" +pointer to a text message and the "textlen" length of the text +message. The "state" variable can be either "STATE_WAITING", meaning +that the application is waiting for data to arrive from the network, +"STATE_HELLO", in which the application is sending the "Hello" part of +the message, or "STATE_WORLD", in which the application is sending the +"world!" message. + +The application does not handle errors or connection closing events, +and therefore the aborted(), timedout() and closed() functions are +implemented as empty functions. + +The connected() function will be called when a connection has been +established, and in this case sets the "state" variable to be +"STATE_WAITING" and the "textlen" variable to be zero, indicating that +there is no message to be sent out. + +When new data arrives from the network, the newdata() function will be +called by the event handler function. The newdata() function will +check if the connection is in the "STATE_WAITING" state, and if so +switches to the "STATE_HELLO" state and registers a 6 byte long "Hello +" message with the connection. This message will later be sent out by +the senddata() function. + +The acked() function is called whenever data that previously was sent +has been acknowleged by the receiving host. This acked() function +first reduces the amount of data that is left to send, by subtracting +the length of the previously sent data (obtained from "uip_conn->len") +from the "textlen" variable, and also adjusts the "textptr" pointer +accordingly. It then checks if the "textlen" variable now is zero, +which indicates that all data now has been successfully received, and +if so changes application state. If the application was in the +"STATE_HELLO" state, it switches state to "STATE_WORLD" and sets up a +7 byte "world!\n" message to be sent. If the application was in the +"STATE_WORLD" state, it closes the connection. + +Finally, the senddata() function takes care of actually sending the +data that is to be sent. It is called by the event handler function +when new data has been received, when data has been acknowledged, when +a new connection has been established, when the connection is polled +because of inactivity, or when a retransmission should be made. The +purpose of the senddata() function is to optionally format the data +that is to be sent, and to call the uip_send() function to actually +send out the data. In this particular example, the function simply +calls uip_send() with the appropriate arguments if data is to be sent, +after checking if data should be sent out or not as indicated by the +"textlen" variable. + +It is important to note that the senddata() function never should +affect the application state; this should only be done in the acked() +and newdata() functions. + +\section protoimpl Protocol Implementations + +The protocols in the TCP/IP protocol suite are designed in a layered +fashion where each protocol performs a specific function and the +interactions between the protocol layers are strictly defined. While +the layered approach is a good way to design protocols, it is not +always the best way to implement them. In uIP, the protocol +implementations are tightly coupled in order to save code space. + +This section gives detailed information on the specific protocol +implementations in uIP. + +\subsection ip IP --- Internet Protocol + +When incoming packets are processed by uIP, the IP layer is the first +protocol that examines the packet. The IP layer does a few simple +checks such as if the destination IP address of the incoming packet +matches any of the local IP address and verifies the IP header +checksum. Since there are no IP options that are strictly required and +because they are very uncommon, any IP options in received packets are +dropped. + +\subsubsection ipreass IP Fragment Reassembly + +IP fragment reassembly is implemented using a separate buffer that +holds the packet to be reassembled. An incoming fragment is copied +into the right place in the buffer and a bit map is used to keep track +of which fragments have been received. Because the first byte of an IP +fragment is aligned on an 8-byte boundary, the bit map requires a +small amount of memory. When all fragments have been reassembled, the +resulting IP packet is passed to the transport layer. If all fragments +have not been received within a specified time frame, the packet is +dropped. + +The current implementation only has a single buffer for holding +packets to be reassembled, and therefore does not support simultaneous +reassembly of more than one packet. Since fragmented packets are +uncommon, this ought to be a reasonable decision. Extending the +implementation to support multiple buffers would be straightforward, +however. + +\subsubsection ipbroadcast Broadcasts and Multicasts + +IP has the ability to broadcast and multicast packets on the local +network. Such packets are addressed to special broadcast and multicast +addresses. Broadcast is used heavily in many UDP based protocols such +as the Microsoft Windows file-sharing SMB protocol. Multicast is +primarily used in protocols used for multimedia distribution such as +RTP. TCP is a point-to-point protocol and does not use broadcast or +multicast packets. uIP current supports broadcast packets as well as +sending multicast packets. Joining multicast groups (IGMP) and +receiving non-local multicast packets is not currently supported. + +\subsection icmp ICMP --- Internet Control Message Protocol + +The ICMP protocol is used for reporting soft error conditions and for +querying host parameters. Its main use is, however, the echo mechanism +which is used by the "ping" program. + +The ICMP implementation in uIP is very simple as itis restricted to +only implement ICMP echo messages. Replies to echo messages are +constructed by simply swapping the source and destination IP addresses +of incoming echo requests and rewriting the ICMP header with the +Echo-Reply message type. The ICMP checksum is adjusted using standard +techniques (see RFC1624). + +Since only the ICMP echo message is implemented, there is no support +for Path MTU discovery or ICMP redirect messages. Neither of these is +strictly required for interoperability; they are performance +enhancement mechanisms. + +\subsection tcp TCP --- Transmission Control Protocol + +The TCP implementation in uIP is driven by incoming packets and timer +events. Incoming packets are parsed by TCP and if the packet contains +data that is to be delivered to the application, the application is +invoked by the means of the application function call. If the incoming +packet acknowledges previously sent data, the connection state is +updated and the application is informed, allowing it to send out new +data. + +\subsubsection listeb Listening Connections + +TCP allows a connection to listen for incoming connection requests. In +uIP, a listening connection is identified by the 16-bit port number +and incoming connection requests are checked against the list of +listening connections. This list of listening connections is dynamic +and can be altered by the applications in the system. + +\subsubsection slidingwindow Sliding Window + +Most TCP implementations use a sliding window mechanism for sending +data. Multiple data segments are sent in succession without waiting +for an acknowledgment for each segment. + +The sliding window algorithm uses a lot of 32-bit operations and +because 32-bit arithmetic is fairly expensive on most 8-bit CPUs, uIP +does not implement it. Also, uIP does not buffer sent packets and a +sliding window implementation that does not buffer sent packets will have +to be supported by a complex application layer. Instead, uIP allows +only a single TCP segment per connection to be unacknowledged at any +given time. + +It is important to note that even though most TCP implementations use +the sliding window algorithm, it is not required by the TCP +specifications. Removing the sliding window mechanism does not affect +interoperability in any way. + +\subsubsection rttest Round-Trip Time Estimation + +TCP continuously estimates the current Round-Trip Time (RTT) of every +active connection in order to find a suitable value for the +retransmission time-out. + +The RTT estimation in uIP is implemented using TCP's periodic +timer. Each time the periodic timer fires, it increments a counter for +each connection that has unacknowledged data in the network. When an +acknowledgment is received, the current value of the counter is used +as a sample of the RTT. The sample is used together with Van +Jacobson's standard TCP RTT estimation function to calculate an +estimate of the RTT. Karn's algorithm is used to ensure that +retransmissions do not skew the estimates. + +\subsubsection rexmit Retransmissions + +Retransmissions are driven by the periodic TCP timer. Every time the +periodic timer is invoked, the retransmission timer for each +connection is decremented. If the timer reaches zero, a retransmission +should be made. + +As uIP does not keep track of packet contents after they have +been sent by the device driver, uIP requires that the +application takes an active part in performing the +retransmission. When uIP decides that a segment should be +retransmitted, it calls the application with a flag set indicating +that a retransmission is required. The application checks the +retransmission flag and produces the same data that was previously +sent. From the application's standpoint, performing a retransmission +is not different from how the data originally was sent. Therefore the +application can be written in such a way that the same code is used +both for sending data and retransmitting data. Also, it is important +to note that even though the actual retransmission operation is +carried out by the application, it is the responsibility of the stack +to know when the retransmission should be made. Thus the complexity of +the application does not necessarily increase because it takes an +active part in doing retransmissions. + +\subsubsection flowcontrol Flow Control + +The purpose of TCP's flow control mechanisms is to allow communication +between hosts with wildly varying memory dimensions. In each TCP +segment, the sender of the segment indicates its available buffer +space. A TCP sender must not send more data than the buffer space +indicated by the receiver. + +In uIP, the application cannot send more data than the receiving host +can buffer. And application cannot send more data than the amount of +bytes it is allowed to send by the receiving host. If the remote host +cannot accept any data at all, the stack initiates the zero window +probing mechanism. + +\subsubsection congestioncontrol Congestion Control + +The congestion control mechanisms limit the number of simultaneous TCP +segments in the network. The algorithms used for congestion control +are designed to be simple to implement and require only a few lines of +code. + +Since uIP only handles one in-flight TCP segment per connection, +the amount of simultaneous segments cannot be further limited, thus +the congestion control mechanisms are not needed. + +\subsubsection urgdata Urgent Data + +TCP's urgent data mechanism provides an application-to-application +notification mechanism, which can be used by an application to mark +parts of the data stream as being more urgent than the normal +stream. It is up to the receiving application to interpret the meaning +of the urgent data. + +In many TCP implementations, including the BSD implementation, the +urgent data feature increases the complexity of the implementation +because it requires an asynchronous notification mechanism in an +otherwise synchronous API. As uIP already use an asynchronous event +based API, the implementation of the urgent data feature does not lead +to increased complexity. + +\section performance Performance + +In TCP/IP implementations for high-end systems, processing time is +dominated by the checksum calculation loop, the operation of copying +packet data and context switching. Operating systems for high-end +systems often have multiple protection domains for protecting kernel +data from user processes and user processes from each other. Because +the TCP/IP stack is run in the kernel, data has to be copied between +the kernel space and the address space of the user processes and a +context switch has to be performed once the data has been +copied. Performance can be enhanced by combining the copy operation +with the checksum calculation. Because high-end systems usually have +numerous active connections, packet demultiplexing is also an +expensive operation. + +A small embedded device does not have the necessary processing power +to have multiple protection domains and the power to run a +multitasking operating system. Therefore there is no need to copy +data between the TCP/IP stack and the application program. With an +event based API there is no context switch between the TCP/IP stack +and the applications. + +In such limited systems, the TCP/IP processing overhead is dominated +by the copying of packet data from the network device to host memory, +and checksum calculation. Apart from the checksum calculation and +copying, the TCP processing done for an incoming packet involves only +updating a few counters and flags before handing the data over to the +application. Thus an estimate of the CPU overhead of our TCP/IP +implementations can be obtained by calculating the amount of CPU +cycles needed for the checksum calculation and copying of a maximum +sized packet. + +\subsection delack The Impact of Delayed Acknowledgments + +Most TCP receivers implement the delayed acknowledgment algorithm for +reducing the number of pure acknowledgment packets sent. A TCP +receiver using this algorithm will only send acknowledgments for every +other received segment. If no segment is received within a specific +time-frame, an acknowledgment is sent. The time-frame can be as high +as 500 ms but typically is 200 ms. + +A TCP sender such as uIP that only handles a single outstanding TCP +segment will interact poorly with the delayed acknowledgment +algorithm. Because the receiver only receives a single segment at a +time, it will wait as much as 500 ms before an acknowledgment is +sent. This means that the maximum possible throughput is severely +limited by the 500 ms idle time. + +Thus the maximum throughput equation when sending data from uIP will +be $p = s / (t + t_d)$ where $s$ is the segment size and $t_d$ is the +delayed acknowledgment timeout, which typically is between 200 and +500 ms. With a segment size of 1000 bytes, a round-trip time of 40 ms +and a delayed acknowledgment timeout of 200 ms, the maximum +throughput will be 4166 bytes per second. With the delayed acknowledgment +algorithm disabled at the receiver, the maximum throughput would be +25000 bytes per second. + +It should be noted, however, that since small systems running uIP are +not very likely to have large amounts of data to send, the delayed +acknowledgmen t throughput degradation of uIP need not be very +severe. Small amounts of data sent by such a system will not span more +than a single TCP segment, and would therefore not be affected by the +throughput degradation anyway. + +The maximum throughput when uIP acts as a receiver is not affected by +the delayed acknowledgment throughput degradation. + + + +*/ + + +/** @} */ + diff --git a/Target/Source/third_party/uip/doc/uip-refman.pdf b/Target/Source/third_party/uip/doc/uip-refman.pdf new file mode 100644 index 00000000..8dc80059 --- /dev/null +++ b/Target/Source/third_party/uip/doc/uip-refman.pdf @@ -0,0 +1,39280 @@ +%PDF-1.4 +5 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +8 0 obj +(The uIP TCP/IP stack ) +endobj +9 0 obj +<< /S /GoTo /D (section.1.1) >> +endobj +12 0 obj +(Introduction) +endobj +13 0 obj +<< /S /GoTo /D (section.1.2) >> +endobj +16 0 obj +(TCP/IP Communication) +endobj +17 0 obj +<< /S /GoTo /D (section.1.3) >> +endobj +20 0 obj +(Main Control Loop) +endobj +21 0 obj +<< /S /GoTo /D (section.1.4) >> +endobj +24 0 obj +(Architecture Specific Functions) +endobj +25 0 obj +<< /S /GoTo /D (section.1.5) >> +endobj +28 0 obj +(Memory Management) +endobj +29 0 obj +<< /S /GoTo /D (section.1.6) >> +endobj +32 0 obj +(Application Program Interface \(API\)) +endobj +33 0 obj +<< /S /GoTo /D (section.1.7) >> +endobj +36 0 obj +(Examples) +endobj +37 0 obj +<< /S /GoTo /D (section.1.8) >> +endobj +40 0 obj +(Protocol Implementations) +endobj +41 0 obj +<< /S /GoTo /D (section.1.9) >> +endobj +44 0 obj +(Performance) +endobj +45 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +48 0 obj +(uIP 1.0 Module Index) +endobj +49 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +52 0 obj +(uIP 1.0 Modules) +endobj +53 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +56 0 obj +(uIP 1.0 Hierarchical Index) +endobj +57 0 obj +<< /S /GoTo /D (section.3.1) >> +endobj +60 0 obj +(uIP 1.0 Class Hierarchy) +endobj +61 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +64 0 obj +(uIP 1.0 Data Structure Index) +endobj +65 0 obj +<< /S /GoTo /D (section.4.1) >> +endobj +68 0 obj +(uIP 1.0 Data Structures) +endobj +69 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +72 0 obj +(uIP 1.0 File Index) +endobj +73 0 obj +<< /S /GoTo /D (section.5.1) >> +endobj +76 0 obj +(uIP 1.0 File List) +endobj +77 0 obj +<< /S /GoTo /D (chapter.6) >> +endobj +80 0 obj +(uIP 1.0 Module Documentation) +endobj +81 0 obj +<< /S /GoTo /D (section.6.1) >> +endobj +84 0 obj +(Protothreads) +endobj +85 0 obj +<< /S /GoTo /D (section.6.2) >> +endobj +88 0 obj +(Applications) +endobj +89 0 obj +<< /S /GoTo /D (section.6.3) >> +endobj +92 0 obj +(uIP configuration functions) +endobj +93 0 obj +<< /S /GoTo /D (section.6.4) >> +endobj +96 0 obj +(uIP initialization functions) +endobj +97 0 obj +<< /S /GoTo /D (section.6.5) >> +endobj +100 0 obj +(uIP device driver functions) +endobj +101 0 obj +<< /S /GoTo /D (section.6.6) >> +endobj +104 0 obj +(uIP application functions) +endobj +105 0 obj +<< /S /GoTo /D (section.6.7) >> +endobj +108 0 obj +(uIP conversion functions) +endobj +109 0 obj +<< /S /GoTo /D (section.6.8) >> +endobj +112 0 obj +(Variables used in uIP device drivers) +endobj +113 0 obj +<< /S /GoTo /D (section.6.9) >> +endobj +116 0 obj +(The uIP TCP/IP stack) +endobj +117 0 obj +<< /S /GoTo /D (section.6.10) >> +endobj +120 0 obj +(Architecture specific uIP functions) +endobj +121 0 obj +<< /S /GoTo /D (section.6.11) >> +endobj +124 0 obj +(uIP Address Resolution Protocol) +endobj +125 0 obj +<< /S /GoTo /D (section.6.12) >> +endobj +128 0 obj +(Configuration options for uIP) +endobj +129 0 obj +<< /S /GoTo /D (section.6.13) >> +endobj +132 0 obj +(uIP TCP throughput booster hack) +endobj +133 0 obj +<< /S /GoTo /D (section.6.14) >> +endobj +136 0 obj +(Local continuations) +endobj +137 0 obj +<< /S /GoTo /D (section.6.15) >> +endobj +140 0 obj +(Timer library) +endobj +141 0 obj +<< /S /GoTo /D (section.6.16) >> +endobj +144 0 obj +(Clock interface) +endobj +145 0 obj +<< /S /GoTo /D (section.6.17) >> +endobj +148 0 obj +(Protosockets library) +endobj +149 0 obj +<< /S /GoTo /D (section.6.18) >> +endobj +152 0 obj +(Memory block management functions) +endobj +153 0 obj +<< /S /GoTo /D (section.6.19) >> +endobj +156 0 obj +(DNS resolver) +endobj +157 0 obj +<< /S /GoTo /D (section.6.20) >> +endobj +160 0 obj +(SMTP E-mail sender) +endobj +161 0 obj +<< /S /GoTo /D (section.6.21) >> +endobj +164 0 obj +(Telnet server) +endobj +165 0 obj +<< /S /GoTo /D (section.6.22) >> +endobj +168 0 obj +(Hello, world) +endobj +169 0 obj +<< /S /GoTo /D (section.6.23) >> +endobj +172 0 obj +(Web client) +endobj +173 0 obj +<< /S /GoTo /D (section.6.24) >> +endobj +176 0 obj +(Web server) +endobj +177 0 obj +<< /S /GoTo /D (chapter.7) >> +endobj +180 0 obj +(uIP 1.0 Data Structure Documentation) +endobj +181 0 obj +<< /S /GoTo /D (section.7.1) >> +endobj +184 0 obj +(dhcpc\137state Struct Reference) +endobj +185 0 obj +<< /S /GoTo /D (section.7.2) >> +endobj +188 0 obj +(hello\137world\137state Struct Reference) +endobj +189 0 obj +<< /S /GoTo /D (section.7.3) >> +endobj +192 0 obj +(httpd\137cgi\137call Struct Reference) +endobj +193 0 obj +<< /S /GoTo /D (section.7.4) >> +endobj +196 0 obj +(httpd\137state Struct Reference) +endobj +197 0 obj +<< /S /GoTo /D (section.7.5) >> +endobj +200 0 obj +(memb\137blocks Struct Reference) +endobj +201 0 obj +<< /S /GoTo /D (section.7.6) >> +endobj +204 0 obj +(psock Struct Reference) +endobj +205 0 obj +<< /S /GoTo /D (section.7.7) >> +endobj +208 0 obj +(psock\137buf Struct Reference) +endobj +209 0 obj +<< /S /GoTo /D (section.7.8) >> +endobj +212 0 obj +(pt Struct Reference) +endobj +213 0 obj +<< /S /GoTo /D (section.7.9) >> +endobj +216 0 obj +(smtp\137state Struct Reference) +endobj +217 0 obj +<< /S /GoTo /D (section.7.10) >> +endobj +220 0 obj +(telnetd\137state Struct Reference) +endobj +221 0 obj +<< /S /GoTo /D (section.7.11) >> +endobj +224 0 obj +(timer Struct Reference) +endobj +225 0 obj +<< /S /GoTo /D (section.7.12) >> +endobj +228 0 obj +(uip\137conn Struct Reference) +endobj +229 0 obj +<< /S /GoTo /D (section.7.13) >> +endobj +232 0 obj +(uip\137eth\137addr Struct Reference) +endobj +233 0 obj +<< /S /GoTo /D (section.7.14) >> +endobj +236 0 obj +(uip\137eth\137hdr Struct Reference) +endobj +237 0 obj +<< /S /GoTo /D (section.7.15) >> +endobj +240 0 obj +(uip\137icmpip\137hdr Struct Reference) +endobj +241 0 obj +<< /S /GoTo /D (section.7.16) >> +endobj +244 0 obj +(uip\137neighbor\137addr Struct Reference) +endobj +245 0 obj +<< /S /GoTo /D (section.7.17) >> +endobj +248 0 obj +(uip\137stats Struct Reference) +endobj +249 0 obj +<< /S /GoTo /D (section.7.18) >> +endobj +252 0 obj +(uip\137tcpip\137hdr Struct Reference) +endobj +253 0 obj +<< /S /GoTo /D (section.7.19) >> +endobj +256 0 obj +(uip\137udp\137conn Struct Reference) +endobj +257 0 obj +<< /S /GoTo /D (section.7.20) >> +endobj +260 0 obj +(uip\137udpip\137hdr Struct Reference) +endobj +261 0 obj +<< /S /GoTo /D (section.7.21) >> +endobj +264 0 obj +(webclient\137state Struct Reference) +endobj +265 0 obj +<< /S /GoTo /D (chapter.8) >> +endobj +268 0 obj +(uIP 1.0 File Documentation) +endobj +269 0 obj +<< /S /GoTo /D (section.8.1) >> +endobj +272 0 obj +(apps/hello-world/hello-world.c File Reference) +endobj +273 0 obj +<< /S /GoTo /D (section.8.2) >> +endobj +276 0 obj +(apps/hello-world/hello-world.h File Reference) +endobj +277 0 obj +<< /S /GoTo /D (section.8.3) >> +endobj +280 0 obj +(apps/resolv/resolv.c File Reference) +endobj +281 0 obj +<< /S /GoTo /D (section.8.4) >> +endobj +284 0 obj +(apps/resolv/resolv.h File Reference) +endobj +285 0 obj +<< /S /GoTo /D (section.8.5) >> +endobj +288 0 obj +(apps/smtp/smtp.c File Reference) +endobj +289 0 obj +<< /S /GoTo /D (section.8.6) >> +endobj +292 0 obj +(apps/smtp/smtp.h File Reference) +endobj +293 0 obj +<< /S /GoTo /D (section.8.7) >> +endobj +296 0 obj +(apps/telnetd/shell.c File Reference) +endobj +297 0 obj +<< /S /GoTo /D (section.8.8) >> +endobj +300 0 obj +(apps/telnetd/shell.h File Reference) +endobj +301 0 obj +<< /S /GoTo /D (section.8.9) >> +endobj +304 0 obj +(apps/telnetd/telnetd.c File Reference) +endobj +305 0 obj +<< /S /GoTo /D (section.8.10) >> +endobj +308 0 obj +(apps/telnetd/telnetd.h File Reference) +endobj +309 0 obj +<< /S /GoTo /D (section.8.11) >> +endobj +312 0 obj +(apps/webclient/webclient.c File Reference) +endobj +313 0 obj +<< /S /GoTo /D (section.8.12) >> +endobj +316 0 obj +(apps/webclient/webclient.h File Reference) +endobj +317 0 obj +<< /S /GoTo /D (section.8.13) >> +endobj +320 0 obj +(apps/webserver/httpd-cgi.c File Reference) +endobj +321 0 obj +<< /S /GoTo /D (section.8.14) >> +endobj +324 0 obj +(apps/webserver/httpd-cgi.h File Reference) +endobj +325 0 obj +<< /S /GoTo /D (section.8.15) >> +endobj +328 0 obj +(apps/webserver/httpd.c File Reference) +endobj +329 0 obj +<< /S /GoTo /D (section.8.16) >> +endobj +332 0 obj +(lib/memb.c File Reference) +endobj +333 0 obj +<< /S /GoTo /D (section.8.17) >> +endobj +336 0 obj +(lib/memb.h File Reference) +endobj +337 0 obj +<< /S /GoTo /D (section.8.18) >> +endobj +340 0 obj +(uip/lc-addrlabels.h File Reference) +endobj +341 0 obj +<< /S /GoTo /D (section.8.19) >> +endobj +344 0 obj +(uip/lc-switch.h File Reference) +endobj +345 0 obj +<< /S /GoTo /D (section.8.20) >> +endobj +348 0 obj +(uip/lc.h File Reference) +endobj +349 0 obj +<< /S /GoTo /D (section.8.21) >> +endobj +352 0 obj +(uip/psock.h File Reference) +endobj +353 0 obj +<< /S /GoTo /D (section.8.22) >> +endobj +356 0 obj +(uip/pt.h File Reference) +endobj +357 0 obj +<< /S /GoTo /D (section.8.23) >> +endobj +360 0 obj +(uip/timer.c File Reference) +endobj +361 0 obj +<< /S /GoTo /D (section.8.24) >> +endobj +364 0 obj +(uip/timer.h File Reference) +endobj +365 0 obj +<< /S /GoTo /D (section.8.25) >> +endobj +368 0 obj +(uip/uip-neighbor.c File Reference) +endobj +369 0 obj +<< /S /GoTo /D (section.8.26) >> +endobj +372 0 obj +(uip/uip-neighbor.h File Reference) +endobj +373 0 obj +<< /S /GoTo /D (section.8.27) >> +endobj +376 0 obj +(uip/uip-split.h File Reference) +endobj +377 0 obj +<< /S /GoTo /D (section.8.28) >> +endobj +380 0 obj +(uip/uip.c File Reference) +endobj +381 0 obj +<< /S /GoTo /D (section.8.29) >> +endobj +384 0 obj +(uip/uip.h File Reference) +endobj +385 0 obj +<< /S /GoTo /D (section.8.30) >> +endobj +388 0 obj +(uip/uip\137arch.h File Reference) +endobj +389 0 obj +<< /S /GoTo /D (section.8.31) >> +endobj +392 0 obj +(uip/uip\137arp.c File Reference) +endobj +393 0 obj +<< /S /GoTo /D (section.8.32) >> +endobj +396 0 obj +(uip/uip\137arp.h File Reference) +endobj +397 0 obj +<< /S /GoTo /D (section.8.33) >> +endobj +400 0 obj +(uip/uipopt.h File Reference) +endobj +401 0 obj +<< /S /GoTo /D (section.8.34) >> +endobj +404 0 obj +(unix/uip-conf.h File Reference) +endobj +405 0 obj +<< /S /GoTo /D (chapter.9) >> +endobj +408 0 obj +(uIP 1.0 Example Documentation) +endobj +409 0 obj +<< /S /GoTo /D (section.9.1) >> +endobj +412 0 obj +(dhcpc.c) +endobj +413 0 obj +<< /S /GoTo /D (section.9.2) >> +endobj +416 0 obj +(dhcpc.h) +endobj +417 0 obj +<< /S /GoTo /D (section.9.3) >> +endobj +420 0 obj +(example-mainloop-with-arp.c) +endobj +421 0 obj +<< /S /GoTo /D (section.9.4) >> +endobj +424 0 obj +(example-mainloop-without-arp.c) +endobj +425 0 obj +<< /S /GoTo /D (section.9.5) >> +endobj +428 0 obj +(hello-world.c) +endobj +429 0 obj +<< /S /GoTo /D (section.9.6) >> +endobj +432 0 obj +(hello-world.h) +endobj +433 0 obj +<< /S /GoTo /D (section.9.7) >> +endobj +436 0 obj +(resolv.c) +endobj +437 0 obj +<< /S /GoTo /D (section.9.8) >> +endobj +440 0 obj +(resolv.h) +endobj +441 0 obj +<< /S /GoTo /D (section.9.9) >> +endobj +444 0 obj +(smtp.c) +endobj +445 0 obj +<< /S /GoTo /D (section.9.10) >> +endobj +448 0 obj +(smtp.h) +endobj +449 0 obj +<< /S /GoTo /D (section.9.11) >> +endobj +452 0 obj +(telnetd.c) +endobj +453 0 obj +<< /S /GoTo /D (section.9.12) >> +endobj +456 0 obj +(telnetd.h) +endobj +457 0 obj +<< /S /GoTo /D (section.9.13) >> +endobj +460 0 obj +(uip-code-style.c) +endobj +461 0 obj +<< /S /GoTo /D (section.9.14) >> +endobj +464 0 obj +(uip-conf.h) +endobj +465 0 obj +<< /S /GoTo /D (section.9.15) >> +endobj +468 0 obj +(webclient.c) +endobj +469 0 obj +<< /S /GoTo /D (section.9.16) >> +endobj +472 0 obj +(webclient.h) +endobj +473 0 obj +<< /S /GoTo /D [474 0 R /Fit ] >> +endobj +477 0 obj << +/Length 382 +/Filter /FlateDecode +>> +stream +xÚRMOÜ@ ½çWø¸{ˆ×ö|ß @«Eª%7ÔCšÌ–$[ÈFýû|°D”JÕÆc¿÷Æó< ”C pÆaPÚBÕd?SúKÆsY‹Jû…\y…¼…\H!‹×KØ_p–€XCnŒFOVø§"Û|NWˆFçC±V©ìÅÁ WÔ÷«â!®s1´ê·7SpÕüˆuëéT\Ül^+wDzz\/®Giv(lô m ¤†5¡"¶ÿf¤)øwñ%¶Õ øZ¶}ùô¦«1y&ƒ®³hI9ȃÅ´…¯ûv& +‘hÙUqòCØ¢¶dA±ÇÀf0ž!5HâGÌ"LµçsNl¶ Ãå!»ÍàöÍå“l¾Ð}5yѱJâ<ÚdùØòy]6SË—}û¸fZŧn~°]ÒsÚÛaªŒÁ˜iDebŸuûªÃ.~ä~îûwþßýŽõ¾{˜®Ý¶Ýqì³q‡Ý´_š_)ù2·ÚCyçèð‘Y»ÿûÇwõ¬Ùendstream +endobj +474 0 obj << +/Type /Page +/Contents 477 0 R +/Resources 476 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +>> endobj +475 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (../sicslogo.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 487 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 242.00000000 58.00000000] +/Resources << +/ProcSet [ /PDF ] +/ExtGState << +/R4 488 0 R +>>>> +/Length 489 0 R +/Filter /FlateDecode +>> +stream +xœ}ZYŽ3Í|×)t‚šÜ—cØWhØÿ Ð߃=÷L²ÔRÃè‡VäÊäžÌú×3]ù™øwþýyüëñ?oÏ¿þÿ‘Ÿÿ÷HÖûü÷?ÿ|¤kôýüë‘KNW혔FmsŒg.i<ûךýŒå¸¾ö•Ç³®|åúüƒ†V¯Yž-õ+•gîy\}=[nWéÏÜ0|üzä6òÕçÝÙ½av¹jXW½– ? e^ÃGªÇvT°TÏl8³„ôra ¢£\«:äÂ\±Þý)qÇœ7¹ëØ×@o]WÑÒ§¡äyÍùüÆ|ì:p^¬Û6 /dKž` ÏA¾U‡˜ßVô÷R¯4cö%)}ðh×Þ¤¦’Œ‚=f Xg¿æ!N ­n²¤a“úlÑ8'oqm‹žÞÞ Ÿg›àfJ¸€Û7 ¶†#ío(A%‰ô4¯^ž‹%Œ% S”’0¦’}›²†’lðƒlÎUJ²)Ucþ$÷¼Òvˆm'ŽVFôOò[în<4Xv>Tž† +bø3—¸Çvn–^!†ï6®9îþÕ)úÑ@©JÊ"µ17ÔYä&cŠm·Û¼ + j¸¹Ýâÿ±Ýjù +œ'Ô¸ö¥óòwÙP@ F¨`“§¦´ÎìÃ’h ¨Ìk¬»ŸìZ¤äZOg~Á¿bø! +±”>¯Ún+.%çkm·â +Ä"³Ò’1|·ÛŠK.›ªý˜- +vV fÅ¥Lp~¸; ;ö3äÚLád© %Ë„Ü’KÚã + §µ¥bfÈ%Õ ž„f\d9·"5V™™‚¢~Û0&9ãî„þ•zO5è6Ølç«.·a‡aÃÞpl¸¤ Š‘Ú‘K˜0¤ƒwïåaVØ°‰¶ß6ì /6œ ÌLW_&£ÄzþŽ}ƒðÌù cÈfAjÙÞ%«ê‡[¥ãv¸Á°)´†ZÖÕÈQMî›|ùi°'pÓûWí÷ô€÷òÞp¶×ìy÷ƒø/aç¯Ô¸d˜Êk8&ÇN0êÛF¢+ÿllÇVž[l"p{<ÇÞ/èë1våi¼w-.Ñ {°ÀNšÇÜMnÒNaJ çËŠ‰Úa–Ê‘ hdK™1‘$´åˆ$ ·D/,˜ö\©_Ú$û\Ô1 =»¬•ààlæ Š˜ÎÝ0u/žÁ‚+êãÀIk!W Š À1ä#çŽ\æ×j .7fôÃv'ãXSaÁ¥‘ñ’åAFü®÷f8cí" ÊdíRžæ÷0ŒE‰€qšîøû1aË…3äÇ€Ià~éï؆‘6 +:÷”ê€6½6ôA 4 „—ÙÜ"úqÖú‚âê÷øULY¢®Œ$Ýã_¤C.óÍP[h(‰hCAþ õÃÙ¡Ž +xo¸ÊqÝãßqÖbÐï€+nZ aê„…˜´Oíd”¾cRšu–ÍÈ~eÃI¦~eÃ1®À©%YÙÿ9‚Cm4¥À‰‘oC’ÊK1 ‹2`g*×ÙPÇyÙœÔüeÃó ‘Sdc‚¤™ï)ÿ'{XH ý™chëfæbÄ~rݹ~ÅƧáûqŠ»&Od3K϶²yºœ Sá߀Šäe.'è‘F¾]"lcý±b¾œ\@÷rÑ`n.'È + ÷ñs£ lž¤U…8sf¢…Á}h©\&úyëw˜LÇßEƒ;<4t&èÇãa¹BOdn Î}†ÏÃî˼°õ‚kTBy½@îö¢Áü^NÉÖ2ÇÐ=_4×–Esy7l]¨0áüDK®w?o_Ëýà’ëv ·Ì¥ì[‹‘œM¼+S4Àâu×Iл<>qLH£3•þl Âî×) Mä˦ 1Å ÿh¸­ ÕJnVêœÙ#¨ÅŒ SºgŽß!¹éS°HCò‰E+8¦tßqôßñ<)¥$9oܳ¶£~ŒFoù úÚ 94“7l"auŒdÖ4$þŽTt]¾`,L¿Ñ×£Ãstv楕rY’™Ç¸åýìH.™·Ábz:Œ<–€Ib@[Ò“»ãNwÔ\ï퉩åý!dñ|›86£0¤T˜X&µ“©lE¤¯ oȽ„¹Ðu¸)ï"»Bwú`öʲÃÑ!ãã®\ 5s D·=MÄìB.]øÓÝí2ÚŽ^üC*U±–qñ!7–D~H“òˆC¤h,Þ!ÿ</VÛñw`׈‘%ÍìãûÖÍú»‚ù~ïØǃ"ªÒÞÿjCi¸ný‡ì‰{k+÷2ŽÌ™n?ps+&}`'Ó÷{Ç7Ù«HWj-'µ;RYدåDª +¦øRJ6Vt"ùk¦â°Gˆ?S ùÁ$Déo=åÃU¦ú‚™'bµ)Cƒ1±r2y¯ô÷¢÷3£w<™rtÑäöìè )_VAÂ0F‚Nµ[Ö²Eu•^\nhÇj\ 2à>[ :¶ÆöPe–äàüÄÆañ|ËŽB ÖÔõ+¤âØ¥¾èSË'Žñ¼ã}@—¹ïöŽoØ]— gÃ8ÆË‚Ž› +>ÀMÞö VÆõ{ðÌÕ®L=iÞ±Ÿe ß°Sï´¾ãû4H :︵)@ý¹èi˜ÙŠ8C!™Ê-*¥JòÀÞ?TzˆÙÚê~Šª4{˜–õ{uƒJ©lwï?´êïé_Ìw“Jûa—iýP:eZì6Úm¢ f1G?Ìjj2K Ý'1L/ûÔÌîÙÎ1nï­y0kp²Ô×ó'Ñ_ž=åË ×ðú¢dÑÀËŽg)œñŽ™Èõ×  ÔK§x%›¿4¸mÆ¢ $˪>öË’Ä Ç†P“§¨pá|ã™,†%²ù ‹[Ûa§U?KWN|KœC±PÞ;qVcùJš3àµÊt„;:uë…Çš¬î Ò?à¡9J =¡èĈë1^åèætÓw ÃR¦Až‹iÑPÄëo=_I± ¬˜‘³Þ@øê¹!L®úîätVò9U°4 +èëq ½ñrK®ÒTKsd‰…DÌÊWÍMÏÚË#WŒÖàO/¸ÂO[¦mÓ¡2ë­âŸAŠqœÔ ÛΕJÇLËx.F(“|ÑÜç –Mtñ^>Èò’­’ÅAÐÌbeÃEŸRpf!ÃT³`nÆ ©!–7^öŠ†}*90.}¦‹ÕÓò +Àðg.‘všIýq.]ï„»›¦÷óŠˆkOhº{—É}iáÈž°¿ŽÁ4¨üœö­¹­uç…ˆ¯RBÁÅd2añ™¨Oß%‰Ê„t7G<_¿¿áìdŸ-«¸(O9ø;0̨YÕAW²öËøw̬à.Z¼C‘§úM—¼ã¥—ßo#õ –>måD',0˜g+#ëiâbÞ]_pô—ßñRI›ã“†ã•Õ>¬ºqôïß±¯Ïx8¤Úa'Š»ÍmzT®áÖWÝLôÇX+í'ïgpkqäÖâجS‡>ó1ƒÐÒmÞö¢åœN?\¿•3‹¿KŠÇd›Áð*JÍh°˜¿ÏÅûRÛ·Ùèáì¶*$EÊÓŽÝtɳœÌO‘úqTvR|lGo€³E/˜s>‚jœJö÷Û|¢á¶xó)ësó@\ë¼ †}Dƒ„"4¿âùhp“ˆ) Ç*Tj©ÐŒí¿a·‹ ú£!ŒåoøûëŒÎendstream +endobj +487 0 obj +<< +/Producer (GNU Ghostscript 7.07) +/Creator (GNU Ghostscript 707 \(epswrite\)) +/CreationDate (2005/02/23 12:39:03) +>> +endobj +488 0 obj +<< +/Type /ExtGState +/Name /R4 +/TR /Identity +/OPM 1 +/SM 0.02 +>> +endobj +489 0 obj +3714 +endobj +478 0 obj << +/D [474 0 R /XYZ 90 757.9346 null] +>> endobj +479 0 obj << +/D [474 0 R /XYZ 90 739.9346 null] +>> endobj +476 0 obj << +/Font << /F23 482 0 R /F26 485 0 R >> +/XObject << /Im1 475 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +492 0 obj << +/Length 59 +/Filter /FlateDecode +>> +stream +xÚ3T0BCKsSs=Kc3…ä\.…t °;—!TÚÄÈHc‘ÐÉèšY˜é™[˜¥È ^endstream +endobj +491 0 obj << +/Type /Page +/Contents 492 0 R +/Resources 490 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +>> endobj +493 0 obj << +/D [491 0 R /XYZ 90 757.9346 null] +>> endobj +490 0 obj << +/ProcSet [ /PDF ] +>> endobj +496 0 obj << +/Length 1823 +/Filter /FlateDecode +>> +stream +xÚí[MsÛ6½ûWð(„àûã˜:IëN2ãi}kzàÈŠ­©%yh©“ô× +$À…ÌÞjNŠ­çÝçÅ{à. “Û¤0¸PB!ø,Ö»+\<Øoÿ|EÚ·9eö5ñÆJV¬ÂýéîêÝ'j +Ê‘ÒŠwß\pÉ9’˜ÈâîþÅõaÜì/Ë?ï~½úx׳8¡$b\˜&—ûfõоû[Õ"W!Ô'5ÈH*ÛœÀå$ËÁ/î7Ëxqº¹mþsw}ûÎÿÿåX®ÿÒ¢˜ ¢Ceˆ ¬&Z é ’Ì‘á¼B#!T® ¾ +ñMr$¢Ö¹Q]ûëßìÕáþ´>nûˆRˆû«ô ªÐ¡rD4ED„Ñ´\ »FóËØË`MÎZ‚Ö¤CeÖ$Ž–T¦s<˜»8B:1Ø-@_¬\Ž‘’&§\j”K[å†&¾>ìv§ýv]¦dLí¾ÄWE˜.6³GeXQ*‘ÑV³6ûÚ„ +h,tÍUš&µ 囪MJí:“œ6=ªÑ&kµù¥Üî½2ÝûÔ|ñùpxŽ5Â>¤)„‰GM‹Êð¢„"Ì1ë›7RH¬Pݱ‚u£‹Ê7U¬VÄ°œX=ª+oÅú¾Z?n›õñTµÒïÏ›õö+ÆtÝ|ýé´¯„¨}£‚#ÌX:)^Êð¤B"Û?Š>Ñ·(I¨š$ÁjÆÑ\5YR’P¾‰’äZ!ŽEF’ª‘¤ðûçfw¨~4âûRîˇÍÎN‘úˆDRqR„¹bõyT†% BiŸÓ¼g¦ +ü,P¸àq´Q‚ù¦ +T$InlêP@¥ß3ŸŸŸ|»Y«ô¶:‹¹µüâ…–&/¸4q4·4*)^(ßTñ2ÛßñܨԡñêV¼vã<Ö~BºqBvÏú2Ýo2‚°2²SÆ{¥Ge˜QæF~ûTéQ{óÊd¶YW .q‡Ê”8ŽV¯~z_…N•¦mþ¨È Fª‘¦ñÒ´ñCµ+÷ö!j¤„TE˜ q4Ú¢r<üÑhȼoNR.‡×¤CeÖ$ŽV‹C&• %t)+ª]ÿJ/¸ã`¶Õն߽ãèÍ CsÇÑ]mد›÷§§ïGï7ß# …˜–¢3Æö¨ ±Îè=zÄŒ]r0…–X]jä?näUצ»ä«NÜ1†Œ1b@/ªI‹Ê±²µÃÆ6í=Z³u/~«p~Á«GK+ÓLøZ#s;. +!ÆÜd;öŽù—í¦*«%Ñ‹õ£9ŸKS¢µ#à9tú@¤E­Bdé(½·d”!-•¼ØÒ°´GÕU,}ýT¾¼„%[?.ÅâG|D­yñntÔ¢2,ýmPåì⾋¡B. GK‹±v1”ð•.¦F .)uqhÎ Æ\ü¡<–íáú±:¹³vçhèùLIatRHµEe˜võëñ¥lÌÌT)wjÊ/5sˆ7s‡ª‹˜9.Wü°¦ÛQV‹ר@-*CÑ;¹GqvrÏÉ`¡ÏN† GK+Ñ9LøZ'sƒ¨4tÜÉàøˆQ'ÚÂmµÆH¹ 5Ì·•¡u.VHŽŠQÛ2‚¸&ôbÛxÀ¶UW°í¹6Ÿ·/Ǹ»¦Èîmë¥r-’5eÃi}Ø»ÏS=œªà3ßF?VÅ$ÒZÓ"HxÚ´ ˜ åªtá,F °¡ÂF±jI¦7M ÛTQ2·¬™qÛƒQò¡(·ûíq[>mÿ¹L“v^§º'$Ù``vgEôÞü¥T×óXØ(V}Ê‚“Š²MU$±‹Ï2§¹Ô(R y¿YR±ø{ë?5u_mëo,‰Xlª¬Bb†é"`’h ‚ùž5žwM °Á® 6ŠUk4yŒ e›¨Qãþþ*3µ˜F¡r¨ÐrøÁ¿q9Úa3û{œ“&Ook ȬûœJ@mî*›­(îyׄŠ;ŒTë1ÙX©šÃ ;aÌ/úcÊ_ßkÿendstream +endobj +495 0 obj << +/Type /Page +/Contents 496 0 R +/Resources 494 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +/Annots [ 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R ] +>> endobj +501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 575.2302 202.806 584.2064] +/Subtype /Link +/A << /S /GoTo /D (chapter.1) >> +>> endobj +502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 557.4621 178.1091 566.3087] +/Subtype /Link +/A << /S /GoTo /D (section.1.1) >> +>> endobj +503 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 539.6741 225.451 548.5207] +/Subtype /Link +/A << /S /GoTo /D (section.1.2) >> +>> endobj +504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 519.8288 206.3431 530.7327] +/Subtype /Link +/A << /S /GoTo /D (section.1.3) >> +>> endobj +505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 502.0408 255.0296 512.9447] +/Subtype /Link +/A << /S /GoTo /D (section.1.4) >> +>> endobj +506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 484.2528 217.6704 495.1567] +/Subtype /Link +/A << /S /GoTo /D (section.1.5) >> +>> endobj +507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 466.4648 275.6622 477.3687] +/Subtype /Link +/A << /S /GoTo /D (section.1.6) >> +>> endobj +508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 448.6768 168.1465 459.5807] +/Subtype /Link +/A << /S /GoTo /D (section.1.7) >> +>> endobj +509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 430.8888 232.0759 441.7927] +/Subtype /Link +/A << /S /GoTo /D (section.1.8) >> +>> endobj +510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 415.0385 179.7529 424.0048] +/Subtype /Link +/A << /S /GoTo /D (section.1.9) >> +>> endobj +511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 386.733 198.3827 395.7092] +/Subtype /Link +/A << /S /GoTo /D (chapter.2) >> +>> endobj +512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 368.8453 194.9958 377.8116] +/Subtype /Link +/A << /S /GoTo /D (section.2.1) >> +>> endobj +513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 340.5398 219.2242 349.516] +/Subtype /Link +/A << /S /GoTo /D (chapter.3) >> +>> endobj +514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 320.7145 223.9867 331.6184] +/Subtype /Link +/A << /S /GoTo /D (section.3.1) >> +>> endobj +515 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 294.3466 229.456 303.3229] +/Subtype /Link +/A << /S /GoTo /D (chapter.4) >> +>> endobj +516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 276.5786 221.8247 285.4252] +/Subtype /Link +/A << /S /GoTo /D (section.4.1) >> +>> endobj +517 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 248.1535 181.7751 257.1297] +/Subtype /Link +/A << /S /GoTo /D (chapter.5) >> +>> endobj +518 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 230.3854 193.6207 239.2321] +/Subtype /Link +/A << /S /GoTo /D (section.5.1) >> +>> endobj +519 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 201.9603 239.3289 210.9365] +/Subtype /Link +/A << /S /GoTo /D (chapter.6) >> +>> endobj +520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 184.1922 179.2149 193.0389] +/Subtype /Link +/A << /S /GoTo /D (section.6.1) >> +>> endobj +521 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 164.347 179.7727 175.2509] +/Subtype /Link +/A << /S /GoTo /D (section.6.2) >> +>> endobj +522 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 146.559 237.8845 157.4629] +/Subtype /Link +/A << /S /GoTo /D (section.6.3) >> +>> endobj +523 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 130.8282 235.1242 139.6749] +/Subtype /Link +/A << /S /GoTo /D (section.6.4) >> +>> endobj +524 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 113.0402 236.3901 121.8869] +/Subtype /Link +/A << /S /GoTo /D (section.6.5) >> +>> endobj +525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 93.195 229.0275 104.0989] +/Subtype /Link +/A << /S /GoTo /D (section.6.6) >> +>> endobj +500 0 obj << +/D [495 0 R /XYZ 90 604.4538 null] +>> endobj +494 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +528 0 obj << +/Length 2844 +/Filter /FlateDecode +>> +stream +xÚíœKsÛÈÇïú8ŠUáì¼{ÛØÎ&®ØqÖªä°ÙRQ$$±B‘ + }˜Á` ÷ˆØ›ÉÒA¤øWw£ñCÏM +ÛR\)¡a\V˧+\=Ø?ÿxEüÇsûù<üùæ껿PSd$•ÕÍ}gA$(¡ÕÍêçëõzöËÍûŠIˆ‘ÖJûÇ7ÿøxóîãÍçö£«w7Á¾w/˜$­õÿ]ýü ®V6Œ÷W1£Eõ›}ƒ­%C«§+NYÿfsõùêŸÁŽû û‡ÜQp¬²šSåâîDíGû¯ù)’Ì‘áÜ9µÇ©èpà,:ð^Õ‹Úã”HÍì¿ |}üÛ§ÙœÚËÝvÆñõ¯3"®ëýamßv¿?n—}wx™J%2Tè*òžQÁ1RÆÂŒ‚D³¹Àø|~½È¯À a¦˜ß ‚ó›Øjó+Dâ’ÀÞŸD!eÌ«ñ$ëÆÓ‹žÚãù¯!äz±_/î6õÁy<Ô+÷jí ¯ê׿®—µ¿_wðP'+Œ¨°qD¦÷"ø8¨2ˆjEFò-ƒÉÁ¬œµÄVwúILÀÛLýj2¥áÈz'0šAåØ4žÍ›Çú~7o>}׿>4‹åàˆ°‡‹Y;N‰ëU…ø(1HJÇž[Ù|«`ÂXᄧÖ:"hWÐáÄB*•DB‰®½ÊáJ°Íò‡ýòqÝÔËæ¸÷Üžëåú?Óå Ž¿>æK‰¸’²Š#IùíU…€©"HAÇŸŽPþ"Áü¥ÖÚü)žÅr8¹| +”’…‰gPy‰ã1ÐöÃjµ¯~pÿ©>ì6Ç&L??íwÍn¹Û$$¶F…XÆ1¤$öªB¨TÚ‹•36Žõœ&™`‡Y&œÆÔZ¤Ì 9œ $ÇvòZšjzU’: ßì¶m1|8î»gW]]Üí‡JùH.Ú¢7ÏòèEóX•Á‘»H4réù®€ÀœFp‚IM­upš,œÃÉpRf'°ºg¯òp²ÕÒÎ1Ý‹æq¿;><>÷þn·;4µô17ù”ÄÆËM’¼½ª¯/™/>«)%”Æh Ó˜ZkÓ¨óTB'S‰…§^ ²Wy*¹£òï»åböšõö¸ÈϱDŠ’ÈN½^UŠÚ• æí**Žê¼×=¥ + +å=ª `ÞSkmÞ Î² +9œ¸üZ!¡qÕ ò¨ +‡êÍŒ‰ëõS_ 7ë»ýbÿåeèDÛÂud%P•BÒIÊõ8¦ ¨§Ò žŒ^ød¤Ö:z³{M Ã©•VHƒ”]ïðíU_é'§›Ñý®§æïg_/–u +°FÚèÈN`¯*eÂÆ®äGQ]X}õ< Ã> ©µŽÜì:t8™\AÑTÈuª@®räv+øCK¯%¶n`ý¥ØFFí +)ËO¼jË€‰Â(´ °°PÞ#`Á¼§Ö:`³÷›@‡“eÍJÀö*¬vÀ~¨Ÿv–L·¨ÊîÓb»x¨ŸêmSÚ$Uö”ÒTq™ÛJ^U–j;)ÚŒ£ý¶èãÆf0a½¨¯ÄV›.‚³{ô°¿©ì‰˜æªÀžSöŒcïíÇÏŽ®}»êï[¦c7ûcÛ%8#úÚw +¾Ý-íΗkŒIú + âX˜*%ÓWàU…ˆû<ŽÂ&4Òú«’i‚#äµWz¬ÿúµT]Òñ-¿«Çåóòö`óPǹê[×îë}½MïÉPÎí!aó"Ö¤7È« +!†æ QŒg{í‚9 ×.œÒÄÖW˜k¯]ØßÄá‡I†£…FÊ rPRåc»¸ k€Óñ”1ÜE‘¹~½ªlhêE{$BéH³—Ør$f'B°¿iKRf'WÂ-€Ø«ˆ¬±ižW·Ë‡õír±ÙœB °¥²Èp¾™×« +QR!‘VDŒÃ<ÃÊ%sàÌebËñ˜Ý‘†ýM­Œvª¤/4M•’€<}¸ÆHµÍà±ïÌpíU…‡á:Žñ|‡k(§”`J[Êl›9ìo*”ØÃD¡-¨”ÂCùT?ÝÝv÷•'•HŠ QªŠ}gJ¤WBJdãÒ%s ÌebËѨ²4‚þ¦ ÙÔP;!•ƒÊÁ(=ŒÏ‡Ðßð: )FTbYÅ^3ßúöªBpÝ·Ã5'ãè.{1¢`¢¢pž[Ñì ;ØßÄ‚I·SUUh} *ǨŠ½½›Q|}¼?…UfW,”ê*öž²Ú« +ARN¡J£<{:¡Ôt‚™Ml9:³_€ýM, v0L—àìUÎþÏÍ)DZ[JjUÅ.3Ý^Uˆ,t7ŽB»ìó´Bih³žØêheÙ}^ØßÔZj –b¦ÐÛT×þ™‡§æùô3H¶ó±ëL!õªB„aA4 +ñ|™„r:0 ¦4±å˜Ì~µö7±‚Úùžá¸„d¯ò{ê¾m¬ézq¦,ÓbJ“*öžY¦{U!È°"Ey†8BÉps™Ør8f[paSK$fˆpRhc *Ï£ïk†/‰½ŽCbƒäZV±×L+£W‚–Dqt—a|Ä(”èQ0ω-Çhö–ìo"£D Ä8-4•gÔ7×Ï·ËÝv{Ò Î6vV;Î â^Uˆ/¬†Fž;˜`j˜pf[Ìì Øß´±œH…g%.{•ç’ \ÖÍãíbµ:©„Ú)¡082›ʽªcÊGAž!P2Á\&¶Ù­vØßÔ2iOºâ¼ÐšTG>ÆññD²ÇRÅ®³OriE…ÃbgáùH(¥’`J[Éì~;ìobdvèã¢Dd¯òDŠÈõòéÙþ:J‰‘l7…b÷™& ¯*DÞ2 +óœ@„²8€&1±å@ÌîªÃþ¦ÖFÂm©+¬rz‘çPnëõÃãÝnòh­(Òí}þÈæë­^Gžš‡ùm“$mÊÙKK»ìv9èl"uFÚÒ¡ ý“NÔC§èÚ]ž“î{3Š8,æ-^3DÀ’%ŠíÜ,@R‹PN_ØéHäÙ­pÈS×ð,Åù®`ëH!ÿГ׻^imÿ…Ä­N¦’ȨvZ{_1jÿ‘KZ)Ò^3n×êÇz[ïMÿÀéþ©€úïÛfÿ£Ӯλßø{ʾ§¾±Ú–ôO hŸE?BpÜ}÷¥o¶þýËC½Í?Ù…eéÿYpùÁendstream +endobj +527 0 obj << +/Type /Page +/Contents 528 0 R +/Resources 526 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +/Annots [ 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R ] +>> endobj +529 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 728.8762 227.9221 737.7228] +/Subtype /Link +/A << /S /GoTo /D (section.6.7) >> +>> endobj +530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 711.0772 271.2488 719.9239] +/Subtype /Link +/A << /S /GoTo /D (section.6.8) >> +>> endobj +531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 693.1587 216.0265 702.1249] +/Subtype /Link +/A << /S /GoTo /D (section.6.9) >> +>> endobj +532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 673.422 267.4728 684.326] +/Subtype /Link +/A << /S /GoTo /D (section.6.10) >> +>> endobj +533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 657.6804 259.752 666.527] +/Subtype /Link +/A << /S /GoTo /D (section.6.11) >> +>> endobj +534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 637.8241 246.4723 648.7281] +/Subtype /Link +/A << /S /GoTo /D (section.6.12) >> +>> endobj +535 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 620.0252 262.7911 630.9292] +/Subtype /Link +/A << /S /GoTo /D (section.6.13) >> +>> endobj +536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 604.164 207.7177 613.1302] +/Subtype /Link +/A << /S /GoTo /D (section.6.14) >> +>> endobj +537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 584.4273 181.9047 595.3313] +/Subtype /Link +/A << /S /GoTo /D (section.6.15) >> +>> endobj +538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 568.5661 189.8946 577.5323] +/Subtype /Link +/A << /S /GoTo /D (section.6.16) >> +>> endobj +539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 548.8294 208.7238 559.7334] +/Subtype /Link +/A << /S /GoTo /D (section.6.17) >> +>> endobj +540 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 531.0305 280.7632 541.9344] +/Subtype /Link +/A << /S /GoTo /D (section.6.18) >> +>> endobj +541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 515.1692 183.21 524.1355] +/Subtype /Link +/A << /S /GoTo /D (section.6.19) >> +>> endobj +542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 497.4899 212.9779 506.3366] +/Subtype /Link +/A << /S /GoTo /D (section.6.20) >> +>> endobj +543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 479.691 180.2909 488.5376] +/Subtype /Link +/A << /S /GoTo /D (section.6.21) >> +>> endobj +544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 460.552 179.1154 470.7387] +/Subtype /Link +/A << /S /GoTo /D (section.6.22) >> +>> endobj +545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 444.0931 171.4939 452.9397] +/Subtype /Link +/A << /S /GoTo /D (section.6.23) >> +>> endobj +546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 426.2941 173.5465 435.1408] +/Subtype /Link +/A << /S /GoTo /D (section.6.24) >> +>> endobj +547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 397.8143 270.4022 406.7905] +/Subtype /Link +/A << /S /GoTo /D (chapter.7) >> +>> endobj +548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 377.978 245.0472 388.882] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 361.1553 269.3059 371.083] +/Subtype /Link +/A << /S /GoTo /D (section.7.2) >> +>> endobj +550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 342.3801 255.0196 353.2841] +/Subtype /Link +/A << /S /GoTo /D (section.7.3) >> +>> endobj +551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 324.5812 241.7395 335.4851] +/Subtype /Link +/A << /S /GoTo /D (section.7.4) >> +>> endobj +552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 307.7585 253.914 317.6862] +/Subtype /Link +/A << /S /GoTo /D (section.7.5) >> +>> endobj +553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 288.9833 221.2568 299.8872] +/Subtype /Link +/A << /S /GoTo /D (section.7.6) >> +>> endobj +554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 271.1844 239.3191 282.0883] +/Subtype /Link +/A << /S /GoTo /D (section.7.7) >> +>> endobj +555 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 253.3854 205.765 264.2894] +/Subtype /Link +/A << /S /GoTo /D (section.7.8) >> +>> endobj +556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 235.5865 240.6335 246.4904] +/Subtype /Link +/A << /S /GoTo /D (section.7.9) >> +>> endobj +557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 218.7638 248.3744 228.6915] +/Subtype /Link +/A << /S /GoTo /D (section.7.10) >> +>> endobj +558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 202.0459 219.0448 210.8925] +/Subtype /Link +/A << /S /GoTo /D (section.7.11) >> +>> endobj +559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 182.1897 235.0949 193.0936] +/Subtype /Link +/A << /S /GoTo /D (section.7.12) >> +>> endobj +560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 164.3907 250.5866 175.2947] +/Subtype /Link +/A << /S /GoTo /D (section.7.13) >> +>> endobj +561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 146.5918 246.1633 157.4957] +/Subtype /Link +/A << /S /GoTo /D (section.7.14) >> +>> endobj +562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 128.7928 261.6649 139.6968] +/Subtype /Link +/A << /S /GoTo /D (section.7.15) >> +>> endobj +563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 110.9939 273.8294 121.8978] +/Subtype /Link +/A << /S /GoTo /D (section.7.16) >> +>> endobj +564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 93.195 233.4407 104.0989] +/Subtype /Link +/A << /S /GoTo /D (section.7.17) >> +>> endobj +526 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +567 0 obj << +/Length 2549 +/Filter /FlateDecode +>> +stream +xÚíœ]s㶆ïý+xi_Æ÷G.Ó&™îLÓ6ë»LfÇ–¸+MeË•älóï  +ðÉ^ÅÜÙÙµl½{Ϋ×¢HlÿÆàF … ã²Y?^áæ‹ýñOWÄ?½²Ï¯RÁ÷wW·?RÓd$•ÍÝ羂$HPB›»Í¯×ùÇÏw?ü|÷ñæ·» 'IC„-Ö=·Ûíº_ýp:x‚IÒÕÿÏÕ¯¿áfc|¸Âˆ-š¯öŒˆ1´y¼â” ßì¯>^ý+ÔqOôÿ¡ô:8Ö Ù¬¨rÎ{Q÷Ôñ‹×ü’È æÈpn_;µ¯TÑøÒYòÒÕ ê^¢BD߬„À×/»çOçõ³ýw»9Þ¬¨ýÑÇóñe}vi?·ÇöiÝ^&BE†(Ý$½³×D°C*$ÒÊæŸZDÖÆïòËE”ܸß:”ä ƒ¼¬ÔåH8½l(ƒ› …”1o¦PD«PèEžB)|Ù<Zžž&AȦÌ4Ië„^Œ&!d„ +ò²’ƒ!„š Ôo¦PŽ˜âÆ0¨‡8œ1 +$µ’MÚ½@¢WULRiŸåŒ].B0Å@!bVËqÈKÂýæ†RI$”¨q8¨<‡Äqøµ}XïwíÓùÓé|n'‘¨‘1\4iÿ‰^U±éI¼ð¹$¡#‰`ˆY-G¢(’ö³eWT#.ªv+bÉ5"DÐWWÄAвëA‚m/û§CŒ ìü¸Û{ÿzX¿ƒ$·ÏŽÌÿ‰@(”x‚™dµ^¡©?Á~s×$ö—'ˆâÜ•ÃNÁm; 7%»ã41UÄ­WU¼GÜRóbÜ P"n`&Y-‡›.âö›·òv5£ˆ®ÐTŽ6–ÒvlO‡ýïþË׆3*⚪&µ‘σªâ–*‚t7Œì.aåÆH„ÓËj9M‰D¸ßÌOØåŒ!FTPTE£¸€¢uͱjR½ªâ6¢˜Ú]ŠP|E0½¬V¢ EÁ~3Ea¡¸Fâ r$Š”ÄÓãù¹ÿgÊ`hϳˆV¢IÛÏÆzUÅe8Ù\ÐÙ˜b 1«å@,îOÁý掉œ F‰¬8¨‰²Lâv‰Š‹¤ðk$öªŠË°C5²¹$¡#‰`ˆY-Gbq‡ +î7—DÊ v“èT‰*%ñÜîŸÚóæöÔLZ$ +Äf±xyföªU*ƒfæÔê"0„â‹‚éeµ†²ˆ!Øo.†X EY ÃAå0Ô¯c¸„¡¡š5©…"†½ªâ4b˜Z]†P|C0½¬–ð¸I÷›‰!×Êþš¹†1 *‡¡)aè¿NCRÚ¤&rUÅ+UQ­ÈØì»&Ì-Ç–Õr÷mà~óNQ¸Âvµ)j*¿)íß¹,8a$TÙ•iR½ªâ5˜š}ßB¹EÁزZÀâv Üoî(¨]eJS!pPyIB`xã2>š2 {â‰iR#9…ƒªâ—a‚¶G†ß pPD80¡¬VœÄEàÀ~scÜ®'k#^/R7Zám¨gT÷fªŽ-ʼyÕ*•A¼¥†ß oPD‘70¡¬–ã­xÜo.oDÚ…cm|ó"ãvj¿ßqÝo·çóófµþ²›8Äc‰•â׋`øÄñ»á È'âÅsYÉÁVÜ^›ÍdÙöÆþŠ`Ø‚ÊÓÆß@Ûvmª`S3EÜzUÅsàmdú½FˆƒÊj9抗úÀýæB0Mì€EjÌ *Ïœ€™›2ºil a¤Iä¼ ªŠ_ª;.í72ü>ÏÀÀ"}`^Y-G_q'î7wÈ“ 1F+D*Ÿtøíw·íãà Ǔ®7` q†u“6Ï‘T”{^¯ôØä;¾ ümpBÑF8Ád³ZÎâþÜoæÐȶh…ÍAåÙT6·“Ø4Zë&m^d³WU@‘ö-@êU{ÞÑÈÞ7FGŒB9GFÁ˜³ZŽÑâžÜoîHJ¸]½VNx‘¿± !úéþ8ñ J‰„°ëå¤uar÷"Ø`œÛ‡Ë4òåyY©§Ñ”çu¨ÙL´ X]¹ÖÒ‰É%‹“æuNP8Ô,“è5«(@LÜ-–C Í€!æEaqÚ†:õ·öˆb\|‹Û†D +ùÝ}º¿+ îîoÆF÷ݳs§ê–Åî6Ù¤;PÜfÖOíS{¼?·GæÁß›÷ïÃÝeÂ/þ›îs9ýWüeßQó@û‚¤{ôù†Šëƒ¿«j~—Á‡?†{ þ÷/íSùv±ÎZ’ÏÿSq˜endstream +endobj +566 0 obj << +/Type /Page +/Contents 567 0 R +/Resources 565 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +/Annots [ 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R ] +>> endobj +569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 726.8189 253.9141 737.7228] +/Subtype /Link +/A << /S /GoTo /D (section.7.18) >> +>> endobj +570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 709.0199 255.0202 719.9239] +/Subtype /Link +/A << /S /GoTo /D (section.7.19) >> +>> endobj +571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 691.221 256.6839 702.1249] +/Subtype /Link +/A << /S /GoTo /D (section.7.20) >> +>> endobj +572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 674.3983 259.9907 684.326] +/Subtype /Link +/A << /S /GoTo /D (section.7.21) >> +>> endobj +573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 646.9995 222.7212 655.9757] +/Subtype /Link +/A << /S /GoTo /D (chapter.8) >> +>> endobj +574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 627.1632 313.2008 638.0671] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +575 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 609.3643 313.7588 620.2682] +/Subtype /Link +/A << /S /GoTo /D (section.8.2) >> +>> endobj +576 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 591.5653 268.479 602.4693] +/Subtype /Link +/A << /S /GoTo /D (section.8.3) >> +>> endobj +577 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 573.7664 269.0369 584.6703] +/Subtype /Link +/A << /S /GoTo /D (section.8.4) >> +>> endobj +578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 555.9674 259.1837 566.8714] +/Subtype /Link +/A << /S /GoTo /D (section.8.5) >> +>> endobj +579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 538.1685 259.7417 549.0724] +/Subtype /Link +/A << /S /GoTo /D (section.8.6) >> +>> endobj +580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 520.3696 266.3666 531.2735] +/Subtype /Link +/A << /S /GoTo /D (section.8.7) >> +>> endobj +581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 502.5706 266.9246 513.4746] +/Subtype /Link +/A << /S /GoTo /D (section.8.8) >> +>> endobj +582 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 484.7717 274.6654 495.6756] +/Subtype /Link +/A << /S /GoTo /D (section.8.9) >> +>> endobj +583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 466.9727 275.2234 477.8767] +/Subtype /Link +/A << /S /GoTo /D (section.8.10) >> +>> endobj +584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 449.1738 297.8981 460.0777] +/Subtype /Link +/A << /S /GoTo /D (section.8.11) >> +>> endobj +585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 431.3749 298.4561 442.2788] +/Subtype /Link +/A << /S /GoTo /D (section.8.12) >> +>> endobj +586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 413.5759 297.1911 424.4798] +/Subtype /Link +/A << /S /GoTo /D (section.8.13) >> +>> endobj +587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 395.777 297.7491 406.6809] +/Subtype /Link +/A << /S /GoTo /D (section.8.14) >> +>> endobj +588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 377.978 281.6994 388.882] +/Subtype /Link +/A << /S /GoTo /D (section.8.15) >> +>> endobj +589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 362.2364 234.4271 371.083] +/Subtype /Link +/A << /S /GoTo /D (section.8.16) >> +>> endobj +590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 344.4374 234.985 353.2841] +/Subtype /Link +/A << /S /GoTo /D (section.8.17) >> +>> endobj +591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 324.5812 264.1452 335.4851] +/Subtype /Link +/A << /S /GoTo /D (section.8.18) >> +>> endobj +592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 306.7823 249.2113 317.6862] +/Subtype /Link +/A << /S /GoTo /D (section.8.19) >> +>> endobj +593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 288.9833 219.8818 299.8872] +/Subtype /Link +/A << /S /GoTo /D (section.8.20) >> +>> endobj +594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 271.1844 235.9316 282.0883] +/Subtype /Link +/A << /S /GoTo /D (section.8.21) >> +>> endobj +595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 253.3854 220.4398 264.2894] +/Subtype /Link +/A << /S /GoTo /D (section.8.22) >> +>> endobj +596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 235.5865 232.6138 246.4904] +/Subtype /Link +/A << /S /GoTo /D (section.8.23) >> +>> endobj +597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 217.7875 233.1718 228.6915] +/Subtype /Link +/A << /S /GoTo /D (section.8.24) >> +>> endobj +598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 199.9886 263.0497 210.8925] +/Subtype /Link +/A << /S /GoTo /D (section.8.25) >> +>> endobj +599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 182.1897 263.6077 193.0936] +/Subtype /Link +/A << /S /GoTo /D (section.8.26) >> +>> endobj +600 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 164.3907 245.9038 175.2947] +/Subtype /Link +/A << /S /GoTo /D (section.8.27) >> +>> endobj +601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 146.5918 224.8631 157.4957] +/Subtype /Link +/A << /S /GoTo /D (section.8.28) >> +>> endobj +602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 128.7928 225.4211 139.6968] +/Subtype /Link +/A << /S /GoTo /D (section.8.29) >> +>> endobj +603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 110.9939 247.5479 121.8978] +/Subtype /Link +/A << /S /GoTo /D (section.8.30) >> +>> endobj +604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 93.195 242.5666 104.0989] +/Subtype /Link +/A << /S /GoTo /D (section.8.31) >> +>> endobj +568 0 obj << +/D [566 0 R /XYZ 90 757.9346 null] +>> endobj +565 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +607 0 obj << +/Length 1649 +/Filter /FlateDecode +>> +stream +xÚí›]oÛ6†ïý+x_˜ã7Å^nk‹X·µ¾+Š!u”Ú€c{®Ó´ÿ~¤HI”I&šwÓA`;~uÎ+žGüŠˆý¡È¤¥Æ† …w‚>Û?¿žÐðõÌ~?‹?Ï'?½blSh~ÛDPKFšß|¸ZM)¹ú:ý8ƒ¸ª05ÊFr_üòÇÛùË·ó÷î«ÉËy—#X\Q—áŸÉ‡ÝX+o&sSIô`?É0t7Œ·Ö“÷“¿º8þ‹æ€Ü™Ra"š1í½7"÷Õþsм‹ä”l„°gÏì¹jÖŸ(¡–í©[6‰å¹äY.Á|#ÁTF`Íx¡—ìTLÀܬ¾92g‹íæö)lJ‚³—Xœ=…³UL2©p¥©º|~<‚Ùñ·eËó¨r<ÂùlX7`ËJPt¥l?Ä;9QéΙZ~mKÜÿö§bâß¼üv}·kñûu»¸¿«7‡ëÃj»IÇjŽ9(Îœ«½¨à¯k´Ø$5ú8gw5Ù±]RZ=úôÀ5Úªš&ÂÔ5’m…›åb·À‹Ä‹¬°TL™9j€NUò`Ïœ;±˜x6Äÿ{YCê/k°>I¬„6—5˜o8ÌðG#Ì)®*- ·*0 ¼L¶”3¢Q<ƒpP•ç†óXJ¬/<ÓíT`68íŒÃBhƒâð„ƒªä¢ƒ8¶qAó,Cê!ë“Äj æÙMmp¾±s{5…;À*@Üïj›-¶7õìËáûºÎtƆÚõ¨Ö(Î’²ÜªJfŒÆÄ(5ts!ôѼBEèykÄò¼æg `¾±¼2·Í¸4û ¢@«ˆimv¹%}®Á¤â EÑ3]n*f“234rs$´PIzjÁŠ$±<·&Ë-˜odoË+i»OÅap;UWƒ›v¸¶“$v.ƒâpƒªä£w`äç8pÁ’tàÂIb5àŠl‡ çs[£8åؘüÖ‚pþ‘Çèÿ^j60WöÊûƒ6ÚÍÉo·£‚5ɦö5lò]oêýõ¡¾ñ›•·ÿú{ûæÛ£s>¸…_óJ^0þ‚…ÝÎŒåßÝN™¼Úîý‡t[ô§ïíŽèoß?×›ü?xkQ+ý 6û® +endstream +endobj +606 0 obj << +/Type /Page +/Contents 607 0 R +/Resources 605 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 486 0 R +/Annots [ 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R ] +>> endobj +609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 726.8189 243.1246 737.7228] +/Subtype /Link +/A << /S /GoTo /D (section.8.32) >> +>> endobj +610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 709.1945 238.1532 720.0984] +/Subtype /Link +/A << /S /GoTo /D (section.8.33) >> +>> endobj +611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 691.5701 251.4234 702.4741] +/Subtype /Link +/A << /S /GoTo /D (section.8.34) >> +>> endobj +612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 664.1176 244.3102 674.9967] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 646.3587 159.559 657.2627] +/Subtype /Link +/A << /S /GoTo /D (section.9.1) >> +>> endobj +614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 628.7344 160.117 639.6383] +/Subtype /Link +/A << /S /GoTo /D (section.9.2) >> +>> endobj +615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 611.11 247.3986 622.0139] +/Subtype /Link +/A << /S /GoTo /D (section.9.3) >> +>> endobj +616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 593.4856 260.1307 604.3896] +/Subtype /Link +/A << /S /GoTo /D (section.9.4) >> +>> endobj +617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 577.799 182.1539 586.7652] +/Subtype /Link +/A << /S /GoTo /D (section.9.5) >> +>> endobj +618 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 560.1746 182.7119 569.1408] +/Subtype /Link +/A << /S /GoTo /D (section.9.6) >> +>> endobj +619 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 542.5502 159.4692 551.5165] +/Subtype /Link +/A << /S /GoTo /D (section.9.7) >> +>> endobj +620 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 524.9258 160.0272 533.8921] +/Subtype /Link +/A << /S /GoTo /D (section.9.8) >> +>> endobj +621 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 505.3638 155.1453 516.2677] +/Subtype /Link +/A << /S /GoTo /D (section.9.9) >> +>> endobj +622 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 487.7394 155.7033 498.6434] +/Subtype /Link +/A << /S /GoTo /D (section.9.10) >> +>> endobj +623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 472.0527 162.8862 481.019] +/Subtype /Link +/A << /S /GoTo /D (section.9.11) >> +>> endobj +624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 454.4284 163.4442 463.3946] +/Subtype /Link +/A << /S /GoTo /D (section.9.12) >> +>> endobj +625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 434.8663 192.7639 445.7703] +/Subtype /Link +/A << /S /GoTo /D (section.9.13) >> +>> endobj +626 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 417.242 170.0795 428.1459] +/Subtype /Link +/A << /S /GoTo /D (section.9.14) >> +>> endobj +627 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 401.5553 174.5026 410.5215] +/Subtype /Link +/A << /S /GoTo /D (section.9.15) >> +>> endobj +628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.9477 383.9309 175.0605 392.8971] +/Subtype /Link +/A << /S /GoTo /D (section.9.16) >> +>> endobj +608 0 obj << +/D [606 0 R /XYZ 90 757.9346 null] +>> endobj +605 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +631 0 obj << +/Length 2360 +/Filter /FlateDecode +>> +stream +xÚµ]Û¸ñ=¿Â6iù%‰º·4¹+Ò†ݢMd‰¶…Õ‡+J·Ýüú›áP²li×A€"@L ‡óÍáÌ,ß0øÇ7)Û$Q¦RÅ›¼~Ç6Gÿõ÷ÛJHø]Ù".7Áüè_ß=ü&Ò`a‹hóx@â±JÃHËÍcñïíÇSvîM· DĶ|÷ŸÇ¿Ñ&:áx€Ý(TZ(wàñdyøü…¿<ŒkÛgùRy÷ëã$—ŽBÆu²‰„Uœ¤«²HÁk”? ÓXÄ(NCÆ$ÐR,DC Hv(Nj»_nYs&ÂD +þ6ï k…¹œ1ç, .£ 5ǾÈjÒþÓÐ<í8ۚʾ_H’ˆ0–it# m?mÆÕßgR'V¤ŠçR-(£T§¾?ÿòððüüÚ2·¡5ä]®æg¹ £D!O<ôIæc`δVàÂÉ@݇[í¤¡Ž˜|ÛÎÖ;CŒªT‡ZéyÌIécNŠKÌbÎKK ²éMS˜‚ }KÐ:#ïxœžvÏ­µå¾òPÂÛ¼­ë¡)ó¬YÛ²9zœߎÍ9wmßæmEìPŽgÍNDÛ?v<Úš-‡wŠó0"áôk›ØnOUpZòt«ƒ= +ˆÐºÌ»6ÈÛ¦ïÚª2 wpÓÓí'cÏŽ"íÏQñ™adžnÕÎxŽÀ5yNCS µ¥˜á´“„±P”y§7€üü=´j„ˬ§ß~ñr<›=-Πê"w ƒ¼£¤ “ênÆœNó#ËŒ¹¤üɘzž1‡ò¼ÈšŠ§¡©¾Ñð6kJjÎq•B¢õÛï§Le˜Äqüöû©X&éNÀ²íëoèœò¢( S vòu Bº£ßúzõÒútEÌÕ—vBs/íù\a*([mq]VÛ…È)˜ +¡7EtòXˆK°ÿ°ìš£GÔ=ÙG4WhA2,+ôeí}¹Ä3Ú3® +ÁVñXn欗uŒ¡fB_ÒðkC$F@ÿŽF#jôuhîisš|](ß"¥6s¾Ku$¨#Yô˜q~O ÕùÜ”}™Uå÷‘ŸCy"˜H6sN R¨Quú3¦¢0Uѽ2tBCù?Q•QæÞ!EW^Ê_àc]Ô°Êr³¦“f,Ý̹/2bÝR0Š”߉ÏÜm(p ×P‹¶¯Zi¿'À‚. +ðÚ$ëÊ *>ëŸ#küKµñ¦{Ó”‹`@,åoÛMÈ$”Iò3Á Cš²ä^0šž=ÌJÏ">¡œ‚ºÐi‹[][4»Ê«°õZ^i2!Ó ³UUG¬`Ž¶â!%•2u-ú71ë$do|Pî…m¼üXOÜz"Ñ`dÉoä{ÕÈþI—tQRWïÛ6§®¢·$Ö‡/Ÿ"—&bâm³MXw„QоÇú¶¥E=ä'ZuƶCGƒÃû¶÷N~fsD¤gà8·YQÍÛ‚1Å4Š’­Ý¥=‰›ž•%B¯fE¾ö&"ÔYáWnh8SZ@¸ b€ãõè=ÈM¬æ{k?VuÄ8¾’¼Yý0‡ÂÈ—\ó4ÙÜ4ÏY:º€ÍÁnþ娌ó£®mëq¨äû˜ŠžWwqÆɼáoÆx¼¹R³é²T~.…‹ë;„Ó”æ} +{[7vS~ªØ­KÎ]²þ-AP¶·m5ôþ«.›²v~‡‹‰Ö;ÐïÁdýÐ9K|´L1²tFpäü7zo%ò.¾äÓŒ3†´ô¹' aá%…ز €Ž:ž„„H ~“GpÝN:Í1# ƒùÊÆØÇß‚D®à{ÿõñ÷«ï~ú⹎Z¬EÞXrà•vÃÒq¤XŽÑØ•}ošW²ìÇ«ñQMO5ÆUÖÈ?ámŠ’ƒJQ%?ö¹?.+Ûæendstream +endobj +630 0 obj << +/Type /Page +/Contents 631 0 R +/Resources 629 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +/Annots [ 633 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R ] +>> endobj +633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [171.6432 525.9374 324.8465 548.2835] +/Subtype/Link/A<> +>> endobj +637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [243.7125 430.2503 420.8261 441.1542] +/Subtype/Link/A<> +>> endobj +638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 390.6135 195.8719 413.5822] +/Subtype /Link +/A << /S /GoTo /D (a00143) >> +>> endobj +639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 378.6583 251.5126 389.5623] +/Subtype /Link +/A << /S /GoTo /D (a00153) >> +>> endobj +640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 366.7032 241.5402 377.6071] +/Subtype /Link +/A << /S /GoTo /D (a00144) >> +>> endobj +641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 356.8053 199.199 365.6519] +/Subtype /Link +/A << /S /GoTo /D (a00145) >> +>> endobj +642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 342.7928 199.7971 353.6968] +/Subtype /Link +/A << /S /GoTo /D (a00146) >> +>> endobj +643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.1719 342.7928 346.0872 353.6968] +/Subtype /Link +/A << /S /GoTo /D (a00149) >> +>> endobj +644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 330.8377 297.0202 341.7416] +/Subtype /Link +/A << /S /GoTo /D (a00147) >> +>> endobj +645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.3768 330.8377 448.1464 341.7416] +/Subtype /Link +/A << /S /GoTo /D (a00158) >> +>> endobj +646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.6908 318.8825 181.4861 329.7864] +/Subtype /Link +/A << /S /GoTo /D (a00142) >> +>> endobj +6 0 obj << +/D [630 0 R /XYZ 90 739.9346 null] +>> endobj +632 0 obj << +/D [630 0 R /XYZ 90 553.9527 null] +>> endobj +647 0 obj << +/D [630 0 R /XYZ 90 307.8837 null] +>> endobj +10 0 obj << +/D [630 0 R /XYZ 90 301.139 null] +>> endobj +629 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +660 0 obj << +/Length 3153 +/Filter /FlateDecode +>> +stream +xÚ¥ZYÛF~Ÿ_1ð“D +o‘Ù'¯×Î:ˆo<Ù—$Õ5ÌC&©8³¿~¿:š—éñ‹†Íªêêêêêº(ÿÞߟy÷‡ø°ÏÂ(¹/ª;ïþàï|Eï€ßM þþp÷ý› »ÏöY$÷gæøû8ðƒû‡Óo›`» ƒ L6³Ý±·¹½}/ƒ‡Wï¿wã®Ï‹Û?~º{ý0,§ÒÄaâÓbŸî~ûû?AªŸî¼}˜¥ñýg¼x{?Ë‚ûê. +B÷RÞ}¸û×ÀGïmSwBpn”²«ò²ÔáS×›ª“Yy×Ý*#ˆþ’÷n¤ SÍédNB|2Û Þüi ÅæåÖ÷6Ÿé_þ¤+~¶n¢©v¤bìzçûû,Že7Õ­¶EÞƒGe ï/2Êåq¾•å®+òR Üil·þf¶M··º¶õ£¼8 ²céšöc'vE‰- ªÊ‹‹­Í~»K¼Ãæ×úDj%D±Ýšä¬¬+±ùŽ¡óžÌ Oâˆ-_›®³G–о‘gkª†ÎïOúg„²0mŸÛZ†-Q™â’×`ˆ*W9"Ì[.¬Ú']ðòI0·ŽN‹…RîÝ­¸®³ý-_œ‰Ï;c“""?šZ[oš3=#ÑtF@ND¶! X*B˜®ÃÁؼ„z‚,Ü\²—Ïb5"ñ6ò6Œø0Ï2Qì8ŒöÆ3{ÖvJÞ6!ؘÖ®v—&ƒMºá.Ðö²lSÚÊö¼0ãzt¾°³ÜóÐß|¾˜Z¨kã)¶ë[{Üp4Ê'Û\ Öd×7;3igZbÝÉ[^;â¶é›¢)Yýq¬þ +ë6x2}¬ùŒ½@L Ï#Ù…n~yóJP͵´yÝË+ÛžM+FR7µ4JÇ@ƒñˆÎ)§ÅÂOçæ…ÎÍ;yþîyAÛõÃ-mmzwU4ÛÛÿ2·C|ÞmÛÅå'˜z-ÂvòÄa+*·eÓò©àM|!£}S$¸šÂ’Ø…"¯Ð[ÁüY@Ž7~´‡¯È5CÞˆäÍB–×ß#âøž7—óÕ`˜$¦p™úw0 Ò}”¤ÙdÓAÀ¾OF£g÷qm¯®),®“7¾›xÖpámsë„|0¨ïÄ·yý(ö +ä¹m*™TÊåÔ—ÉU 6ò*^„Xä +yùË{|¾ØbõÚõXº+q;Éþ†}Ü:>Zò +fkøÝKò¯8Ð`Ô+Dþô|dÖBt¢™ˆN¯êia…|x÷ ¢¨oŒ}8 ê@E®¯mêÌ—:‚3ÙU9]r/CŽ¡Aì7JÅ*¨š®g¯Qh¬øJb !z7ç/ñ¿Ãì\F<¼^Peþ$Ã/¨9:¯\;òÁ¶b°3¹1xc?{8ȉãý…ˆ‡Ñä^ÐÎáÎVgßÊ'ˆ§2ÐÜV™4çž}*†ÃÅ–¥%xâ’·'I0†YÊ•]M5àV½¾Þ|ÍI0:ªw™ì3Û⻯D÷I®dê¼0†ˆK÷#b€ÓíÛ¦,ûã“#ý6W}oí4f"*ŒÎò°O‚(¿AFâC÷Ð0'öDwŠ ¹<Øœ?‹!HoŽ eòJÆ´{~^©–DC=Ešv n¥x¶’­ÝZ°Ÿ¶¹¶¾wbÅ ;„6…q“ööHÖÑ D“³Sš Àv!gRÀ86b° +åë…ç• + +ý=Ùušê^¥pâ´f¹VsS1eß;.Ó³_±Y¶•Ôѧ‡…­3OŠ’U[ÙEÈ>Þžg¬hf×ÛÚ…Îô ùT¢3Ui¦\/[DÊW]2&€`ݵ)ä¢Îåã¼.'³Â@2*lmÇ,DÂ¥Š^fÉÿh‘í…c—,U,+¨PØ íPÓ$ê‡å$Xħ©àeØ %nÛ4KøËËd9²ý0 EµÓ Uþ—­nÕš%Ov¿ Ã[¶Œ(|ÓS/Èi8ÏšB-1h:rŽ +»«<–ì“Åá7œžå¶q6R,eu‹žÛüÑyg†×ë±qŽòûù=a§ OÑy'9(5Ù(½ÒT­£H>/'ÈæhÔœ¼$`ÍÜ]d®>Á  ¦V²Æ1`ÁÈmrHÚV-ö\ÙUü_´@=D*!©ÎK¡j‘W^­x„ô uT:^ì©®é]ƒTJ1ŠW-ò}lO¤ÕHÏK]pR©Í‰Þåú¥Ó… ìhpÝÌj%x1“ì¸Èëy༒‹°y±r71æ€Ñ­G+ !ÝôŠµØѧ›m;-ÁÊ@Ãå<œýøˆ'™w ¡Sú!ùƒA.dÏG_3êXë(œšâ&­Äõv,mw‘öˆÚwàà-Y^/à×”†£Ô\&»M)çø(è7¤ö¦åÚ3²ÍÛ×oˆ`/į%ÔP²~gúÌ2õH¶7Ãé$PTY³­ŠäªR€›zÕ&ªÆ¥6ªo¢-©NïK„à ŠÆ%aË3ŸL¿]OR.Ìò¥k«1OjYæ9#;ÄAÑrE@Ä°AwTú“DQ+Áçà’BÑ€'öâ`šÖšîo.^Jsä0øâhØÈÓüþà<@˜ d}³„|£q&•¢k-L†Þ Á´žIB]žÐÚb¬˜Õ¥Œ ÌV6ó* dºÖ„d¡¤÷–¨¥­Öõ/‰z‰t÷WNé¾8Jùêi -ykZ××PÈ‹—òdOƒw¿~xÑQ9HÂËLy›I–¤dÂx`Ô\u»[}–^&‘å…CŸº•[lÖ×ͺV A:u Û«–¢x¾€5sÇX·M_·ˆüþØ“WvŸ„n͵i{9Z Õ– tÃ>²ÅVˆ}JêNVûÆ,àzéËbÇѬIBª€£|)òÅ[­ôñºlØ„ñ`¢ÀâB»îàóKJxVW¹uÉmªú¸ÊŸĉ,AŽNP2…µ(×H®:ï f±»ª”a¸Ža<Œ¿l³¨Í¼X$¡Ù“¦D-¨ÒäJäŸç±œ9ÿµå­5Ü Œ¢Í¿·‰·a5IÖžqGökg¤Á`R4ÑHÒR2NçÓ U÷_GŸœË@@]K¶#;ÓFΦèå}XfáJDº³õ‚N¾6(3‘fº’–³…VvGΑº©ê$9¶LÖ_„iͽ­¥)L6þ¼JJce,¢÷£Ù‰õlÿñR4þRÉØŸ´5¸¹oþù|K\E–6íÚ)“C‹È¡n…‘Es2¥ô˜RæC@+0hžKÊÔé׈“ò>GD鬿Oïw5׈± +ÃÈ”pF´[õUã S ¤ èD;Ž¡öŸB—;S‘ÃÎŒ@êÃh8qxD3ñ‹„ÛüôTçÕPІ܌#¿òxk%pðJOW³kÎ;íÙËÌ£tBù¬¶Ö¼~õÞ¹®‘ÝG•(Ù|°5³É¸kÕÛän ØñË{ãš´@M´Ù¹R[Šr<’ã å­3ƒ¯PBIP€;›¼'3ëšî“Üœè¸ÚPûÂt¤¹æ7½•eÓi†&™´·y4µióÒöOÛDÛXßl©‡ÚR—ÛÚ5Ôë¾ÝRÖò禹þ¯u?Ón,.ÆP6‹§€>Ø€±êû1fÛóùs"=zÉ×1²õ QÝÊÞV –"ÏGŸñ8¡O¤q9ptÖLSsÇ ™ücKݲ•:0.[a­øfO«}è·®nk8žq)'ÍôYf] Ö¦¥;FhWóü!²`f!:—Î_ 5TʧV¾¨û~ºO¢0üê÷ý)Á—_Â}/ÙGa|h«¿A¼\Ë÷0 %Ûó+TßZö™yI2_÷ÕÅÚ²µjß¹«‹'Õ<ÕÄ®—œ·Óþœû%_a¾ÒÞ¯¨1Kp]Ò¯*qD?£B%ú¦ŸYkTß³+:åMV|Fu(‰›“Õïo½­ÌàN-6Eq£~ýšjþÞ«? Þö~'ÿ×Ï9XÁ)¦øa0ýJ²ÏaJû L$gæD¡ ÿÈŽ¯wGî>W¾sƒŸÈ núâkÅì{?á'oç%j0dBîûåðiÔß{ó/ ÿhþz‚Ã]*‰~q²¢¥ÿè„‹endstream +endobj +659 0 obj << +/Type /Page +/Contents 660 0 R +/Resources 658 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +>> endobj +661 0 obj << +/D [659 0 R /XYZ 406.9776 658.2409 null] +>> endobj +14 0 obj << +/D [659 0 R /XYZ 90 637.7268 null] +>> endobj +662 0 obj << +/D [659 0 R /XYZ 230.4521 230.3912 null] +>> endobj +18 0 obj << +/D [659 0 R /XYZ 90 209.8771 null] +>> endobj +658 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +665 0 obj << +/Length 3063 +/Filter /FlateDecode +>> +stream +xÚ¥]¤6ò}~E?2Ò4á³¼%{—h#­”KFÊCpO£܇áfç~ýÕ—ÁÐÌNt§Õªír¹\U.×øŠà¥™_ÄÉéPuwÁáÀ?Þ…²|„õ£‹ðýãÝ7?DÅ¡ð‹St:<ž‰Â)ôÓ(Œõï^è'÷Ç( ¼ï†û0÷ªK3ªjœh¢xå׫ªš?‚ ªxþÃÔWc£{Ó,H#/¾ÿóñ§»¿?Î|›i| +‘‹Ýýþgp¨ÝŸî?.òôð“À‹":twIÛI{÷ëÝ?f:¼@ö¤MÃxOÜx#nÓŒ¥ýx¾?Ƨ“Wòϵ¬>߇§FœgÞ¥4²> Í}”zÿ¾SOÕ-Ro¼(^núë4òðRöu«žœE3[…ÄAä‡9Èg™!qpex”_Áfô£ƒ+Ü Uqj®ÿ$þþÒþ‡7¼$™DA¶æe£Ú鶴і¹è©­Y1OŠÜô÷IZO³æ-Â+ÿÎ*îJÀ¥Q¥ûqÐ-Šqû³|…¡_¤)ŸØj}õïÁ"ï‘€ñ6÷¡j¸?†^U˜9W{UŒüÒ´-Ã{µÜ» >µºúŒBÅ©÷„¬OBpÙ5(x2B«”UÝWJ˜úí¢d±Ý †¨&"5€ÍˆI˜z ‰ƒµ¤„%©W^¯mS•,ΰ/—¦ºðP°Ñ`+Ý5ý3ƒ]³§8AÓÇIÓª¯ñ^pÖ•¯<¸”(9ëE¨ ºž*‹¨{3pzÈ ®íëöd³–.$é,ëàd¬õàøI‘QýÈ#=>ª) Mkú,3 z5’`zøÌ€š¯¶©¡vßøðö±UÙ¶J`£žY©gVæƒìpÄôg93ÿ% Éù³]7èOáQŒ`©M§€a@IšƒÁdè\|š!+žyéñÃϼ֩ +L¼1‘=4EÚ¥®Ì/@É^ðT8r@ôŽgËæZµå+ŸÀês¯ñÜPÄóqÏ0;¸¢ÆÆ=”½éc$L…WAî zêëã84W^@Fx¤ ŒÉ¤AmǨ8ÉÃ!,ºVØÎŽAÖ1Ð]šþ ‚1²¨`Ù_xW«ûû#  ábpûEÂô‚··nqøP,„g/„g/´õÑàN£S”Niä§Y˜½0,þÑÝ°ã¯oèÚaÕòfÔÈO~”æɆ£mØ°XïñqC ù KϼïUUNf­ÂÍü›?‹îÙMâG†ÂíÞ(ˆŽ±C+O¬]ÂssLà/le0ªUÙ²›Ìbpïã…Á%ì-ĉýHÈš,®=l\y†‰V„7§Ç…Ÿ¤a¾¤aüoù#Ów ÈGÏ2v”ÝxNCýkjex†÷Þ™Ôú°³“•Â”Ô¿äÄ·é®­B'Ez…3sÊ~¼p7éOf‰„ùOX±± +†3—‘ÖʬìÜÛ0õ`ïIL) Y{®„(SH4*ØÇ©'긅x.ìýäZcSMm9ðÜ•Ž \ÒÜø¬zxü#àŸY]å|S[8JÁ}>;Æ,&TkŠƒØ畲Ò0 7‚p‡9fgOc³C#L kv~(†÷ᢪÏfê˜Ú‡²EÑ­SÝ1/ “Læ‘™±1¥`ðQðF]é–J½:ÿT sÜE¸F¥È37vUά˱\ +I–*kÎDà`=XK€«ÏÙ½âx'”!ÿq­S‘c’Ãs„dPñ"çÁ ά5ZÁómG‹Œ¸ÁB;`Xv8¢2¤¤ì8Àä~T‚ß}7Ë~Ýr*»yb\âÄhî;ÁAUÊ-Ø@59'Ûôkä·C¥–tyyfï)·Ï=Ϫ€ÁÁêG™Íçæ¢=H‘r. °ŽŠï“6BNŸÁ?–h¹çxu}¸ÜMFv<Éd¦W³ã­ã€¥9KY9XØ8?À°ô­ósYšn¢s„Nn›Ç$Òo—¦%wË>€]¶SM*†YÉ?ìœ dW.è·Y×–æÜ.¸VÔé[¹_”å~˜åñŠ—Mæ7ã|ƒ<ð3tâò¤W`*E‘üEá-ö×ÞдÂÕ;ÒǧÔ;&ýŒóU¶”$çãØF¢•CIs÷a6£FÌj¼hH8óÍìᮺ©±ýºª}šq´ñº‘ßKó|i%EÔWÈw›ÿØÊ·4FuO­-”‡ z˜óKÙ¿¤Šåd]«¿Ó#‰éqt|jFÛ˜„<¼S#—l% C.Îá6~ó Ê +Êùóå€H.U_ÉÖ~Ꞥ2Îmlp¹!¼ÎÆ !$¿É¯±:Ðü[ë=>Çà*vüÉ¢ ম'+(%+±iÖNžÐCõS¶ë\fžU +Ê ì“=£Bª*¹.¯Ž]®€³ c‰ BJXÂ/[fG¤€—M[‚íì%*ZJ¯l6¿rÕCrd‰­©bï +¯+9)ÙØcc‘&‘`HFìᯤát•Á²~܃ÃHVêvJ±'A]׸ðúvÏŸÐ:ª`iSuPyµÛv˜j­ä‹¾±Ž›Û ˜JÛ¾“M²U¦ë·´¾ÈåÝÏ,JwEž­xŒÒ¨Ý6– â© âi´èÄðBÉ?ŽcˆŽâYÅ:è·bKÓÆ(PR½ƒ“ŸQ¸ædž-Ò׈‚Ü/ò(_q`#Én?´'[6}T\ù'ÕéALñSÙ—Ï\>½[úÄ+ˆmW%^—â†×Øâ¥[" È~`ÍõIèýòݧõºPÀ㣤F¦‚ÃäX8LOµò±*ù ;}ÜŠ±@¾.fwØKK`Ÿ›Vsí³×·9sõÍüäÅŽ·¤õm}ïtÂ`“͵ iMä (Ö á¼°íäBÞ=îJ~~"6´!e`‡3w°X‡Rklwý}’¶Ñ6ßçÏ2©T q:W c‡@:ÐŒbˆBOö¿u4²T¿öe‡®—;±.\€zSó¸«S˜€ ™*jÔF–yÍBZN+`À‰´rÜ3ÜêáÜ’ Rî¬v¿ÆÐÝÄx#ÝÖ\­B·ê¿á*yrB£ï‹5qŽ.é‹­X>ò½ãÚ>íJ÷½²®`´8ÒW¦8pbÅ ¯m„"X#\aáæà«÷dU½žžÉì365øÅ< 0}þ¯ yœ“¥ÇØ+øÒt”ٶ̒žTj›ü1÷õv¬¿ÆžÝ 7ÖC8}ׇóXu`ãlÛ݉pTl(©˜NÊÝ‹Ô~†Áb.é­fÆ7l2šÍfûÖpL¯ÍvÓGjqu‡HŒÕ.ô°„&ž‡_!½w£öó%åqÍù•Çò-›Wø¾«îÅúä|tD› Š¥W¿ÚÊ­-‘ÆÜ¥-laäI°ÜfÒ\¨Ð·Ø-—=;ˆqOÀå«gGŽø}3 XY}KãÐ2Kªá2Çëœ!ø¿¬F4]§êž$†0Åù¬Ðª—„l¥¯ÈÖ뛈À´0ºg¨F=Ô%ÇØâFÁ“¬©ð°…%CNÿ!QB÷GUhf«Ðbýß *ÅŒ$--¤¶Ì÷¯„É~“«ÃŒ%sæÇi±—yáßt„~˜d»µx)ExJOÿמÐÒä°%Œ#÷ïhN~‘ŹýÃa/áGÌoËÑË6üd?¡2&™„‘üßFñ·QÀ³(N<"=ëaÓ'}A|’lêoúË+äÕ[õà_Åìèç¿=î|!endstream +endobj +664 0 obj << +/Type /Page +/Contents 665 0 R +/Resources 663 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +/Annots [ 666 0 R 667 0 R 671 0 R 672 0 R 675 0 R ] +>> endobj +666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.193 726.8189 348.017 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> +>> endobj +667 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.2665 649.4187 387.2547 660.3226] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +671 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.0892 410.0069 279.1746 420.9108] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +672 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.7031 410.0069 366.2118 420.9108] +/Subtype /Link +/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +675 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.7987 273.8799 207.4884 284.7838] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> +>> endobj +668 0 obj << +/D [664 0 R /XYZ 271.0497 628.6614 null] +>> endobj +22 0 obj << +/D [664 0 R /XYZ 90 610.6547 null] +>> endobj +669 0 obj << +/D [664 0 R /XYZ 247.6771 537.3319 null] +>> endobj +670 0 obj << +/D [664 0 R /XYZ 90 520.446 null] +>> endobj +673 0 obj << +/D [664 0 R /XYZ 418.9827 401.2048 null] +>> endobj +674 0 obj << +/D [664 0 R /XYZ 90 384.319 null] +>> endobj +676 0 obj << +/D [664 0 R /XYZ 244.6786 277.033 null] +>> endobj +26 0 obj << +/D [664 0 R /XYZ 90 259.0263 null] +>> endobj +663 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +684 0 obj << +/Length 3355 +/Filter /FlateDecode +>> +stream +xÚ¥Û®Û6òý|…Ñ'ˆUQweŸ’¦[¤@€lÎYìCÛY¢m!’èèғӯ߹Q[IXøAäp8œΤÕ΃ŸÚeÞ.‰7 ÂxW4Þî à_” `ü°Dxûôðã?ýl—¹YìÇ»§Qˆ•ùÊß=•¿9áþø~;O½?ø‘çŒï?rãé§?Úv?äÅçýO¿>üü4-'ÜDA¬p±/¿ýáíJàê×Ï ²4Ú=CÇsU–ù»æ!ôÛ©þ5Ñáš°%T¤‚-©‚©|è&,T~½ÖU‘•i‘ý̹ä=7®)tß뺱ç ,tæ”ù» Š q>îUèäÅ^9Ÿ÷ÊsôÐ[Ü|`ä¼ëª½9îUäç‹–µ˜&L¸ã¢Z3Qµçå á‚ç6c/‹5ª4qPÊÍ¢ˆ%ü2êQ—¯€c•9º +´½Ø9¾ð—h^ä´zxF9L÷™GJM¼W… ˜oÍ\#ÂÄ¥ÔÝ>ŠÐX˜$΃Ì┩ևâR]yÎÏÈ°ÀÃ…i‡ÎÔµîz¾ä{ß³zÜÓ´­Ð9"îxBNB!”] ¼vE3¨Î»½J³tukÆóE° ã"#yÕ2 À<÷Ò ­É¿VÍØ0¬¯þB³ÁæRªÐ9uy£{Ò…rÞMJ[2¸M±2»è -k2È,“M°†™M¶›zí·ïôcqa´¼çï§Çƒø2ÃtC/˜EÞ2Ba®h/ŒRµ…iÈüpìø2 ³8Àúºüéõ5ïòAXYëŸ1ʱC:[·¶~?^X=:šç;ïO8ˆ¬€q·Á$=!Úi¬kËÔ¥ÊåG¡ÍÚÀÉt®Í1¯º2¹(¼óı‰#”kpÈÉÒÂ’<“•<”W÷æ›4„×p‘¹#ç¢óicû 9`ê˜q8ñ¢tJ…ÿn<4½uê6¬-{™÷ÒæMUÌDÈY}§Ôä/ÜWKg²`àƒP±p3YA3ö ÛdñðmÀ tcÈÛ¡;öìëÐdM!Œ ¥¾Ê®C6›¯j™J<₼òj¿ûõ¢ƒebUŒXÉÊ + ˃>$Á ÝIöÃÉa¡Dh êÀ|:­f6Z'¦C}¡ü°Ëh¬Bª[~÷<ÿŠ ¦ãÍ"Ú< ñKm ¼ˆÇz™BTÝ·-+òxhTVŽÅ`Ñ&JRÎÔÜj9ÀX˜ïyR¾ÈÁkQö È\{NåÔ:|è#Úü¹wFXÃiRLb¨…?«R˜§ÒúëÐÓ°Ï6ZKQO†=\:<6_iùټɒ=)éi°^Í•@- ŠËcsd“ó¾éeÞÚË€AººR¡„±·<Àoè»i˜q(Wn¼?(N¡opñõm‹ç|$—2pT“ØñK¦S^HøÝ‹¼7ßÃGÉbË%XËOÝ8Œ³9m¨,qÞ,—QY +ËÈ8ÊK`&¦ep|¹ á”·Â%v‡‹ RÇyÍ×ë%¸¯v½Ô¡*0/¡Åö·š/؆UÛzÍÏB‰öxãAW9>“á8ÒÈ\jeh,ŒÀy S@ò/ÏF(h¼}{~ÇíÞ,Ê÷%)›¸ÆüÅ‚xà[³öï¶ú*)5ôß®{÷—d·™Ï×°Á¨¡T\IÀ™ó¡*:Ó›ÓÀÝÿì©8•co¿>¢Ty\n½µòÑ•üŒÏ‘ë{DÌõ¬6ó;Y§ŒsMÞB•@᥸S"¯x!ÄC§Î4 ¦x +±…Ê´~á|‘Hòþ³@ÇÀqÌÏ"°Æ1ª¦Êy¬¸ÊNì†GÀXønÖ¯ Ž„…°•@Nn!»`8¥s7E·A"ãö`ÜÅE[bãQL±gvûd¢Í7Öê¯âô±=+Ûã–ðÐ `ªî-‚1 À É ª‰l˜z%èµ¼¹Ol’·!µyx#ìÖ+v%:½}|'ari4‘Ç.?‡˜Uõk§a¶™!òŽÒ¸Ž$@Ýo^„0¿| ²D.®åÁÃ`½l¦ š8ë¼–›«Î f–€¤Œ}N™È/e<Ô·ƒ=$ö(²™q¸¹a¿³5& €Q¼0ܲ>²ñ$8˜ö„<){.ó˜9O9?t9~þ»z>éµÃá˜KxòmSöšg +‚ +öƒ*hIz<Ô 25#KmH·Êâñ¹ HÎ9Œ º=ð,hÒÈõTšìü8v“0 6ŸW,Òa‰uÿp”f.K •¤nâ©òQÛ*»îÍëÛå•ç»Ià«ï®ºYªBhÒBº³ }Zp©¼ÄM,»Áæ2oOxòùñ^µÀt]é>ç–í4q£„ÿ®Ú’ÌMã,š=ÿâ?Üá›dÿwü[´‰¶ØþŽÝ(u½$Ü-éÞqk‘6V‡Ë:=¤ù ¼0Klå*©²î_»\*>t‚í +Œ+öGo|4X¸V€FMÖS¡›9=D´Œ³r?yzXÞ¾È3ÇMpÄ™Ïm_ZËÀª¨¢y=#C`ñÒ\ΰ­”–0!R_¡<Úö¹¤Ð='m›ãxxŒ¡({ƒÔÒ[>’lqý׆„’@'°ÂRa;Yò‰ÝTÞ…` çîOÜ;m!k¥ö=“¦ v¯ B¢VkmŠ7ëƒÞe ­>¨s§¼YfBTX³_¾ê·b²«Ð²÷Šƒ,|oÞ(èŠ*7§p%LW}ЂSÞaªØ<•º^Þñ‘v‚€7>ªF^`¡I·¼Ãí +üi>ßà£Id™Ä¡œ?­–cÔûÄ>6˜}lõô kŒW!i„‹™4Ëo loQ)xð;]° =šÅ 'ö]¬»V&ñ# Ð˶ `¬LYáξĈaEr׎YVèÈ£Ã÷—²GŸ ÖµJM¯pPJšV39:RUˆ`ë ÿØBPùŒàJæWþ²väA7l¥‚ax¡ˆ>‡!¬lvh—•½ºæ ãËÇ« óû yJ†‰´|oéàá×Ð Jà‡\È l}iÑ|,!ji¬ò#yVŒäb iÚ•á¨É u~IFÆØÔ±-¿ÿ‡çNEgÝS>†^.ßÞØq ‘çp5Ÿ5M*üì.ÜΚß^qàž¯+hòÃpRÕØùôzŽ£ŒåP°/ÂYùwßVìRnH¨íUŠœ^Ý­ÿÕ(W…ÉæŸ|<È°*Žâÿë/7ôO¡¦¨u)»Y¤˜¼&âÅ‹e…ûE·x´G{ÕòÁ6~E¹Gé(_¾Þk?xí{Üó=/–s ªÃžM¦šB¹‚x”Ë¥wæëËY··JÂmhé¿Ô¦ë2endstream +endobj +683 0 obj << +/Type /Page +/Contents 684 0 R +/Resources 682 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +/Annots [ 686 0 R 687 0 R ] +>> endobj +686 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 263.5952 188.5792 286.564] +/Subtype /Link +/A << /S /GoTo /D (a00158) >> +>> endobj +687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 253.6974 159.0703 262.544] +/Subtype /Link +/A << /S /GoTo /D (a00142) >> +>> endobj +685 0 obj << +/D [683 0 R /XYZ 412.7165 467.575 null] +>> endobj +30 0 obj << +/D [683 0 R /XYZ 90 446.1709 null] +>> endobj +688 0 obj << +/D [683 0 R /XYZ 90 242.3602 null] +>> endobj +689 0 obj << +/D [683 0 R /XYZ 90 236.5671 null] +>> endobj +682 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +692 0 obj << +/Length 3453 +/Filter /FlateDecode +>> +stream +xÚ¥kã¶ñûþ +£_*±"‘zæCëå’n¦ÛÄE>¤A K\[9YrôÈfóë;/Ê’¬½] 8à̇3ä¼)ãÁ?“z›8ŒÝTÑ&?ßy›#€¿¾óezó»)Âß÷wŸ¥ÒMꦑŠ6ûG¢ùn¨|µÙ?9¾mw*ôœw[:—KUæY_65Ú­Ÿ8ͱÍÎ ¸¯{Ó>f¹á?ÿë…Þ»‡{øñDAà„ÛŸ÷ßÜ}ØL Ï¡Ž|dé·»Ÿ~ö6ðþÍçê4 7Oð‡çúiª6ç»@iûGu÷ÃÝ¿G:â!<šÖÔ=‚Rç±mÎ<Ùô'Óòpÿþás»¶ë³ü£¬/k^ÔŸ²^ òۚ߆²5‚w2ÕeI¨ó ›ÞžNFèMY-Áž3ˆ¾ó}7 C©o³º;—]«;w» •vþ%Œ+ÿÊ8ŒGÆa|Ø*Ϭðó„!˜š}o +YŸñˆ†ß³97í3‡º/+YiILVÈŽëw{}#Œ˜5©º!ÏM×=U›¨(r +S•¸þ÷­:p]ƒ‘ ýâÆ8h±^Ʀ¬æq•7umrÇêŽÖò>±wUlõ +S%OgGw¨*ŠN¥ £­eB$°«®Ìm1tŠ»0ŠXry…Ë>yO<.ï ùÉP´WVkxõÌ­Hd™ÆÓgÕñ Ilô/ƒYO`ÐegÃbº4Iê#öí¥ úÚ †tZ—„Ñ)ÖÎWœ]‰‡Sþº CG6‡¨ZH‹zŠXÉT¡VÔ-cbKŒ0JL¼HÌ…X$ƒ’l °N„<2iåÁ)—DzÎ*.šK?Já…µ6 Js›y&|®‡Û§µï:N9ÊÆ ¦M'†d `.ž&ª[— ¾AåMax’4 CGA ‡¦²žcòLë0ÌKÜÃmkY211Aã”Õ6œwU× á%!ÊЭ‰Yž/M WN±HKXQxgF §ô2#H0h†ãÉâÉpZCV1ÂM\†ùæ‚¡jü“NP!KkK:ÄdÏóÝÉR¿^#…]å[ÑK"ØŒ4À(Õ] :•ˆÍý3ORÚؤ4°)%ÃÙìˆÿâÊa¶æFF˜b ¹lKÚÕÎièTòæ|©È·þ!ìQ4\ s6Ê–¥%GZ‘ÉÑÀ`šŸµ%¥ù˜8Õyk²ÎØ”(ÏûG)k¦ésèI¢xŒÆÁˆéZ$ÕônófQ:ƒh:‚Ê4Žlåìú.Ô½¾ç½P>øxÃ\€Éé99º~ÆDnoï~~R¤pC×ó”½£©  drCÿ¼gèãPç¬{‹’\{±›øaº b"V1WÔ8ÕçûIm=âï¦ n ì[º(Ùî~y÷ððþÝ·ßb¿€šK†âÔ£0Z0´(ñG¬×ظ¡†l|Ƈ".N‰“å]%Ð\o›iöÄ'+Æ2õ+lË`é–­©æ7y>´˜_Aà|Èȧáb=8÷‡•XXWËö/>fzÓ ²½S³0°¨â§q®áߢìÐëewbÔƒéŸ(©äÙY˜»a±s×+kìùA:Þ +|®¡8ÓñÄ{þóœåm# FOeUñ¼ðÿeÕ µ•¸9œ-¹§°?M+ÐF uSïŠþ ·ï8:„Ñd£Ü@)WSž¹ôØ%ú†xU— ¥ãaÀN6õ¯ã¥ €S?ºvÙî ÑJ׸˜±$¾ÃºöÄ4%ƒ˜n‰‘f–V#¬ç_Î0âÜ (ôåÙ" óWšëAu^S›íóÍîO‰ûÛ[?ÿ~ì¥HëLÐ@üW} $ø ¡¿ô†Jb%§æìþ^øE‹ö}ŸMÝV?VÍ¢<Y©Ú’ªÓ¥ò7 ½d£#å†^ðª_´ø»é‚‡tC—úåål=Ýp†n +µæ‚‹¥3´X¯í&®ÖI<ß›OQI%ø’A(‡’é9qÁb 7 +µ~ëAø¯0{K÷SÄ¡ëÀÿôAX¯í' ‰¾šïÝõí9bËi7ö^ifBœG6•ŽâIKÑNëDtµÜÉŒù"|‚d¹’¶¡’Ì9’ôéYm¿n’8ZË-ÿ‚ž/Òb”€eœ2U![a¬¾’Zj +‚E)èç†A½v³‚¾›â¯î’ª½W.¤w'dfõôÊû^êê( U Ó X½ók7E»eË÷•ë…\©Íïœiy»ã®_5ynC²Ü«q. ¥xåóðLËlxŽnž$Ô™=™k$‰æ'‰å?:ä@bhˆ}WÊIDyüfE‰GÇó’¹sù0Š€úŽLqÿŸjYÓ?_ÀiWŒ%9»ô¤ÖiqJ¢Bµ»ê8†Ý>ÇáÃ÷çácš•üm%ÂÄn€óó¡ÂòK3~¹’:Íwª†™øþýî¨õp>˜VÞ¸ñ‹çÞÃìi&ž½Áå-¼ù)&“NÌ] ƒñ±B5Wà)ç+ü›n6ÁjÛ¹ùŒ/X$šÇpê‹-Ú¡JÇc‡[GWvµ$RˆŸË$¥g: ýc¿`Š3&Â0CÍlmkU@°Yša8•©þÔ½ißóôR¹–7ßn/Œšß¸n×ò ÄYÈyŠtìµ!þ‚KXdè¶å.mùý‡o¿û°çñLèI,g§Bã¼RúÍ™“–Ìé{(zK4ŒßÇZôKÌØ^M–è‘JÙT _ÞÈŽÂÕ€ÆjaéEÏ…º(Ø(•ºŠ‚W¼üˆ¿›.Xñ§7t­Ÿ—4“Ñ—Š@>Ø®L-\ûˆõ ++*ð\Àˆæ¬pãT5:Q_Ïp|0œSÃǨX§íƒ&fÖ \Â)%=zy=‚m³K2eRJ?gJ‰gV,M4­9!cã ÆìLKüж•¥'­,\÷ $ €ù®üSFl¢Áuéu76¯ÀiXpõ…Åm¥}6ÝSúðÁ‹Šfã¾òcªqõÖlbŠÿr61b½%›@!+S¿¤}>ØVàEñFy¡úëßWŒH» ÖŠ,iáþt6)Óãû JåÐm# +¯§š_}pvZå ˜e¥TÐ*•ç ˆ·ZØ™]ÛÄ€=ŠZ/é2~xÓvƒ¢è¡­;y$A?ËîÕÊì]ÛƇ›‡W=úF¨Îðùó×4R%?R´Q«([°BJ¥ÜÔ‹ÈTÖycß–ø Ÿ8O»(•¾3•Ä­¼¹ 7~~‰Ö‹O•ÜX´ï·X~Y0yÕöœ*ë- Rì}Âo Ææû›C×ÙÄìbüCNH‡Jžñµ«øuè¨bŸçpvt¤&Œét:) ¦Þóˆ^,§HóOûyÓ^y¡/Bf X30ì–•-Þ?ýÙÁ݈Ó]øs%?‘ÌÀ¾#äšÉ”s?€>•u16Òñ ·êKn¯éΔTK|Ò7„äÕåo$Øæ‘йx·„½0ÀnyN®~¸4 Œò)Äø¬£ŒtcÈ€‘„<ñûØŒ‘EÛ_mmÛþzÙáZù|ÌÕW=²Jîcïõÿù²Œ>›ƒÌEûZM¿š‹Ü4Ö‰ýrL˜ÀóþZ¾`(Øèl¯ëŸvð J2Ⱦ’_ï ¥¿PždŠž'ÞÑÍ[—À±]A<È[È—ÍÏGs`ñ³·•óù©{òendstream +endobj +691 0 obj << +/Type /Page +/Contents 692 0 R +/Resources 690 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +/Annots [ 696 0 R 699 0 R 700 0 R 701 0 R 702 0 R 708 0 R 709 0 R 710 0 R ] +>> endobj +696 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.8197 468.5196 380.7619 479.4236] +/Subtype /Link +/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> +>> endobj +699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.8545 359.3516 356.9278 370.2556] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.6571 359.3516 476.7304 370.2556] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.9727 347.3965 513.9963 358.3004] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +702 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 335.4413 110.3636 346.3452] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +708 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.7312 226.2733 239.0183 237.1772] +/Subtype /Link +/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> +>> endobj +709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.9727 214.3181 513.9963 225.2221] +/Subtype /Link +/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> +>> endobj +710 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 202.3629 126.403 213.2669] +/Subtype /Link +/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> +>> endobj +693 0 obj << +/D [691 0 R /XYZ 90 757.9346 null] +>> endobj +694 0 obj << +/D [691 0 R /XYZ 489.8655 533.0201 null] +>> endobj +695 0 obj << +/D [691 0 R /XYZ 90 512.29 null] +>> endobj +697 0 obj << +/D [691 0 R /XYZ 153.1029 423.8521 null] +>> endobj +698 0 obj << +/D [691 0 R /XYZ 90 403.122 null] +>> endobj +706 0 obj << +/D [691 0 R /XYZ 243.1544 290.7737 null] +>> endobj +707 0 obj << +/D [691 0 R /XYZ 90 272.1009 null] +>> endobj +711 0 obj << +/D [691 0 R /XYZ 239.7767 181.6057 null] +>> endobj +712 0 obj << +/D [691 0 R /XYZ 90 160.8756 null] +>> endobj +690 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +719 0 obj << +/Length 3312 +/Filter /FlateDecode +>> +stream +xÚ¥ZÝoã6Ï_á·S€µÊ‰’Ú§^»-¶@½^€{h‹ƒb)±°¶äJrÓô¯¿ù¢¾,Ç‹…)r8‡3¿FoüÓ›Lm’8 3¹Íîx§6ÏÐýã–á-Œo§ÿ|¸ûê“m²0sÆmžˆƒÓal´Ù<¿î~k±.xØ—÷[«àüé37¾ûü•ow}¾ûrÿûÃOw†åDšØ:‹ýq÷ëïjS€T?Ý©Ðfi¼yê,3›ã]d¬ÿ8Üýûî_  k›Šµ]Û•]ìÊÀg›Ê{”Ú=ïÉm¹+«{Þë8(ÛûHx(¯‹± òÓéPíò¾jj&9æ¯S&},ËšÇ<`t}X@ K2¨j'»™Yؘ'¤´§-´å窥]ÚÔ‡%j•Ü˜_b™°”\º!ÎMVæ¾SÞ +»J¨À$Á:Ž|§¦ËÌÏÏC¹à?ûRæñ‰Àr`0Uq)n¾f¤é÷ùÈÚÓÉkuÂǯݸpß“õã±^Ä(œ5ÁFš£þ¢¢pS^*B!л’dÙ4 ÓLe›Ø¤aƒÿ½&=ýv:aL^ðõ¡¢%üÛ» +)m +ÞÐè…LKHé©nHE*4N§sI~SÊæÏr%acÁ( +R.ãÇXæÎ,Ôg[*xpqÍ1²t~ŒÌ¹x#…Z;Öã™â‰FxQÒ…Ön5IÀla¿Q–†iªn&ÉB¾Ò¯$ÉK®ï?<ãâ0¶‘YH´8¼ê– ´•fsAƳœ„ +c´[ŽŠ¢F—¥%Ñ›nA.ª¥Ì!ïøãÔŠãjÎÅ~í$^oM–?`Ì'£Ð Ë4?ìþØ;a"̇ù @&]„jÉfs׃SÙ^ZS*Ö”x§ŸEå¶xâd@%é´^Œ’yüе­ž«Ú— ÒA+ÞX4`€±¶%FRqáƇD½ôÉ:cèŒG¡xiÑŸIg%¿×2 • IòÊ}þ |•'Èy¦Ä +écŸ—ù×lØã¥øq"TV4|‚›–›ec2éÔó$“úŒÍ*|{è(Ð[CðGIü=žšZº)Ý_87”Ö Ö}å x5Dƒç½o—ÜÒ5³b0Þ€yų +g—·mEêILÐœ{np=F{d3+Ôáþ’„÷# ÌH +úp²z¬U/|pL‰¸ÈÉ} ÿ~©ã„/O猗˜ÉÜÀLVÙàwŽaSäR0ÕsÇý˜í…f×Ov`$2%elHÇD‹Z%Ž0âÂ!N½æ㻲ëò¶:—ªИw²Îc¹ËÏð«dΤÐ2Â}RVv(…“NDš!˜+«[Ë-”$6›dN²ŠïM70ûn€ÄÝͬ‚“f¼¸3}áÅ–´Ko±±;·ì¨ècšë Ê7Èg$ŒŸºÄ*Ö…*i¬ƒHž‚t7°Š§ßN'¬`• ¾>ÜÑ^®–S¦Î¥Y–…è–iª(Kæ"çvÐ 9JH£ëë`fFýa*¦ñíAüÄ.á<3*IM©ªÂ5ø±³È¦E?~(sÎétD¹’JƒO5w6máK@~²`+a!Ež'ò÷=—£"ÈÚ1¾Œµ¦x_ ãX=ï¥îÄ1Œk-+l¨=6þ )ûl—HSþ~•Þºf^,Ô3Z‚Ÿ4 “$ÛØ( +ãÛ/B½¯@ Oo›´¥«¶i£ÐaAa&ÉÒ6=ÑÛX›„*Óf&O;B±²Hhfð–2ç(»¢rØøŠ²!³TbNÒ;+Á@dæH¡ ýÃb¸/}æê#\/ã"ЦqX=r·\ˆ§ßN'¬èè‚ïÌ…¼Q=OCå€|.ÏEõ\¨nH 7s)*Ñqßž©¬ Õø4¹xºá¤Ç +—yÑ<cˆCþâ U5ÄFcÐUœOïLÉPïB 5\¶-Uö›ö]¡‰ª[®s™K%ã#öNœ~’Óé„ŽÐöríWaät¢Ê ‡\hsþÀe¬Rm*i)7a%ØbQäU“üƒxâ}FËÇ +‰jÈØ/k$|Iì› +«Ñër—_ÚŒ°f¾´´\ËÄ–Ô±q°i¸qN›º«ãˆh„Ï>—¾Ô4Æ{#t–\~´l +OœÀ¼õ¥{h‘€ßÑ÷jë»L<ìÄ1AèK}†½B(Š•7è)ÓñI ?Ø©LXw·8NÁEÛtAéø–ãè·Ó +÷ù‚ïÌù_w+øÀ?—eí/Þ^€Ò€íá(æ\ׂÎI­Á /ÜÀ&çŽ5ñ•Ò‰\¬›½ì+þÛàp`Þòãë Ø^¼2Ê>ðáå Îbºv'4RT¾|w‰'ï.( ÷‰Š92ãØ¡©ŸC~|ˆ€ñ½±æ×nZ%„áMÂúž —åÓ¸^ĸ.EÇØíÃÜ€œ/Ö H2ñ—Ë$# +“w÷ÙÊãbTFZÛØåsâºÉX¤€½Ô:Ë…B£o¿°øÉ5¨ÇGä±®‰ãÍð\,Ÿ–ÇdT¾Q’—ÊÇþÓT*\û+B f=›PàQ´‹Ýÿõ†ôg)LÑÖLÿ,ÒÄ+ôwn01rfÏãDzÆb¥?¿ÙŸ}ã'ÔçY>´‘_õµ±_Å_F)'!OÀGÜáo,u¨æGü}ó×ësY¯A¤-ýª'endstream +endobj +718 0 obj << +/Type /Page +/Contents 719 0 R +/Resources 717 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 648 0 R +/Annots [ 721 0 R 722 0 R 723 0 R 724 0 R 727 0 R 728 0 R 731 0 R 732 0 R 733 0 R 736 0 R 737 0 R 740 0 R ] +>> endobj +721 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.2206 726.8189 320.0632 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> +>> endobj +722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.4389 697.2393 347.0412 708.1433] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.3885 697.2393 413.9909 708.1433] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +724 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 631.7943 133.6061 642.6982] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +727 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.8947 525.3067 439.0984 536.2106] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +728 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.3267 495.7271 266.5304 506.6311] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +731 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.0564 365.3292 381.8703 376.2332] +/Subtype /Link +/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> +>> endobj +732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.7827 341.4189 335.5968 352.3228] +/Subtype /Link +/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> +>> endobj +733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.2687 323.7945 419.0639 334.6984] +/Subtype /Link +/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> +>> endobj +736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [457.7775 229.2621 513.9963 240.166] +/Subtype /Link +/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> +>> endobj +737 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [105.8804 217.3069 167.6481 228.2108] +/Subtype /Link +/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> +>> endobj +740 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.3388 146.6848 217.1815 157.5888] +/Subtype /Link +/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> +>> endobj +720 0 obj << +/D [718 0 R /XYZ 90 757.9346 null] +>> endobj +725 0 obj << +/D [718 0 R /XYZ 479.8239 634.9474 null] +>> endobj +726 0 obj << +/D [718 0 R /XYZ 90 616.451 null] +>> endobj +729 0 obj << +/D [718 0 R /XYZ 207.8864 427.1492 null] +>> endobj +730 0 obj << +/D [718 0 R /XYZ 90 408.6528 null] +>> endobj +734 0 obj << +/D [718 0 R /XYZ 237.0374 314.9924 null] +>> endobj +735 0 obj << +/D [718 0 R /XYZ 90 296.496 null] +>> endobj +738 0 obj << +/D [718 0 R /XYZ 299.1932 220.46 null] +>> endobj +739 0 obj << +/D [718 0 R /XYZ 90 201.9636 null] +>> endobj +741 0 obj << +/D [718 0 R /XYZ 507.9991 96.348 null] +>> endobj +717 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +753 0 obj << +/Length 2416 +/Filter /FlateDecode +>> +stream +xÚ¥Ymã¶þ¾¿ÂÈ'X«|ÕK)¦išÃå’öÜöÃåpÐÚÚµp¶åHröEÿ{g8C‰’µë-ŠÅBäp8Î<œÒr!àO.r±HmçÚ$‹ÍáF,€üÃäጯB†?­oþð•/ò8OT²Xß; ‰Œ­’j±Þ¾dœ.WÊŠèûÏÅá´/Ûå‡õë…‘Y,d–‚TdJ‘xóýº_ˆõ°:‘¸Ìo7ï?ˆÅôy}#bgvñËÌôLÏk¡ël¢EÕ²iš3©ºgŠ·Zhlg¼Ç¥àC:ªÐ¯ŽK# \>á˜;·0ó®ÜçÖ‹¡Ïpò¡8ÝV¦¬"»S:i½–bi÷~OãD‚ÿšð!Ç*#aSøÆ®Ü|¢&£ID{ +@HûUUî·Ô©ŽãÔ/©Šm +±2±26Ƈï'Òó¯Â 3>ºBeª…yœX£'ZLàÑs]Y[ƒÍ­…„6Z»dlºsÖíêK;2éq‡á{³£Þ`ÓÎ{%8ïòÂõJñ꣓aŠQÊPŠÁ¶ìZ&€.ˆä4òÓŒ˜¶]hŽâ©Õ~ODÄÄH:F3’ð$KèS¹©\LbM<3ù®Øn›²u[Èý®r_ViáååhÈâŸ;êuÕéÄ ÅD£œÒƒ“µß—,×¾ˆd)%z §®/£¤¶p’¤± k±HÇ_C.ó¯Â sÈÊ})r%Û&™*4…®çº¢†‘*N´Ðc5¬‚‘šbçÑ»†,uª¡¤.†­b!£”ç`gS”°˜2 kTýPö_)Q˜}òÏ”(S©Ïå ‘C“Nt˜˜±çº¶4XÏb•:Z;È;hº°E\c8Ú6Ä-ƨI~¼ïÙ½ˆÂ7ŽlÜû¦dŠŸùË9Hí¾îÚÛÉšo¡ç}ëü˜ð&Fóí?Þ¼yºRQ:yº5®…r7@ø¦É5/3û*äŸ1õTª÷ruÂòÔ±‘¹†Ë«Î&ÚLýí¹®)‘ÛØBÜkq(¾E\*Õ6‚ÂqKw€r*°ä@ŠK»Ú…Cê÷:p¸xBç­Ü¹:‚©å¾<”ÇŽFd²º«:€«ŽWbXÜE;T‡C/¬þÌ€‰hBâ¡ë„/+X¶óhXf"êULUDašß#Åݱá{n‹‡’š„gh´»Ú…#uïÊ=õ—‰u©4Mo0ˆÉ¤q· ñ2cI¼(÷¨Ó±nœÎRªèS5Î#¥9h¸D4“¶2‘ ¼¡ñ |ÉaÐhÊCÝq»t mŽksn25vÂ`,‡boxBáǺóÂëóÃŽÚ¤ðHõ],`a5KÚ{#6F`Ãh­‡¥µÉÄA„_„;ŽSåG[3{ãÐÜ!!š GI¤×®¦=ÿ*œ0sã¸ûÂ\ªà¸gI2Uhz7õ\×Ô€+²ÌÒ‰C¼ESõ¹í…¡•È®àq&ݱ-{\ ujøŠ¶¼â¸”º°º³§Îþ4jgJ& cR˜¤®ÆeÏ¿ +'ÌÄÄ ¹Þ N¡'s +W;£ÕDi`ö\×”¸FÅødÑÌÒÓ¨Qîªã‡Ø‹µ=ó*䦥“¬’ +ɯ˜=.ú{]Ñgö%Å)ùîöhäp&q\ÿv>…ê6Øg›ÄÐýµºGî ž}wõdž2ß-‰ùëúç·ïCJVøæú"î^²î…ï^qú˜áýÏ•¡™+j§*K†ZBK¼ÆÀž¶Ô…v-“0´ãxÚ±ãb‘ô7ä.ˆ0D09¾­ ³zÞþ®²¡>¦>ürꃠlE½å¥Ê¦ÁŠ继V ôL¦8Û’Ž¤»Y¼ÒTü*ìôI¨BE[iò—A5äž…jÏð,TÕÿÓ³L>vÄDˆ|¯>¼êM‘AmžÏk#ðÊ\ÝÊ$»·rÀ›¸ep ®cÿÕudæý~šPħÒÚáÇ÷þº2ç Š!!Îγ&GWV<ŠÕ‡L~>Ü• ‘\4z«n¾°˜Š ã__pöðBˆÐÔ"çÉäž ë€-“¶ÜGª;|â­È‹¾lsß?ן¿<”WküQuÆ>ÿƒk~vendstream +endobj +752 0 obj << +/Type /Page +/Contents 753 0 R +/Resources 751 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 770 0 R +/Annots [ 756 0 R 757 0 R 758 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R ] +>> endobj +756 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.3065 701.7853 476.2361 712.6892] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +757 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.5367 677.8749 263.2659 688.7789] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> +>> endobj +758 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.5773 648.2954 310.6506 659.1993] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +761 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.7077 575.6896 409.0322 586.5935] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.0182 551.7792 411.3428 562.6832] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9277 539.8241 153.001 550.728] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +764 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.3947 510.2445 194.1901 521.1485] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +765 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.5384 456.7547 294.863 467.6586] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.8254 444.7995 180.6394 455.7034] +/Subtype /Link +/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> +>> endobj +754 0 obj << +/D [752 0 R /XYZ 90 757.9346 null] +>> endobj +755 0 obj << +/D [752 0 R /XYZ 90 739.9346 null] +>> endobj +759 0 obj << +/D [752 0 R /XYZ 150.7616 639.4933 null] +>> endobj +760 0 obj << +/D [752 0 R /XYZ 90 621.4011 null] +>> endobj +767 0 obj << +/D [752 0 R /XYZ 90 253.0714 null] +>> endobj +34 0 obj << +/D [752 0 R /XYZ 90 246.2021 null] +>> endobj +768 0 obj << +/D [752 0 R /XYZ 200.2554 182.9016 null] +>> endobj +769 0 obj << +/D [752 0 R /XYZ 90 162.752 null] +>> endobj +751 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +777 0 obj << +/Length 2990 +/Filter /FlateDecode +>> +stream +xÚ¥]sÛ6òÝ¿B——J3K$H¦Onšö’KÒÜÅ7yh:Z‚,N$Ò%©8¾kÿûíb$R±gn<‹ÝÅb¿°$!ü‰E.Ò$ r«Åæx.nüË…àá5Œ¯]„¯.¾ÿ9Êy«H-®v†ƒA‰hqµým™­Ö2Š¤Z^íõj%áòôò5®ž¿ûÞ¶Û®Ø|^ý~õêâÅU?K“H%p²?.~û=\lAªWa ó,YÜA' DžG‹ãEIÛ9\¼¿øgχ ÁÜ¢!çV%½UEÐMiQf-2–Ëòx{ÐG]uEWÖÁê}»}ÙR«¸½=”Å´ûz%Ë;_ëõW*Y«u’åÃTg™”UÙ•Å¡üÞà®ìöV&Þª¡ â×By’Ðb6Åá`Haf½Éòk«ŸñÇ0 á_ÐpQ11††1&6Ë5ÚÐôúùLÏH)ÀY‰¥L'ƒåÙ¹på2YþŒÃuc'$&‰«‡§¸¸Ø3·®ºú†ÑÍ©a¥¡Ÿ}AýMY\ØÿýòݧËwïž_¾~Í®¸¯O‡-µ¯i«‘U¥ÜÕãáó+ñ<:K‚PdéBe"Y»þ8ñK‹¼v±É7Õ¼5 ûf€ëþR— ¦ +A,ß’8DÖÄáÿ­‰8· ¶ƒXʼnaq*o?ʶÓRýýê×·ï±!"#9þÿ`ˆ×sÔõÖÈ‚’áXO•©Ü!6JVé»mуk"áŸÒýõ8¸îcÜê + ŸÔŸ? +WOž•|ÔrÏy©ô)èåÙJ" ÆÖ[GaqˆµÔì,%SÕó¸(‹0›X$id¹â¼ŽCÍ ãüËqºíL3â”ïÔqŒæ=yd”"¾<žë÷XH!eÄ$… OÐIcâòåiRЇD,«êÞÖMIG†b0G±éNÅÛ”rÖdè(æ9Gن͔e®Ñ w.5àh¾<µº%<²(6tÛµ†2P±\$ +)ñ&µèkF—>WkÐJ›Mis¾D*„Ý3UžH¾U-ÖC’(d!lã#Qpóñ§…¼*•>Zÿ!&|­.È¥ÜôâËKDiš[=Ö’Ä2Dœ'cIŒƒƒ‡l5xö±¬Øuîö«dyOžUvä­°Aƒ‘·Þ­D¸,Ðõ”ä Η/w$T^Ý©xŽ–Ú×zS€C{ô>Ö·uŨ{KI·£VÉ_t³§ØL{P£ÛÛºÚ2 •7F´Š¾±Ÿs%€YŒ\ãÅxÁš:Kƒ¡~iЖ†Z Yá.þ¡¶[2»~ÚJwµn>³3Þ[jkÒk&it×U Ž5S§·¨’<³fí×)(4-’Çõiô‡¤‘v ¤Ë·d vû¢³­’ œTEC”÷Ìš‹Õ–‰hS#¾eKÛŽŠæ¹_ò|v¶ªf@£ÿ8•Ñ4ôvPñÍX²àúml@§Ûj“­¡ÅþÈu÷·&ÏB«s*Ù`-_pÅà<Öž6–r&çÆAÇÖ"D¦&]Æ_»sY×çkS Ô¯•Þ€éÏ'Ý,H3¡<‘&I—±$ÅŒ ‘ dqÎ 7ŠìÑŠ°øÍ?ákÑ•G½­Oç3n,‚LªüÛzè±cÊ å¸’Ë½Wî`m‰å i:„s¯ÁAD«µ¡x¼$zzX ˜Þåö‹IÕÆ(.Ñמ/±ÂÌ—G˜AÁQLðD~Ëet(oöE²\ëFA±¥KbŽŒ”7l¤Û†‚¥¬OÌ®®4æ#8{Q"sŽ²ŒÁ=bÀœü½©àà<{xÃã–¶§°ÒÆ:ô\Û ™B„ÌnCãÛÞØã¯]‚©Lùºa9‘"‘ áIáy`õÐÜiÀ‰.ÏÝvÍ òqÃ>Tr΂]iK{ß:c2˜(P`ÇQdè¥NÐ$öòXŠ†€˜OÍלð¡–hpg›á!Œi½`”’¿Tc·.W³i` njíjž·¬`'19âqî3Å/MLÅŸ¿ñ •ÌiÅ/mÐØ¢òBæy?fă/_’@Ë¢Âä6Øæ-3M¾ØuyÃÜËúöN7†¹Z H ¦eac(·Mi¶„´f¥˜‰‚;}°ZA[?ù°Ê`çB˜þÛ‚uÛ7ìw{í„Ši š¤>æîÂ⣸sí­'…s.å¨S£4&ä½GÚaadiÃH‘ÓÂê[Ý_½@÷X|Ƭg6bÀ*jÔŠý^­+, Œf\2õPr›š:N((™{1ç®Éq:çA½Û袵º1ΈÀ^{à•ˆÀ¸FøRÍcrmÙÝ;ñhHMa…A¸\„Öäf `\5Ú,çNU#èÂŽO]ÃÚ¤:žÚnΉ>WVuRBõN*%3±ß¡æÄ+8(¬±~6&€Æ÷@ì=а·1vpmxG—(Ë!ö¢ÉO- 䔼ý¬gƒ‚uDûÕ6Öw•z½:1¨G1ÓŽ3)K;¢™W2‹ÚN]XsYåɼ`’Žã)៫ÂÞN-³#){Ö  IHÛÒHg™M2ÀŽI69@oùPå­ú€ 7vv8òÜÐN,¯ï½iø,7c”=›:ŠxÈ–G,9¨¹/VQÈÕ6Ahj<À\ÀD­o±u‹Ro ‰6—ÌîE£sxhœÉå'ž¢¦\ìbÛ“§‘ ¦-,%5 ˆ÷†03‡ ói³ÇÜRñ–Ûø‰ÍC‰_Ø$éÀ"ùŠR'ïܲ϶.‚†ãÒöl P›¡ñ¼Ñåp`ÙÒ8û¾yŽaK˜² ÛL#mF˜ug#çÜÁ™™ÛØ1‡:|Ô1%¡´Gléç%™±*`ĨBòñú¶`s10­2õMØ>ÃÙb‡€sñ0o¶üðâõó_ß¼X¿ñöÊ¡Í ÀÅ\ó){‘šN#É0È–ßW@ë]úÔ…@ý@BG‘ÂOü7æ7áÊ80½ #zc˜ÐÆ7„9½†ƒIþ€¡áXp4Úð–‹»å +˜ä(2ùøA +é„•ˆœ°f¬¾Ãë’Ž¹V€‘i +[ÇyJeª°IFøoå‚Ž8Pr¿ÇœÆÕŒ-¬{OHÆÕZ:eï”ìK“3Zg<ëô#ܾºµF_RŽ(ÎÝp°ÑO~¨0óCS/õ$^MjÈZú¶dS”Œ£ „²w Xö¸oîXÓU–¾ë Ò‹ý¶ÂÆÜÄ3^´«‡‘Ú‹=íÃØz~´Ô³OðB$ø#÷ïbÏ>Á÷Ã]Íè½;úÄYáÛѺ:‡]ó†3?E[Ð%zê_3l¿õ<ýÃÜÏjD âtöí5\äP‰ú¿~qc~(”‰‘û;!*“™¹î€eµ¢ ¬¿è +¯ ì­¨=t½±W¸S¸#"þ†Ï"ù, +©…¡âÓ<:JÝx?:#ÚMè§úëýž\éá‚f´ô?Ì´“+endstream +endobj +776 0 obj << +/Type /Page +/Contents 777 0 R +/Resources 775 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 770 0 R +/Annots [ 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 786 0 R ] +>> endobj +779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.2378 575.7435 329.1674 586.6474] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +780 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.6467 563.7883 361.9339 574.6922] +/Subtype /Link +/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> +>> endobj +781 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.0705 563.7883 432.2742 574.6922] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +782 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.0487 515.9676 369.7779 526.8716] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> +>> endobj +783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.0655 515.9676 442.8332 526.8716] +/Subtype /Link +/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> +>> endobj +786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1141 445.5872 173.1874 456.4911] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +778 0 obj << +/D [776 0 R /XYZ 90 757.9346 null] +>> endobj +784 0 obj << +/D [776 0 R /XYZ 444.3276 519.1207 null] +>> endobj +785 0 obj << +/D [776 0 R /XYZ 90 502.5047 null] +>> endobj +775 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +789 0 obj << +/Length 1132 +/Filter /FlateDecode +>> +stream +xÚ­W{oÛ6ÿߟBë€B.fŽQ+à&^—,m=ÄC5E Ët,DW:YÑï¾£HÙ²­Äv2Žø¸;ÞýîEÃ1]F£“ÁÅE·gÑ­Ђr÷åx0†ð:ûg¨KAø¯Hg—æ*x´žAò8§[fCÂXNÝýëB'§ál&².qM‘!˜Ü(Dߊb)„|Ð¥Ü\Cœ?à? *¹­jÎÙ¬ÛcÄV’ƒüzk¬Ç󴌦jœ•‰ÄeT„`‹š5šC2FÍ4Ñ{…æIøµ¬§©úNÙTÌQ¦èíImˆVGëæ›Üe.Ö×U¦†PFäÉ°ð,s‘f…q3)ã‰ÈÔj:Sk"~½¦¢™ˆÓBh‚dª96©¸¥©5Mĵ؆(ݱeY:S$O—pS…ƒZ˜ˆ(•€,•(½šå›Ö‘ʺùŠ²™UŲK°™ªIC~®“n’ʵoò_®¾Ž˜É*ã „öTͤÐÒ*gne.z(s)T‡:îa™Û¤nÍÜAë-}uÔŒdÅøP5ݹœþ·Jvô­rÕôÖ—²HFõ¡½ou9&p;–LýýÐhŸßívnæ{§Ï=|_'Û~#D,§õ©†¡`›ÛÏz>Uï=X£ÍçTx‡¹õóH+!•|'í³Nº‹¾¯ç2K=!TqŸ²>ÅjMÌÖ½WŠºÿ–g#M4áä^}OÓ»û¨º[ðÈ·] >ÿ™?Çüendstream +endobj +788 0 obj << +/Type /Page +/Contents 789 0 R +/Resources 787 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 770 0 R +>> endobj +790 0 obj << +/D [788 0 R /XYZ 90 757.9346 null] +>> endobj +791 0 obj << +/D [788 0 R /XYZ 90 329.3658 null] +>> endobj +792 0 obj << +/D [788 0 R /XYZ 90 323.8457 null] +>> endobj +793 0 obj << +/D [788 0 R /XYZ 90 84.5604 null] +>> endobj +787 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +796 0 obj << +/Length 2120 +/Filter /FlateDecode +>> +stream +xÚ­Ù’·ñ_ÁøÁ&SäÀÜòSìزT•DÉÒåIµ5$Á%JC =‡¨MœO7˜‹³Ú];µU;@£Ñè» Ÿ3øãó”Íã0öR?ˆæ»ÓŒÍïüjÆíòÖ×}„ï6³?Štžzi$¢ùæ`(DÜ óÍþÝ‚³åÚç±-6G¹\‹-š×oi°ùþí 7®êl÷qùaóföæ=ϲúÇÓ~½ûÀæ{`ëÍŒy~š„ó L˜ÇÓTÌO³@øn’ÏnfÿléЂÙ0%UÈýi±8÷Ò0N.bÆV,/ö‚åš3Æ?×*WÿVú®•Š?æÅ’³Å…fߺ.—‘’¿*vaÀឯ^ý°!ü…qD:ؼ}Á=öžûA‰ÿô,?Éò%èÖãIäAÞëÖºÑW+sfà{ÌO¢Á™AÒÓäB)ë¦ÔÏTu§(-/û¬Îž£†½Äо•²K#!0Zu +Æi.uŸô”S/–¨!y{hòüÙ†©‹³Ûó¨6~‡¢ÎEÇñóõ׬xú¹ó¶/3õHÿé ^BŠÏÊúÿ!ûÃK…0ñDÀcƒòËQbñ6 ãÀ •6˜³Š[ép‘ïm®ª£Üc5ó*a‚¹£®„ÁDYƒb +cÿØ +âÍÔ’r†Í×Ðâ,n”ÞI‡èˆ¸o»µÐùý° +RvF7†"‘0[žqd +TBœ¬pÛò0,ìmUGÀGÝU±!•ƒýâÜ.*'„F Ýœ¶$ÿUŸTØZ&kYžÚÎôrTæ™ +VZA\‹ÕÚ7×FEŒð]×ZZè¹,βÌmùƒ.ù”a+½r›ÛW.²vÖ¼ªÃTBF™k&å¬ÙîÌ)9/Î%¶pèÞskµ³Í{v'«ö Î5 È× 2“ãÇH’Ûç¾êÁç2 /LÓèiÏe}ìÉç²åªê²ÙÕƒ—¢ð%‘]—wÇŒÿ5REîzðeŽ=il?üsñäÏ rÂèý&`šº¶p_ôßü#ð?A;° +p¬ ,¯¤–eÖVç¹sƒ7pa¿ì¥ð_ +F3Ýú;úzQŽ~ážEtýí_‹Ï÷wòªÅŸ-&´ô?¹¶‘£endstream +endobj +795 0 obj << +/Type /Page +/Contents 796 0 R +/Resources 794 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 770 0 R +/Annots [ 799 0 R 800 0 R 801 0 R ] +>> endobj +799 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 292.733 131.9523 303.6369] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.6978 292.733 476.9349 303.6369] +/Subtype /Link +/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> +>> endobj +801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.1347 268.8226 206.3718 279.7266] +/Subtype /Link +/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> +>> endobj +797 0 obj << +/D [795 0 R /XYZ 90 757.9346 null] +>> endobj +798 0 obj << +/D [795 0 R /XYZ 90 739.9346 null] +>> endobj +802 0 obj << +/D [795 0 R /XYZ 207.8662 271.9757 null] +>> endobj +803 0 obj << +/D [795 0 R /XYZ 90 254.2666 null] +>> endobj +794 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +808 0 obj << +/Length 1875 +/Filter /FlateDecode +>> +stream +xÚ¥ÙŽÛ6ðÝ_¡G¹]©$e]I³@Š¤i¤M» ô! ²DÛÂÊ’«#›m‘ï ‡”%Y{$Dçæ\&·ü¸3+ôC7öV•îÌÚøÕ‚ëcÎ!Â/—‹Ÿ~±»q ër£8ÜõÖeöÞæn¸t„Ïì—Ÿ“ý¡ÍòãåkÅ=—yá +¸*$ŽÐÅËË^’VÄ÷ŽrþY¼ÿȬ z³`®G¾uæò8Ö~±žÙ‹‹ÅŸ=:PsöøÜ›3(°2n `_Hö|QúƒxäÆ`9Â>Uy¶tÆlIFúWÉáðù OàËéô?EËW.àLw€Täдu—¶M›´’H˜ï +æû lY…Šæò¤F‚[xóT8œÖQhA>’ŒgôAïŠwùá*­ÊÒ9‹ôéŒò r2¸2m%ZÍÁýÖk¥nò6Ý Y8çÅ¡ªÛ)1‘¥I#éô·Ë?~¿@úHÉ|r·$çÒu-“ks#3ÍÁ¿×þíFðo1âË ^e#KGÏHæ@´uNf-Û®.#t6“ôúë‚HOœô3}å¾i¾†¡Šå¢j¤!ú>+ï €Ÿ•ÔÙ#ËG…€óXʯ¿Í{¬¹ûj¯7h& ƒÜŠ³B¹ÜIì%܆ZTäiÒæUI*•j f4yÓ6´«6Ô}Úª¼leM›¶Ò_Ã0 ¤ÕœwUWd´^kMÊlÄ|‘ÿ+‡¢`Ÿk=Õ•˜xænìûÔnŒŽè{wéx\Ø虜Zs«å¾2Ö益%Et%nî°u೉ E•&…ñW­-»ýÚ8Ž”†¨id6fŸIðî>/µ›]žîæÌúÀ˜(R¤iÃÞDoe.:Tx5YÙé®+¯iI¾ {—FZ§¨¿›´ËËít®4L:»CKõ l¨±ê­Æùk0 ôø΀¦„a¤žòf*m<º^0Ñe2¢hœäO9¡tåLÏî^¿#×ì“ë%‡&o<ÕÕÚË&#»¬4j58+ ööâ‚ëÛVqŽðH9º[®Äš”3wÃúxIÒ¶KŠâVg +ÜÔ-åRøö§%÷m +mb«n»Óˆ•Îs_¸žCMç3Õ#tÃUj„cÝC–ûD+±61ŸÔKÙ[ +q֛͎iö»º|Ìe‘Ã*t±T'Oãê„´¿Y EØú¿¡—iµÇ€%é5\àÞ2ÛîÁS ܦïE:û7å_\í-`-é0œ08Ú[ùv©<}3`0“œ©1Ý8oJf¿Þô^©åøv)vX;Ãh«žSv6ñ«.Tº–ù©Þ™™J3“Ë^ÌàF[žï¹A‰r¹Çw†3¹tÂw¶OÕYy¾ë኱:“tî±P┥4…ylõ¶±ðf Ï•Ëà£ÿy¹Áþ@‡¾PC~§bÜøô9†Â¸‘2ûB©¶u²'À ÙäÛòŽÞŒm<¦¬×])ì›:oU ãf”W°?ÔŠwC;ºVXúºJ,oõ·Ç‘›® µ +£8 À„o².äø¤kó‚:0—ÐõºçÿüÝk-@ë›Ð§Ñ.RîA3°VB™|òú4K¨Gű½©Š‚RMC=ƒ §ÿR³ô)ÏTõ¦.ŽN#©14PånµÖeV*ÁqÓˆ’dÐó¶‘ÅF£Wô]k™Æq(fSÕ\N<¼œAç¶J+äàAÏGc°©`iHU’VXü<TTÌóªÓHghÈÐ +Üc-ÁòæëÎ0(Z¸&̨~‚5%LsÉ5Šà=Œ¡ðvtªðÀ©eV¨¸„ͦ+M Âxà0  -›I—Ðx½‹g3e +¶¥²Ñlû’Œ¬˜XE„Í’`†÷ ¤;s÷¥êßne9uN}3þùè&òendstream +endobj +807 0 obj << +/Type /Page +/Contents 808 0 R +/Resources 806 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 770 0 R +/Annots [ 810 0 R 811 0 R ] +>> endobj +810 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.7538 392.0799 328.3562 402.9838] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +811 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.5337 350.5452 436.3476 361.4491] +/Subtype /Link +/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> +>> endobj +809 0 obj << +/D [807 0 R /XYZ 90 757.9346 null] +>> endobj +812 0 obj << +/D [807 0 R /XYZ 437.842 353.6982 null] +>> endobj +813 0 obj << +/D [807 0 R /XYZ 90 337.096 null] +>> endobj +806 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F11 705 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +816 0 obj << +/Length 1829 +/Filter /FlateDecode +>> +stream +xÚÅ]sÔ6ðý~…K_|lôaùƒ ÌЖB +n†`ç¬Ä.Ž}µ}$iéïJ+ßÉ>_. Ì¥ÕîjµßR¨Cà: q"ù Bgy>#΀ŸÍ¨Yö`ݳ~^ÌüÆ'ñ“…ÎâTs©/eÎ"ûàR6÷8xè.r9÷˜ îúø ¿¼yÐÛ.]~™Z¼˜=]lö3âRµÛ_³Ÿˆ“X/fÄçI,œ ˜Ÿ& sÎgãý¤œ½›ý±áƒ š`êT‚ò©c…@"Bõ±_„u"GðhÅéG"ȺX}^ÖU%—Ì~Týæ^Hˆû:“£©èÏÂ@hêš#éM þ«WȶÝôv«øwÝ´’YÚ¥·ØvDq×yy^t=ÜóÛ7MBì7d6!뀆ì`ÔswdžðWuYîS™øQ<¾•UvyÆIwVÀ™¹£  +…j Ì8tO×Õ²+êJÍ„ŠÈ¦kqå¢èr„f2-‹êlÝ´šSá^!ŽlšºA8h(+Ï—º<ípå¼8ËÍ0O猸_‰hyºZÉJf¸~re˜årùÅl.À'Æé"H(œ1q„à>‰DŒÁ®Vš3ƒòÖ +ûݳñ1ômmípí­é»ÆÂWÌ éIÝØ~1’”²Ð”EŽ¨O™Î¶,ÏFÛ•BR¢H¶AS"€ Æ»NwÝ«  þ¡ýwøö*êŠs™Õën¯ ¯Æ +Èõzè±ÈÁóƒ8Š‘6ʧÂÀíšµô¡ îŸ"¨­ï«A n©‘„ ~×Ô«¦H;CÕû2 ­ð€YÑ"Å2-K™ÆOJÃ2Rî©× ë OøŠöJQÚßäi‹õðDÊ +G˲nev']_DºÍ; +f ³ÂpB y=bStøUa#Ó6’œ3a³êü>·ÑÈYÀµØ¯¤Z½ì””,0”4²%‚™ŽßÇZ=4Þ¢ZêÑsÔ þ\·ŽŒN€JBr:)‹6×SKWÖ˜"p“qŠ ‰ÏIZ?¡‡rDïÙIb‡ïþ1)|@ã1i¬C‚Ä¡ÏH )Œ.1´ûñÄ üÏÔáN”6ÖSwS% +“Ø7^ã´Òƒ`³Ø®W+宦Ô¦”˜ïE®¢…ÊÅTÀ!m%eÖ NdOXIDºÈeÕ–¡à}˜‘áù´D\ؤ|–G ã2ǵÔàUW@±ûÝ êàz®EY,Sã¯\—ËάêŒÁû8à¶P*Qá¾+ª¥YÓ!ÈçéNÌ‚¡†Ì‘¶.Ÿ0R}Áð€hé6¯×eÖçÓ[CØâRñ8‘Œ›ŒÛ¦’k3ìwV£þ*l3Jåu4Í•e­²Í…‰áÄäæ +¿-ÎW¥Aš­l»5ý·Ï:I¥[õ)~sÜ'&#Å»üspìRû§ÕhÈìíÌ„Ç•uýŒˆŽ©™D#Ö‰9׎/攸i¡{/˜¢7Á`ÛcÁDÛ_óÒ†PËMSl5Âzöx&lñ¾º—«À¦‘í +š5³iÏtCØï«T;åwàFÚfò?˜] 8’+ȹlÛôL"ôÞs©Ì¬ôaë¦Ì~¸Zœº‹y \-ʲ£#KQn ¥»™UŸÊz…‹ÊæúkkZa›8ÕB¥Ë¼¨¤ÒDÀ@V°Î„7¢Û‘° ©ÂÄH‡'ÁÉJµÎ&Ò>š¶EêàÞGhD¬Æ$–®¶tþ¸žÄÂ'ò:‡® náÜ.';e¥Gölì‰ë/Ù²S:ù1“§…JÂêþònñdñôóû'Ç‹ãWÏD&.@4ÏŸ¾|ùzîÑ ôf$ï_¿}ù«!asÅ~í¡öC(qP¡4…ÄX?›î§Ã‹Ò:þlÈ4öÑ„8Ë<Õ=µÃ¸ŸPÀÆ>O¼ü¤Wô%úÚ-¼“—ݪkÌÝÅ~˜01¼Ü*W‚~•hÜRVGûosG“G÷^¢ì_ë"ÑuQ@ëº9uÁžæa·ïwf²íT÷±8x–A32â²kÏð#èÇ" ý¡±a´Ç†o‘Í#ü(!qW72*’}Ümæê,}£è=†|eùŸ ¶ÇZLKIÞcãÑ: M„á”û™q°ÁqÈÑõ7²õÆrÐ>âö¹>ƾ×>ñ´}â;Ú_«¶VÒ²MYéÏf×ÙZ§Ïk, ig ˜¾îêñ-<$<ä!×>ãÎTý‹Û^ÏawˆlñÿD6½ahŸ¹©Oƒhòùƒ€h(Âïz×/÷1PÎì‡ûJ> endobj +818 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.9727 549.9227 513.9963 560.8266] +/Subtype /Link +/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> +>> endobj +819 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 537.9675 127.509 548.8715] +/Subtype /Link +/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> +>> endobj +820 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0815 537.9675 200.8491 548.8715] +/Subtype /Link +/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> +>> endobj +821 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.3117 508.388 485.0409 519.2919] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> +>> endobj +817 0 obj << +/D [815 0 R /XYZ 90 757.9346 null] +>> endobj +814 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +824 0 obj << +/Length 2698 +/Filter /FlateDecode +>> +stream +xÚ¥k“Û¶ñûý +EŸ¨Öb €Owâwâ8çq›6ÖL>ÄÂXS¤JP>_3ùïÝÅ.øïìIG,ö…ž‰U?±Ê‚U%~¦ÂxU¯‚Õ€__ ^ÞÂúvŒð·ÝÕ_¾—Ù*ó³XÆ«Ý­å ?’B®vû_<á'›­ŒïÕçüxª´Ùüº{³ +…ò•„ÀÕ")„^½Úõ’X‘HÅåüçê—_ƒÕzsø*K£Õ=L_d™\¯B©Ü¤ºzwõ¯ž-X‚¥ýDB-m(^$ „ÝPæGq(V‰ ü(•Qa³}ÑéÏ]¥ëÍ6oû-}ÏåéCÑÔõö,ýÕn,–ùaFcÂS×ÁŸ¿–°¼}DÁ\î·LÀ¢ áo–Ø*-§¢ïË®80ÓåžM%¹Ñ´ún÷r÷êï޾ýñùÀ]Ì7fyn¶"EÅÆ”?ÿøÓÛï¾ÆLµ¾oÚjÿÍ{¡ÂzýÝ`ú$K¸7­Î?ÒÂvAïù.­®îÒSÕ4µùøûhE>º²DbDêgoÖ`î² Ý?5åžFF×û}Þå¨ Bcvt]{.:BÒ¥ñ:L¤AäË ŠA8R˜Zš?QûI*Åj7“±Îöî2󅈲Ǹ™ã^†@ÉO'ˆ--C姩Us°ÑrÔ¼øú AqhÒðÖglëžïà +àÄ!á¨Q…SV`qQÝÀ?HƒýVegÞÔàxÃ!XÄ”¦34knñ+¼œ¦k‹¸¦É§Œ¼¼-ó›JÃ6”P=0‘g7Èȧ¦¬;ÝÒ¤kXž26ÍŽÚ˜üN³ÜzÏ8N÷ž7ØjÝû²ð³ˆw ð»îÈ™$õáKÔ8DÁŒEù›m¢"6€‡]Âd¼K‚yMƒèø·Lûn·É”÷r#„ð0 l„ ¼—×»ë¼^ƒ•B™€Ø¼.ë;§ZÞ JNö#ì~&‡%³Ø+ ~ï~#À„egYáÂmÓÒ£–pÐÒÉÛ¶Ä|ÂíkFo›#¬y½ÖåÚ´ñDƒôb?6u¯y±dîeq˜±êÕÞ”Þ ý¡a`I”;k¬ÐUÕ¬irÊÛŽFöTÇx|Ž¨U„Ê3õåQæä5#¢úˆÈêOXNChuü^hº°›5*ÏšZ–ÞÓvâÇf†°”"4ö64ª›ŽˆˆŠñuÛ6-#Ø£‡/&4]8‰‡%† ¨;VèÛb¸ŠN¬Á‡t?eµn°¼ðôÞ•*¦ìÊ£Þ7çΗLAÜÁ¶Öõv{®­ª†¦¹ƒ©ý:j&ÎCOÝÃŒvfÓpdÓ,pö˜HÎjšÝ—UE£G–W•Ž«Íxù„gO~°êYj‡©!…ÜT¥9èý3Îu5³+¥;”Æ 3,ÖèθÕÅdЧ&³Ô$£ŒÂ=æmÄÁÓÙˆPø€2>ïxža¿RÒuÛ [Ä6¸·^l½.8ñˆ–ñíÞá[7K^Ó×\`Ò`|[Xˆ •H?T©äø¨"(ô³T¸Кwç +Šuw•$~(.Ü}¡±ÂSmì)Œ+Êô°Fõ§À7© ú“fŠ‚ÁöHÜnfÆh©€Ž:½ïË:¯(í¥.r7¸p¡"tÔú`¥È)Çšö‚#ºb†èÝÙ +èYòÝ/Q©¾Â)®‚/*¢§â€&Ž E]ÏP])Å1äøg&‰a:ïÔw‰8mftÁQß ã„Õ††ÑF<‚(âq´ß*Q#VŽ:uÔɈz\¡÷wSê¥<¹Q¯Ž“I»qVÂKÑ쎕J§^Ä õŸ’Ùœ¶¶eYägÃöä±ÆÚJűë rœ}^ˆâ‘°|é°Z Õ¹6ÇÒîš„g͹ÚÓØ|ùÞ¦¾ t-˜ðNçöԞؚ ßέ.4w÷g‚û3A!®¤×œp ð7ý#5d#Þ®[äËKM“á‡~Yºá×$ôl{ÕMÜUwÀAמ‡fÿÏÈ ô®D˜ù©J2úwWÚ;Fùiô?‹Cߎñé¿–qN¼à:‚uUÂÄW¡ÊfºÌþéé±¾¤Bø2ÉT‡ñËÃ`¡!Ï°-­#nñ‡w5ºÄ‚¿„f׎ÉÁ +¾‘•Å¹Ê["§þ”?£J bVê2³ÈtâE03øƒ:¥Òž¡™LdÀ$‰ÕJ¨ÄOS™~áðzüí˜àÒt—|¿êøTèGi,gÚÌÏa}A «*MåT¾ã¥b°”ƶ9AÓFšÏv#RïîŒ/X†pl?”öñ•r„¦Ü᧜RáâHB+”ßRà PÛHR§4À3d—ú:¬².ß<}}lø†IŒÑ¸¬SG¹äšyÑ‹O_Š+öõä®â[_Óv¹»Ñ…G¡.š†ë_pÔR”ãÒnÌ®¢€Ð›–ó[\¾ÕÅ”w8ktPý3ds&GB{^Ð,ÔÕÃR]s&ß7µ~¤OZºdFÁðjºüÊtñü9ÿ¿[øà‹ÿ»àá"Žâÿë¯pûç} +$BÉñ÷1­JÝ÷¬Zâµ®u;8’ë!ÿîoð˜Î<’¿Ás©žË€f2bÞ:šÄùìùúŸŒíS/ý®ùüpG ÇØ<ø?ý‚}þjendstream +endobj +823 0 obj << +/Type /Page +/Contents 824 0 R +/Resources 822 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +/Annots [ 826 0 R 827 0 R ] +>> endobj +826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.7378 146.6848 248.3401 157.5888] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.9801 134.7297 235.5824 145.6336] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +825 0 obj << +/D [823 0 R /XYZ 90 757.9346 null] +>> endobj +828 0 obj << +/D [823 0 R /XYZ 279.4381 96.348 null] +>> endobj +822 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +832 0 obj << +/Length 2726 +/Filter /FlateDecode +>> +stream +xڥ˒Ü6î>_Ñ•“ºÊÝÑû‘œÖŽíWÍÖ¬=)âØgšë–(‹RÆó÷  ^#;®MõA‚ˆÙÁ·_°+ü]–dÇ"ŠÓ]Y_ù»@¿½ +xúó‡9ÁË»«Ÿß„Å®8i˜îîî-‡48&aîîª?¼ Þ¢ ‹Rïî,÷‡0ñ½áú–w¯nvcÓ‹òóþÏ»wW¯ïÆýXœ$JÜíËÕú» +Äzwå£"OvøÇ (Â]}‡‘.W®þ3ò¡ »`K«$ˆ¶Õ +â#`B§Wjf¬Ö1ßß÷½Ûnäžîu©/¤ÊuÝ^d-›^ôJ7•nÑÌH`Å0?y[fd™8ôÚŽøO5„îi>˜ 6£%È ªg"Ñ1·JõÐÈŠ µ<æ'èsO²£éÀ»ß¾'Ì$¦ÙdztŒ¤(ÏDµÜ´•Ý½îj«!êÇ"I«î‘Åžie©>ù~X|?4eO{$šŠ¤! TÓËN”d8‹9ÉþQÊfE7 « Ó“ú¸uß©²¿<TI”¬qÌCïãY]䊩3ÈB:oÑÂŽd†¤Ä½ŠÈ* àƒÖ!­ŸÝkúÒ9ÁxÂ/@ ?ñTOxâ{f„¸ +æÇ“$h61ý77fÎÇe5hÃù]³‚Ax/&ÆJÏŒ n­Vnm‘dmôêáLÆ ÔÐV¼®¡¯î*Ù1±æ ûÐ÷þÚ‰'ÝÊŠG¦¥<ŽbeÇ4Œ#Å»éœ €µfÆó•ì…š ‚Þ*¦îÛŸÇ=gÞ +ðÀiç,zäp‡äá,iã=JŽq%.yN.ÿ} +ÌӆjÑÈž0‹³MâcRð©}®ôݸÌb0ÚHm€}TýY1… µc4Š«jù —­å‹UµÐ?áXYeÊ©£‹gåü¨ºŽ=/Yõ[ì³Íl0:Û:SújÌg*ë¨ô~Dˆ¹‹rK¯2{ÎY+ç¬Ô+w(¸°ZR¬†Àv³°q’¸–fhùˆP5ø’h¤˜n‘ºáЭ¾ÖTllþmh¤FÍû¤C†®ZãœsªbɺŠ¹« l¹ä:ÿ’ZwQ•ÂŒÍƒëknP šø¡r%¹=Èj0'uQýc5}OïÉ4¶LB²Ü„_Þ Jì î®Í„!ÜGÈŽÝg<È ð>ئy“õ‡8 ¦tûZmÅÍà  ²aÖ±[<?-XüÌ_ˆxæmP€_.—Y‡…UT¦m®Í” +ƒ §0õáD=5Û€ýý·[BŸ-ÍüÙÛÌF˜ðí¡Hèöß4¢ìžx7ªì´Ñ÷=÷1n\‘‹1=æÛ‹<˜³è(9ÁµüÃÍKšt{Û[|<ù Í*ã¨T «mþ›|®h–lÌŒ`ãPl¦Œ c³Ö®e¥0¬ÃÈ«¶ën¡Ø7’`#iˆîýŠå»Û©»W·4PL#l5ôn‡^ì€qÓu1t® hʨ8²çl«ƒ˜¹¿ +lè5w¸ Í\o:IN“85–¡(Š\æ145ß)Zû=Ì[ÀÄ£ÄZ=Ç ià¿ç˜äY³¬U±OZÎ.ŸüÄ¿~{s ß`•o¦€\ Pnâaâ¯ù>»÷¸bÎ5Íw–r8¶ÕüBôýg—'¯_ÝüÀCÈ+Ýô”PYÞˆ~ñ ÿŸgî9R·u>§@<5¾©‹#˜ç"C¢–ÜDd‡6LÈ®s4¥†³v7L â¶!u\2ïË÷Uf’BÅ1̯aµÝíê ïºgµP›÷¥ñr¬Ìwêdu³&Ë3?ÅÕ025tMYœ9ÛËçÓŠÍO-¨ñÓøföòãåξ(gÎæqú¼É‹3~÷Îø‚˜³K>@ãSP¦‹ó +ƒ}[ î”;Às‰´³gÒxô˜`«À¨&ÿ2›Pïe{QÒå{~ìåµ€qk¹.tüv ~‚ ,Ìœ8_[uø%×P;Ò¶\ wU2=t%ó"Ÿäòi +t‰§ +Ihè)¿{ÝÆëiE™½IC™-çDlÑÖ·:Õk¨]€©Æ¥ˆ.„ _Ã.´àÁµ‹dKõÔJL‚YD.3rÞH…îµj鬢úï`zç°î±ƒþgÂÛ)Oô l£PË)yÉ^ýþÍ«\éæ­ÅµÚ©ïœjþ²ÀAf¯ª.]Íð™éuÆÞ9#÷Ò6Ñùö¡ ¿Ó5ßF4?ZÜbh43ò¼¹ûÐP²KS³ÐAy»™ÑAчjÑ“0SØîûßR¡x4G·p+°MB)ÿ—ßÙÛ@³·=€XnþÃG·²ã6öWDóW¾Ô]T`ÿã$ØðÔ3Ûw—ñ]mLnÈ뿃cg›xúP?‚4IÿÑ¿ö_Ó–Q8ÿw1=Y”ciŠBXˆ4:QPü·²‘øW-ÿ¬¸qƒwh  ä¯ÿKýú…¾ŸÒÈÞŽt·ú68úËŒþ›þúô ›µ‘ðÒ +ýf1endstream +endobj +831 0 obj << +/Type /Page +/Contents 832 0 R +/Resources 830 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +>> endobj +833 0 obj << +/D [831 0 R /XYZ 90 757.9346 null] +>> endobj +38 0 obj << +/D [831 0 R /XYZ 90 739.9346 null] +>> endobj +834 0 obj << +/D [831 0 R /XYZ 437.7219 648.3003 null] +>> endobj +835 0 obj << +/D [831 0 R /XYZ 90 630.343 null] +>> endobj +836 0 obj << +/D [831 0 R /XYZ 498.8037 552.4222 null] +>> endobj +837 0 obj << +/D [831 0 R /XYZ 90 534.4648 null] +>> endobj +838 0 obj << +/D [831 0 R /XYZ 231.09 381.1364 null] +>> endobj +839 0 obj << +/D [831 0 R /XYZ 90 363.179 null] +>> endobj +840 0 obj << +/D [831 0 R /XYZ 464.8599 263.3404 null] +>> endobj +841 0 obj << +/D [831 0 R /XYZ 90 245.383 null] +>> endobj +842 0 obj << +/D [831 0 R /XYZ 164.1609 96.348 null] +>> endobj +830 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +845 0 obj << +/Length 2718 +/Filter /FlateDecode +>> +stream +xÚ¥YK“㶾ϯ˜[¨ª‘B‚oßœÍÚ5›lÕf­Ä¯ I¬¥H™+¿>ý jèõV¥¦jtF£ûë<úð<æþc§»<Œ’Çâòà?ž€üãC ì-ð·î€¿íþúƒÊó]ž¨äq$ I°‹U ÷å/^°Ë6[ûÞ‡nd^;´E[3åùr­ÍÅ4ƒª¶é˜eyìñæ×ý»‡·ûiYÑ*“ýíá—_ýÇ´{÷àïÂ<‹_ ãï‚ìªûú¶¶­|¶ådö'ön¶ Ðà`#úa¿|Ç+L$»ÃD>r N–ÖuæUͱí.¦”%aã¬>íˆ^t–¸¶±ÂÛqàI íîeÖ'±˜/c1T»8Êœøß‚ÿ¬úÁ4¼&ǹì·ÿZTgÕÌY4ëŽVÏbOóÇ5à ½¦5™6`¢sº+S;óÛhz +Ö4ˆ X™ŒH÷´X·ž÷„ƒ–²â?rï¡úäûŠü@ü¾ì€ˆòÉö€‡‚íkÛI«/Bh3Úä‘»›ün7з»‘IÈ/Φ˜# 9§ ü\î4Ár le3ŽTš:ë£CĨ3¹!ðX¶0V™² ¼?šÏ;¹¼5úRÜaßÇáºárêA  ‰7þr„ wŽ~ c«Æ Jhô7ÐîòÍ®®ÄÕª«rrôŸ1}UMÙ¢½_þ<ƒ½oÉL Þ +«Wµæ®ÞpCó ~Zh/´ D,ô/¦8ë¦ê/<–bééÓ$k€ìÔ{?ÖC‹Î ;Ñÿ„ºô,êUºZ€ìßµ‹Â8‰þ¥Î¼¼ qt5LVc çä»@ÝË$~htq–•f%w“né.QQ8×*Š“Aga²¡æÔv ã…»`î^ü©[Bͽ¡â Åv{5ÝtX8‡R˜)4ŸÜÝ Mk™|ú•Ì<²eºúÆ}ÚÛïWÓlWÍî¤h,Á*½ »P2Yˆo>ü»Ç¬g\ +!»l W›^ÓÊŒÉÿ˜^Y·‘J¼ïë¾]NϦ鹞yÌäã5;"~!³Ÿ¤- + d±­€£e¨œÒÊvÝ3 1Ìîk½ —ʹ¬¶H5dÞ«†LV ¹NæœbÚKU×<î¬q²µ5-Õ2ç`DÒxEô& ¤ h_øÜÆÃãd>ÁÓv ˜¦¬ž…^­o i{x~ +0JSrÏ}{á"Sb¿mȃ2Åf ÁUš8´i€ç„s®|`á²>‘T+úcsW•¢‡‚8É«…ÑiYsC }»}Æ£I9<Â4Ä ëFÈtð…6Bá㇡fYÙ¯Ogns|`‹‹ –½„]äRðòdÃÃ&AêÂ#SEžV.s¥†_öKh`Þ®(‘a'‘¼„VýÕTJHVŸHÂÔûh.-nô ëçóÔYÛx™&°ï¤ \OÆULK¬Ãzåé—°ïPÕÕp[fëâß6 :ò7æW{™üØŽM¹åûcuµ·IŠIÜo{ð šo+.UèÓݨjF.à‰bX !Zhë9v‡HLÚ„±h¢6Ðcm ÷Éý0è~Í€‰”6p çR%Ëjˆ³Ž³rsü…bTX½íJ +QT¯µËù +0tå|´MÅÕ µØê .¥ëÑÜ%Ô© +êÌðꚎº…ô½¤| ‡âO6e)µiÀ—p ó%\nžôµqÇÕ)Œè¥À¥+ï_üd(¸ZÕ–˜3qß¼S¸“½¥’ÀrxÆ`u[›º¢hÌÎP–¤Ô‡_´~Ñ[ec*ÒˆÀ46d6U&ÙÝ!fÓ­8g-’ÖqÔ·5X&'ŸÙw†w³¢©í>SN¼ŸÏFéfÕÖŠ)q*:àÛ™Â8HÉ%³WMàÏþ× K~)g°k»ÂȘŽz'-AÒ®;'QÁ,ÊúþŽ){Ë’yk DÑ›Ù%‡öd@fÇt,D™þºâQÅ ôwºh}ÛXÃp+oJÝ•AcÍ×ü0Öµ ÃT†‰Œl°âžwÈü‡îf•éº?×±ÆBkÄX@7ýØûzX ~™\Ê.ñQ¸N²å³‹†~æCæ# ówKÿ)’ßOÙ\z•zý¶4ʬʢTPòÀ†dYbÈ2¶eK‹-àešO B9 ­¼r=ñ à¤LgV‹ü;4Nc+›Œ:ÐÔI—Øç;uâ•F@Ì”;~°x>Š<¾1/w(2!tþ iþiŽ[b¿V«‡úª.×Üö ÎqÑåz÷½…C®gýé^Ø{…ï±ÕÌU@¢ÃjšŒþòñ3ãÇO‹ÙÇ •p¿Rš»…=òÆ⩽·øüºàÂp)€…LZø[‡‡-IDöØ*oõ•H"0´@ +åäþAóözá7ò}U>(|>q¶pÅgA¹ý;Ë,O’"›QBI×(ܧ*íÚ³ºš?îMbÅÄ5ÈMæÎ…†ARNÀ }î3ýs.í‘ÆÉÁµÅ)!y‡ú$ÎhDÔ¼4«9YyZ8_q媷<.ÌwkgÆÉ(Nî4‹S~pë™9ØQ¯ëªdÖ8¶Ï\@¼vm9f9?Å”'’¤8 &w"vÏCï^§i@Oï#4¹÷C×^ÖÈhC˜ÂxOszÉ8#^[¨üéy9_úUÌ·xÐàõf3ÉE©M#pC¯ìU\ÞwRó<½ÎÄ鬙Ý:dÊ®:U øÉ9ÖkÞÇ[Wy‚gÖPÅùV®ŸÞ¡ŸÈ[£/oð}éÐQ…XÉ· uQ€Œ’{ŽH§ÓqבCôñí³”Ù¾’£qÍv±Œï8qzºƒYa­Ð#R™[ºæɯÜøÓãÙ¤ÈÊOžÁ.ˆÒÕßa}(‚$Nþ¯_CéÇÜ ¦¡ríLvyföÇNQ-ý£iPk[TÙ{Ò{Ûx‡f¥(ùúß©ð;åsOù~"w04¤½‡1àâè <Èúïíï·“iî̓?Õ®ØçùVüendstream +endobj +844 0 obj << +/Type /Page +/Contents 845 0 R +/Resources 843 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +>> endobj +846 0 obj << +/D [844 0 R /XYZ 90 757.9346 null] +>> endobj +847 0 obj << +/D [844 0 R /XYZ 90 739.9346 null] +>> endobj +848 0 obj << +/D [844 0 R /XYZ 513 669.6866 null] +>> endobj +849 0 obj << +/D [844 0 R /XYZ 90 652.6059 null] +>> endobj +850 0 obj << +/D [844 0 R /XYZ 145.0727 576.8531 null] +>> endobj +851 0 obj << +/D [844 0 R /XYZ 90 559.7724 null] +>> endobj +852 0 obj << +/D [844 0 R /XYZ 199.2294 400.9501 null] +>> endobj +853 0 obj << +/D [844 0 R /XYZ 90 383.8694 null] +>> endobj +854 0 obj << +/D [844 0 R /XYZ 437.8115 266.5818 null] +>> endobj +855 0 obj << +/D [844 0 R /XYZ 90 249.5011 null] +>> endobj +843 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +858 0 obj << +/Length 2680 +/Filter /FlateDecode +>> +stream +xÚ¥YK“㶾ϯÐ-TÕH&>Dßf½±k¶*•Mí¤rp| Ḧ5$!ó±cùק_àk¸±+)4  Ñýu7ì|ø»Ôß%QrLuïòúÎß½ù§»@†0~˜3|xºûîG•îÒc«x÷ôLâà©@힊Ÿ½ ÞtèØ{º˜ýAE¾7<~æÆÓŸ¿sí®Ïò×ý/OŸîþú4®'Û‰tàj¿Þýü‹¿+`[Ÿîü£NOÑî :þ1HSµ«ïB¥]§ºûr÷QЄ­SEÞ:–^KA7áSåYÛ–¦€­'ʳCÏó ¿×ÓI]¯U™g}i›{¤$^)¬eÇß‘µ5ÝÕ6]y.«²9öyÅÄJbšåïkc÷*òÞxÆÛÅ4ï÷mÖtuÙu° ‘s±CU ¶A‡ 8¦QÄ;Ã,ík¯Þ^V˜ãþÆ'¸º¡czô‹ð䶾VfDÞo´eí+Ú2ñ1ÓB¾â¶ÌÖ ¯Y۳ɕ  [6/Ü\*«;¢€•ƒ8•:ÅlßÇÓQ£ý!ð}ßû±²¸«7–öƒmúvœ<[‰ ½¤ÂcE) "÷ÐÉÉ»íÕÒqÁ^HŸ@WùË>Š¼Ž»ÿö}íîû9®«ÐœÚä—¬)»Z˜Kù¢ÉàxVU˹u=4Óélú7cf¿Ø® oeq­ª€ÛZè7 s|EÑY{cjÛ©m{ãvQÖ¦ÕÂ}…ÞcÃ&Ë/Ü‚“r£#Óz =:ŽÄ¦i¨)LËmr­æƒã<&”M§CS¡n/l¯|ÙnYeçJ柑<<#ýÙ0¡îšåè®úa„2Á1·5h×C'¦F¦î†e悇EÖgÜê/YãZ2¸Ú Áõ óÙD(!Ð|z ®5sˆmè8ž)9Æ* éLä@ sÞ=vOΓµ'8ðIN…T>¶øT,#“9£´i[d&È…f6JæÆêì´õCxRÞ/w’]!V¹ÜÆ6LS¶‰6ÉÛÔÚm“ ˆÖÕ¼ÐBj; !‘<ÍãF–„$Â"Í`ŽýѱŒ,CÓÂxA‹%Öš€1Ô4Šïñù{m{3ñm™§»¼ÿ,ÏÍÕµ´ÛÚè27\U÷+ëqñ† ­ìKq¢9Ë例Üz[cô¯­=À:bÒŸ†ÔX @ôÅt|½ÿ¨b`ÌçR Ž€‰ƒsÀÄÁª¬9NÏBy3Ôgò¿1.^WÖCÕg±ƒÌdÀ¡ „dˆ¢Í$1€¨×¿a°°í+bIÑn7î3«^l ÈKÛÓ±°`¨z¶-“ÇÓóãÁ`F@ÂtåKã&SÔ³ÃÍ’Â9ÑÜ‘&$ͼ€Þš_‡²•‰¶©n²ž3ÊlÀh6¼‘´š[Ì36 é ¤õ)e¤ü¢q9ÜXQ¹ðo—4ŒåË¥gÝ6a W¼Nl€² ‘$MÑ,yqþ?f6jué+ÉÝùãYÜæyhaÁs²7SŒÞ7¬,_ùÀt½s×’Y™‹+ã¢1…)þ´ç%âyÿlÑ<_øöAÌG„Œ?v¹Y¦¢NÞ@¾ÊB°/x«Òiß<pjüZF¦«Ó<ôz{XF"ç,áÒÕD;MÂñJCÈW.%&8„áeÃùf"ç]Q,Á4ò8&Çˈä%ð­³ö•Y0¹ì˜Èæ»KŒFÄÕôÝÖ"TØÏF°23ƒh¡|ù¸5ížMhd[˜k0¦0òl²~ ¬…HÒñX¿n6©u¤RN#ðËêHÃÕ~xp¬x°C¡¾‚¹OË éi¤ÙÝšüÒچð®=i3w#©n² ÛþrØ2Ó¾•´“ÒÅ:Qê=|~<òÐCÇ_©íSZ  â&T'Í7]oFÌ”¤’a霉+ÒB÷Ld½ACôÆj¨0u§Åê„}ãT[6(Àì®™+C—ïŒXZÁ©Ö^À¶P8l^\z,ù6ou+AÍ08‚£¦‚¼© îgLzMKY/ú6ÆÀmЬU4¹ŠÒã‹ŠVjíÌ@Ž^ D8-rwëzS“…B1äìDÀÛCÕÆ|”饰uÙpÙdÊj•ó6Ï/&톚ÉyVåæuUcÞz•µW +ÀcÕ +€ =cᎯšnR<„€»9?ôÜwÅGÄ) ’0fòµô<Ò½•`3}~)XW$¡÷w^ÎI­p‡5óFÍmUã »í©††æEjMz” +&%å[*[Ð80g!Lge#¢xqh #rq­z|ê¶1÷]9SZ[s ¼¯—Á‹5"•uã8¶ÞJ&~·Ê"ܨ”ë@³”Æpi¦ýÀû0B—³ä_úÐÖ¤¨Pò +¤vh„ÐÈDyfÂötD„€1…@öK&Èp–9` ü¦‰>a¦¬LĤÛmÕú“iÐé]Îî +Û¿¹Æ'¼úA:’¯ÿ½Òß+Ÿ{Ê÷c)8U_ý¹ýå›üGûÛ *Žµ’ðÏÇ -ý¸¯ äendstream +endobj +857 0 obj << +/Type /Page +/Contents 858 0 R +/Resources 856 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +>> endobj +859 0 obj << +/D [857 0 R /XYZ 90 757.9346 null] +>> endobj +860 0 obj << +/D [857 0 R /XYZ 207.8864 706.0616 null] +>> endobj +861 0 obj << +/D [857 0 R /XYZ 90 687.3006 null] +>> endobj +862 0 obj << +/D [857 0 R /XYZ 429.0947 581.6321 null] +>> endobj +863 0 obj << +/D [857 0 R /XYZ 90 562.871 null] +>> endobj +864 0 obj << +/D [857 0 R /XYZ 416.2232 469.1577 null] +>> endobj +865 0 obj << +/D [857 0 R /XYZ 90 450.3967 null] +>> endobj +866 0 obj << +/D [857 0 R /XYZ 318.9393 332.7731 null] +>> endobj +42 0 obj << +/D [857 0 R /XYZ 90 312.8912 null] +>> endobj +856 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +869 0 obj << +/Length 1859 +/Filter /FlateDecode +>> +stream +xÚ¥XYÛ6~÷¯ðCd4«ˆ:Wú£ 6@€Ù¢IPÐm ÑáèÈÆýõ‹:¼ + X,8ç g>Ž¬¶ü©mêm“(qÓ Œ·Yµñ¶G`¿Ù(Y¾õ›¹ÀËûͳßýt›ºiìÇÛûiˆ•ùÊßÞç妻?òœ÷;ßsL{Øù‘Ó´•®3³û|ÿvªÀõ‚$$Ÿ wóÛýhT|Š‚X¡É¯›Ÿ½m¾½ÝxnÞFÛ˜x®JS[mB?°“róaóǨ‡hÃZh‘ +Öb ®bóašphºÎw7Aê9YsÞ)Ϲõñéî&ôc§?^ºõž‰sÛd¦ë@çÊÉ›ZDMË„®y©¨³¦Aب³/¨Ýô—E^6µ»ƒÃ¿uîOƒ˜¢ƒ€Ñt}Qé^v4‡+¯ÞÿùØÜÉèœý²òÍЮE 7óì.G¥‘STçÒT¦îÉŸŽ™ºÄÞðØì{]Ô&îÅŠí”SfC)'ŽÇÓ’yžT¢0öˆìƒÔM9H–tI0µ>øÓ&wô5qc? É×èŸo«Ã§ËåÔ œnÈNÌÕÃÝ{^êOºg–<%@!ÔB¡€ub¥É¡ïúñ9˜ŒËÄN;¤ +|{PðÜ4­5‡÷¸–dTe~êO•‹“õ2ògù®¬ž v^šL(µ­Õ?V…º^ïD=öˆ^¤+Êô YÌH»ÀƒàWÓKǃêDÐEÏ3º$+¾¶‡2'ðRÊdŒ/4 +Õ2®að Ùcñå6„l¶ÌÊèºcÝ’žÅN\µONÎ ô4ûÒ¬ßYÛ ÇÓÙ&óTA³76·Ë¢*zû,ì…ÙÛ +{T&E^Ίoµ +¸¡ðU"j€˜ž;âÎüƒ¹ù:Ø'f'#Vƒ*L¸ÉAêÐ6¤(æ¢= ¬@íÅà“3¿Š*žñðÉ‹<±ý‹¸ôwLõdt¡µz:áÝZöH—p›Ø6à›ÎKÔ ñ¬þé~”ƒ¾R#ªy¬8z›íšqmÊxµ’²ŸW—ØŠ[©\[«ÄºgñSѳø ” õægAÞÍŸßØÄù@ǽ–¢rP‘±”÷äaLo óèÙA=¶È±"t}L ȇ‰8‰Ëgjø€UÑ Œ<Ȉz©Ã¶ @s&s{*Ò 3ñ"ÓCzÃZ~àWî‘=™7œô;ËÁd?~R¯+ëñч$}¤rOrÙAýƒ§$ gˆ“b%‘<©¸Â-'ÐvBÙ‘‡Çj(Dˆâ%éEœÈÁ8Ù¸á=¦‘½ŸÁ´ÿ8wí'*åª0YýÕ̃/YGñÿúõŠ~z»…-*ð翼Ånš·ö×)qcxcjè±Çë·úÎo1¤A&Ê—Ñ{îÏ}oü̈™’_íxÂåŠÒ®·Ì­×Í÷Ëîøêx𧵕óùÝlÞendstream +endobj +868 0 obj << +/Type /Page +/Contents 869 0 R +/Resources 867 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +>> endobj +870 0 obj << +/D [868 0 R /XYZ 90 757.9346 null] +>> endobj +871 0 obj << +/D [868 0 R /XYZ 299.5322 694.1065 null] +>> endobj +872 0 obj << +/D [868 0 R /XYZ 90 677.3793 null] +>> endobj +867 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +875 0 obj << +/Length 280 +/Filter /FlateDecode +>> +stream +xÚ¥Q=oÂ0Ýý+<&CŒïŸmÆ~¡FªDUoˆ’@¥–D¥ –_'N"„؇{çwŸï€Ëð€;É6©œøzÇ$߆ΟÜy6yBÇp„Äý¦«@ 4r_.°i¦À(JüG•f¨er|žGàïç“ÿVëÏté öèÇ~ý8Z´Ý¾Ùb)yÆ*˜ÊY̓#8‡|ÇrTƒóÅÞØëX']µ­Z:#KÂXs-@†ý€´¹i†N;R@©séH8£l+˜rÁêô›Uuµ_ª2ÊÔÔѾ  HA'ÇÞì­œ¢š¢ŒJImRÔI³¿8ˆ>ðýíCówÚVõå54¨q´3•þ}¸xjendstream +endobj +874 0 obj << +/Type /Page +/Contents 875 0 R +/Resources 873 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 829 0 R +>> endobj +876 0 obj << +/D [874 0 R /XYZ 90 757.9346 null] +>> endobj +873 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +879 0 obj << +/Length 1608 +/Filter /FlateDecode +>> +stream +xÚí›MÛ6†ïû+|´šá§Hö–¦i›¢)‰ÑÚ´²v-T¶’6ýõ%õµ´9’¬F§ZÈÁ‚=Oæ}v†ÑdÍ?²Ðx!…Dšñ`íïðâɼýý©?æ”™Wàƒµ l±voýfs÷ê;ª£  b±y´Î®‘Pl±Ùþ¶|³ Ÿq¾ZS—tõÇæÇꎤ’ÄÞ€_¸¢¼¼áôî¾2&Wï³í)«ëw‡müwë…pd¡µ—€!.hPz¡ˆ¬ÖcÜ鯨½°…F:°·•N¨ýωÊÉq^mRT¯aõ’&űºÊëÒ´ºØWο¶ÞïÞnÚÜ"¡&k\ „•róëå¹5^;ÖU®Ýp æˆHF[Ÿ6èû<;fÇ]‡[4çb‰Vka1¿ø/\ë®Ï.ô˜!Ì$ƒõ³ùSmúÁý‹inëWÒó^2,½ »Š&’„™o% i.e?mŒ#ªib”ŽYnDÙ?7¾hÍl”?eQX³e‡cr8…Ç$;ö„â3ff0QN:G!Ňäòý[¹4¡C¸¤J ¤¤¸–ªª†YªLà šCE¬1³a¾~~N“¨!‰)=“4ms4WÆzÅôý[1Y2†0U%ã QÎõP%kÌl˜ßþü±ªcy\dé§K»p‘z.cƒÔ]è˵Bج¢\®À¬¹m@>Ï»U`RFÐMAZz-eŒ˜+-‡(kÌlœßoêéÛõ>LêÖYÄfak`S8˜¹Ò=@9T¯Rž÷ +(F0¹(¢;Û[Á@5f6ÎÍJâeœâcƒRÞÖ.Æä\­¾8G’QÄõJéy/‰#ðâ Œ`ª†%b¦Å טUûâ4;ªhûkEÌ.8O·&bÞk~i¿tÔ[¯Šž÷ +6ÂF0lvÁ)§°µf6Î_WÊ”·‡z‡™&ñÁÔ9.gª¦!Εd qýRzÞ+â8DÁD •)†x Éq™GœÛMi0ï&¢Î‘eu½rzÞKê(ØTá&šx°@#A ˜x´få2nWÏšÛõæÍý«æº8†ÑŸ3^ÃŽ®)‡«Ã¨)G¿€¾+`@AÎÀ&šr0!lhÿÙš=_‰²ÃïÓ§S^ŽÙª7O‡¨ߊ`ÑÖ#T7Ñ£F´ý +ùþËq8÷‡C˜jaÆ +ˆC 5fg %‡ä˜„iòÌ‘bìæªT'GNžÇqÔ+ïß +ÄáƆ0GŒ  `CZ³3Ž¶ñŠŠå§$ªá6OÊ7Úå×9WòGe\9yÇU¯`¾ÿ’+r†0Õ2žh$±Ü86fg\…/Ï’<ˆ-æy×KN®Ç±Ô+’ï¿d |4‡0UÂÙ5ýJµÕå’iÅqS‘ +°ÛÝ⨗„ã©O(Ï»J€€ÀïŸ&jvˆRK5@Skf£üeEY†y>ØcHÕ¦¯ˆ·ÍjêbØßÍýZÈÛèrn²G‘Ô¯’ï¿ÜÎ]a¢.GCŠÓ¡í\kvV›^o·y\Ô8}°O°O/¯<e©ix½\ ¹©‡N¯&¾«‰›ÂTuH¤”ÚÀµfgèlÞÔÇ]žžvϧúQâC–íáÍ]9bÿïþÖÉ“ßqüô +ãû·Â( ò†0?ÂÅèЪ¨5+ÏhåÑ.9ÆÑñÔ“-žã(±C¥è¢‡¹c%Ü9NfÇ‘Ó+‰ï¿¬<à8„‰fÝ” ¤:Ýך•‡Â¡Ñcö\R“åBœóy´}>ÚvÓ>j´Ý¯—ï¿Ä +.H`ÝX]S^°2¥ S=ô¥5«NÂ0±LöMÃJ“‡<Ì?›2&LtnÔ•ev½zúþ˳Êð a;r-v”",9®1+«YšÙ•Qµy3Ë¥G{$&´Û5%ٌڗ:G‘qÄõJéû/‰ƒû'ÂT…Ž`DHç …–¸Æ¬ýOa©3¤ÅÇâ¢Þq5c÷@s„Z¯‚¾ÿ4pR‡0hD+D¦@«Ìªü>Þg¨r/øRåöá!|Š÷åI¬Ë‡2‚ÞÒ9–&Y#±8·uŸbq… <\~ýöלkB%–?÷ü"”r(endstream +endobj +878 0 obj << +/Type /Page +/Contents 879 0 R +/Resources 877 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +/Annots [ 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R ] +>> endobj +881 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 483.9922 513.9963 492.8388] +/Subtype /Link +/A << /S /GoTo /D (section.6.1) >> +>> endobj +882 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 469.9249 513.9963 478.8911] +/Subtype /Link +/A << /S /GoTo /D (section.6.14) >> +>> endobj +883 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 456.0968 513.9963 464.9434] +/Subtype /Link +/A << /S /GoTo /D (section.6.2) >> +>> endobj +884 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 442.1491 513.9963 450.9957] +/Subtype /Link +/A << /S /GoTo /D (section.6.19) >> +>> endobj +885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 430.1939 513.9963 439.0406] +/Subtype /Link +/A << /S /GoTo /D (section.6.20) >> +>> endobj +886 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 418.2388 513.9963 427.0854] +/Subtype /Link +/A << /S /GoTo /D (section.6.21) >> +>> endobj +887 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 406.2836 513.9963 415.1302] +/Subtype /Link +/A << /S /GoTo /D (section.6.22) >> +>> endobj +888 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 394.428 513.9963 403.1751] +/Subtype /Link +/A << /S /GoTo /D (section.6.23) >> +>> endobj +889 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 382.3733 513.9963 391.2199] +/Subtype /Link +/A << /S /GoTo /D (section.6.24) >> +>> endobj +890 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 368.4256 513.9963 377.2722] +/Subtype /Link +/A << /S /GoTo /D (section.6.9) >> +>> endobj +891 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 354.4779 513.9963 363.3245] +/Subtype /Link +/A << /S /GoTo /D (section.6.3) >> +>> endobj +892 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 342.5227 513.9963 351.3693] +/Subtype /Link +/A << /S /GoTo /D (section.6.4) >> +>> endobj +893 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 330.6671 513.9963 339.4142] +/Subtype /Link +/A << /S /GoTo /D (section.6.5) >> +>> endobj +894 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 318.6124 513.9963 327.459] +/Subtype /Link +/A << /S /GoTo /D (section.6.6) >> +>> endobj +895 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 306.6572 513.9963 315.5038] +/Subtype /Link +/A << /S /GoTo /D (section.6.7) >> +>> endobj +896 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 294.702 513.9963 303.5487] +/Subtype /Link +/A << /S /GoTo /D (section.6.8) >> +>> endobj +897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 282.7469 513.9963 291.5935] +/Subtype /Link +/A << /S /GoTo /D (section.6.11) >> +>> endobj +898 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 270.6721 513.9963 279.6383] +/Subtype /Link +/A << /S /GoTo /D (section.6.13) >> +>> endobj +899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 258.8365 513.9963 267.6832] +/Subtype /Link +/A << /S /GoTo /D (section.6.10) >> +>> endobj +900 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 244.7692 513.9963 253.7355] +/Subtype /Link +/A << /S /GoTo /D (section.6.12) >> +>> endobj +901 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 232.8141 513.9963 241.7803] +/Subtype /Link +/A << /S /GoTo /D (section.6.15) >> +>> endobj +902 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 220.8589 513.9963 229.8251] +/Subtype /Link +/A << /S /GoTo /D (section.6.16) >> +>> endobj +903 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.0411 208.9037 513.9963 217.87] +/Subtype /Link +/A << /S /GoTo /D (section.6.17) >> +>> endobj +904 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 197.0682 513.9963 205.9148] +/Subtype /Link +/A << /S /GoTo /D (section.6.18) >> +>> endobj +880 0 obj << +/D [878 0 R /XYZ 90 757.9346 null] +>> endobj +46 0 obj << +/D [878 0 R /XYZ 90 739.9346 null] +>> endobj +50 0 obj << +/D [878 0 R /XYZ 90 553.9527 null] +>> endobj +877 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +908 0 obj << +/Length 276 +/Filter /FlateDecode +>> +stream +xÚ¥Q=OÃ0Ýý+<&CÌÝ9þꈀª‘@d«:âviQÑþ{œØ"è†<Ü;¿û|‡ÂCî€e„“¥æG|¾— ]¾˜Ü×ìî‰wÂiÒ¼Þ4 +EH¼nÖA^HB Y¿zÉ R¡€ž»¦?øˆWmãÏù¦®Øc=õKã(©qèöÉÖàM«b ¤³Š:GüÈJ’WçÀÞØëT'c­­ºÐV cÍ­û¡Væ_3ŒÚÙ‚RÎ¥ÓÂié$…ÄR7¬Ñ£~KßúÓöË7Q¦®½J—@•£Êúä % ’ J2€Žh—“ʺStþÞãýíCw¾ì}ûû +å4ÚL¥kÆxdendstream +endobj +907 0 obj << +/Type /Page +/Contents 908 0 R +/Resources 906 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +>> endobj +909 0 obj << +/D [907 0 R /XYZ 90 757.9346 null] +>> endobj +906 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +912 0 obj << +/Length 1260 +/Filter /FlateDecode +>> +stream +xÚí›M«6†÷ó+² RãúÛ¸Ë^õãvUUÙUU”î€J>”0º_;â=V=weF rürà}°9Ъ?´p!˜’P¾¨Opñ¬6ÿò„†Ÿ)&jéøaÅY¬ì¦?®Ÿ¾ÿˆ€sÌë/ZœS XIëýŸËOÍöÜ×—b…\’â¯õo¦¢H7€J—ZbzkðòùwŒ4+¿¶õe{)P¹¬š¶Úvfëçã¾þgÒC¨”ð Ç   ó›¨X!¡CùS·½^ç;)[¾Òd!äZ릌õ±3£¼nÚ¡q{lêKÛoUm6tíµ~B®§K_ïÍúåôòÜt¯gËïÌ–]U~C“ãiX©N‡sW÷õB·Ý¹Ùîê^Ÿ‰îõæÓOëÉ#„@X¹CK`YÚ>Îüœ‚WV´ñÔ>n)@‚àISý¾©ÎÕæÚo{uÌBÈ%(VL弘/¨|óô<ØGe {Ã=py"ÿ°|[ùm|ÔÖ."LSÐù{à!’R0¢1’1üÔ„ÊQ¨K’à kc˜N³©»î´ùZ ¸<]ºýˆ“4í-Â,¢óÚ7S7Q'dÎ RQÆ‘âHðe&LÊúþ¼ßTÏíF÷­êüá2s•¦;Os,lV;l¶‰3'lÎ RÁ¦nx0V÷?ØÆ°;lCGF8Êl}w–1QÜy ©;g©¸#`.Hˆ»1Lçy¨»Í®;U«;SNò}["Ò,+¢HóZ8S7¤ 'iÎ R‘† £i& ßò<_dÅJ"‘©J^€¿ñÌÇògµóðgûŠpéäÏ™A*þ„‰~CÔDßÆÖ_TOs©ð!Ü݉ÂÎç磶N:¡sí>sõ,TÇ°u½êðÎT}k -¯¢8ôzâì•sÛ‡(̼þÍÔ fη€Ý<€£¿Z!AAIÄ»¾úe_°endstream +endobj +911 0 obj << +/Type /Page +/Contents 912 0 R +/Resources 910 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +/Annots [ 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R ] +>> endobj +914 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 483.9922 513.9963 492.8388] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 472.1366 513.9963 480.8837] +/Subtype /Link +/A << /S /GoTo /D (section.7.2) >> +>> endobj +916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 460.0819 513.9963 468.9285] +/Subtype /Link +/A << /S /GoTo /D (section.7.3) >> +>> endobj +917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 448.1267 513.9963 456.9733] +/Subtype /Link +/A << /S /GoTo /D (section.7.4) >> +>> endobj +918 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 436.1715 513.9963 445.0182] +/Subtype /Link +/A << /S /GoTo /D (section.7.5) >> +>> endobj +919 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 424.2163 513.9963 433.063] +/Subtype /Link +/A << /S /GoTo /D (section.7.6) >> +>> endobj +920 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 412.1416 513.9963 421.1078] +/Subtype /Link +/A << /S /GoTo /D (section.7.7) >> +>> endobj +921 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 400.306 513.9963 409.1527] +/Subtype /Link +/A << /S /GoTo /D (section.7.8) >> +>> endobj +922 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 388.3508 513.9963 397.1975] +/Subtype /Link +/A << /S /GoTo /D (section.7.9) >> +>> endobj +923 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 376.3957 513.9963 385.2423] +/Subtype /Link +/A << /S /GoTo /D (section.7.10) >> +>> endobj +924 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 364.4405 513.9963 373.2872] +/Subtype /Link +/A << /S /GoTo /D (section.7.11) >> +>> endobj +925 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 352.4853 513.9963 361.332] +/Subtype /Link +/A << /S /GoTo /D (section.7.12) >> +>> endobj +926 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 340.5302 513.9963 349.3768] +/Subtype /Link +/A << /S /GoTo /D (section.7.13) >> +>> endobj +927 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 328.575 513.9963 337.4217] +/Subtype /Link +/A << /S /GoTo /D (section.7.14) >> +>> endobj +928 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 316.6198 513.9963 325.4665] +/Subtype /Link +/A << /S /GoTo /D (section.7.15) >> +>> endobj +929 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 304.5451 513.9963 313.5113] +/Subtype /Link +/A << /S /GoTo /D (section.7.16) >> +>> endobj +930 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 292.7095 513.9963 301.5561] +/Subtype /Link +/A << /S /GoTo /D (section.7.17) >> +>> endobj +931 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 280.8539 513.9963 289.601] +/Subtype /Link +/A << /S /GoTo /D (section.7.18) >> +>> endobj +932 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 268.7992 513.9963 277.6458] +/Subtype /Link +/A << /S /GoTo /D (section.7.19) >> +>> endobj +933 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 256.9435 513.9963 265.6906] +/Subtype /Link +/A << /S /GoTo /D (section.7.20) >> +>> endobj +934 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 244.8888 513.9963 253.7355] +/Subtype /Link +/A << /S /GoTo /D (section.7.21) >> +>> endobj +913 0 obj << +/D [911 0 R /XYZ 90 757.9346 null] +>> endobj +54 0 obj << +/D [911 0 R /XYZ 90 739.9346 null] +>> endobj +58 0 obj << +/D [911 0 R /XYZ 90 553.9527 null] +>> endobj +910 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +937 0 obj << +/Length 287 +/Filter /FlateDecode +>> +stream +xÚ¥QMOÃ0 ½çWäØl§ùÚc•@ô6í0ÚnLÚZQ1±ý{Ò¦«*¶Êáù#¶ŸŸ‘ƒÈp£Œp2Õ¼80à[ž3Ò‰Ï'Ó÷9»{"Çpš4Ï7}BÏËeD'ÀÚè¸xR¡€`<ïªvÝÆh£âsW¬÷!º¨Ëê¯òŒ=æã䘒»¹_l¹^z‚!UüÇ; Ð9â–’¼8{öÎÞÆ>!ÑÜÚ¯K'Úja¬¹õü¦¨•ù‡^EëKPÊ©ˆZ8#m'¢$_˜jâ=Ý+9¯j/×wU™š:àËÅÈbTÑqp„É ‚€Ö&&5mp®/óqøÐœÎÛªþ{ …r¤6Qéìº{~endstream +endobj +936 0 obj << +/Type /Page +/Contents 937 0 R +/Resources 935 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +>> endobj +938 0 obj << +/D [936 0 R /XYZ 90 757.9346 null] +>> endobj +935 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +941 0 obj << +/Length 1873 +/Filter /FlateDecode +>> +stream +xÚí\MsÛ6½ûWð(„àû£·4I[÷”‰•SÛÑÈmq*K‰žôç$H +4V¨œ¦åä Z||»ä¾ *$ÁöI N”PÈ0.“ÕÓ Ní×?ßê4§Ì~'f‚°dæ_úãüæÍOÔ$#)©Hæ¹ä Í’ùú·É»Íò§ÇéŒ +<áÓ?濺 8RZ‘âlyâšòò‚çÛLvï—ùÒÝåÇçUþ|œ=IÝW·»uúWCK8²žÑŠV2Ä•%-Gd:#ãþN-K 2²à)Yiqû±þ’+?–õA¾©Ö ë©bµŒåß_²|ãŽîYúPÁÓÓê˜òl¿;ýPX¾ù0ožŽû|_:k+iî¾´$ÄjÃèÿª°çßKØ Ø°5(lЃ¡…MbBÅt]¡Y/î§OžÂêÆ®U•>_7(b]Äh‡ê ÂPõJ„®Ø½ävi`À4€ÌØJ “hƒ§†•y‡=Xë\Ñ€ñØBç*PÌ&%Hb%Ú6G_áƒÓ;5€HöÊÎØìev0 fèÁÀéÁ´AœËX¨÷szÊ—VÀ)c¯õiI¢BŬ×+à–õQéWœ  8õÉ‚îÀì. ”°‘, ×Îe‹rCb VÜOžnwi~©$8Œ‰Äg6Â*TÌzÜr`ÔõU2P¯ èŒXÀî2€‚z0ô< …•¢Œõ€X™ÙSz WÁQÌLâ3V¨˜a»Z–†Ë¶ábü¶Úq/}ð–µ’zï[(]J r½R¢3”»K pgö`è” Mb¡V¾À’«ýnFQÁŸ¨‹(f™3¤x‘¾å"'>ÅBÍ 0ówÕAánº:_àÒÈ(ñ]ŽæÀóí%ÝÎ'°;é‚{»°C×3VI…ïåV¨Z¸i¾Y,×ëpH¶^çvïѵLŠÑ"³}ã=µËõì>«z˜òMzÜÕÍÂëôtjµ7±ø·k5|š½¤Úõx_r;¡‚[O ù¡‡XjT8Öœi`¾R7P)bÔrø¼€R+T̼­Î5amë­|[„›t¹n×"Ì°ÿqÄ —¾;ƒ°;…ƒÛK°CKœ(¤ìà“x «%ž­žöR¹T¨xÌgöW(f_1dmûcüm;˜^Êï UÀî”î?Á ]„`”ÄѦJ «•¿K³ÇÍýþ×"ÊRh-Ÿx¯²BÅœÐiÁYÛ‰QÛ¯<‹^‚ï NÀîî4Á <ÔSÃÆ"ÖCi`µà‹bø 3H£Ÿ5t²FÅŒsj…ÎLÛxSÌ0ªÎ?T(þ”“Í~»Îvî\¾©¾µ«Æ7Å +Ò]`KõSž­N5h™;ÔòXq>NÅdYIéÚÉ܉Ϸwó©­ÞN !“ùíÝüöÝ;™•#™a;ƒ»u´Ê½‡ºÚÊ÷Õ9ü‚‹+=vvÌ×%1ÕÄJ¿zéì_w9‰T™Ä܃=xÖ¢Ò mb“VªS8_],ÖÊ÷ÜÎWt¼ µ^oøÖÇyé3^Úï +×Kn§|p 4?ôìUþ´ÏÄÖâ ¬–þóúB˳|ÃÛ°Ä'¾ðk‹ŠÙ— IiLÛþk›žŸßw6=6ßÇÚz¤½ôÚùŒv§X°C{0´d¹°e>­­˜'ÙK£µ-“xùÕ33 Ù +s ^\·‡áo©Èô’~g¨v'}°Ã{0t™Â8Â4^§Ô°â~¾¤÷«mfGÊ ï,Øò‚ðbÅáqâ¯P1ñû.ŒÊþ6ñ‘é%þÎPìNüàï¶`^h¤øOÜ(©‰éõ¿ ü IÔÄendstream +endobj +940 0 obj << +/Type /Page +/Contents 941 0 R +/Resources 939 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +/Annots [ 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R ] +>> endobj +943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 481.9349 152.2025 492.8388] +/Subtype /Link +/A << /S /GoTo /D (a00077) >> +>> endobj +944 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 483.9922 513.9963 492.8388] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 470.956 176.4612 480.8837] +/Subtype /Link +/A << /S /GoTo /D (a00078) >> +>> endobj +946 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 472.1366 513.9963 480.8837] +/Subtype /Link +/A << /S /GoTo /D (section.7.2) >> +>> endobj +947 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 458.0246 162.175 468.9285] +/Subtype /Link +/A << /S /GoTo /D (a00079) >> +>> endobj +948 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 460.0819 513.9963 468.9285] +/Subtype /Link +/A << /S /GoTo /D (section.7.3) >> +>> endobj +949 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 446.0694 148.8948 456.9733] +/Subtype /Link +/A << /S /GoTo /D (a00080) >> +>> endobj +950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 448.1267 513.9963 456.9733] +/Subtype /Link +/A << /S /GoTo /D (section.7.4) >> +>> endobj +951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 435.0905 161.0693 445.0182] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 436.1715 513.9963 445.0182] +/Subtype /Link +/A << /S /GoTo /D (section.7.5) >> +>> endobj +953 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 422.1591 128.4121 433.063] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 424.2163 513.9963 433.063] +/Subtype /Link +/A << /S /GoTo /D (section.7.6) >> +>> endobj +955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 410.2039 146.4744 421.1078] +/Subtype /Link +/A << /S /GoTo /D (a00083) >> +>> endobj +956 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 412.1416 513.9963 421.1078] +/Subtype /Link +/A << /S /GoTo /D (section.7.7) >> +>> endobj +957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 398.2487 112.9203 409.1527] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +958 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 400.306 513.9963 409.1527] +/Subtype /Link +/A << /S /GoTo /D (section.7.8) >> +>> endobj +959 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 386.2936 147.7889 397.1975] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +960 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 388.3508 513.9963 397.1975] +/Subtype /Link +/A << /S /GoTo /D (section.7.9) >> +>> endobj +961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 375.3146 155.5297 385.2423] +/Subtype /Link +/A << /S /GoTo /D (a00086) >> +>> endobj +962 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 376.3957 513.9963 385.2423] +/Subtype /Link +/A << /S /GoTo /D (section.7.10) >> +>> endobj +963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 362.7568 126.2002 373.2872] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +964 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 364.4405 513.9963 373.2872] +/Subtype /Link +/A << /S /GoTo /D (section.7.11) >> +>> endobj +965 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 350.4281 142.2503 361.332] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +966 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 352.4853 513.9963 361.332] +/Subtype /Link +/A << /S /GoTo /D (section.7.12) >> +>> endobj +967 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 338.4729 157.7419 349.3768] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +968 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 340.5302 513.9963 349.3768] +/Subtype /Link +/A << /S /GoTo /D (section.7.13) >> +>> endobj +969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 326.5177 153.3186 337.4217] +/Subtype /Link +/A << /S /GoTo /D (a00090) >> +>> endobj +970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 328.575 513.9963 337.4217] +/Subtype /Link +/A << /S /GoTo /D (section.7.14) >> +>> endobj +971 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 314.5625 168.8202 325.4665] +/Subtype /Link +/A << /S /GoTo /D (a00091) >> +>> endobj +972 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 316.6198 513.9963 325.4665] +/Subtype /Link +/A << /S /GoTo /D (section.7.15) >> +>> endobj +973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 302.6074 180.9847 313.5113] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +974 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 304.5451 513.9963 313.5113] +/Subtype /Link +/A << /S /GoTo /D (section.7.16) >> +>> endobj +975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 290.6522 140.596 301.5561] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 280.7543 513.9963 289.601] +/Subtype /Link +/A << /S /GoTo /D (section.7.17) >> +>> endobj +977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 266.7419 161.0694 277.6458] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +978 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 268.8987 513.9963 277.6458] +/Subtype /Link +/A << /S /GoTo /D (section.7.18) >> +>> endobj +979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 254.7867 162.1755 265.6906] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +980 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 256.844 513.9963 265.6906] +/Subtype /Link +/A << /S /GoTo /D (section.7.19) >> +>> endobj +981 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 242.8315 163.8392 253.7355] +/Subtype /Link +/A << /S /GoTo /D (a00096) >> +>> endobj +982 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 244.9884 513.9963 253.7355] +/Subtype /Link +/A << /S /GoTo /D (section.7.20) >> +>> endobj +983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [103.1769 231.8526 167.1461 241.7803] +/Subtype /Link +/A << /S /GoTo /D (a00097) >> +>> endobj +984 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 232.9337 513.9963 241.7803] +/Subtype /Link +/A << /S /GoTo /D (section.7.21) >> +>> endobj +942 0 obj << +/D [940 0 R /XYZ 90 757.9346 null] +>> endobj +62 0 obj << +/D [940 0 R /XYZ 90 739.9346 null] +>> endobj +66 0 obj << +/D [940 0 R /XYZ 90 553.9527 null] +>> endobj +939 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1007 0 obj << +/Length 287 +/Filter /FlateDecode +>> +stream +xÚ¥Q=oÂ0Ýý+<&CÜ»s|¶«¶¤J­È†( ,%Q£D…_‡µl•‡{÷éwïPBx(=Hk¬ò:g¹; +‡ž ÓYÈg·…xx!/½òL,‹ý0QB’E¹N(O3òÀ˜ô‹· $¨ ‚§m·hÕµý®ëÛ]RÅТ.«Sº)–⹘ŒüŒf¼|ÿ%Öe๠´wF~zOò(rÒWçS¬Äû4'&††{k^Ò;VÖÙ{F6ö_1]hA­oµdå­v-5…ÆœIZ Öò 輪«vÛUe”©©£}½‚eŠ&éGi´0#=£Qwàˆö)™¤i£ó÷@çñPÍé|¨êß×0¨'j7*ý”â} endstream +endobj +1006 0 obj << +/Type /Page +/Contents 1007 0 R +/Resources 1005 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 905 0 R +>> endobj +1008 0 obj << +/D [1006 0 R /XYZ 90 757.9346 null] +>> endobj +1005 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1011 0 obj << +/Length 3129 +/Filter /FlateDecode +>> +stream +xÚí\K7¾ûW9ÍÍ÷c/Aö‘µÎÂHØÃf©m ÑHIc'ÿ~É&»Å&kÈžI¶g ¦Ý*V}]¬¯H›MfØþ#3ƒgJ(d—³åÍ <{ooÿó ?sÊì_à‡¹ l6›þõêÅ˨™QŒ¤¤bvõÎ)—Ü ¡Ùìjõß‹¿­·§æp9§_ˆËÿ]ýË7àHiE\lõ +Ä5åmƒ»×o½0AØ_ü°Ù6þêõnÕüÖë Y4è qAe«C r9'㢶7›ã)(c3ƒŒt­[]T#ÅI«êUs⛣ÿ»ð¶®u{µ~ØnýÅj¿¼»iv§fåÿÿ ÆtÛ„æ7§µ¿º>lšÐtÕ—‡Ííi³ßÿâ0½øÇUïvB"Ô:œkŽfƒNËú¨—žÇâ¾£âÇ$Øþª=ku»¸½=¾\­—·Ë—½ŸÏm¸BÂ8KN´•BKÀƒœ#!‰ rèr.lO|ýsþ“t°À a¦ØÁgòuR@ÇÆ”ks½ðÝw™UR1ÈŒ@Z kPD˜%Ĉ¸Sž"Œµ¸ëÄwë¯q7aÜE=VŠ»¬cḋ;öž¸+|tÜ ƒ4¼wXwëf»ÝÏ?^›ËÛÕË,+;Ò¸Œ-øŸïƒÌO1¤N¾)Óë %h|†áPªZ%p¿ôR”aD¸áC¿`¿ßùÁ©¹$ââ·ÅÍm7pvÞzIÅÅGÿŸÓ>Œo‡Í)Èõƒ¯õòv³\´Ã[: +Þö§ýq¿üÕ=ps:vC¦ éss£|ìBotÍ*~È´;7®ÀðT˜Ž c›í&´ÆØ#Â8²0.ŒË2½P¯ó0Öˆ©8Y© +Æ\„ ãWÍbÕN@)31w-.ÞíÃÍÅÎÿƹ½Ñƹ•<ǹ½ÙƹýÛŹ½ôqnE’8wR.ÎíƒÏæZ#NŒv=Œ_!øçBÑg4@qc6xõ|eÂNÖ僓Á¹Y!!Ÿ +4˜ + óS h”!I섦’ :±>šã~û!O‚"F£þñŽT«ƒá\Jq‘_DS»€”&Á‘º¡“ª™×vñH•ÚwÄÿû¿îÆ©n©¶[Ü4Ã᪢V+‹90 ·é [¹zJ*Ê>·9\ª€/Gñ èÜL»g‚™"˜Š +6kr¥t +Øh*DzGQ¡Œ#ÕšPaS!;÷Ò ŽŒ +AªfÞRÁh!†öTÈ#{¹_J¬»²/Yıoç;_ÒÚ¦\À±£xQôt¦½åE>emy"˜h²ÈŒAŒWk<½XÏ‹ãÍé6g…;1å,V[¢E'_Ñéu8`tP6p’bH=ÐIÕ,+iÝio ,;JüüãÕÛ{Ö7wé +xíL.&ãú \çwÑ +yt Ê.δ{.0ˆ 0‚‰Æ¦¢¸ZwêÅÆr!R;Ž e™Þž khÅFŒI1d\R5Ë– ÒàÄC.”Ç%žE]¬hÀë£øRì†L»ç ù"˜Š/J ¬ªõ²^¬çË©ÙîšP`VÒ>‹5gUA¾%ÓÛRÆU ÕFšr‘€È¦TAªfÚN½˜Ö M·œÙœŒJL)Õó+'÷ 8~mŠ=‘i÷´‘ m@SM¹¤]˜òj}®{m"ÍãhS†’é=ÓX‰Ä4 ˆŒ6AªfÚÒF+F†¦AÚ|;fàáD?9–~Å’¢ã3íž%`F0Õà"l‚ÅŠÔXÒ‰=€%‘æq,)CÉô:(4¼û„Œ%02ž©šqCLm·49(Ç攢ôgPŠú¤œ>Š4Å^È´{Ò€õ^ÁTC ÓH*Z+øöb M¤yiÊP2½1iÖi¤vÞÀHÓJÕŒëTEÌÐø(Ö¨§=/»5€×G±¦Ø ™vÏ°6 #˜j¨¡ ¦kµá^¬gÍÇæz¹Ý4»SÎ)‘ÂJÏbÝ%Þtò50™^¦Çìõ[W0çäŽt4UŒS‘æR ;Þ¼ +^Ý&ÿifb¯®º";¨‹Iñ…;à«Qá^ô^¦½ w‰ÁpLî¶9¶W•pïÄî‘îqá^“é†û +÷vXàÂÝQEã”ÿëÀøà€d­áßó†¶ pß(ši÷   @SM“0ETáj¡·‹pž,ÐHIÌf±þ" ‚| P¦·}?ætº]Í—ï7PÒ·«n ¼PŸKú„54îXðŸK/škxºä_GÛ!»SsxçÞPY,‡[‚âK™ŽŇ¢k3ížp!D0¨ÁV\² +‚0ú†cù7(ðaèÌpT X%8€QÁ UŒ;>H£äÐøåCeë\OýÛÆDÙ‘™výŠ~ÁTѯ,LkõØ^ìÁÑéýe@™Þ>új“‘ˆ•‚H}ÑIÕLÛ.“\-WCÿSÎð?õÀ¹}uŠýi÷Ô·2`-%¨´í¤®i{±u’Ã’#áÎwá(ºÁ# ·¿ùõÈFõFÜY…CyŸ‚‡4} +Ò(|t¶ )Æj%Î^ÌÁÛn®_B‡â¸òÄúJÙ9ˆ×ì§Zù›ææú’cèMV®‘Ö"‘>{ª™1å²BlÛeç››ýá÷pfpë^ïŽî—QÁæ°¿;mvÍðrŸN.œ<*Ýži÷¹Ü0ƒL•‹9A˜Z³«#Ò7Šeû©Ö1ò‚?7ˆóöœoŒ"cFª·Ô0ŒÉ¡õ?H .ôÓ¡àåQÔ(º=Óî©n‹Á¦¢µq"E­âÙ‹µÇÈ7·Ð¼„;ß *Ì7–.dÀy 3ˆš¯GIÿœ‰LÔ¥‰LÖëðD&îõ{&2%ƒžÈØ+ÆH­Ù‹ÅA9Ì×IÅÍ,VXLØA¾† ÓÛŽ˹;é²]\7Û#ô©]!bF0Ù §AªAÛ¤ ´B7œŒñNF_¸Ô½õ·–ûÍÛwý:{ëzql?«`»†¾Zo/¾yÓ>–ÿu|pg÷Û»æø¿ñ®YÌý‘hhŠÚ†¦NÊMàÞ3Œ`¢¡‰†(¯Ÿz±jˆŽÊ™ÞŽ7§åÈ’!) K€¤è¤j楫L™Ä|m˹Ëíé¤apó¼\ƒÐÐ?ŒSë)ÚÞ³šo’-;©&™nA®Óe_eÚÛ˜Và3Œ`ª˜¶i›àjU¨«Çt¤p\L—dz}LÁ̸wŒJ¤OÞIÕì2‰4Ã|h×EÝ›bÀ†Móìg€}„½1Š?ÅîÉ´{þ€gò`Í ]…ߨj‰«½\¹u_ +¿¸ôu¹òç-Wâî,,Wò^—+ƒ^‡—+EƒNêÂ%¯jy©«'õHḤ^Fé=G|ž×FL‘€H¾“ª™i“‡wyýíðó݇߮‹®èTÞøeŠ?Õ8~T +/öD¦Ý§pð #ÁT)œs¤’ +[:±:["…ãØRFémÙr‚§@Ú(• ¦@­TÍ.³ y­ÙÐnO•Óú`ùp¬¢6D=yàòQ$)öA¦Ý“|íF0ÕÂ(ªZëÅê$‰Ž#IA¦·­ïlnlÂà‡i¸BXÙéÖH¶k¤jæÝWP%åCóŽ+W—L\´0ò¥À*ž*OwâIÑÿ™vÏð- ÁT<¡q;¨ñ¤«ó$R8Ž'e™Þ!OÖO$uËê€'­Tͼ¦Y 64_ãIåC˜?«5УTì˜L»'¸5#˜j6†5b˜U‹¬X@‘Âq*#Èôó]³y¿¾Þß7Þ(e—÷J&x²Ý– UCájFê!ŠöëO‹ÓÂUMÝ‚ÄWY™"–N»_ç¡ÔêîwXß^ιûtv[fu¿\ÿî[¼~ûAú;þ£Qîj±[ùÝÕZáðCל„æîÃÙÝ® ‘B w]ÞÝ÷]¾ÿémúi*û“ûãùÓ¢a}ÅÌ3Ø`¹‡ôF"Ƽ;·ºŸðAÆÓÜî‡l'aë¾"o» +QŒù¨¯ÌÿÝýw}endstream +endobj +1010 0 obj << +/Type /Page +/Contents 1011 0 R +/Resources 1009 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1063 0 R +/Annots [ 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R ] +>> endobj +1013 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.3629 456.6823 228.655 467.5862] +/Subtype /Link +/A << /S /GoTo /D (a00100) >> +>> endobj +1014 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 458.7396 513.9963 467.5862] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +1015 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.3629 444.5481 229.2129 455.4521] +/Subtype /Link +/A << /S /GoTo /D (a00101) >> +>> endobj +1016 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 434.6502 513.9963 443.4969] +/Subtype /Link +/A << /S /GoTo /D (section.8.2) >> +>> endobj +1017 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.3257 420.4588 183.9331 431.3628] +/Subtype /Link +/A << /S /GoTo /D (a00102) >> +>> endobj +1018 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 422.3965 513.9963 431.3628] +/Subtype /Link +/A << /S /GoTo /D (section.8.3) >> +>> endobj +1019 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.3257 408.3247 184.4911 419.2286] +/Subtype /Link +/A << /S /GoTo /D (a00103) >> +>> endobj +1020 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 410.382 513.9963 419.2286] +/Subtype /Link +/A << /S /GoTo /D (section.8.4) >> +>> endobj +1021 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.3543 396.1905 174.6379 407.0945] +/Subtype /Link +/A << /S /GoTo /D (a00104) >> +>> endobj +1022 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 398.2478 513.9963 407.0945] +/Subtype /Link +/A << /S /GoTo /D (section.8.5) >> +>> endobj +1023 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.3543 384.0564 175.1958 394.9603] +/Subtype /Link +/A << /S /GoTo /D (a00105) >> +>> endobj +1024 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 386.1137 513.9963 394.9603] +/Subtype /Link +/A << /S /GoTo /D (section.8.6) >> +>> endobj +1025 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.0952 371.9223 181.8208 382.8262] +/Subtype /Link +/A << /S /GoTo /D (a00106) >> +>> endobj +1026 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 373.9795 513.9963 382.8262] +/Subtype /Link +/A << /S /GoTo /D (section.8.7) >> +>> endobj +1027 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.0952 359.7881 182.3787 370.692] +/Subtype /Link +/A << /S /GoTo /D (a00107) >> +>> endobj +1028 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 361.8454 513.9963 370.692] +/Subtype /Link +/A << /S /GoTo /D (section.8.8) >> +>> endobj +1029 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.0952 347.654 190.1196 358.5579] +/Subtype /Link +/A << /S /GoTo /D (a00108) >> +>> endobj +1030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 349.7113 513.9963 358.5579] +/Subtype /Link +/A << /S /GoTo /D (section.8.9) >> +>> endobj +1031 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.0952 335.5198 190.6776 346.4238] +/Subtype /Link +/A << /S /GoTo /D (a00109) >> +>> endobj +1032 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 337.4575 513.9963 346.4238] +/Subtype /Link +/A << /S /GoTo /D (section.8.10) >> +>> endobj +1033 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.7115 323.3857 213.3523 334.2896] +/Subtype /Link +/A << /S /GoTo /D (a00110) >> +>> endobj +1034 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 325.443 513.9963 334.2896] +/Subtype /Link +/A << /S /GoTo /D (section.8.11) >> +>> endobj +1035 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.7115 311.2516 213.9103 322.1555] +/Subtype /Link +/A << /S /GoTo /D (a00111) >> +>> endobj +1036 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 313.3088 513.9963 322.1555] +/Subtype /Link +/A << /S /GoTo /D (section.8.12) >> +>> endobj +1037 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.7641 299.1174 212.6453 310.0213] +/Subtype /Link +/A << /S /GoTo /D (a00112) >> +>> endobj +1038 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 301.1747 513.9963 310.0213] +/Subtype /Link +/A << /S /GoTo /D (section.8.13) >> +>> endobj +1039 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.7641 286.9833 213.2032 297.8872] +/Subtype /Link +/A << /S /GoTo /D (a00113) >> +>> endobj +1040 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 289.0405 513.9963 297.8872] +/Subtype /Link +/A << /S /GoTo /D (section.8.14) >> +>> endobj +1041 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.7641 274.8491 197.1536 285.7531] +/Subtype /Link +/A << /S /GoTo /D (a00114) >> +>> endobj +1042 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 276.9064 513.9963 285.7531] +/Subtype /Link +/A << /S /GoTo /D (section.8.15) >> +>> endobj +1043 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.4668 250.5808 149.8812 261.4848] +/Subtype /Link +/A << /S /GoTo /D (a00120) >> +>> endobj +1044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 252.6381 513.9963 261.4848] +/Subtype /Link +/A << /S /GoTo /D (section.8.16) >> +>> endobj +1045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [116.4668 238.4467 150.4392 249.3506] +/Subtype /Link +/A << /S /GoTo /D (a00121) >> +>> endobj +1046 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 240.504 513.9963 249.3506] +/Subtype /Link +/A << /S /GoTo /D (section.8.17) >> +>> endobj +1047 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 214.1784 179.5994 225.0823] +/Subtype /Link +/A << /S /GoTo /D (a00123) >> +>> endobj +1048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 204.1609 513.9963 213.1272] +/Subtype /Link +/A << /S /GoTo /D (section.8.18) >> +>> endobj +1049 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 190.0891 164.6655 200.993] +/Subtype /Link +/A << /S /GoTo /D (a00124) >> +>> endobj +1050 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 192.1464 513.9963 200.993] +/Subtype /Link +/A << /S /GoTo /D (section.8.19) >> +>> endobj +1051 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 177.955 135.336 188.8589] +/Subtype /Link +/A << /S /GoTo /D (a00125) >> +>> endobj +1052 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 180.0123 513.9963 188.8589] +/Subtype /Link +/A << /S /GoTo /D (section.8.20) >> +>> endobj +1053 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 153.6867 151.3858 164.5906] +/Subtype /Link +/A << /S /GoTo /D (a00127) >> +>> endobj +1054 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 155.744 513.9963 164.5906] +/Subtype /Link +/A << /S /GoTo /D (section.8.21) >> +>> endobj +1055 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 141.5526 135.8939 152.4565] +/Subtype /Link +/A << /S /GoTo /D (a00128) >> +>> endobj +1056 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 143.6098 513.9963 152.4565] +/Subtype /Link +/A << /S /GoTo /D (section.8.22) >> +>> endobj +1057 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 129.4184 148.068 140.3223] +/Subtype /Link +/A << /S /GoTo /D (a00129) >> +>> endobj +1058 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 131.4757 513.9963 140.3223] +/Subtype /Link +/A << /S /GoTo /D (section.8.23) >> +>> endobj +1059 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 117.2843 148.6259 128.1882] +/Subtype /Link +/A << /S /GoTo /D (a00130) >> +>> endobj +1060 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 119.3415 513.9963 128.1882] +/Subtype /Link +/A << /S /GoTo /D (section.8.24) >> +>> endobj +1061 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 105.1501 178.5039 116.0541] +/Subtype /Link +/A << /S /GoTo /D (a00131) >> +>> endobj +1062 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 95.2522 513.9963 104.0989] +/Subtype /Link +/A << /S /GoTo /D (section.8.25) >> +>> endobj +1012 0 obj << +/D [1010 0 R /XYZ 90 757.9346 null] +>> endobj +70 0 obj << +/D [1010 0 R /XYZ 90 739.9346 null] +>> endobj +74 0 obj << +/D [1010 0 R /XYZ 90 553.9527 null] +>> endobj +1009 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1091 0 obj << +/Length 1559 +/Filter /FlateDecode +>> +stream +xÚåZ]oÛ6}÷¯Ð£ Ì,¿%õ¥ÈÒµK‡Yç·®Y±…:’gËmòïGŠ¤B‰Œ¨®A×fÉô彇—çè’”QÅŠRÅ,)¡<Êof0Úˆæ×3¤¿^Šï—¶ÁÏ«Ù³W8RrÌ£Õuë#À0ÂÑjý~ŽùâÃêMDh gÒ‘l=]\.–˜Á9Pݼ*w…º»¨ÖÅ­ì4ûeÕEÖÀáHÆý{öþŒÖà›$MXôY|€¥)Žnfóa7ûcö{çG}Ñvð¤ $1#ÑÇjH–•c¦±È ˆñ}Jˆ•)@1Á‘±j3PîŸ ‰P +xLÓÈr§¾9l´É»^xm?ôªÃ/«¢Ül¯ê±9Ø:`â@ÎxÌ0Æ(!€؇ð'dð×"[1ï$Ÿ!n9@’ùu­×Y“]eGÝ\_«Ö]Y}\îê<Û©Ïf$ÇŸÄg +ç§c±V=®î”ÅÅå'®Zòz]¨¶¬Z«›¦ÖÆEËÕ%ICR.3 RÆtÆ”OAÐÖ§¸^ŸšÓA“öì&´v/îÄøÐb™ 2‹%ƒðǽÐ4}è»ih*ø 9ƒÄñ¤/Ÿ™lº-í~.ïr^PœQ0D@ð ÜÍLO”;ä‚öˆ‡ônÌlÁž—ˆQlž‹B–Çý®l@®mmÇŒLÄø•íΪou’IL"{¹î¬/œ×ª±Ñ×láü“üW—ÚU³-T‡u±Ëî +Ýz¶åëü7U‡0"Ö¯CÍöPŸ6Ûý©Qef­2Q*˺²kOã§"å//A<ÁIÙ}a ²û=\‚:«¶%Чw?‚ÇÒ},×·j5<¦{cÖ½åpšîÇ8~5UÙzH +FÑk£PXŠ@‚äÓÃ+õ¾ÚêuY·÷b~fîM–ô¯à(Jþu±c¶g&éft^ïJ7È«/‚ÇÒ K€Ø"¤!ݳ°n,‡Ót3ŽÀñkt³õé&‰‡<º‘F¡°‹z*ö<½°½-Z+½E“»ŸZ76S…¥äÄ ~:Zñd~’VFçÂñ®´B½Zñ"hMÕ +å', iŘ…µb9œ¦•qŽ_à¯ìo}KK dCÎÒR[…¢s +h*V”½èR2/‹|—ÚåØQQ¿=¸W‰«lŠüþàà¸/òRê*7‡ +UnuTšøýqß“ÃIÜMªã½å~ê__yGMõwűÞî»]ê¦Îë-„”òoEoOž&Ñ{4qŽwEoÿ2È‹à±èE½YðØÀ˜…ém9œFïqŽ_›Þ[½Y‚Ù†‡Þ­U(8‡:Ão ²üPk¾ªããv.ŸßUi=¶ÝÅQÇù}î`‘:¦ßíÇ“ÎI*ͯã]©{UàEðX Å„T`ÌÂ*°NSÁ8ǯFPï}'g Ž pD ­B±¢¤[Šà¼®$á7§ƒýßûèßm ÌVš?Õ]³'å“„2:Žw%âŠÁ#• &€PÎB§MYKÓª¼u•‚)àŒ[¦¥ûǯ9fÎëêÚ·‰HDÚú8œ­€¶ +Eç‰xH ‚K©œiu´g´·™\ „‘ûÄdﳕrð¹øjuø’> endobj +1093 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 726.8189 179.0619 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00132) >> +>> endobj +1094 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 716.8014 513.9963 725.7676] +/Subtype /Link +/A << /S /GoTo /D (section.8.26) >> +>> endobj +1095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 690.9534 161.358 701.8573] +/Subtype /Link +/A << /S /GoTo /D (a00134) >> +>> endobj +1096 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 681.0555 513.9963 689.9021] +/Subtype /Link +/A << /S /GoTo /D (section.8.27) >> +>> endobj +1097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 667.043 140.3173 677.947] +/Subtype /Link +/A << /S /GoTo /D (a00135) >> +>> endobj +1098 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 669.1003 513.9963 677.947] +/Subtype /Link +/A << /S /GoTo /D (section.8.28) >> +>> endobj +1099 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 655.0879 140.8753 665.9918] +/Subtype /Link +/A << /S /GoTo /D (a00136) >> +>> endobj +1100 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 657.1451 513.9963 665.9918] +/Subtype /Link +/A << /S /GoTo /D (section.8.29) >> +>> endobj +1101 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 643.1327 163.0021 654.0366] +/Subtype /Link +/A << /S /GoTo /D (a00137) >> +>> endobj +1102 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 645.0704 513.9963 654.0366] +/Subtype /Link +/A << /S /GoTo /D (section.8.30) >> +>> endobj +1103 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 631.1775 158.0208 642.0815] +/Subtype /Link +/A << /S /GoTo /D (a00138) >> +>> endobj +1104 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 633.1152 513.9963 642.0815] +/Subtype /Link +/A << /S /GoTo /D (section.8.31) >> +>> endobj +1105 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 619.2223 158.5788 630.1263] +/Subtype /Link +/A << /S /GoTo /D (a00139) >> +>> endobj +1106 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 621.16 513.9963 630.1263] +/Subtype /Link +/A << /S /GoTo /D (section.8.32) >> +>> endobj +1107 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [118.6786 607.2672 153.6074 618.1711] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +1108 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 609.2049 513.9963 618.1711] +/Subtype /Link +/A << /S /GoTo /D (section.8.33) >> +>> endobj +1109 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.6599 595.312 166.8776 606.2159] +/Subtype /Link +/A << /S /GoTo /D (a00141) >> +>> endobj +1110 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [497.0598 597.2497 513.9963 606.2159] +/Subtype /Link +/A << /S /GoTo /D (section.8.34) >> +>> endobj +1092 0 obj << +/D [1090 0 R /XYZ 90 757.9346 null] +>> endobj +1089 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1122 0 obj << +/Length 1862 +/Filter /FlateDecode +>> +stream +xÚXK“Û6¾ûWhoT•Åà{o‰le«œ¸v§r‰s€HhĘ"¸$èÉüût£$%Ñò–ËC ÑèFè$vü»2Úåi–q’íªË›h÷ ä½¼œÈ¾ ‡TÄ»ÃzëOo¾ûI–;…Y&ÓÝÓ …gI¦E¼{ªÞUoõ°?È4 +²ýOÿ¦ I˜¹À ÈMä‰Û0ýü‘˜EÑàƒ©§VÓø½©¦‹î¬²éfi" á@’¥eq˜¤2sÒ²Pì"Š¢àã°E`¬±g7Òª",ÓÔ eXÊBz³ˆ÷Úª¦Õ5EÕÐô«ƒÄ;ؘ¡fƒ§*…óq ÍNëAæQ 4)+EsûÚk™-´ÍóÙ¾hüK £UÕçV,a̵›çÎ –Nfà-z/ÓàË^¤ÚW"^ö"Ð3ð´2ÝhÕÌ»Ç×Ñê‹Cí˜Á;Æ©:“ùj¤o­uïÃX_Žº®=@^Œ›vQw£wÚ¾ì®}f‚3ÂYof2‰7ñK‚~0hÕ—¶ %¼:­Z­@4rýå¨&wYŽÌÅÁ + Îê¡Y͉u±&Í¥o5z „Žä¼ i~ÒJu[PÙ¥§ÑöÒØó5ZH1“eÄ;úþgŸEÁúð¯ÿ½+Ù+-ØÙp@Å` Ý]±ö¶·èR×î–æÞAÕ9(|¯Tس²4º¹™Eë±5Õç¦{¦¸ås°ØŽ%™þ/ +!ÔËÂÁ€ßLJtq`Mœä ”¸bÏštR +3ƒÔ|VÕCâ’Qp CY(¢NzH“$x"9yÐOCoF/Ôo¿º¤4üµfË#fßâBåLÕâ\Ÿ¢(6hä ­»k:9˜–ˆ‹ÇÀ¤2(‘À±Âá­¦µ‹ªÎ0#-8‡êijYÐejmÖÃÁqtãÝ&ÜÞ½Ë.uƒqçÌÂÚ "Ÿ±©9ÞÑç4unØÎr™Š@Õ_ Åà™cŠà‘²¾gŽ&f=§¯Ç©uö ZQ +î6qŸwý-Å÷€°bºÝÈtå±»@Ä&v77L•M ¤TÛ’SŒ´â.,8;ò*”Û"ø¹#.o?ò|#¢ð” +1¤ÒäJƒ‡-ÉÌöÈ»1ÝÅ™Ž¨6ƒª›ÀŠW¦x,Ö(PìÏO³¦ƒ"ª Dî]!̸p ’鼇ËZ¤ã&š‹X 1Þx ô²c#!­9t¦\ä$PлšHN7R¨Ø$œwÂõ HêDíyõ*Q"/HváW‚ó;ŸâE}FÃSÁŽÆù¬VŽáwg•>M$ÅâN,ÎÕõKóU¾9}ŠÒþ‹»¨önÝù*v†éš»5¦7KEs n = tâF>¦KºYÞ…®\Ç4ð˜R•r}M)Wå©äXuD«@QDXÉ%zmh¡3Ì8@¤6Ã|NGu¯Ê¥¥¤šnù†™ÌÒàâû­,¹é·`q‰*™yò}mÂÝÔ¦.î+hƒ—Ýåë¾å½T¥XŸâC bèžiÒ*×;˜I]ÌÔÙ‘5Ÿ6ÓÝ"E‘’oÓªcËd¶öƒ·&qBÆ—‚(º“V®äÝS ’2”ˆÛ +£ÓÅŠa+€@c\$‹Tý Âé>pñ×…4~¬qæú–^‘„e”e×zaè¹Çç—w¯«Þ²ò%¼žïù:ÛÝv±pcÍq ºŠÄÄ~æÆ}P ©'‡€ú* +†G€z¶oúHã +ÐÇzg@×zßï÷Þ¬‡ÁÐ3pó`Ïí6c÷³Ikºç?/ýÜ'ÝXfaœ_…oY~3}ººàjô°­4þ¶ª½w›ñB2þ‚ñý.´÷-ÎâÜ  gÎß\ØÑýcnÝHÜ#™‹P$ùÿ÷[çßü?‘endstream +endobj +1121 0 obj << +/Type /Page +/Contents 1122 0 R +/Resources 1120 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1063 0 R +>> endobj +1123 0 obj << +/D [1121 0 R /XYZ 90 757.9346 null] +>> endobj +78 0 obj << +/D [1121 0 R /XYZ 90 739.9346 null] +>> endobj +657 0 obj << +/D [1121 0 R /XYZ 90 553.9527 null] +>> endobj +82 0 obj << +/D [1121 0 R /XYZ 90 553.9527 null] +>> endobj +1124 0 obj << +/D [1121 0 R /XYZ 90 520.1647 null] +>> endobj +1120 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1127 0 obj << +/Length 2807 +/Filter /FlateDecode +>> +stream +xÚ¥ÙŽÛFò}¾B äöÉÃX,âc6o|¬­Eâ àPœÂ©TƳ_¿U]ÝTód`aŒÙì®®ª®»‹â+ÿø*e«XÇa*U´ÊwWlõÓ?]q»Àzà¼Ú\ýíŸ"]¥a‰hµ¹7"jÁÅj³ým-’ë@$,fëÃíGj¶æ!£Á»f{¨ +¿iòî¨û¬/›úú÷ÍÛ«›Í@ײ¥eÄ‘êŸW¿ýÎV[`ïí ešèÕ¼°§©Xí®”î¥ºú|õï-˜ K§Ãå@Ät–“ÇpØXO/½Ós…J&jå P_„ÐÓqëBË•‡nFnº@”«0eQ4"ú:«I°wVÀ‡®ØÒè©ìiÔ´Ç™æÐÓ‹Ûøáó’˜y¢õiñxçäãÀ. èEOBçé"òé~l›k®×•Û¢³ÂªšükY?X±\sGÙ/éþPU4Úª¾ úǶȶÃN'Ø®Ïò¯A[óG\„C‚…Y^ÐÔâ$"^n¾e»}åøÈöûªÌ/t/Ô©(Œ¸8­àŒ°‹j8Kñ¨† tFtß»¦}¦ƒçpà¾ÍÊÚk÷ÜõÅ®[’OÂ䌣zëç$`¡. à 9ïüg‰Ç÷ˆÞü…6‘/ضåµs¤w:þ¾mú&o*Ïœ–d¡Sª2=m>Ài `Åq–âQè:Œè¾)Š}eí¡ØÝÛíecБ ‘àÉó×ÏßB]>ýrÞáÏÎîý\Ô‹uћԴ_íDƒqêtÙð7Ì5Çkb÷æÛ÷·›/L3øãSfKB!ÓxÂÌ4á;¨ ,̱! ?€XX².Ð_¿§Í‹’Q: +É¿W0üSS¬V,¯n~º}J.š³P³Tž—Ëu…96’‹±Q%ÎÃTkªKÀ·%J)Ø–SîLjð7,Ôï̼ýùö—›“ÊÔ2LX’NøšjÓA]àFBR©ˆÇÜyƒt¼Lee|J\ +³d}·¸ø ÎñÎÄeíDÆ£o(›Ÿ?ݼ<é\ÆP×H¹RiFŒ/ (ð âÖyÆ„bá„'1œ âOÌ’EŠ(ð¡æwù$ “€+V!ë©-Qì…2«ºf´á~KÁÏÒ‡â%á +†:ƒâ†K½Äæ¸|³p˜½ÜyE2lŠ lÏõ„LB)€ÀY PxƒÚSIBq)5šé¤FÙª¼k3¼I‘¬K;ÙU‘™Ø‚o‡z[´4ÌîÕç7A×?W…ÑCi_úǬ·ÀUÕ`¬zêh×}c±Ü5Ø +ÀQÝÔAÞìvE›—˜šÍ6pS4}6MáG0ê,d„h qלÏÜ€kW·ş‡²-Pà4QZ}æÖ×Ûr²úà_†Œ™ë¹G¶@´*‰”a+ +y( te^^#_p_o;»ÓW +3´b©§%¦*™£J·Ý»òÔ–}—4|¹{¦çËm¶#Ø7‡ú+‚•¥Ï¹¢%ŠÑ¿ÏB0TõIaI IP‚¤å¯+7ú—ŽÝŽÀßBæùáx†Ù„càûG¨û»LgÊ‹ 6ñ”—i:pPsú£“ϱ!ý,èô̵L¬ˆ¨e…2îû}Óöôrß6Và*Ï\Z°¡#ÐòÈz?ç»rÛ/¨jؘéè”V¸”¡ÒJd +¸u]ÔÊ°#ð·Ìµ2ÇŒ 4UØå?>wáv¦Á4¶±¦¼Lƒ”ƒšÓÛã Û)­@ U7Ø1÷L2àB`{˜;çÔƒsJëœÛkž¬É×pdüí´—&éB<—Ìff@ª•{ 5{pª*û§ÿÇòPHj¡TEgqŒÚ€ÉLtö:ƒcƒß Öë-UšÀªÏ` +ÕLÜÛíõR$õ +È¥þ\©ãaJÛÄë@ÂJo"m­‰S2üG*¤ìÕŸp‰Ç²5Š,DjÚHXTk±ÏþÐî›®˜lgQ3ñé7ô,±m,ÎF|:¤x¡Œ!Äú ””hÝPƒ'ʳ5Í.x9žv:ê­ ¤H—n‰¼ á.Ã>«é¢Â&ÓIYÛ¬Åõq³“ãcÓ„Š¬ý¬O<¾ÅÎÇeݬ-“èñÚõë÷…8Œ„¢ v‹J—g¢RM¢°èz`Üôd1¤%LN¸gëh0ç5Ð`Ån¶;¯w +Xž÷²‘›Ì²ò˜¡%‘¥Y‚Kjï´ Ù33îýPÐëp*Om6$[2€å1c¸wÌòÏÁá3srÜà¬ƶÞèè­ì;GíÍ@ñ¡ "1T"ˆèy_æP.=/Ù+M|îs ÒÏÅvZ Ù¶-}.Èž‡ï14ðÅ„߬í{W( ¶dÉÊ*»sßάd#½^4+*p’h—Ÿؾ%,P?ØE©`iR%ãC0M Z ÂÖ=`M…«™4±t!îd@jñxÁnØ:áËö5º3JB9o‚´Æ"iêÄÙÍÀÁ`øb”šŠd´þ”ˆ[ìü`9Ä€Pæa¦=X}í Ñ.Ûnš«.ü\±`[ÇoDõ8™<·`O4Â"S(æpã5 žÊzˆe1(ÛmuÏ‘®›ƒ[­é9x%ŒÇ±F1?\(È #ËLFâeAGtÁàÚ¤MxôàoNcðºCÓиÁ©|oÀYôûDTFܹà ·ç f +î„id6ˆÐÜPptŒˆ÷8?´’ðåî¹/º¥³Æ·ðÛ¸2ªxñ*Äà^Á#ý_¿1ØÂ¥ðfQ˜ÆpS5×kب"1°‚"þ©¨ñCšû†ÙÔîÇ/vð%|°/\Ø'{!ä a(#‹lýˆ’p_翨¹{v¿¦ùöüPÔó¯?rIJÿ¢Ô§endstream +endobj +1126 0 obj << +/Type /Page +/Contents 1127 0 R +/Resources 1125 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1063 0 R +/Annots [ 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1139 0 R 1140 0 R ] +>> endobj +1129 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.0856 532.3134 409.2359 543.2173] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> +>> endobj +1130 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [455.8347 532.3134 511.5056 543.2173] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1131 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.2535 520.3582 263.1547 531.2622] +/Subtype /Link +/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> +>> endobj +1132 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.7829 520.3582 348.4913 531.2622] +/Subtype /Link +/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> +>> endobj +1133 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.6923 508.4031 354.8052 519.307] +/Subtype /Link +/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> +>> endobj +1134 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [462.2904 508.4031 513.9963 519.307] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> +>> endobj +1135 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 496.8215 138.0296 507.3518] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> +>> endobj +1136 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 461.075 239.3186 481.9864] +/Subtype /Link +/A << /S /GoTo /D (a00142) >> +>> endobj +1139 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [326.8799 360.3806 400.6034 371.2846] +/Subtype/Link/A<> +>> endobj +1140 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.4581 350.1928 206.1817 359.3294] +/Subtype/Link/A<> +>> endobj +1128 0 obj << +/D [1126 0 R /XYZ 90 757.9346 null] +>> endobj +1137 0 obj << +/D [1126 0 R /XYZ 341.7132 422.4291 null] +>> endobj +1138 0 obj << +/D [1126 0 R /XYZ 90 405.4028 null] +>> endobj +1141 0 obj << +/D [1126 0 R /XYZ 215.4248 351.5786 null] +>> endobj +1142 0 obj << +/D [1126 0 R /XYZ 90 336.3195 null] +>> endobj +1125 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1151 0 obj << +/Length 2493 +/Filter /FlateDecode +>> +stream +xڥ˒Ü6î>_Ñ{Zu•[+’zÎÍ™$®¸’-o2U{ˆsÐHìi•ÕRG¢<™|ý¨WkÚ‡-×X$ ˆÙbÀ?±Ë‚]%~¦ÂxWœï‚Ý3€?Ü F˜|÷x÷¯e¶Ëü,–ñîñh9Ĥ»Çòw/öÅþ £ÀûÔíE굦5';ÒyÙïÿxü¸ …ò•„ È ¡w?<ŽRY©HÅeþy÷ûÁ®å>Þ¾ÊÒh÷“ÀY&wç»P*7©ï~»ûÏȇvÁÖÞ"¡¶6§V›“0MhoæTõûƒ +R/¿\º6/N4sPsÊ žê¶øR5Ï8ËF¼Þ‹ÈûëRWEeî÷‡PÆ°Dø=wùù¬;šiÚ½Œ¼—ÅÒ¼0õ+^N•šÂTmÓ“´•3ÕÐúp BøYÑ–˜ ØŒ N­f8h4*ò@åd÷þÈ0ñc†–᧎ŽÜ÷A†‰—wš}u®ê¼£‰iۿ¦MW4/ÚCצj4ð·ûy<ñús^54*«#êtÔn +ÆVVœ;„+ ½嬑¾ä]nôÒ2Ân¤79OªØ;¶¨´‚ýÛ#GÐÄûð<@™¼'ìeiXIF”e[ëžvñîqn{C´“¬‹SÞTý™pÖlk çjå©DxŸ^Í©mp,½gÝhØnÛ¡ð8 Qx¯ 7.Èë¾%©ºhK¼ÃtCazØuHïi/o0´ò”㌅™b~\L{ºKÛk«G´tšÝÀn‘ëתÄTá"À`zŠÃøªé˜Æ¨E˜y4snþŽTÏ q£±`<‹–Ït ‚óP›êRóŒÄW†f—¶jL¿åVÇ®=Såôå,£Ð—͵£!ŽÈK)?V2t¹Ö÷÷s[ä5±€î]•?Ÿ­“kùH“]”Æ>ü…›©ÑæT×¹?Íü2ù.ÊR? +El•úwkôýZª¤Ÿ()n‹©6äÎÓ²?*š¸¡àït‘Ö³h)[ú6-žQzýÒ]EÉû8œ¹ò¢k{晧™3⊼®1<”ðj:„~Å…VwzRiÓë!:;R°Ja³ º§HXW‘ÎwJ—œ±ÀA„Ûâ Î:·BŒu +FNAÀ¯lj‡ÚqÕDvºTæD£ÁØäµáíå=pÊ} з¡oÙOæsÁÁÂ=MÔsç^¨I¼(ÖgA53Ê?¶ K–õ «xŠ8ž~+NºjÔTÅ@m€/un[@ÙHÏçò‰»*¼ã&ßµ`H[¶Ö/ˆ’h/û+±Áù+M0„‰ +4! ¦ŒGCe«úào%û÷ØûŒkp¸4®…ä<°õ¾½64¨,"¡n à]TŸƒ@4Ÿ2Î09»‹:fE%1ŒùlìOa›ú«C”eÞû£±7.Àäsõ72ÅÊS€ôdûý’¹Ö ²ÛAݨäâ|j8Ûè 9{£z]iïT!ç{¢ƒsÐ <ñjÞ’ä--p³ä `ºýÄÚö¢„³Íî„ÞØä¬Ò®ö ÛXr⃮.€”à~ÞæÀ«È,˜m9É.׬3È—õ^NÏíq®Ìk¿ñ| „~¤Ä›os‚­þRúa¤ÔÄ7&üë®ÖÈHÝ–7R}Kªý,ˆã¥TW•(ŸÛáêvåªÖåÜ°Ð-y3 Ý–:Zh.uÃB-M™wìQ£7N—WëI݆adùaœ†ofNpÃ0#ª¨Þ6ÌMy“a¾!Õf!uÃ0E{¾T£sð½FCÿ ¶ñ¹š1+DAH—ºG—>ÑÓºÞ¦ìÈ… aì¤í¾ôœß_‰†oY|U‡,Û”„ <7ÂÇ õªÐ}ßv¼Ÿ½«;} }aùǶ¾½¯¹l§;È,©–N‡…/ ×ç 8¸iMH0˱± ß_ßÿB8ŒäíwÚ)õ}ûýòÇjãjlÃ7}³Oè­úû¡‚ÈD(泔ћõ÷†¬©úÞ”èjï\"TÉZ_ÉT/ “/d¾y÷©oK_ñ´§`üÓ•ì0òU$Å­ýFLÄ—A°Ù’Àá@çÅÿ×söSX"”œ¿,Ç~–¨Ôýð&|&Ô~| 7rwEp÷‘_Üà#ÆúÀ!ùÜKu/šÁ†b~aÇ ëžÛ‡Ÿ>1µ,Ÿ¾oÿz}ÖÍÚø«¡SmfŸÿQJêendstream +endobj +1150 0 obj << +/Type /Page +/Contents 1151 0 R +/Resources 1149 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1063 0 R +/Annots [ 1159 0 R 1164 0 R ] +>> endobj +1159 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.6531 419.6496 314.5786 430.5536] +/Subtype /Link +/A << /S /GoTo /D (a00155) >> +>> endobj +1164 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 93.195 146.3484 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00128) >> +>> endobj +1152 0 obj << +/D [1150 0 R /XYZ 90 757.9346 null] +>> endobj +1153 0 obj << +/D [1150 0 R /XYZ 194.5769 652.5717 null] +>> endobj +1154 0 obj << +/D [1150 0 R /XYZ 90 636.3994 null] +>> endobj +1155 0 obj << +/D [1150 0 R /XYZ 90 553.639 null] +>> endobj +1156 0 obj << +/D [1150 0 R /XYZ 90 546.5037 null] +>> endobj +1157 0 obj << +/D [1150 0 R /XYZ 275.1139 480.7842 null] +>> endobj +1158 0 obj << +/D [1150 0 R /XYZ 90 464.6119 null] +>> endobj +1160 0 obj << +/D [1150 0 R /XYZ 90 346.02 null] +>> endobj +1161 0 obj << +/D [1150 0 R /XYZ 90 327.3277 null] +>> endobj +1162 0 obj << +/D [1150 0 R /XYZ 90 308.6354 null] +>> endobj +1163 0 obj << +/D [1150 0 R /XYZ 90 111.5284 null] +>> endobj +1149 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1168 0 obj << +/Length 1828 +/Filter /FlateDecode +>> +stream +xÚ­ZMo7½ëWèE–ßËÍ-©ÝÄAb¤±Š’ P$Å*K®¼‚“þúÎ~â.Eã>x¥}š7Î<¹ËÆþظ¤ãB¤R·#:¾†¯_ŒXwû ÜâžÏF¿ýÁËqIJÍõxöµ± Qœññlùa"èô 7´ “ÃÅ[¸TtÂm/Þ얇ͪ½>Û-·«m5¯Ö»íôÓìÕè|æx;·”Ьfýgôá/Á½W#JDiÔø>PÂÊ’oG’ ûa3ºýéì´7šœ¤ŠaÆOxÑŽÇ`F Â4‡xp}Á]8ø¹–u8ܤEiÆUÇäí~*ÕdWíª›ýT“Õ|yßFa}{·Y¹0a,gÁÀ*,ÓAm'Œ1R*Å»ÓFÂGªïÚY¹?1Zs"¹dÑÔð-“ðRƒQM¤0òh§¦ûȹ +Ç ¿âJ$ÁeÃ`>Û{õ7ûëîÖ;? €TkÔ;‹ëy÷z·˜oÚ¹Yì¶Õz{hf&ˆ+)Št„Œ&šBv‘¡JåMž–ÑÌh$½,étóÕ×Ýþ¶½ªnºâû2¿_ïRq½½n¿¹;‘¶ÑÕF«Ê"s”:’¢”´³r6¯æ­OWÕþ°¨û)3““9« …Ñ"š³> ‘³†æl’Ñ¡0^›=Þûf´³(AA·úÌñŠ°ẋÀníÃ]ȹÇ,‘[Ô Öád+© ¥¦ì‹íºZÏ7ëcKƒâ‚HÃSìRSlaø§½)Nóº)öyY®>RÊ·«0Êš + OŸe‹ÇÜì6KÔìóÅåÅ,pÂÂeY"°(Œ:°ÖDž*òj¢t¡²oñ¨C»‘/%à.2n‹ÂXkݸYLM5Dšç©©N¬Ö«²nI˜G5?*ù²,HÁ +‘ç¤>­R X¤i%µØÌ÷­´n—íEW0ëˆ:HÉãFDÕÁ$ÔÁÁPuH2ÕáµêÐãÅÕ¡Ož¡ˆÝNf/ß?;ºÁ)´AB°t  +!­Y}ØÎoWŸçͪ}Ÿ*É5œ›ÌœôЉÂq°cbN™šxɹûúø*bŠ-Ê´ÇÃŒnÅs»îšÖ[žÙGs©ÄN’º¼öH3ÒÚgÎÉê¤C«]N??qqyº³§2=x Bˆ‡¶¢ëˆ#5E™;n ÇèVO/vœÊzl’#v 4e` [é„eAæîŽ|t¢`Ì+غ Û ûj¾¯r ¸Û%mï×Ë¡ß»­Ôa»8JB¸Ÿrø‘Q@î­Š<€Î²Xcì`¨@ø +ðZ‰èñâÑ'Ï ÄÀn'ç—g§úb©†À¢0æÀZ¼/†™æJfÝâQ†vã}±)46ñ…±ÖPµ%ü7™-§N©……¥ÕbeÐÿ±ØÃîšpZÊLÿ=ôé–Y€ÜBÞ¶ÉóÍnñ÷”§£óuu¢Cæ† ½VT&|@B& •‰$ãQ&^+=^\&úä2¸Øídâý”q:yv1ûü×åìâu°ÊÂÞRjÒÁp(Ä‹ÐZL2xݼ֛ÏÌ88<êÁÐn¤»’P]2dÜ…±ÖjÖ_Ýáç²Ù¦$„k ‹¤,óJÐG'$ÄÁlN!þl\›rl®Ðl>w]Cw,[í«zU®1êç´\B2Im ¯wÏ`ªÞÓ¼®Þ}ÞŒzï‘çÔ{ÚÀnPïï_^¼>ëNkj:…xZ‹×»!Á$ª½A£ì}›±Jׄ›Z“’#¶(Œ3°6¨ôd‘ƒÃZçÌ"÷Щ"·°¼"¸YÛ‡.r¨`^˜Ì‡*>út»ÐÀ²îðåzµoT7k÷é®ù¦ëfê‡,õ³Ê°‡`šmÊø¼HhŠƒ¡š’dªÜÓÚa¿ZÕjóm]ÅE¡Îi²$¡nU)=9;t\µ´Û–G¿ÕÕ芟0Áý^G×gH¦¢à´>©_œ‚ÿ]Çöbµ…†§²‡#¶{c/^Õ=tïþÓ§\<åÝ l0,ÝõN9„»{u&|ÓíËwû–Û·ï׫à1¥‚5׺æEé?¡)pendstream +endobj +1167 0 obj << +/Type /Page +/Contents 1168 0 R +/Resources 1166 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1063 0 R +/Annots [ 1174 0 R 1176 0 R 1178 0 R 1179 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R ] +>> endobj +1174 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 661.3282 194.7663 670.1749] +/Subtype /Link +/A << /S /GoTo /D (a00155) >> +>> endobj +1176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 576.9176 148.2809 586.6957] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 520.3286 184.2462 531.2325] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> +>> endobj +1179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.5712 520.3286 195.3146 531.2325] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 437.9752 204.7293 448.8791] +/Subtype /Link +/A << /S /GoTo /D (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) >> +>> endobj +1182 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 399.3979 194.7667 410.3018] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1183 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.0917 399.3979 205.835 410.3018] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1184 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 360.8206 184.8042 371.7245] +/Subtype /Link +/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> +>> endobj +1185 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.1292 360.8206 195.8725 371.7245] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1187 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 278.4673 223.997 289.3712] +/Subtype /Link +/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> +>> endobj +1188 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.322 278.4673 235.0654 289.3712] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1189 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 239.89 226.2087 250.7939] +/Subtype /Link +/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> +>> endobj +1190 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.5337 239.89 237.2771 250.7939] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1192 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 157.5366 234.5175 168.4405] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> +>> endobj +1193 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.8425 157.5366 245.5859 168.4405] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1194 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 118.9593 197.387 129.8632] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> +>> endobj +1195 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.712 118.9593 208.4553 129.8632] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1169 0 obj << +/D [1167 0 R /XYZ 90 757.9346 null] +>> endobj +1173 0 obj << +/D [1167 0 R /XYZ 90 678.0824 null] +>> endobj +1175 0 obj << +/D [1167 0 R /XYZ 90 595.729 null] +>> endobj +1177 0 obj << +/D [1167 0 R /XYZ 90 539.14 null] +>> endobj +1180 0 obj << +/D [1167 0 R /XYZ 90 456.7866 null] +>> endobj +1186 0 obj << +/D [1167 0 R /XYZ 90 297.2787 null] +>> endobj +1191 0 obj << +/D [1167 0 R /XYZ 90 174.0645 null] +>> endobj +1166 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1200 0 obj << +/Length 2058 +/Filter /FlateDecode +>> +stream +xÚ­Zk¯Û6ýî_a`¿ØÀšË·È|Ks½Ù¤A6qÑm(¶ëÇ]?šôßw(‘4%J¤ú@€\Ù:š3Ãá)“)†dªñ´ÒŒËéú0ÁÓÏðõË ±·p¾YMþõoª§iIåtõ©¶ ”ÐéjóÓL"2_PgoÏs¢f§ë麭¯ªrs™ÿ²z5å„!Ì + æFÌ·“åʳZ§“ÄpþòÓ/xºç^M0bZ‰éø€ÑšNN™û°Ÿ¼Ÿü×ÛinÔôÅ&뎤… .: +ÁMp˯»ëîø¹ °¶æÊç”V„SªÆMÅЊ‡Þ¯çD̶Õ涯º“r´b„àƒFº û#ˆB\B×n<üÑ°ïªýÆËæS£—ß×)ÍÙ ˆB@BD–Q’ñ.¢ ¯Q‹7/¢6ùe܈ìZýø¸|ý/4 ÁNMf†À¡rÜ‘µÁVKØÏáñÑ;|Öƒ®Ýžê=UX§ãö¨ kl-·Àrè7åãÄ€%á=¼Ö££©‡Î‚»¾›²q¼þñzÂ¥BL +ò·tÌÊM¡Š¬¢,¯èÀ`JÑi^¯èw„¢[äcv#²*úÃwoV¯£ùMÌ +Ø&£2ÄÖ÷ºŒ ¦4;Ÿó ²; kèôÇ$·CeY»Ö ë?­zNÇMRâð0l–GJüNIÜ¢ÆK¼GÑÍÛñºÛ·gÏîº;›§5”‡9Á³Ëp €iA…"#C Ðý-ÓIiã{°*»ôtL€¨cÕ)Æ Õi^ŸêwDª[äcRv#²¶,{ºA¨/Z™1p¨ 9ÅwƾïtŸq¨l¸áî§RlQù 'è‚'I}~Òé ™Çd7éCתË훇¾Ôš3 EÒÁ;P†&€€å°ELûò +%Ÿ™ú>˜ØʬƒåS›b r›æõÉ yGd·E>&½i7"»aߧؼ‘àšéA𨠻)ÑZ±Îà3CÚ]º„X,T$´äîÍ*æ0êûÕ¼é-NëÛveÝn8‹wn˜”#iO`j;æ-bm鞆æ­âêÃ7Ë—oz›QØvp&Ù”Â^…Ð"ûâÅááñ+ÎØî@3J)Jx´Í5á•c¬…›ÌNö`Çå­š‘„½iÓT­÷å¹ê4‰ÁË“Ó§ÎMÓ:ú¶qw¼ì6Ýç_Øôv\ßûÇÝái_™$û#¡ )õVëÞÒävŠ’òf⬶» Êõùd.ÉÌ}u»T›æêzjþn|PkHà[ÿúµþôtÚÕ›\¸¬Cdiï„Î,æ³G ¼lO·½åúhÍ?í˵ã/-®MÙà’àžœ…Öi‚µ#¦!Âú/ž}ÙîÖÛæ«æqÝMÜ9ߎИþΞï÷ èEs ܸÖ#i¾.?žÌùá¯æ¿ên·3Y¨À\׳[“ìÎÍãáq‰íÚ*æeÛ·‰b°Ä0ÅhÇ›Žt<*ãÇ †B±¶0Þð@Ï{ú_yÏ×Ðv¸*3t_ëñ[ß®U}h ìÄZµùlªUUÖÉ3ó}w¨†g¾UÉÅJpÝïÆç-J L`­%ŠQ¼w h¢â¢ ÙÆ l±‚ÙÆßlòÊsy¨®Õùò,^Z)*%½ô,±{ó=\Ú TðÀÃ^„¸ä,¾GõÄßZQ)Fœ Ùf}nscJDu¶;å2Ûåëù´wô|[_oçj8}P†U1ð«š{úT"}L"Eua_¤•¦Ò¦— †FGóË›LËâÒÕã!ëM«ƒ7ÛõÓ­#™2IH;¸ð¨udÍP7ëË‚;ÐË*ExÂœy”vÜï\{3«½0šGÜ[˜§+Ú¢¾Ÿ÷Dxщò/ýŽ©n<‹|8S$ÒSîgJÖ éËêXËke§® ÷[wñÊ”¶›ý@¨ý‹ŸQöŒâæÅXÚe~NÅìdur{|kÑÈ?þæz¼¯¿}®ŽÝá1?²êŸßÏNOendstream +endobj +1199 0 obj << +/Type /Page +/Contents 1200 0 R +/Resources 1198 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1208 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1216 0 R 1218 0 R 1220 0 R 1222 0 R 1225 0 R 1226 0 R 1230 0 R ] +>> endobj +1203 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 703.2457 207.0905 714.1497] +/Subtype /Link +/A << /S /GoTo /D (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) >> +>> endobj +1204 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.4154 703.2457 218.1588 714.1497] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1205 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 663.1387 187.0159 674.0427] +/Subtype /Link +/A << /S /GoTo /D (a00142_g905451249dca72ce0385bf2a9ff178ee) >> +>> endobj +1206 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.3408 663.1387 198.0842 674.0427] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1208 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 577.8136 216.3557 588.3439] +/Subtype /Link +/A << /S /GoTo /D (a00142_gfa82b860a64b67d25ab3abc21811896f) >> +>> endobj +1210 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 491.7412 194.2089 502.6451] +/Subtype /Link +/A << /S /GoTo /D (a00142_g155cba6121323726d02c00284428fed6) >> +>> endobj +1211 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.5338 491.7412 205.2772 502.6451] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1212 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 451.6342 229.068 462.5382] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge3c821e3a388615528efda9d23c7d115) >> +>> endobj +1213 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.393 451.6342 240.1363 462.5382] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 366.9117 206.8414 376.8394] +/Subtype /Link +/A << /S /GoTo /D (a00142_g7b5319b5b65761a845fcd1500fde4cdc) >> +>> endobj +1218 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 353.3339 200.296 363.2616] +/Subtype /Link +/A << /S /GoTo /D (a00142_gcfae9053e5c107a1aed6b228c917d2ea) >> +>> endobj +1220 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 339.7562 198.0843 349.6838] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) >> +>> endobj +1222 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 326.1784 207.489 336.1061] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge469332907e0617d72d5e2dd4297119d) >> +>> endobj +1225 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.44 265.1092 223.2892 275.9883] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.7086 210.7642 400.3795 221.6682] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1230 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 121.7215 139.4144 144.6902] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1201 0 obj << +/D [1199 0 R /XYZ 90 757.9346 null] +>> endobj +1202 0 obj << +/D [1199 0 R /XYZ 90 720.5385 null] +>> endobj +1207 0 obj << +/D [1199 0 R /XYZ 90 594.7328 null] +>> endobj +1209 0 obj << +/D [1199 0 R /XYZ 90 509.034 null] +>> endobj +1214 0 obj << +/D [1199 0 R /XYZ 90 385.5117 null] +>> endobj +1215 0 obj << +/D [1199 0 R /XYZ 90 385.5117 null] +>> endobj +1217 0 obj << +/D [1199 0 R /XYZ 90 370.8968 null] +>> endobj +1219 0 obj << +/D [1199 0 R /XYZ 90 357.319 null] +>> endobj +1221 0 obj << +/D [1199 0 R /XYZ 90 343.7412 null] +>> endobj +1223 0 obj << +/D [1199 0 R /XYZ 90 311.1951 null] +>> endobj +1144 0 obj << +/D [1199 0 R /XYZ 90 285.6088 null] +>> endobj +1224 0 obj << +/D [1199 0 R /XYZ 90 285.6088 null] +>> endobj +1146 0 obj << +/D [1199 0 R /XYZ 221.1768 96.348 null] +>> endobj +1198 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1240 0 obj << +/Length 1617 +/Filter /FlateDecode +>> +stream +xÚ½YmoÛ6þî_!`_l`âøª—~k‘¬pYb`Ú¢Pd&6&KžL#MýŽ"¥PïîZ "Š<ÞÉãóÜÉÄÃðG¼{¡QÌxेö¡ûí‚ØaÆ}WàÍfñÛï4öb4ð6•†€ A õ6ÛKFW>pˆ—çõ 4^„Mã}±=gÒ´¯Šô|¹JÔ¾ÈWŸ7ïכƮuK°€h«ÿ,>~ÆÞÜ{·ÀˆÅ‘ðžà#ÇÔ;,8eõK¶¸[üÑè1Õ„¡Õ Â.Y…×Ь.@…–H0ÆË_¶òÆ4·KºÙ|¹þpõ Ü]Å1‘FWå)­È­ãW#î;ò}ßzZµ‡GÕ3N¢„Gmã­h„fLvui“°b¢‚,sd}Bk”#AhTI_É4KJ»ejg2ßšFñ`ž‰yËBjWÊd‹´ ðÖ'! +(g•¶ÍnÉ€/IZº)–u×ù$·¦õP”fh[Yßç¦_íeZ‰wì™~pì„V>l¹¶¢‡óIé$[¼|Òÿ’gkô^¶‹¥*%,´4ýO{µk™<$*Ýiú— ŠÂ8œ‰}K]Qsn¬Æ€Þ6Õ7×o×t°ÖÇçÚ&œ¡ ŒXǃNÐ4R3Ö ‡{ÄmªóB]Ñ@˜D¡°̆Q©ò]©~°F1˜.‘ ¿›ê°Êä •,O¯z ‡;2Jèo@-Ý÷DPwpˆBÂÄ‹Öá«Jˆ@<€Ðž\~#5°þÖ¶SŒ8AÛêk{±Š}®ª˜Ô×°è\Çö5€Ž´ÈUYdæå¤ÊsªÎ¥=>ƒ‚OŸž#4qx€81Ž Ò\MÇLNÛ„aŽâˆphN_¦æ¬úþ±¡#­¥´Û]zLQÚóöŸ“hÒ;¿š±ÛÕ¥íhôy­Ây3Ê,ÞVµ¯xÖ@«2Ïl_3¡a}õ”š© +íÅw÷„tƒ£¤¡ClœÿZo†¹Q  ‚…XY„ãYn´â¾#?Ä­cÜÌÄuܸÆ{Üh…fLvuMsc­Ópchã{¯Æob‡¹C€Lˆšu3M€}lw¥‰ Þ¾ÓÕˆ•–+"–`h. b¹~˜›hÏê?=ÿ)—vôþÙ<“¼0¬§_¿BOD*õõzàŠ aóÈ r5‚BOûÌBнL‹ƒÝ¢s~ŸéßÚ)i“:H“üÀöùY¶¯<ç£ƵD’is¥ÆQŒ‹Rd{#/¥ !&(¨çÉ05b34¹ü +ꯂZV:Y;ß }”? úø(ô­?ŒAE1‘Ç œ8¥ä‚º ’÷Ý Ã…A[ïxe†Tt씕Ԝ՞¶¹âÀhup­+Éößä…UïL;Ïó\»F2y +›ÏW¨bžÛ"o¢p_t"ô¤’R™ +Âé5 ªÿÉô¬ä Šá Ê‚ :“4¹RãxÃ`wpŒÅwáÍxÓódo±¼™\þ Þô×?ˆ7-«ÿKÊKƒLNŸ+5~|4ŒPÌm +q'ëËŠñÓ›²ÿÝ©oßÍÁÜ·³5åÝÍ*¦°Ý1^þ9^[\Cç´Ç¾Þ˜AšÇÀV8SR#Šã¹]åÊP]XJ¸J|C{oh-vI51å SN̘îi/(øŬá Hµû-çV>HHþÒ:‰Ó‰¤~î”:n¿$ÇcšdYUÓ²¥åÛë»Õ×·+Ž—à MG#Á<"4°`6Çе¼ïNàÊžÞ†f€€vÌw Ú +ÍÙìꚤgnuºì|++îûo +!M…B¨Íäu§ÉÝ«Î*k×}UýbúL}ªçëêÞvI£Êê-kuç^Lo›œ«¸Õã‰êØ8fIjíêÈ­›2Å=C…€#Gˆa6÷9·‘÷Ý ý«Ø×kaÕ··7zœ‚iú;žŽ³‡^ 3‘¢–ñ_„†˜5†0Ï +iÓú>¢¡o÷€³|³1¨$~è³~õÁ3‚)„µ¾S„,ÒÞ2ÈhãŠv÷­Ìe™¨^jôz_7Þé9çõ'ûį({E-žQŒm¹ð°‚R¹N û?uÔØuU|}~”½8ô/»ô/^Þ×vendstream +endobj +1239 0 obj << +/Type /Page +/Contents 1240 0 R +/Resources 1238 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1243 0 R 1244 0 R 1245 0 R 1247 0 R 1249 0 R 1250 0 R 1251 0 R 1253 0 R 1254 0 R 1255 0 R ] +>> endobj +1243 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.3618 726.9533 212.211 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1244 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 673.1002 144.6746 683.6305] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1245 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 596.8009 139.4144 619.7697] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1247 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.6892 535.7904 215.5384 546.6695] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.9195 382.4035 212.7687 393.2826] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1250 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 264.2062 165.0084 286.8014] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> +>> endobj +1251 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 226.0566 139.4144 249.0253] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1253 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.089 147.4217 236.9382 158.3008] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1254 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [492.0786 105.1501 513.9963 116.0541] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 93.5686 128.067 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +1241 0 obj << +/D [1239 0 R /XYZ 90 757.9346 null] +>> endobj +1242 0 obj << +/D [1239 0 R /XYZ 90 739.9346 null] +>> endobj +1233 0 obj << +/D [1239 0 R /XYZ 221.1768 571.8217 null] +>> endobj +1246 0 obj << +/D [1239 0 R /XYZ 90 554.2766 null] +>> endobj +1143 0 obj << +/D [1239 0 R /XYZ 221.1768 418.4348 null] +>> endobj +1248 0 obj << +/D [1239 0 R /XYZ 90 400.8896 null] +>> endobj +1232 0 obj << +/D [1239 0 R /XYZ 213.6651 183.453 null] +>> endobj +1252 0 obj << +/D [1239 0 R /XYZ 90 165.9078 null] +>> endobj +1238 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1258 0 obj << +/Length 1484 +/Filter /FlateDecode +>> +stream +xÚµXYÛ6~÷¯ЇÊ@Ìò¹oÛì6iÐÛÄE’ PdùlykÉ9úë;IY·ÖmŠV49šùæà7I€á‘ˆf\Éa†ƒ L¿˜·¼€õE]àÇå쇟¨4Ò’Ê`¹.5H‚%4X®Þ†‘ù‚ +>œæD…ÇâXlËQ¯òùûå«€†0‹8X0/0ffg÷Ëʪ%˜$Ææ_³·ïq°p¯f1­Dð~`D´¦ÁaÆ)ó?ö³7³ß+=v¡|¡Ï7NÁ/EX°`)¢y¯”A(A„Ú¥§‚ˆsæ¥ks‚ÃøÒ"=å7m? ¦(b”uÕ@H%ÝEà ‚#&.Z ”Ç¢cÄ%g½Ö/V½Tÿ¬n•bĹM«·¶» "`G÷ܦnõd‹ +ÄN$Ǭ8÷öG^œÎIq>¥¨í€ÏŒT`Z01ž¾ºÔpú¤¦ˆc7èï¿Ä‡Ç}:˜82jš›â2E^®™™ÓÆ-½n¤Õ¥«!ëKk%f ®¶Éc‚’@¦'j࢒š2ÝÑfL—ù€]äu0Œ$‡B1kwé;Œi¶+vÇ̦1.ìs¿Ë\Ú)Õvp\Û§yeïk¢@ÛÒ@+O¸Ü¬‘‘'!9‡(b~·²fŽ‡å‡7Ï_ÞßýñËý;,ðþ§’5UR¨”ú›d›®ÎGÜ)Që6¼DÀ0åv£/·»|¾Ž ×ç,±^3…¹ÕåÖb;ÙP¶ZÃë©]:¥P陕þ4§"Œ÷g·d¢d¦ /[·$Ck? +³c¶ø;=ÝìÚκ—ds¯™•]^ùC‚”þœÎY¶Ë6.?nãZµf´[OmámœÛA:'"ü²+ÒÕàþIhãÛ·&4¼{ÕˆC7º‚|IŸù!î%]ýÔë¥ Žu—x ô?2ê·—éúÝؘDBx`ªnoé“’Äûýå>·K •Y5dwH³¢Êüp~½ÆN w»feI:\ŽøÓI!"߈¢aRx˜GZa8üó7C í QbAGa-ô‡Wò‹ú Ý:íêíoÍ”rD¨ä-û­©¤¦¬v´«Ï\‘lwûÕ3ŸnP JèÞdƒ2c³Ë?g Î,5”Oœ¹Áçr“î\œ¡ö\Éú)ÏùïF:<ÄIIz0Ì=·dhWUxÌL“Hæ{Õ2CÈîd‚#¡ÔÄѵ.5ÌžLJ$8“W±g€úì éçÏJlâè:êþåèÚõ¿÷èÚ°ú¿]/áâ’-à´Jh,dVÈ@OLîÊjo›¥ +@F£f½LÛlëHh>sTÝê“ÖO +ßÏ…óA¢dDLÅ°&6E/fx WÕ¤cì²Ý¸)KÏõÒ]•æF> Á8¼õG­Ú’·r΋æaɩ줱h"$}"ÁÁ'NÌu©aÒ'‘Fkvé÷Ù{$ý{¯3P\alòÁ¨VãQ¨¤zÂÐØ~ØNqÒ4^m?ƒ¢ubiîµF~‹ãõpÒáL­5èôu©‘¤Ã½†¥'ÞrŒ™¾ú–£‹°÷–£{Ê-Çhl.·¦;ÚjÇd“þ¶u‰5›MëÃ!ðòS8:z ŽüP<öD@Á‘MFSðRS–;Új÷<Ú븶¡@xBCißÿDLö¸ƒ1‘Bþ§«áòb[Á+„5.tÁïˆ)¯í@O_¤Y +MÇ“¶w÷W?xe> Îî¡ÞõÊn(öÕ·Öµ¹Úñ×*矜4r‚¿ÚçÝñË×MšµÃ#ë‹Ï?ú„íendstream +endobj +1257 0 obj << +/Type /Page +/Contents 1258 0 R +/Resources 1256 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1260 0 R 1263 0 R 1265 0 R 1266 0 R ] +>> endobj +1260 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 677.3005 139.4144 700.2692] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1263 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.2734 447.0773 225.1226 457.9564] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1265 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 123.8393 139.4144 146.8081] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1266 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.2799 123.8393 187.5634 146.8081] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1259 0 obj << +/D [1257 0 R /XYZ 90 757.9346 null] +>> endobj +1234 0 obj << +/D [1257 0 R /XYZ 221.1768 649.8092 null] +>> endobj +1261 0 obj << +/D [1257 0 R /XYZ 90 628.496 null] +>> endobj +1197 0 obj << +/D [1257 0 R /XYZ 221.1768 486.8766 null] +>> endobj +1262 0 obj << +/D [1257 0 R /XYZ 90 465.5635 null] +>> endobj +1196 0 obj << +/D [1257 0 R /XYZ 221.1768 287.9871 null] +>> endobj +1264 0 obj << +/D [1257 0 R /XYZ 90 266.674 null] +>> endobj +1148 0 obj << +/D [1257 0 R /XYZ 221.1768 96.348 null] +>> endobj +1256 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1270 0 obj << +/Length 1720 +/Filter /FlateDecode +>> +stream +xÚ½Y[oÛ6~÷¯0°˜8^%ªo-’µ)º k=E[Ž­ÄBe+“d¤Ù¯ß¡x±.”£E‘‡ÐÒÇóž)2ÇðGæ1žG"B1ãá|³Ÿáù<~9#æuïƒ&àÅjöÇŸ4žÇ(i8_ÝÖB‚%t¾Ú~Z0¾ ¨Ä^¯ÞÂPàAXþÊ·Ç,Ñã‹|sÜ'‡j]¥ùaùeõzv¹r¼F-ÁB¢Xÿ}ú‚ç[Pïõ #K1€‘8¦óýŒSfd³÷³¿ý¢žà[ ì)Ë£ð3Ò« A_c¼øm›|ƘÌ’Þ®¾~XŠϯV_W¯Þ]>¿øŒî.Ž +8–‘\«¦Þwò®¡¤ƒ |_ÑžT¥î}Õ#9¢¡àmòŽ]h‚²+KQþ®mQíŠ%‘‹d½¥Lfɉ, åˆñXO‘å›oZÄú°Õƒ‡%_i¥Uš„þ·Ù¥™Þy•7ðšwùþ>Kª¤DJXð¢rV³­vi¹ ¡‹ýzSäzXnv‰òÓú Q$ê©!Qà Z< '1¨cQ€S÷púÁCšezt£—©ä›õ¨§•ã%s+ (BÛ«½¾æNK0YŒ0±w§-(h¢ú;-á%f K@,cBjêë¼JžuY ¦(b”ŒÓ:”‡·é$G("Lœ¤é]SÇÀLK²ØA,.RÔ.À:V§Œ,öDzүnód}8®³ìQ?Mi•®³ô¿ÄLxH«~¥6¤³@Æ!Η†¯ÃO,µ/W-RÊÕõÕJ¥G-e¤D"¢›ìPS*ÄÉ(&mn‡M£kÛÜ$·y‘Xë¨èQO›0hY{*”†H(Bë±ÚmŽe²tVSDŽÆµ‰qVÌÁÖu)Ö{ˆ•¢v[Ÿ#îÛÓÂÒã¾æOÊ„ÀÞ‡“F—ïPžõ·‚†bÄ9˜½ÅúÜ$È<=€L’Îm²NÓç¡*r“n˪8nªc‘ aóE!₱‰¨oÂÆÌfaj§ØbfPEdëe¶¨>sÛtàøPÕd›yeÍ3VhLÒPU©®|wuwS::0q1••›¨aG‡È‚Ôa²òûÄ(»ÎÊ|ÄÏGø9Š%á0Ïln›Õ8Z|ÐœàiãzrZG!‰$ëðw{G‹šbíIktv¶õž 6¡eÑÍ#9¿ytúg]ÊT.,ŽI§Wä^QAL¯¨†uWNeÑ«•÷É&UNlŸ¦/‹p¬"?dzH5œE8aˆE\žU.} +Œäýž&þ¼ï`årtù§rÙ_¿·\¶XM¹d°G¥d¢\6a#fs0}0°îÔ%çPÚÂ(œ ·¨>yÛzªöp·ÉOÓj1èÂL`ñƒ¨sá&jØ…YÃTWíËïku4qÞ1ê³k`_Co t0¥âv·¹ß M¿§‘àˆr\ÁÀ¡¦¨{ÒµNq£ ‚1yzQäògEò„¢øáÕÕ›Kÿe +E¡Êÿ4&(”$š¼M1ø 9ÁWžºr‡îSº‰6ïBÅ ¦X{Ò:Eqø2ÅœU £M~´6N’Øc-Ï£ LSm÷Ü î*8ô ªw‰°œºCsø 9ÁsîÉ5­ª§=ó5«CóY{MK¯Ž78Ô„6}i.r}™”BÇ’óñLÚD gRJÏL-|j3àS`¤ªõ4ñW5›hF—júë÷6-Ö_Ó 8BLF½@5b4‹²@”B$3Ž“ZP´S` U’8n‘tàü|~Å £ŸUqè`ÅùxuùÆi©OŠXÖå6BLÕ‹š<¿'w Î€¹"8åvø»uÆ¢¦X{Òë`qaVj³¸|\ +±H{!r[äûND¸ËðNxœUNô¹=žÈ|Aç><$Eróhï@²|I9ÜçQïÝÜMR–î•‹èõ7•ð,C¶Þ˜azèžáË*Ù#ß×+‚¼ ¦­oEäÃVýaNœ!øš[ 11©KLä!uª(#¿LI±®ì‘ÓÚø/;x½$N«&à̵ÁÏ({FÍ7<ŠqhöIY67Æìì³{p‘¼KzÇõíÍc¥ÿ‚„vendstream +endobj +1269 0 obj << +/Type /Page +/Contents 1270 0 R +/Resources 1268 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1273 0 R 1274 0 R 1275 0 R 1277 0 R 1278 0 R 1280 0 R 1281 0 R 1283 0 R ] +>> endobj +1273 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.4125 726.9533 265.2617 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1274 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.4185 635.8929 389.5689 658.8616] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> +>> endobj +1275 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 536.6764 165.0084 559.2716] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> +>> endobj +1277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.3253 477.3718 259.1745 488.2509] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1278 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 347.5941 139.4144 370.5628] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.6528 288.663 262.502 299.5422] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.5441 246.9287 410.4453 257.459] +/Subtype /Link +/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> +>> endobj +1283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.8635 135.3029 227.7127 146.182] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1271 0 obj << +/D [1269 0 R /XYZ 90 757.9346 null] +>> endobj +1272 0 obj << +/D [1269 0 R /XYZ 90 739.9346 null] +>> endobj +1145 0 obj << +/D [1269 0 R /XYZ 221.1768 512.4758 null] +>> endobj +1276 0 obj << +/D [1269 0 R /XYZ 90 495.858 null] +>> endobj +1147 0 obj << +/D [1269 0 R /XYZ 221.1768 323.7671 null] +>> endobj +1279 0 obj << +/D [1269 0 R /XYZ 90 307.1492 null] +>> endobj +1235 0 obj << +/D [1269 0 R /XYZ 221.1768 170.4069 null] +>> endobj +1282 0 obj << +/D [1269 0 R /XYZ 90 153.7891 null] +>> endobj +1268 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1286 0 obj << +/Length 879 +/Filter /FlateDecode +>> +stream +xÚµVßOÛ0~Ï_i/­D=Ÿ&¼m‚!›º-{@€P—©Mº4ðßïÜ8iš¸-›4!a;>û»û¾»«Á§ø~H}-5 ¹P~¼ð¨ÿ„Ÿ/<°Û#ܵ >FÞûO,ôC*¦üèqsƒ"0?šÞáˆI:Cy™—³Í,™LWÃûèÊÀ åZ ‚9À¥ùêG ªuJró—w{Oý):wåQÂÃ@úϸ Âù O0^/æÞwïksOµ±9àŠM0Œ+î¸"„ÂiHB!ÐH ™›† $ƒò5Çà4›ÐÆC ƒI1Y$eR¬N»qeDsÆüöÕµ=Gë¾'8ÝzT \no5®,Ë:H"”àNô-jm刟·Q%BHµ‹ú¡J…ežfÈ@µ(s;λ[TI‚ R}ˆó¬,òyµX•Å:.×EBºÔʨ€ 4<,_Ûj¿|*4ábÞïÏ_&‹å<Ù+„&¹L’oöÌ—âÉn}Û‘ÕÊåð»dmÌŒ‹ÓY¼ŒIÜsD@pØÁQcu ºw›ÞèUTßÕ$‘h³u–ÜQʲ´Ló¬RqRVã<ͬê,¤Õ$¬Fsd^§DIf›û;2a7â K]èº×M€‘EJ瑩½d=Ü\ž_Ÿ=üø]^ßQI»41)°=0á+Ɖf!;¢Uc?jègSÿ^w 2Å !tð;25VÇP{·Ô“¦¦¦HXRÛòŽ@× ý6sðf(å Mæ¶(‹|q¬p×Y™Ú²la[iÇñºXí­d‰?$ZËàp%·­öW²Ä 4‡¿èÃàÄßׇÁሻ7fGúðÁè·}¸¾³ï þ×>¼¥OHpé~I´hk™¢­63˜<êábÇQn§É1¢ð±‹Õä4‰\·=kÝn{Ñ,]ÙbYgñ6ëŸÓ¹%ñu[O.ÚOzeÔX­–Iœšî–L•• ™ü6ÿ&óõ¤LV‘‹u%œi¡€Œ0!Þܪ9¼¥Uw_pø Ú© EÚAUBüóãnó4 ð +×šõËÔ:a"½H²¤@f,u¸ŸëÉÕ$R_-€Ù‘ž2~ÊlüŒRe6L綒֗ckM¬áÏ×j<Ë_^Ÿ’¬KÄG§ƒŸ?qŒšjendstream +endobj +1285 0 obj << +/Type /Page +/Contents 1286 0 R +/Resources 1284 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1288 0 R 1290 0 R ] +>> endobj +1288 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 680.3578 139.4144 703.3265] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1290 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.3962 620.7106 264.2454 631.5897] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +1287 0 obj << +/D [1285 0 R /XYZ 90 757.9346 null] +>> endobj +1236 0 obj << +/D [1285 0 R /XYZ 221.1768 655.9239 null] +>> endobj +1289 0 obj << +/D [1285 0 R /XYZ 90 639.1968 null] +>> endobj +1284 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1293 0 obj << +/Length 1738 +/Filter /FlateDecode +>> +stream +xÚ­YKsÛ6¾ëWè(ÍT(ú–ÆÎk75í!Éxh‘²9¡H—¤ªøßwAôâ‘G’àbñíî·‹…HÆ~dœàqÌc”°HŒ«ßÃðÛ1¯gð~æ +ü1ýþ†&ã%‚Šñ|ÙkqJèxž}01Q‰cù™®K£8uíêGº‡´3ZS£þÎçE÷`5®ÛÞ"X'+š|ÑÕÍ“YÊ´Ý:+@ŒTfi_‘Þ¬ÍC^io”yÚTEu¯ŸºZ_³\yü?…5/ëG=¸‡F–ýR\ó2A'"Ã"D¤ «ff{„‡ $eÌN¦‡+ ùㆎÀÛˆÉh«G-÷R¾¿ÁŠ)œyWŒP"´X¿S#ͽyõÅÁE€À "ˆÎÊí »¼¾Ñlò¶.µÃ›¸"ATP?Ü™Âc Y¦Š"Wæ@–àHºO NÛbæx,³ˆzÌQ8NäxÛæwªÎÖŠ)б·$7ÌX®«…ØTK˜ù­ÍIË»²®¬-Ýôå¡n»*]™)ief¬R#Vt»*Ì4Ƚ¼¶–úÑ"M³Ì`lÑ!+´S¸Äú ž“è$e¹³c­T°Žº³ùê‡fÅ\h7ŸæÆW³”T}ßæUv„´ p‡aêƒ<ZI!é39ËÂ2 QÖH Œe2žÜºðªûO½ên>å¨ ¹—VíR1W~n¦ŸÔ]½¨Ü7̱r\‰I[}ÍòoÓJÑY=Þ=éë—7¯%5¢…í4 åyJŸuJdzp“š©j¿PWåܾ<÷ËUÛjåƼÎÁ>”ò܉PmŠ}g3÷}ÕåM•w§s€Dbè3^$ˆD”@LI`ÅÂYà(¶L +M\¨UÄŽwûœØ%¤¾Àø“R-vÑvÅÂ*Úoÿ}ÒýèÒ2rŸý¿Ò°˜£˜ÿª ¶ÂÃ?NÛ¿&€x,"³B·GO +gÔB¥Ù±(4q &ÉI»bA{W¤BëZ~xHÉÈ"¨¡Tî­{:C¬|ÁÞþàÒ÷žÙm äÈ/.ôŸjË}LXNñûb + ¡LX¼‹äëüêãõÕüòöõŸ×on?¾¿¾úxuýý0öàÓuÌð1ÀŠ…à[Ña€Ýîº~ì¬û+ ð#8Ð{šÝ, +ð„DwP#Ün(c’$”§V*$GÝÙ{šs¡­åía7Ä(4ØS‡¡18®,CЬ˜ m/ÀÕzÕiÝ(Ä-Ž™lÏ´^(\‰ŽbŠ® ‡×Qx~|ý膻èüö {~ˆý膻èö‚Ü_«x‚hLühÁKF +ê9”çc2àÀZœõµª§ aàD·7(‰™ìo&ªÓDLàj }›WyÆe»ÿ«}²7T‹·6„š+¾ ì‚šsca:oõÅý‚²ûïîÉ~½ûùtŸ|·SÔ,4ÇKÿ…êAšendstream +endobj +1292 0 obj << +/Type /Page +/Contents 1293 0 R +/Resources 1291 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1231 0 R +/Annots [ 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1306 0 R 1308 0 R 1310 0 R 1311 0 R 1313 0 R 1314 0 R ] +>> endobj +1297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 605.7915 170.2586 614.6381] +/Subtype /Link +/A << /S /GoTo /D (a00160) >> +>> endobj +1298 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 566.9372 200.0265 575.7838] +/Subtype /Link +/A << /S /GoTo /D (a00161) >> +>> endobj +1299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 517.124 167.3395 525.9706] +/Subtype /Link +/A << /S /GoTo /D (a00162) >> +>> endobj +1300 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 476.9297 166.1639 487.1163] +/Subtype /Link +/A << /S /GoTo /D (a00163) >> +>> endobj +1301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.9003 461.5917 379.5448 471.4969] +/Subtype /Link +/A << /S /GoTo /D (a00158) >> +>> endobj +1302 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 439.4154 158.5425 448.262] +/Subtype /Link +/A << /S /GoTo /D (a00164) >> +>> endobj +1303 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 400.5611 160.595 409.4077] +/Subtype /Link +/A << /S /GoTo /D (a00165) >> +>> endobj +1306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 316.3067 204.5193 326.6527] +/Subtype /Link +/A << /S /GoTo /D (a00143_g54a466311575a727830a92a6c3621cb2) >> +>> endobj +1308 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 302.7973 215.5877 313.7013] +/Subtype /Link +/A << /S /GoTo /D (a00143_g5eced097547fd3fac4ba2a255493d921) >> +>> endobj +1310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 290.8222 133.6164 300.7498] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 290.8222 225.7693 300.7498] +/Subtype /Link +/A << /S /GoTo /D (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) >> +>> endobj +1313 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 277.8707 133.6164 287.7984] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1314 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 277.8707 210.2674 287.7984] +/Subtype /Link +/A << /S /GoTo /D (a00143_g41bf109b6a45328d5744c0a76563fb6c) >> +>> endobj +1294 0 obj << +/D [1292 0 R /XYZ 90 757.9346 null] +>> endobj +649 0 obj << +/D [1292 0 R /XYZ 90 739.9346 null] +>> endobj +86 0 obj << +/D [1292 0 R /XYZ 90 739.9346 null] +>> endobj +1295 0 obj << +/D [1292 0 R /XYZ 90 716.7484 null] +>> endobj +1296 0 obj << +/D [1292 0 R /XYZ 90 622.6841 null] +>> endobj +1304 0 obj << +/D [1292 0 R /XYZ 90 334.6987 null] +>> endobj +1305 0 obj << +/D [1292 0 R /XYZ 90 334.6987 null] +>> endobj +1307 0 obj << +/D [1292 0 R /XYZ 90 320.2917 null] +>> endobj +1309 0 obj << +/D [1292 0 R /XYZ 90 306.7824 null] +>> endobj +1312 0 obj << +/D [1292 0 R /XYZ 90 294.8072 null] +>> endobj +1291 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1324 0 obj << +/Length 1594 +/Filter /FlateDecode +>> +stream +xÚµ™MÛ6†ïþz¨}0Ë‘"÷–v·AH›½%A µ¹»BýUYn²ÿ¾C‘”)K&Õb ,R¯f†Ã‡I‘ Ãd +g/b¹ÈVÛΞ ú팸ÛK¸¿ ?ßÏ~ú•ªL!%¨Èî[ ‚ N Íîןæ±Å’rÎ~ïìØícMä„·‘äj¨o$…6A ÆÓ M³6 Rœ·6!³ âàÞÙDÄY½ÕMYmôÚZ¹ÕÇU]Z³Ö òfhŽ¸¤6´ûgýoÓŲöO½×Ç}m/ŽºiªÝ“-ԧݲ©¶N}(ër«];3ÕîÂ÷ñ´zvœÄß)×ëZúˆ®å†#Æ)ou«M vú8‚ˆ å“«ø†Ûµaú†»Læg;ÆágJù¥/‚á)ÊYÜc§Jùº¢ï÷‡µkéÀy.PA ráÜܪŸœæ0 ¯O…1°kÂ8U‡¯ÐíÏûccúé2 +m”DÉx&:U"„¡µ¶0ÇÆ7ü“aO0nh&0FJIºé+^†ê6 +Ž3 Qˆ¼M o\˜(¼ÌDñQ7×Æ«ß+æÀ°­Ø?zeåjLúеعÂ3ÅⱻРƒÄôµ=Äy!/€;Qï³±ÜQíÀcìÐí¬£\ØôH?E&Ø´LÆZßi¢Î/-M…™ÃK”`I¦Áª#0w2ÅÛÿf/²\Ñ×™ $ +¥R8{YèÀ` é¸ßêÐï¬{Χ€c`7˜¯×õøl «3BH<*ÀÐÚdÀ)A”ȉ|ŸÅ1¼j|ª^ëÇò´qµõ"çóý Ö*?.rX˜\×!‡M¹"¯y® ¥’ È;YòÐ`ò„_yÏoò¾ó 'ÂØ ßéf[ÿR.QA˜Œ'¢S%"Z›Jy. b´PÓ0ÕÎ;Ù8è.%WÉÍ Øþõ:àr¤R©ÅF'KƒŒ÷ÛúnÏùpãa ìKk³3E‚ BpëT‰†Ö&s›è¹bâôªcÜzÙøòã•'è¶Ó9 Ö×á„+‘âÜËÒœcœÇývœ‡~'pÞs>…óx»çW'h·Í‹&â¼iŒG0´6t³€É‹b"è:º—ƒžš l¹”òUÈe‰â r;Y’ÜÐ`„Ü„_OnÏošÜ¾ó ä&ÂØ –°=Ÿ¢9bRðx":U"‚¡5O®N¡Ë`7'`[9 ÝPA·“µk‹ƒ^U¦G^.¾ƒ«zçÁ~ÿfÁðü—éS3ƒ ¢Prâ  ÕÝaìùp g„»³YwrJ»“SÇ“=9ݯN[½kÊàìT]?;m u‡°g6í™fø¿œh®É’ëo¾Ôß~îÍÇù|ü tZÉ&# +)ùør×k–hx‚/ÌÀ¼­%a6æm|þx÷fر Ú7â~¤cxth85fÑÍ;›&Ž±I¨@œQm{'6¾7!0³ŸÍIÏéH=-æ‡}µƒÖ›‚˜7{[YÚ?ƒCu0Ñ}mlÍß Ê!cUù°Ñî‘çÒÝûVm6öêÁÝ3hmì?Զ筮y¶W¶¿–[hÏgZÚVô‚ + ”á©%ǼOm;—TÂf€©ð`½:(›ÊƒOé +µ¡ŸGzFãC‹1ĸ; °C‹F‡–?››:¸è„S­)'ZÆ"¼\Íóó'«QcÈüw†L¡rÿµ>@%L.¦[•»QÚ¿|ùðÒ8Ce]—/öòÌ£®¶ñ~L.êcc ûU£ýåã…0Ðáä30Ú÷mõS)´u«·º¾L‘K¤o‚ýBdš > endobj +1328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 613.307 210.8161 624.211] +/Subtype /Link +/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> +>> endobj +1329 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 573.4169 211.922 584.3208] +/Subtype /Link +/A << /S /GoTo /D (a00144_g20bc87e5c063c3f4b01547be6e5a0148) >> +>> endobj +1330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 533.5268 202.5074 544.4307] +/Subtype /Link +/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> +>> endobj +1331 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 493.6367 209.7101 504.5406] +/Subtype /Link +/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> +>> endobj +1332 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 453.7466 203.6134 464.6505] +/Subtype /Link +/A << /S /GoTo /D (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) >> +>> endobj +1333 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 413.8565 210.8161 424.7604] +/Subtype /Link +/A << /S /GoTo /D (a00144_g5323320b7316647042016f17c4e881be) >> +>> endobj +1334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 373.9664 206.3828 384.8703] +/Subtype /Link +/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> +>> endobj +1325 0 obj << +/D [1323 0 R /XYZ 90 757.9346 null] +>> endobj +651 0 obj << +/D [1323 0 R /XYZ 90 739.9346 null] +>> endobj +90 0 obj << +/D [1323 0 R /XYZ 90 739.9346 null] +>> endobj +1326 0 obj << +/D [1323 0 R /XYZ 90 716.5154 null] +>> endobj +1327 0 obj << +/D [1323 0 R /XYZ 90 632.7749 null] +>> endobj +1335 0 obj << +/D [1323 0 R /XYZ 90 334.9631 null] +>> endobj +1336 0 obj << +/D [1323 0 R /XYZ 90 308.245 null] +>> endobj +1337 0 obj << +/D [1323 0 R /XYZ 90 308.245 null] +>> endobj +1338 0 obj << +/D [1323 0 R /XYZ 226.1581 201.4941 null] +>> endobj +1339 0 obj << +/D [1323 0 R /XYZ 90 183.6017 null] +>> endobj +1322 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1348 0 obj << +/Length 1499 +/Filter /FlateDecode +>> +stream +xÚ­X[oÛ6~÷¯0`“Ìñ.©}ÊÖ®h]›·¶d‹q„Ú’+KKóïwx“eÝœ,Eˆ”Ï9üø}<4I€á "¡„qlö láõ›qŸWð}Õ5øãzñû_4 ”H*ƒë[ãA$(¡Áuö9dñrEcá°yûš‡aÛx_fÍNÙö«rÓìUQ§u^˯×ﯯ۸.-Á$ÑQ¿/>ÅAé½[`Ä’X÷ÐÁˆ$ ö N™ïìŸÿ´~ì3`lvœÂÌb‚•nè u¬Ö±@˜ÄBaú=á!abðà(Š) ¼‘ƤÉ7ù!Ͳê¦^®$Æá]y¬uÿ¥ž9¸_‘%€«·ÞªÚ›|ÁÿÚé—}´|b2ŠŽI2:×6û®Õp9ãaÌÀ—n°ˆ˜Œ>, Ó*Ý«ZUÇýøS1JG$ÒZ3´“ ÁŠ'¯:  >•@ÏÐZ Àºq°™pr÷ +X‹“ðPæ`@¤.íËÔ>ÎWYü»¤pËÓ% ×Ë wÐPnð]ZÛq÷ùng[k÷í Æt·S™}›Þ®¾óc•}µiª +4´{pݲÐC·MeÆ‚¥‘ N²RÇ#2t[q7Ãå(†µ03|¥ôØ"7z45 Âs—N´€¡m”·öi2uaþèÎDèq +è ˜FX2H"†(b€%ü’Ù¸''šü…ª÷éñ›æ¾§½sÌÎà O,Mß(—°ÅÎ šRŒ 1:¯—“Í´ZD$}’Z†Ág´ÒËb\)Îè¢Nf¦}RIÞ£éD¼²Ÿ"œB4“N‹ÛQˆè(díYät-§ h­U‡mVÐË ogtÑ]wëvרs¶Žòâ9rˆÈsä@;ràÓr8ª:«|%xŒ¬ßO5dêÖP³Ù¹/UÙÀRý¶"<Ú7¾dw÷‹1ápž !â ÒéZM‹‡ëãaüIâK`F>ƒLÆÔš]”Ð,' •ÑYÜŸ$$(ušy±íÑ ·Æ™ ‹æÊ4+GRFò+:V3¬ % -—]VéîXÎb&>·'=l¿é7ÕÖ}úxFG…‘4Ù(e¼ÙùAOkÕëô,W}¬%P g±j­.dçd€E çß´Ì ý§lZbvÓ‚#¬GB=¾ˆ:¨M®½=ôùZUá7µ÷WKŽÃ?‡»•9LG@ɵõñƒFÖ–•þ“V`ߊR+é¾|,Ü„pºy’p“V½rUVY_Õ¾¾uª`i‡CœCYdçæz&~¦%Â;¾7ªÊ•K+íÚªBUiíüßkm—Õ·vw8G÷ ¶ßI¡S™ øŸ×yÇhZæ4&ˆRn×þï²VÓêž zÚéQGUë­,Cr KÂ}º©JÛ, s¨fqxô„TÎÊ®44:˜AïD–t(ê²7ÐR‘%†Šh¹bX†o›MZ¥k^€ƒæhÎ<Ú…sµ¹K‹­:¹¡Ãÿ¤,6”^yÐ*±¸°ô«™µgq&¢'þ±æèÐÏd¼ð·f:5Zùl%™G µà¼ò ”°¨ø•ÿXWͦî'GIŒ‰Y/¹É*×Ú_Hsè×W9ØÜoÆ`¢F2Áñ> endobj +1352 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 411.5145 158.5126 434.4833] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +1354 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.1221 221.3274 271.6871 244.2962] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +1349 0 obj << +/D [1347 0 R /XYZ 90 757.9346 null] +>> endobj +1344 0 obj << +/D [1347 0 R /XYZ 226.1581 652.2086 null] +>> endobj +1350 0 obj << +/D [1347 0 R /XYZ 90 635.97 null] +>> endobj +1342 0 obj << +/D [1347 0 R /XYZ 226.1581 538.4468 null] +>> endobj +1351 0 obj << +/D [1347 0 R /XYZ 90 522.2081 null] +>> endobj +1345 0 obj << +/D [1347 0 R /XYZ 226.1581 389.7944 null] +>> endobj +1353 0 obj << +/D [1347 0 R /XYZ 90 373.5557 null] +>> endobj +1341 0 obj << +/D [1347 0 R /XYZ 243.8616 199.6073 null] +>> endobj +1355 0 obj << +/D [1347 0 R /XYZ 90 183.3686 null] +>> endobj +1346 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1358 0 obj << +/Length 998 +/Filter /FlateDecode +>> +stream +xÚ¥W[¯Ú8~çWDZiñz|‹}úԪݪGZ©»å­­ªr *$,„¶çßwŒæU<`Çã™o>Ïņˆâ"C£D&Äp¡¢ånB£5~~;¿ãzÜxµ˜üõ73‘!F1-ÎÉ€E‹ÕÇ©"|3I§§wïÝ`YŸ(eëÓ!­ò²pNÅÒÎŽ8ÕŒË)7³Ï‹ûÉ›EcÜc“\5ýÿäãg­ãý„n´Œ~à„0†E»‰`¼žl'&ÿ6zÜÂyØ‹‚¡{xÛõª%5Ö’PÐ ²Âƒ„]HQnO(œI$Ñ ¢ZÈsÊ÷_ò}ºZ¾T³XQ:µãÖkTƒ&‰íJ~¢’þis· ›ƒÒs˜3\‚f³!B Ùl>fÕ¦xáÇ}æSªB×ÏØÃoœeK*p–Ü&}d}È<Œt{,G°/\¦Q·f¿Ö~é¿ÎAûÉGº¦ûV[V@ñ0W #Â$*ŠyB7•È™2òŸˆ’Ô„7?ÓÝ~›²¢¥ó·™à%²–²øV›å~I–t\:ˆ.n„nØíë²vç‹‚cù6²kñºÏµø Û}­Öv69uçïҼؖå>þ‘W›8=ì‡\0ì|FàÁ†¸h„Âxº¾N¬¦5'šBòDRñ úZƒ¤”§jœ˜‰† /PÒ@—…DÎ/æ¬V‰,1 íÚëÌ^7ŠürÙH+÷¿Í _€ªn‘µ[¶—2K6g ½4¦Ö"^1DR_ufê ³ {ó+g·U«±YµKßl%ª»°WÌ»Š™ \ð•Ö®6^›WC®}‘P¸ëÈõÕ–º^¤„{iáÏjàc |€d¼7b7x€K20ÚÀ;vƒ |ؘݗï3&‘·<ýZG^ƒ+Lž¼X÷Î6ÜüŸ™ÐÇp´¤ 0•~N×™v¯¢mVØ3»~ªFê +|*ˆfR?½êHú”ªÓ‘Œ^M)%Õo½Î<[€w*ƒÂ*ÀuýÆó ¬«o³"÷\¶òÎxÿ©÷¶_œüX]qï¿cžFëü`¥<ôÞŒ@¼à×G÷ÿºüù¸ÎŠ>=ãj„Ÿ_×cNéendstream +endobj +1357 0 obj << +/Type /Page +/Contents 1358 0 R +/Resources 1356 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1340 0 R +/Annots [ 1360 0 R 1361 0 R 1362 0 R 1363 0 R 1365 0 R ] +>> endobj +1360 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 624.1462 158.5126 647.1149] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +1361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 586.5419 139.4144 609.5106] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 586.5419 262.94 609.5106] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.8054 586.5419 416.0743 609.5106] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 429.2598 158.5126 452.2285] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +1359 0 obj << +/D [1357 0 R /XYZ 90 757.9346 null] +>> endobj +1343 0 obj << +/D [1357 0 R /XYZ 226.1581 562.108 null] +>> endobj +1364 0 obj << +/D [1357 0 R /XYZ 90 545.3808 null] +>> endobj +1356 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1370 0 obj << +/Length 1193 +/Filter /FlateDecode +>> +stream +xÚµXßsÛ6 ~÷_¡Gûnb þ™Ç.i/¹uËï©éå[It³-Ï–Ûfý@‰”eQ¶ÜÛvyiAÀø"Š%2!† Í–#½àÏGàÇø´ï«M´`òh¶µêãhû £ÅµØ뱓][@mˆ%?m±‘²‹a¨R‡v¿Nù<°Ñ0²cÛ>Ú¼8™»6 +/?„"ÐkQìòõ£=ê…’(-Ì@¼Ôm¥‰ ²cûJꣀkO!!€…¤('ºS†=‡Q Çmé +‰¤‘F$JTH°xhbô^i…s²žÃ' C0ê4>PV‚8šÂ2Á°i¬îÓ)܈ ¦p[ተëSøÀî` +Ú>#…Pz} +o³2_÷A90˜Ÿ§ƒà¥†Ìk JËŽy›Å]- ¥Î€—DÐÕ[ÔcPÀ “S™DŸv½‘0Ì[¤Ö×O—­Dr B°óʶ-}¢l±ÿ l¥ Tc¯%Ýtú}ÃÒ•`,£@Ó—™ë˾¥™]:3QÓ™[ŠšÿuuÅÕ}Õ“wµ«éèôXׇŒŸ}L1!ܼoÅêÝöµØ-º'7ÌÒE3”¤å~

¬ëÿeÑ‚‚HÜËe0˜L¾}ç×Û2ý°-œ'"ˆâIoæ{¡¸-N¨ÚØ‚C]vèm*ﯾ§Ëõ"Û^„©ÅHÂœ4¦±Ð!NÀÌK€Ë>„‡-ÁÉ5bb69®aÆË4_-ŠbËË×8ݬÉ,` ¦“É@Ì©H¡6 é'—«€¦™Ði½kýhhù!Þ“¡)vet8’7Ç7R¨BmU]føõã•0I¤õ|r™=PÊleøBó…´ÈW®@Pm½(ž=Pæ?˜)Ȭ·’ï²çl“­f™«ç?®o¹¾Ÿ^ýzûÛÝDa½Ý“~–âÌvMÕb)v”¥|nˆ*lWÉ“³ˆ F¤¤C³‘Û/„õê=Þ1‘•áº!¨'ÆNЮlÏïÀp=¢t0býJªQ½'ú˜;¼Áí¤öÿ2ø2};¤ïýÇ]HÞe¾ÌéºCÜ™Û`Ú÷â9'Åq;'Å»—@@$½W#Œß0ê_ÝTc»ÆW€$¡Âï~Ì[ñ _´WŠuøc¶Ê6iéƒë½þä7–¦vnÌý§Œ_0w%‚É­ÜN˜ûoïðîäéÍÏßß^²àÆÄ^eôDéendstream +endobj +1369 0 obj << +/Type /Page +/Contents 1370 0 R +/Resources 1368 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1340 0 R +/Annots [ 1374 0 R 1375 0 R 1376 0 R 1380 0 R 1381 0 R 1384 0 R ] +>> endobj +1374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 615.6894 166.9111 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> +>> endobj +1375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 576.8351 180.1912 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00145_g22f140b02c354dfebcc7ad481c3bcd68) >> +>> endobj +1376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.0068 576.8351 208.6941 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1380 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 414.8106 227.254 437.7793] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1381 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 414.8106 380.3883 437.7793] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1384 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.8969 339.5315 225.6901 350.4107] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1371 0 obj << +/D [1369 0 R /XYZ 90 757.9346 null] +>> endobj +652 0 obj << +/D [1369 0 R /XYZ 90 739.9346 null] +>> endobj +94 0 obj << +/D [1369 0 R /XYZ 90 739.9346 null] +>> endobj +1372 0 obj << +/D [1369 0 R /XYZ 90 719.4886 null] +>> endobj +1373 0 obj << +/D [1369 0 R /XYZ 90 634.6393 null] +>> endobj +1377 0 obj << +/D [1369 0 R /XYZ 90 539.515 null] +>> endobj +1378 0 obj << +/D [1369 0 R /XYZ 90 513.03 null] +>> endobj +1379 0 obj << +/D [1369 0 R /XYZ 90 513.03 null] +>> endobj +1382 0 obj << +/D [1369 0 R /XYZ 224.9827 374.7449 null] +>> endobj +1383 0 obj << +/D [1369 0 R /XYZ 90 358.994 null] +>> endobj +1368 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1388 0 obj << +/Length 1934 +/Filter /FlateDecode +>> +stream +xÚ½Z[oÛ6~÷¯ð°k8^D‰*°—.m‘bò6Ý€¥A ÈJ"Ô–RYjÖ¿CñbêbQëÒ¡HmIÏùxx>^L–þ‘eŒ—PÌ‚p™îxy·_/ˆ~|ÏO\À‹‹Å¯h¼ŒQÒpyqÛZ â”ÐåÅær"¾>¡¯š³sõe“­ _}ÎÓL_WùšàÕgù_V©{·M‘ÖyYìáR„¬²¾ºx³xya¹hªœ…D2ù´¸¼ÂË P~³ÀˆÅ‚/á#Çt¹[”™‹íâÝâwkG=hŒõ˜6Þe ¸CMŸ)„ rºL0þê>CO• ‚bÎ[w,9µ.ÑNN³:É·ÙFY9Íöi•?HCÚsFÌÐEk­\Ügûlp¸L*}¿ÙÃ7_ô#õQdõ£d_Vmi¿‹ò†ì¸íb©¿äEU x,îÔǼ¾?ä GÇÂ"†Ã¸íÀiöcZdû‘äa€8âh»5¨n¤QÀDp°#~ ”÷} ­(gÓ-ÊçžÆ8 »~¿ßèžœ!ŠhDzÎå£êNcÞº4 ÞGc`WÒhò‡ë¼xhê ¬) =10(Ÿóµ6ö˜cø#ÃøGˆ€y,PHiäº>qÑ-Ž—„AË䌣XŒJçÕ:à«2ÍöF&…Iç´ÜÙ\~HÒ5Å«­¸kt”¯ˆP21ÍWÓ% ‰˜ñ£ÉÌ#²ÆÌ“ÌæMf×àD2{üšdîøõ's×ùŒdöÐØ5ÉüUy¹ÉÓ“8BXDƒòùX3ùœ–E1™ÓPx„èÌœvÐS9m`mN¯…,A* +*}YnSÚ¾¸õÛ_òÎÚ‚¡°ÉŠ:—£Ú/y­µR4»¨öÕ>Ú]¨6¯žDŒ!̈ïýna~I8§$1í×JÂõ;Cçs$1Mc`×HBíµ,͇êÝ's;DLð&#bQ*Cku´ $ï ˜ Å1‰æ†Çâ}œvÝð ¦T¬ Š=1(Ÿó5éüRz¾Buú°¯“Z¦ Kî´¶¾ûI}¾?;¿þù—ßÞ½<{©€(8‰a‚˜ùE3åÑÍ´_+×ï ÑtœÏÍ4Ý~iÓc”@ÔÂ`:å!1´6»˜`†¨\AÌ+&zª˜˜SL Zìt-ù†•E7x(ÛÅ„º¨Ë^ÕÙ×U“ÖMµfѪ]ƒ­=ALÙÓÔž °¤Œ}µÇ¼2r NÈÈã×Ȩã×/£®ó2òÐص2*·Ûq áÇÓq°(¡µ¹‚?â„Í\c¸è Y˜dñ6k>eûZ§ó}Rw“=©ê4ŒÎÈ{ƒôä½›Ê{×ï8Ÿ“÷Ó4vMÞ7›ãK +±Ç„‘éPX”‡ÃÐÚìÔ‡ºE|fõpÑS©o`_¿yzþM×$ÁHðiê‹å‡úꂆE~}Xä´>\Ø„>:~ýúè:Ÿ¡Ý1}Œ×‡€ Â|}2å!2´6W$L˜±‡3냋ž‰…ý¯"yâé‹0ô&3#ã í†ûa¤ÄX»•¢öÿXÇt•Tyr³Ý f „ˆÅÇ÷‚]À”. Ì¯Ë 6%ûdcTécgÕë²kÄõp—–QRL&ÙQÄ8ò³c‚…—ÁuÙ¨oä&is; rèŒóä Y”Ï}(gx¼çþR.”_ÈýÙ÷¯Þýõòzu,oaI€g3óÖEO(ÚÂô)L»¬e©£EÄêÖW²¨ P†‚x&g=®5 +/f.¢Ø=Q{ô¤+„:z*Óf¯“Ä9|Š>µvì!֡بP˜ƒwÓÿØYÑ›ós6æÝMyi +wHƒ@DÞ6ö4L]&Õ±žT‹Ušlõ‘›X=ÞgYßëÇÝðxä0L¬îí­ÊÒÌy¬­&êãÀYYº­Ê]Ï™s‡Ö'Œq“RÖ¦ÃíȪ[ÜØâ=âÁq¾Ú5j}Âu48” l¯šäEϦ+vÕL_€a™Ë^=“B¶²aÛn³âN B‰»íîÆ&pÊ¡¶MRi§÷jº™f‘å$Ý6Ów?Kvº¤ŒfËŸzÔ‰1@:iC`X¡0ûgTiØ.ù¢¾Üè‰nQ6õMÙ¨^ïˆéIû=ï»îÅxغs.Kõ #ÁêL7Ø—¦cÉrˆND;ÑQwZéÀç¾u5W€Š"|±C ßÛ¡tºÒ„êÏ-xP”}@ןr£cÙú/4¢){E/ÿ¢# cf?øÈÛÙ7ÉVŸjKƉžP©ôÅí«Ã¾’lò¹¹ƒ“vn× +«?7³­öeS™÷´Üdfå¿-eç×áÈŒLþZ D£?ñÀð†…âþ§ßT´s*M`Æá–˜MG²êݺ$dð^gEV%¶Ÿ& ¿š/oäû§Ñ„êOüœ²ç«+Šq¨C)ûn&À¶¨ÂºÄÓòï/wÙ`)!ð1Ÿ˜x÷Nendstream +endobj +1387 0 obj << +/Type /Page +/Contents 1388 0 R +/Resources 1386 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1340 0 R +/Annots [ 1392 0 R 1393 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1402 0 R 1403 0 R ] +>> endobj +1392 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 611.3557 185.9198 622.2597] +/Subtype /Link +/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> +>> endobj +1393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 570.6172 198.084 581.5212] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +1395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 529.8787 213.1775 540.7826] +/Subtype /Link +/A << /S /GoTo /D (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) >> +>> endobj +1396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.9955 529.8787 285.9441 540.7826] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +1397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 515.9852 222.4327 526.8891] +/Subtype /Link +/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> +>> endobj +1398 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 475.2467 205.2871 486.1506] +/Subtype /Link +/A << /S /GoTo /D (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) >> +>> endobj +1399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 434.5082 218.0093 445.4121] +/Subtype /Link +/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> +>> endobj +1400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 393.7697 242.358 404.6736] +/Subtype /Link +/A << /S /GoTo /D (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) >> +>> endobj +1402 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 306.5867 133.6164 317.4907] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1403 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 306.5867 166.9014 317.4907] +/Subtype /Link +/A << /S /GoTo /D (a00146_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1389 0 obj << +/D [1387 0 R /XYZ 90 757.9346 null] +>> endobj +653 0 obj << +/D [1387 0 R /XYZ 90 739.9346 null] +>> endobj +98 0 obj << +/D [1387 0 R /XYZ 90 739.9346 null] +>> endobj +1390 0 obj << +/D [1387 0 R /XYZ 90 719.0647 null] +>> endobj +1391 0 obj << +/D [1387 0 R /XYZ 90 631.2478 null] +>> endobj +1394 0 obj << +/D [1387 0 R /XYZ 90 549.9141 null] +>> endobj +1401 0 obj << +/D [1387 0 R /XYZ 90 326.4788 null] +>> endobj +1404 0 obj << +/D [1387 0 R /XYZ 90 266.2048 null] +>> endobj +677 0 obj << +/D [1387 0 R /XYZ 90 239.2959 null] +>> endobj +1405 0 obj << +/D [1387 0 R /XYZ 90 239.2959 null] +>> endobj +1386 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1414 0 obj << +/Length 1818 +/Filter /FlateDecode +>> +stream +xÚåX{5ÿ?Ÿ"J(1~ìóJ+=èUâ8ÚTµÕi“u’{»a=ÄwgÆãÝì&›\K)B§œg=ã™ñx<þÙbÌáOŒC>ö]Ÿ…ÊñÆË›¯¡û»‘°ìðg]¯ç£/¾•á8d¡'½ñ|e4x‚¹RÈñ<~5qät&îóI}q¤Ë'‚q"¾Ïã:ÕD?É—õΪ¨Jòlúfþlt>oíZ·\å ´úëèÕ>ŽÁ½g#ÎT¸ã[øàL„¡ߌ©štôbôc«‡fÀÐì 3 „ÏÀ u¤¤—qø Ó÷å.Þ†û\˜x„Ìõ1n„0&u²½Nu6yœOQë·ÉRÇEòV×Ûó…rwÚÐðÅ +6ƒNîòšˆ¨Àíá“Û"©’lm{©¡ D¬§Ò`ÄIân:¦Âè‚dªMT•i—D~õÜjÀåù*Ž ]–¤â¹.ó´6{Ñ\y•/sÌJñ9îho¢ÙšYòv£­\Qg³&›„`¡ëRÊgä¼Û)9º·ózΫ.2]}NŸ n“4% +}'ªÊ©]F ïY é¡P[ÞB¯òBnU›¤$jUgKœø‰ ‚»÷”‡N&tÄ „>“¾ïí´b¼>‰õ*É4m³¯_~K„ÝE¼¬ŠzYQnQ]m®7qa/ P<€"& Ò9¾Q÷™a9Ì$Ìc×Ëù)jXÔ«WüÙÙf +O27äÎAáد[Ú®Ùu³å?Fý£!(³ÇÕÝÖÆè‘õçéü‡ËÈyqu}>:ÿùêüúâ +Õ¾ciŒ +(Û$;5¡„6®ä§Äÿo–\¹Ç¡ÅMKÞ÷9l¾÷ :üNGýÃú±"uäpr$lgÇON]©ã‡“£$„±xþ[t³Muy¼>2íÂáÄÞbmYÏ{ÕËžOžc­˜ 5Vursv%YšçÛÙmRmf°Æl¹ï¸”“®OÌZ©{\:Ô†.Ù3%ÊâëNÀTÍ=ëGCÓÊßçÇÞ“¡}>å‡P°¥8V꯵¡WŒò[@«2 ‰ùD¿æ\f‰EÅŠÚÔQHAÀí©¾¢‡4Øv,Û{ù Û2Û÷cÇc.“ î ‚Ã>†ИÝé¸Þê"Éãd‰ûu™gYs\íM‘ã±À#0we‘šm‘/ä´Ç> ;¥)d™^îfšÄp'IБx,î,§²x!«o€`\×F‘Ï<éЬæ,øXÐWœkÛOÀ…#ºAߢâŽ>·;Ïùžç TÉ.JLm¹3T =37Nsã .bþ%h¶I•gVnÃ)!Ó¸ä¨ü,ÀYåJƒž0&HþCÊÌE¹ +ŸŠ‰õ;Œu#‚N¹61@ +ÒëŠA Þ䢢^ë…?d×Ì ÝÁ»wV®]I˜›H[˜­·žº€ªãÔ ]ky¯ÂŒð¸Ø!Kj>jðc¾ÕY?é—i^êx0 ~¢I»ÜJ„|ÀîBWu‘áb*åCv‘ÌMtGìM4…ÿ4Eê‰2±Èk\8ìÝFË_¦q}ßâGd/ƪ‰pJ]Е{“žsÒ& rö.К– äp(­iB™ä;phc«&eNß”íÐÑžãØûõEE-RË6»8¥®¨£² +"ú¤i­©7 ß‚Éšî; +ï;VõïºÈ!¯T‰¿±Òý“¸19mò!aÇ5É×õÄP +Áºì]Lv¡þHÒa4¬Iï¶ÁZ8JÍ—Ô ìüæ‡ËË–ûàAòŽ°³{¢$ÿå§!9€žÀ96»RÇѦPp +#¦»ÿ-ä¤ÙÝ øÐî †lÅþo! +d©ÈÑ ÁžÎ[ˆ#í[ˆ +|û‚ô‚V"lé-Äô@M؇‘Ђ"Á¦¸’÷ÀÜV~Ö0(ô¹½âZθÏÝ=‡p­•ºÏ _±PøNßÎ QišXµë@§ì!@ìÁ]‚«°¿€ýœ:z­ø¨7ø†ÎÁiá¹Þ=d›‡ø†ˆn<±%U&°—„ãÉÖtü;é"ª(Ûß7Ä3œQm?„´-?“êLÚ7{‡ž=D0 |>|Üopò“ü·»µ>xÒwá:¥¿º endstream +endobj +1413 0 obj << +/Type /Page +/Contents 1414 0 R +/Resources 1412 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1340 0 R +/Annots [ 1416 0 R 1417 0 R 1419 0 R ] +>> endobj +1416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 418.8948 227.254 441.8636] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 418.8948 380.3883 441.8636] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1419 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.29 105.1501 371.0667 116.0541] +/Subtype /Link +/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> +>> endobj +1415 0 obj << +/D [1413 0 R /XYZ 90 757.9346 null] +>> endobj +678 0 obj << +/D [1413 0 R /XYZ 226.1581 392.748 null] +>> endobj +1418 0 obj << +/D [1413 0 R /XYZ 90 373.4515 null] +>> endobj +1412 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1423 0 obj << +/Length 1804 +/Filter /FlateDecode +>> +stream +xÚÍYmoÛ6þî_!`_ldâø*Jé6`[»¢ÖeMú©-Õba¶äJrÓ`ØßQ$e½YrÚ~D/<Þ=>Þ=w‰‡áxö¤(b<ðÖÛönáõó±Ã>Œûm_¯?üN#/BQ@ïê¦Ö$(¡ÞUòv ±ò©ÀËý‹ s“¨ËOéZÙç"]¼ü¤ÿ©Â¼»Ùgë*ͳCNÈ’³Õû«—‹gW  U°€h$oßc/È/±(Þ=<`D¢ˆzÛ§Ì=l—‹¿=f ž0ö‹9Áˆ2ô|*ÍlI ¤ ¦H2JÁK|"éÁIó%&ÚI„HD¥„WVJ{ê&/ÞaÓ•`¼üÉ\ðsµo4—7/.®ûóÕ«K;zv–ÂTbþÑž‚×+†xÀEm`Ÿî®wªHó$]×–ôœ'µ4î¦7zX‹oTf”þlጚ¡3q±»Î÷•Vs̈ªîT‘©ê:Q: +>©âºTYÒå˜ø·5B†#í0 Â$”^À’$£‹ì„ü¶Ô0¶ÃaÌ@—($¬-^踋x«*U”ç}û6"È(€cñCFÚBB°„Q&Z5”užeû4„¨Ä´©°¶]Æ‘ »Ww6•³ýöƒKáüÆ\+7¨Ñ©:«Íóý]º¾3·iiessý`§¸h7›û&ßlT‚Ž­²ˆÀ²éUnKM¬2QD™‰«gŸãín£&ÖwÊ4GQH8ÜÖcúMqk‡^wVß®êB6¶úXPšV L§Ù&Ïwþ}ZÝùhÝNi€¨3>k¤f µiHß›E‹³d`CÀÑ·~Ô5üŽÞI×G{‡ÉjÂ̲úÔ ª¡6 +£¡SI(!õàSõcš¥‡|‰+sݤ™M†I7×ô”Fwµ‰^| CG‡®@#ŠØ +¢Xý»ÄØ=(iJƵN`ÍÍöJ¬nÖÕM9 + m 7ªªÚ¶›Ìö©Èת,ÓìÖVüÜòF<Îi¢²*ÕØTbIâ¡3a—§YåÈÇIZYf)«b¿®ö…B®A (ç5ÎK`oÃd—Cåˆ3z<¢@ ‘œKb'ï·'Œ$ñ@ïXv~î + â4=D}JwRs8BraLJ…Õ¯ŒSªøïº9Ó¾ÄÆáðöàp-’›1ÃöÚ‘àíx3H+èè §:³‘ŸùC½Î™c5‘q†$´^Ól¤æls¡åz¶MÀ_¤YY©81ªsU;(sƒUMO·Æ•X‡ ¨ìM\¬H¸¼Ýo!gkÓ'EB[‡]!uý³Í¥8ëÖÕ}é’È% +¤ßZ’§ŽjlÖ•;µ®³rÝOÛ£5šs‚`½ètnK¯Ñ\0èÎ T'6`¢ ïıÙNlÒ‡NlèÑN¬c÷— .Ô©Ù‡…ˆ‡ · é8·9ù9p½Sé=4òlÚ/NhÆ2e!‚ɮå&Û…æhc:èBM +ض¼À­Çlʾ¦`ËVÁæzäGk“>¯Õþ£*+ç‡Þ•×¸¨Òõ~ãN+¡—Ú$=ÇšõCÅ5ÁeºMk]Œpíð~`Âfd àFÎ]'ï·'ŒgMWo¿è6Ž«¼”€¿Â0èÁꇪ“šCÁ!¡îU;`šÊ«=“äºèê»,·¯v®§b„é"¥ãÁº1Ý*ëÑk£•/05[4=ïvØP™…Ó/ÒÒ¨2‹eÞé1¡N-D[gL:A°Q±¼·Ÿoâ*>Êõ4vÄÀÏ“\ß–:Îõ4ŠP ‚àQ\?`‚ëHƹ¾›åúI¸~èQ®ïØýR®ïB:ëgÀ ôžÂõ“~i¸~ÚrÃõËÿ®gò[q½8Îõû¤»_8î/µ{óôâ±û²fïe¿ + ±-¶k¢V×Ê°ý(oõr€ ó ˆ5{ )Ͷ î†Û6*`û#…ý $7l„æ>08y¿=a$èzOݶ1 ‰Âƒ¨‡¨¿ëpR38†ÚìFhk÷¦½ª—Rûͬ!¼9¬a å‹pù¢êú\q«×îS»±uº­ÜfB´­úpS“sywÈŽò8-q ÜÆáwHŒd8_é¼ßž0BK½§®Åfâ ‡¨ÏQNjÕ;Ó€°.éçÇ +'á .ÙdÝj +h[zxÚÙïäÔœ6@ìtNÒ³³ú õÍNºþO:E GOèô)‚>l"bjôX  ­ÉWCÕgk!L!¬³é `YèŽÖ, ò¹ÊTWŽv]®ýán^êÖpoµW|NÙ9Åæ‰bX¾×ãü樎 Üåô§ùç‡[5¨êâ{Ä?ÿ+ "endstream +endobj +1422 0 obj << +/Type /Page +/Contents 1423 0 R +/Resources 1421 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +/Annots [ 1425 0 R 1426 0 R 1428 0 R 1429 0 R 1430 0 R 1432 0 R 1433 0 R 1435 0 R 1436 0 R ] +>> endobj +1425 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 593.8152 227.254 616.7839] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 593.8152 380.3883 616.7839] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1428 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.4376 488.8567 182.4258 499.7606] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +1429 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.6958 488.8567 344.7692 499.7606] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.486 438.1531 236.5593 461.1218] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1432 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.348 333.1946 215.6849 344.0985] +/Subtype /Link +/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> +>> endobj +1433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.486 284.5483 236.5593 307.517] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1435 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.4549 179.5898 309.4431 190.4937] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +1436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.1787 167.6346 205.1669 178.5385] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +1424 0 obj << +/D [1422 0 R /XYZ 90 757.9346 null] +>> endobj +1407 0 obj << +/D [1422 0 R /XYZ 226.1581 568.2372 null] +>> endobj +1427 0 obj << +/D [1422 0 R /XYZ 90 549.794 null] +>> endobj +1408 0 obj << +/D [1422 0 R /XYZ 226.1581 412.5751 null] +>> endobj +1431 0 obj << +/D [1422 0 R /XYZ 90 394.1319 null] +>> endobj +1409 0 obj << +/D [1422 0 R /XYZ 226.1581 258.9703 null] +>> endobj +1434 0 obj << +/D [1422 0 R /XYZ 90 240.5271 null] +>> endobj +1421 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1440 0 obj << +/Length 2117 +/Filter /FlateDecode +>> +stream +xÚ­Y{Û6ÿߟÂÀ‰Y>DJLÛÒfÛ&Hs{Íæ¸40´–¼jK®$'íúÝoø’õ ¥Mq6âc8óãp^¤ÉÃ?²”xñIŠåö¸ÀËþ~Aìôæ×]‚oî_|GåR")¨XÞí4A§„.ïÒ÷A®Ö4ÆÎ/o¡Éq@6Ëô|ÈLûE¹=³¢Iš¼,Vî^-nîZ¹g‚(©¿.ÞÀËà½Z`ÄdÌ—Ÿ ƒ‘’.‹2×9,Þ.þÑò1zow!…Å„-×L ˜ÈÐKs„I"(A„pêWD,Æ,ZFŒ!Ø~¨µñ¦l²gÃÝLQÄ(]vŽÄ¶T¹¬#—àE„ñ 7%øy jf2Ø••jÄA³ÏF8B‰¨àPSÕƒ¥ù©‹ÈÑÏ!ñUˆÎùisʪ¼LóíϘcø#CD X‰Ù´fZªÑDQÔDZ;[esOA/! êS¶Í“ƒQÒ6©2£·}bØ”fêÞN4É/+‚ƒ¬0ÝO{ÓŠƒsfÐX¾Rzùâ+K›7{Ózþ“%HŠTé@6AL„°'BäëZ\dÍ5"K!Á¾9î)êš)A«Kn§„d„‰>8!EâÂU+¬¬Ôy嫵À8øÚ|ð—ækG¿2Ÿw/o7ï^Ün¾ýû›7oÅ“'ú¨uç¿z·qªè‚BòÖ:ÎißBrµîK½÷ˆóšVKJûŠñß,,¯(:•T§Mynœú„dV÷›4û˜o³´Ê?fզΊ´¿jíñGg†Œgº'é¢ —Š¹`Ó!¨Ku= 0ü ^K¼UæšTÉ1k²ª¾nI>–4B&ë J-™‚²-‹Q¨'4†È-ø´Z*z¡‚/‰¢¸/÷no“Nq>Þko„v¹3ßÆM‚ᚆ‚™éa)Jó½·„§ªÜfu¥èêa +Œb1—OºTדGÅÔšÏÍoÉñtȦŽqBt¨²]Í™8ïσЛyZ2í7+Âs}LòâP–§µ +}kp:´…|*åÑŒÎZªHcn +ÒSsn6Øö¤‡±Ê CéWUÓÒÏáñT „"¿vX$¡|™9ÖuK5ƒjÌM¡B&XÑØ1J!#=ù"ûcZäoHó=ä…õ±¾K©%®Îƒh‹öZÄÀ¾!Ú2ŠpÌ„$G‰X¦Fî…I/;l”‹ª0l¿Äòg}þ4D,”Ä„A»´çÂ&cCß”Ijw3± O¡fͶ,µQá÷ÞÊS™‹1.räMmuS·Í¹ÊË8r ÍI¼… ½Z3F¨>Fq2B˜B<9÷Š9'vôëîø^KÇþ‚!†CT£‚ÍRÍ`¡P *ŠûXîW, 1ŠqåW­ºZéj´Uº&)ÍœìZ™ q¨ð†®ÅTzVhK?³‰1_§P_úc‘@"Œø´[ª9Ùàà2$ÙÆèŒ.ò¢n²$5RþªT¸ÉF‡¨£J¬ÌÐL4õ%Hh¶L5¾•T+ú>‡`ÐÝ>·&ïêmëOIÑO¦çÚ9’sðÅ­Ë´“NëÂõ<]É+ÏÜ]÷jž Fc>§»T×ótH!Os}VÑå0Qtø‹®–l¶èšTÀ¥èkÀ[tõä>Ÿˆ‡¾Ë¨ŒQß>¤ëñÍÑÏñíÆ7Ÿr(ç°"fÓÊi©fäSõzɾx瑽ÔÓ¢ŸW‚*„ñù‰[âG'îöZj2w7kAÚÌÍlÞþçJR°û<¹¿úÎ3.ºiZ3CÄ—ý—rÉ(GóÇd?M¿î.;¶ŽxÓŒK¹¤}« (”8š/°¡:âè]خɉ»Ș !!M\·TsâGÜ”ø÷ê’ÿŠoï¾{ûòß7OèOõµ–NF÷tÛ‹Xû6xJ¶&¡[ãt£<ØAÔà<ðVJ†e=e褪U‘Qè ¤hLŠ–ö$øî˃É‹my4V¨‚†‚ü¡´Ã¬²Vé “‹ü4SPÕáV¹PiTG= ©¡¾wòN‡d› D»ýu~Ò¤QY Ç*'—¦Õ˜” +-Ÿ’ÖTòà_æ5 +HÔ;…ÁÅM݈°AFu«þ¸bâ€C»ÒUƒÁa—@ ùEµ¢à]ÖÌäè!õ™ŽÑkwíÝ··_€ ô¶nlä²PǪ<ºèè + +ïîMÍa­«Îÿ“]¹ä[̪5À C=ÑNDc hTü——ðˆ×¯ؼ¾ycÜíåjᦂ ãé£Ku½ð Œ¹œ}n&ÓB/EÆXª÷Òß’u[ÉétÈ·‰Ë:ÒY2´ŠÌ(Zec÷v•ö +;™Û…îÀåðÀC¬/ô‚uéH-ŸžQ«þШaìx®­tkÒJ¦qæÖaiÖ㢦°Ô®#ÓЧ“Ó Jœ­€ªJš«&¶+‡RíåS[þv^®Ÿ98 7ýø‘f—Ü÷>¬ç®JË<õ¼ŸzŸM­»GèÍ{-QÙBô_S÷ŸÜò¿êp޽Ǟ^^œ­ë}ÆkñW_V›'—qˆPðÿ–ñÌ›²b‡·ÛðžØ€ÿMYÓg‡:û¿€ïѧ¼ ¯Ž%ÏlçÂõÏîÔ”µSøÃ÷K!A$Œ¼¥õaê›?ý#¢þ4†%„õ~úƒb;b±¾vSX¨ :( +ê÷Y‘u<ÚUá?ºÆ+å¾gÛ!Ô~ñ3ÊžQ[–SŒ…uåúî¢0þaÕ…‹åo¿?d£ '̧¥ÿä +endstream +endobj +1439 0 obj << +/Type /Page +/Contents 1440 0 R +/Resources 1438 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +/Annots [ 1442 0 R 1443 0 R 1444 0 R 1446 0 R 1447 0 R 1448 0 R 1451 0 R 1452 0 R ] +>> endobj +1442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.7083 717.9621 207.6966 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +1443 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 557.7163 227.254 580.685] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1444 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 557.7163 380.3883 580.685] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.0274 456.6895 204.9409 467.5935] +/Subtype /Link +/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> +>> endobj +1447 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.5705 456.6895 377.6438 467.5935] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.486 407.7474 256.4846 430.7161] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 322.487 147.1755 333.3661] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.6736 322.487 182.6919 333.3661] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1441 0 obj << +/D [1439 0 R /XYZ 90 757.9346 null] +>> endobj +1410 0 obj << +/D [1439 0 R /XYZ 226.1581 533.8997 null] +>> endobj +1445 0 obj << +/D [1439 0 R /XYZ 90 517.2837 null] +>> endobj +1449 0 obj << +/D [1439 0 R /XYZ 90 367.3148 null] +>> endobj +1411 0 obj << +/D [1439 0 R /XYZ 90 342.9866 null] +>> endobj +1450 0 obj << +/D [1439 0 R /XYZ 90 342.9866 null] +>> endobj +1438 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1456 0 obj << +/Length 362 +/Filter /FlateDecode +>> +stream +xÚ¥RËnÂ0¼û+|L¸»vì`Ž-*R¥>rTÑÄA‘ ¡áÑò÷µ±ƒ(Ê­Šœõx½«™ñ"û!Õ@S™2-Eó º²Ç‚!=°ùÁõ…ûŒÜ=rM5ÓŠ+š•ç +™äÈiVÌ"Åd<à¢ÃÓ‹ß&F«ÜÜV1Btt?Óú³òPçûª©wÄ(‘ñ"›’‡ìÂ%P•B¡còEf  …¥<%À„Júm0ÔšÓ I¸èÀš¼“×KŸ8ô)–(ú$‹ÉÜÂÔ+›9¯+Çß«Yî}\WuÐŒBûMSúèJÖ!y¨¶,gN¯¥0À”)ž$çÖo¦4­©sSø›Ÿ§KÅǶmr³ÛÍA‚]ÈúüB†IÚû²`õ ’ê_VžÇchKPðëéPÖ1ì¬ +$œž‰©M»Üwr:¿ž»ÍÔMÊ!ä!ˆ‹8€ +3s5íÍ´!ƒ¿^›ŸÓÊÔ·ö¸wîñç«C°âendstream +endobj +1455 0 obj << +/Type /Page +/Contents 1456 0 R +/Resources 1454 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +>> endobj +1457 0 obj << +/D [1455 0 R /XYZ 90 757.9346 null] +>> endobj +1454 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1460 0 obj << +/Length 2132 +/Filter /FlateDecode +>> +stream +xÚ­Z]oÛ6}÷¯ð°X8~‹ìË°-k·º.{j‹A±•Ô«#eþhÖ?RiJ´xÙÕÈC,ùøœË«s¯(RdŽÍ™k>n7«n퉻c½²G{;¬Ž -DËgjé4᎑žñº:”›mµîTíW»Í£KáaAÚ- Gœ˜“–æ¹—l{Ü;–ÛÏ}õD°»c]oêûî ¹ëþšÇá ;XBÈM ‰q$0#m,×Õ;Œi]íÏ\UI”¹NRLš-tW#5Áq¦ø‰Ç +¾£TŒµ6¿¢‚¥= +Ò5†ÐXÊ¡î·ë~¤‘8—¨ ‰Û¯v÷=æM†ÃCaD¼6Œãæñ¯æxØÊzm¯ä(J°ñ·(Ò™ð( „˜­½XàUS×æ?é cÏ Î¶¾1¦?QIS™˜I£o)¾9crBŒõˆmå™Æ®ÂÌ‹iW€”« vUJ1pUZ×»*ÔÍpÕ@<ÇUé0"^çªuy(MÖ£@4CÔvžt +’Øœ£Î]m‚ DLg#L1 ¥Ï\ˆ|¢Ûž+äÍ4Â…V'RÁ͇þNe2pø0ì‡eÝ÷ÕM½j|ÿ´ ë;è‡òÐ#úž¼:îvKV,Ì=oëšò§r»)oÝ-ÑŽys7úêTR›ÚQ÷x{‰L??‰Þ.©9{·$jqWíN ûl 3hi +2™À>„!¬‰š¬/!…ɦ–@}yX_!a¢¾]W_]¸¾†âõ„ñºú:î쥺Ÿ(3jÒÆ£édxEÌ–Uf#¥Ìm>¯ÌtªÌ,¿ÌÌýíª¹»º5·¸q¥Ù!Ûʺ_lËë„8Ï©?”}A–»Ýæ“›'5ãâ²7®ªSM—³>”ì JHO—•H1Ρr0¸„ÂT ¥u} …º%4Ï)¡t¯+¡Õ¶ÙÇa(5aÈCAâ[Vå˜ r!0ɬœª³üÜ}äÚÓM&ßÆ£BzsU ©5lìa C„]gã.lã¡x†0"^gãò¶Ù&l,8$±åؘ™Y‚γqˆNØØÃl?¶CÿzsIò"óÎ’SÈÅ»8 L¹8­ë]êf¸x žãât¯sñÞ®D&&sE€8¤±e™˜1Ä­ñòL S&v°v³ÔtQm·#ï«î‘¼›x4{çó¦ÿÚ¯³ €væ2msJ‘ X_ÆçÆyœjùÜÁ`Ÿ„)Ÿ§u½ÏCÝ ŸÄs|ž#â }þhfŽÑs±0ùâÈ‚CAò[´Ò2a¦íòåð±|Úî!:awk——\˜çѵŸœ÷O¨wù}|4¿­ªþÔc÷‹%‹O›æ¸wË.éíÁÓÆ<*Œ†Ïì]E35ÿ¤<HAÌú`ª÷Ø«&?5| ijÙ&›S 1%ÔE¦t¬Àˆj¦&áa`“ MÐuMb  7‰¡xF“ˆx9vÕþPž›ÔiĘ,€,8$±åÜ™ÈÜBdfƒЩá`6‚7ýà³ÛÁwÃâÍ|˜ê +§¾‘ÑRöq}8üDèñ@bÞ¬þ@’Ê^¹3ãÔ +ˆ!fK÷ΑISq™þÀ"B)¨?8ÜÂTHëúþêfô‡xNH‡ñúÅ¿õcp7¯ýQ†ˆ 4 ‚ˆÙ²º‘¦²9Ïì:Õ%ÌFðÛþKç ýšßŸ×¯Çßÿ09 »­@„¸È„™jŠ0eÐF’‡^ ^t׺°×‡â^ˆx×M T,žÚEÛhÒ\˜©Šé\éL8BÄ–ãtZHdî™›I!:át ^·w°§ôÞQù©ÜlíÞϤ§©]ÃW˜_¤SA‘R +Úrïa›7 x:€¥<êfxz žãét¯_²[}l÷âÇ@U Që¥óàPP[–£YŒ?2÷mBtÊÑf#øš™í;1ãÙZ¹²{•ëæi[­»›õ´ÝíÂ;—Ùh¡Pm´xl÷€0e÷´®·{¨›a÷xŽÝÓaD¼~£¥»ÓÆv§˜›é¯™S$óàQ@1[ŽÝ‰VHJ¹Ù¢v÷°ÝÏlvÇÝòÞÉå>i“Ö¶å]h›(svB +Ž$QÐ拇Ö Ötµº°µ‡âÖˆx{ˆësêJs$Á¡ õˆ-Ë×B#ÁXæîKˆNùÚÁò|¸¹ËÓà½Bÿ³Æ|Úu«:áw»n_\f2N˜@\1h—ÆÃ`»„)»§u½ÝCÝ »Äsìž#âì5ž[½æˆYc¦³àP|Ä–åwÚ¾­›¹Q¢S~w°/õ»KÔ×Þ®Þ3­/2wÑ1-´ô Ðí'²„דŠÎé"ìóP6ÃåÉFœÎá‡ÍCµ¶»‘ÅM–MÝaÒÊ#¦”¹íä^œ}À†•ôûÖÿû=÷Ö +w/xï±›'Ђ©v‘Ò±¯´»PlÄ/ªºÚ•‡ñ;P¯Ü‡—vRìíÿãg”=£ý+ýcÙ¿õnñ›Ýé}ñá»ÿ®~®›?ßÇ/»ÙWñÏdé?G†¯endstream +endobj +1459 0 obj << +/Type /Page +/Contents 1460 0 R +/Resources 1458 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +/Annots [ 1465 0 R 1466 0 R 1467 0 R 1468 0 R 1469 0 R 1470 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R 1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R ] +>> endobj +1465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 615.0435 211.932 625.9474] +/Subtype /Link +/A << /S /GoTo /D (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) >> +>> endobj +1466 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 601.9516 194.2086 612.8555] +/Subtype /Link +/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> +>> endobj +1467 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 562.8165 207.3095 573.7204] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) >> +>> endobj +1468 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 523.6814 185.9097 534.5853] +/Subtype /Link +/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> +>> endobj +1469 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 484.5462 185.9099 495.4502] +/Subtype /Link +/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> +>> endobj +1470 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 445.4111 182.0444 456.315] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +1472 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 406.276 196.4303 417.1799] +/Subtype /Link +/A << /S /GoTo /D (a00147_g64a238a5c02640a7a4aef004163aeb47) >> +>> endobj +1473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.6975 391.5148 410.5505 401.4201] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +1474 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 367.1408 190.333 378.0448] +/Subtype /Link +/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> +>> endobj +1475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.83 352.3797 416.683 362.2849] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +1476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 328.0057 224.0965 338.9096] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga9de254b8aa308eb4aab17efdde622d2) >> +>> endobj +1477 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 288.8706 198.383 299.7745] +/Subtype /Link +/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> +>> endobj +1478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 249.7355 188.5699 260.6394] +/Subtype /Link +/A << /S /GoTo /D (a00147_gde6634974418e3240c212b9b16864368) >> +>> endobj +1479 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.6003 205.825 221.5043] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> +>> endobj +1480 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 171.4652 190.8911 182.3691] +/Subtype /Link +/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> +>> endobj +1481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 132.3301 195.3145 143.234] +/Subtype /Link +/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> +>> endobj +1482 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 93.195 200.8635 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> +>> endobj +1461 0 obj << +/D [1459 0 R /XYZ 90 757.9346 null] +>> endobj +655 0 obj << +/D [1459 0 R /XYZ 90 739.9346 null] +>> endobj +102 0 obj << +/D [1459 0 R /XYZ 90 739.9346 null] +>> endobj +1462 0 obj << +/D [1459 0 R /XYZ 90 716.6852 null] +>> endobj +1463 0 obj << +/D [1459 0 R /XYZ 90 634.1338 null] +>> endobj +1464 0 obj << +/D [1459 0 R /XYZ 90 634.1338 null] +>> endobj +1471 0 obj << +/D [1459 0 R /XYZ 90 425.5097 null] +>> endobj +1458 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1488 0 obj << +/Length 2344 +/Filter /FlateDecode +>> +stream +xÚµ[ÛnãF}÷WØ ÷öý’—Å&Þd3@€ÙŒ÷) ŽÍ±è╨ñL¾~«Iv«É¦º8-“âaUuñœêb«Íþ±…£ £ qBêÅÃö†.žàãnXù®ß¦€oïoþú=w Gœæzqÿ±µ QœñÅýã/KMôê–+º<ýø®;¨^^6뇪YïwÝO»v„SÇŒ[J³úíþíÍ?î£ã>.%4ónÿsóËotññ½½¡D8«¯pB sŽ/¶7’‹p²¹yó¯h§»ÐÞ05€Óúå÷C½bjùy»n²(p‹Šòà¦ì{d©M7U~Ø%.hÇ$MÍ#mŠ.°6Â|wûŽ‘¯=iwuàhÓ_9¬„YÖÍÁg¨Ú}ŽÚÏ_º þãOëýé¸ùÒ}þX5ÕErk VJ_…ÜZÂ)W½# %xj°@qÄo ùÀ/Nó¡óDGÂÈ첿ì7›, +wJΑæ;³6‹ìŠ®ÌL®ŸÁ%ª÷(ïþG¬>¨×»§žÛ¢ ƒ_âdw™Ö’îìuj¶æ–‰²ºGá¤>›+qºè4R:q:ƒÑ©ç9„.Æ0¶è¼Þ­›uµÙã@8Ð0Èr +"¨ì>³5‹ÑL@câæ–ï]ât€ù~¨›«ûtt'Ûêóú´íŽõJÒåÓ¶Þõ·×ô÷øqüôþ};”®?ù8ÖÊéЕûpóY<äâè)'RÒ¯©õ5¡¬#Ò¬“‰0T©Á‚,¿A¿¸0†Îg( #³´1!Š¾63$…¹Î¬ÍÑ…2’(ÉçÉ"TPÓ¢Èè;SÍsø^ÅY"Ü౿ÿ3bQZe¿ªë¿,E‰”ab 0\,‰Á’XÊ~£XR¿3Ä2p>G,å02»A,§Gÿ"°Ý·­ÿ/‹‰CéuRºrB" +‰$·´ãùRÔPDÛ¹¯)º¤ óQüÜæ.?….¨ê~ýûîÝ|Js ™VשÿŒc8Zÿ §tb°Dé²ßHéÔï JœÏ¡t9ŒÌnJéëÝcÞqÿБ4Dâ?·–ùMh©M‰ÓÒibùÌî?P>šo}&ß{{Üfÿº)?„‹l—V«íU +¸4p)¬€GÊöÔ`íˆßÀö_œíCç3ØŽ„‘ÙMÙÓò$Û57¼œ†ˆBüçÖÛ7u±jK¿Èªç¾ ¤èÇÌñ¾¾Dr¿(ãëùS·Œ³¶ùøSó¯ØÖHietæªkŠËÐPRœR¼_‡– Ë`Ü~¸ßÇEæ|iY8¿ÐtaÃk,4a¨ÆŠÏCü ü~ZqxëŒØLš15ò}YbE‘Ù Û¬ ${§ºä  0ïN¡—æ–ùµ”PÎÌìñ<Af·?Ó¿7SµÅ0­ÊC(Ä1§ŠpjFCǦNaü]ÚÍYŠ.–k KSzÑw ˆ+ea¶ŒUâøR?¬ýŒ:Çâ¬)4pBÚkLšBù58TÏ= +—óÙ\IÍE§Q̉S\Ë©ã9R.†0¶çÊÝ)[I@€¼<þBœ[M´ + ’>©c¸ÉJ9w쎹Y½,b –6®<è*{åL]½€¯¨‚…&BÎm RtIÁÖ)xÿò0WŠ•ºŠ‚ẄºƒI8Àp 'ÇA– 8D¸4ŒEµžFç•æ»¤,Bà†³F#¼¨Ü7“©o%‰4ðê1Ì ¥"ó«}7EÙÈïåÑ<6úÌn:zèsÅQ¢¥aåDâÞ¯¤0aÌ8y¥á HäÛÉ™ ˆx4‚±ÝøõÄKõøx˜¨9Úa„C2P¸vðö)Õ4FÁ¶Ô—àÀc]€~ ôÍ8FA-ôTÏÍVÄ#ÙÊí^,ÍBPbB”Q˜c!ˆ°#¿XqæÎéØÌö*EŠs„ù¾ëE2µþнrm÷M_žŸ÷Çx:Æ"~ÿÝ»jy±Ls˜Š•רÒÜø•j¤F÷ ´BŸš¬¢ÇPwh‹•zÑaýlÙO­C0,•G0e¯pÍ×»4ÍÝr[ GšƒQ­šø®ˆ¢%Bô¿xð&|»ØÄe‚¢f”%Z€—yšIÐ%ÍØp­£]Û¸Þ’—út&n’=Îh¯›Úÿîá3Û¥YÍß”æýTyÿ¼ö{ß ‹Û²ý]¾®7›îóª÷‡>¬C}¬›~7 NáÚÙ©?‰N}o`ô²j'dÀo§ã©Ú´ÛBÛ“º¿üúÜ~ÅàÝö¿ëÃaè.>WýÍûðÖݺ}adá úÖýÐáîÛú]sÌczö,}áÑ ç—GÐ.0 oÏð©÷ß¡Íøö»ÙëK»a8Lê´Æ‘­w¢sî3âÅŸ8šLíºg„Éé}?Ì2Ý}eÿ?oÈo; ·0ÁSéi⌰á +ú ºý:»úP5qs|ßÅýÞúÇ{êOïÓo¸ø†ÓîÌ¿Möyà Ѳ)ýFèp7çÝþó—§|ùSÁì1‘ŸÿU6§!endstream +endobj +1487 0 obj << +/Type /Page +/Contents 1488 0 R +/Resources 1486 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +/Annots [ 1490 0 R 1491 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R 1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1514 0 R ] +>> endobj +1490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 702.9069 191.2995 713.8109] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +1491 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 664.0494 180.9385 674.9534] +/Subtype /Link +/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> +>> endobj +1493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 625.1919 204.1906 636.0959] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> +>> endobj +1494 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 586.3344 180.9384 597.2384] +/Subtype /Link +/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> +>> endobj +1495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 547.4769 214.9411 558.3809] +/Subtype /Link +/A << /S /GoTo /D (a00147_gf2dbaceb10c67783a115075b5b6d66df) >> +>> endobj +1496 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 508.6195 203.0756 519.5234] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> +>> endobj +1497 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 469.762 203.6235 480.6659] +/Subtype /Link +/A << /S /GoTo /D (a00147_ge5ab69d40013e6cf86ef1763c95d920e) >> +>> endobj +1499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 386.9994 175.2098 397.9033] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +1500 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.0255 386.9994 203.7128 397.9033] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 348.1419 185.1725 359.0459] +/Subtype /Link +/A << /S /GoTo /D (a00147_gaa585784b0914cac1d37f07f85457008) >> +>> endobj +1502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.9881 348.1419 213.6754 359.0459] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1503 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 309.2844 152.9837 320.1883] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 309.2844 211.6433 320.1883] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +1505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.459 309.2844 268.3701 320.1883] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.2043 309.2844 331.8917 320.1883] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 270.4269 171.8826 281.3309] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +1508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 231.5694 172.9089 242.4734] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 231.5694 236.859 242.4734] +/Subtype /Link +/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +1510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.6746 231.5694 293.5858 242.4734] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.42 231.5694 357.1073 242.4734] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.5934 93.195 210.4073 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> +>> endobj +1489 0 obj << +/D [1487 0 R /XYZ 90 757.9346 null] +>> endobj +1492 0 obj << +/D [1487 0 R /XYZ 90 644.2869 null] +>> endobj +1498 0 obj << +/D [1487 0 R /XYZ 90 405.9509 null] +>> endobj +1512 0 obj << +/D [1487 0 R /XYZ 90 194.2442 null] +>> endobj +746 0 obj << +/D [1487 0 R /XYZ 90 167.7584 null] +>> endobj +1513 0 obj << +/D [1487 0 R /XYZ 90 167.7584 null] +>> endobj +1486 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1523 0 obj << +/Length 1357 +/Filter /FlateDecode +>> +stream +xÚ½YßoÛ6~÷_!`/6Psü)Ry°¥ëZ ÅÖØC[ŠÄÄFeɳä¹Þ_¿“HѲ$KrÒA Š<Þwwä}äÉÄÃðG¼{RH0î{Ñf†½Gè~5#vx ã˦ÀÏw³¥ À§¾w÷Pið ”Pï.þ0çj±¤ +K<ß¿þšÏ ¦ñ6‹÷‰6íÛ,ÚotZ„Å:KŸîÞÌ^Þ9\k–`>)Qÿž}ø„½Ì{3ÈJxxÁˆõ63NYý’Ìþœýáô˜jBŸwœ‚gŠ0oÉ|¤HÀ{¥”@˜(  "h T€0fÒ“Œ!pŸWÑxù5Ülß´=$˜"É(õšJÛÐÜX‡ÍXÙ³{´Cï,‘$LôYÈ:9'VšxÐ÷Q²†•@QÇHÁ,4ré¤Æà;ÚJxT‚zK¿ÖcJqRÝêÓt]m‘jׄ…y&ëÔî#¡ˆidæYN©7Ù~½E+ƒ™HäSnæ½~Ð;F:6’÷Gó\Å6þn·Q˜$±ÀðO^XðÔ +»µ+¨Ö¾`Fª€}ä#ŠèV ãù±qñdïçð>Û:®UZì\#åˆñÀDé·07³‹•Ueiª£SÔîµ®ãg”ŸûìæeÐÚ™¦NãŸúâö.K—ÿê]f¤Ömäý¢Zô›±ª ½`OéòN纨üî7q§7YaÛ«,/P{ÏÖÙ*¤˜¤ÃݺœÐB)Ĩ¤zøê|îØכεTi_¾)¶=‰Ì8øÂÅ`TœÐl[W û¢‹¨ÀY¡Î/»\‹a·´–Ø…NR]Ä=^K`b"‡÷‚Anë2^;^hC)8¦º_‹ÑÖ:Âß”c8˜Y0'4ŒÝÑÕ o"jײ·¯ðuìÍžÌÞef|bÄΈ=ú² À¬O¡öíN/¨˜ÿ³ÎöybÍÑÆav˜5ú’fåœC¢ãGÝÏæ-8x’À΀[ã}¤M»ÈÌ3=ñ=¼U|_Ž®¬XÇ.è³vAËÚ-CýаB«m ?¶á—Z*Â_2¬æw«µÕ¸Ñaš;ç +„0Á+Võ~s§¬j²ŽÂÓŽŒÂÔÓî´òèpŠìÅ#†“ùNˆÁ3¦)uùá°•|ªÔ¤C† BW§ ¿â”éZØ{Ì8±aÒåI.ØptœÔxGÛïÂ=ÒǬ~9µü˜½cÔ‹DÃapR#ð]mMö%µ’«Ù·*Ö¾ÙÝùù×b~™=£$Ëõtæü¥Ÿv9íõÑò >ìÓÆö`زT0Á^–ëu°<³Žì¬Cy,„Ç…/湆JHk†Å0×4¥.s UPí*!'rÍôÕ\Óµ°—kœØ4®ŒÎ‰kFÀ;ÚI&œŽkëS9é†3ån!F²ã;ÕŒF÷ÓKÆ×%&Í«¦æ*½FtœæÊ kI)R[RöMŸONè´0HdÛw~öÄMxRa»â¬eX¤ó<Üû.QWå~›_ÌZØÊH $k›R—³–p‰!S³vúê¬íZØ›µNlB%:šS):‚ÜÑ6\ŒžƒN¨FÇàÛz§Õ£Ã¾»‚t¼£mbI:5®&±££wjU:†SY: ßÕöm +S‰ÿ¯ÏŠÏ/LÛŸÎ ²èý !rÄþ³¾ªW¿ +(˜BØÙ§3’©rQ…‰Ü§Î”26¯tªw¡ûÚWÇþmÝx³ b¾·/„Ú'¾¡ì†ÚÅ ûöVVi™=yº¿4Ôq¿Í¾uç÷AX_”þ5'Ùoendstream +endobj +1522 0 obj << +/Type /Page +/Contents 1523 0 R +/Resources 1521 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1437 0 R +/Annots [ 1525 0 R 1527 0 R 1528 0 R 1529 0 R 1531 0 R 1532 0 R 1534 0 R 1536 0 R 1537 0 R 1538 0 R ] +>> endobj +1525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 720.0194 154.358 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 573.2189 135.0008 596.1877] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1528 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.9895 573.2189 174.014 596.1877] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1529 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.8794 573.2189 241.5202 596.1877] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 417.2379 142.7416 439.4893] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6071 417.2379 210.2478 439.4893] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 273.8347 142.7416 294.7461] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 132.7034 135.0008 155.6721] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.9895 132.7034 174.014 155.6721] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.8794 132.7034 241.5202 155.6721] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1524 0 obj << +/D [1522 0 R /XYZ 90 757.9346 null] +>> endobj +748 0 obj << +/D [1522 0 R /XYZ 314.6454 681.6068 null] +>> endobj +1526 0 obj << +/D [1522 0 R /XYZ 90 665.7144 null] +>> endobj +1485 0 obj << +/D [1522 0 R /XYZ 379.3917 536.8636 null] +>> endobj +1530 0 obj << +/D [1522 0 R /XYZ 90 520.9713 null] +>> endobj +745 0 obj << +/D [1522 0 R /XYZ 231.9163 380.1652 null] +>> endobj +1533 0 obj << +/D [1522 0 R /XYZ 90 364.2729 null] +>> endobj +747 0 obj << +/D [1522 0 R /XYZ 226.1581 253.0464 null] +>> endobj +1535 0 obj << +/D [1522 0 R /XYZ 90 237.1541 null] +>> endobj +772 0 obj << +/D [1522 0 R /XYZ 379.3917 96.348 null] +>> endobj +1521 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1543 0 obj << +/Length 1882 +/Filter /FlateDecode +>> +stream +xÚµYÛŽÛ6}÷WèCm fy—”—EÒ4¤É}H‚@+Ók5²äZrœäë;IYwz{ÁbaŠ<œ©93Ybø#Ë/ ˆq¹L ¼|€î b‡70¾i~¹[üü+–Š$•Ë»]-A$(¡Ë»íû•Dr½¡¯Î/ߘF|2mk«_…ž5½³ì@²´ µR㜓qÝ1.Ëè;Î%b!¥·:¯Á{,ÊuîËÒ²Rù”÷à5CŒDtÞ} ÊgÅ@šs ê+Â$ –’cb9‚hÓF ÃP!ŒÈA¼•µÖç_ãÃ1S哾f‚Å(™UÍQÍùí!8@ab̶c\Ó&îU–›Ëš`8ZÙ%S<0„áY'9Ï„¾,mÁOCEç=•Ópx¯ö¾\­¾RY®ª‘…SŒ¦’ί¼Ay”¥™µηí” 0äôV'4xŸ¹ÚŽ‹ºO²¸eÄ RÇ#Ê=np(Ÿú4­¾~35?:!T J"3øÌPxzeÛØrm–:b—›F±3¿zJve}´G]æ–„w +51 ÜöÍüÖ/ŧæ¥øô—ÄYæ˜Ýµ}U§Æì©šÕû]7¿÷Èf%Q7+a‚Y+Ó ¦3m\ÅY7ìNå9¤–xçÒ˜õ¼Ññhœk¢±Jó¤8¤ùƒyÒŠ\‚äö&µ)“ÍY2;1^S ”¼gi|ï¶HÛ˜î& –üjµ½ïôlØÚµ«ÑoVZ)—¸¹¤·ë¿Æyuï¡Ió´¯OלÏN*ÝA2 ¬~¯’ÏÖö]cûIu}Ôqíu--G¤ÙÕWÎÃpZ&‡!’ð’ÏZ 4Ígâ–ˆr#ŸÍ(~4 ìe3‡Òöm÷É1¡0"NÂYë6 È£·/kœÂ8ƒ¢&]Ókvpî¾ÔYþÒÑ”3`ÛÙU;Gs_ÖSGZ¼ÏŽ\a .Aļ”GýPZ›‹ˆb¸HÞÌE þ+.Š¦¹(W—NZí壗6TkPœ*?ñìéuü±æ ¢¾ÛäB³¾ˆÕmfÒvèkÝÃÂS¹ëQ›¹ë®Ò«`ÜÚÝ»ú–ÎL1=Ý;vè8ž”eB€Õ» ¼[×âX¤yå +š á-a[“Z‡IŒçôpõÓHüoWcÕþTœö#µVæ.·Í¤S=i2&B*„¤€ð3Û¨é˜H!òHw_à‰sª‡ŽÆÄvK)2ë›k-âQ=6_t•ÞPŽxÔäjõp°‹ìËZÂI©I8ì:¼‡óËw(Ÿþ´ñå!+ƒ›—ïð^õ}¹ó÷‰„!L9¿öåQ>”æ¹Od…¡·:¡ÁûìÈõ‘aˆ‘`,ô¸Á¡|êÒÚd9!%Cy?êß'Ë"ùüÉ’E›ÿì~™Wæÿ¿,$xš™ÅUàí´> endobj +1546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.2077 672.8902 338.5322 683.7941] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +1547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [445.3859 672.8902 493.3155 683.7941] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +1548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 638.3707 162.0093 660.6221] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +1549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.9981 638.3707 201.0225 660.6221] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.8879 638.3707 268.5287 660.6221] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 485.4889 139.4144 508.4576] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 485.4889 178.4276 508.4576] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.2931 485.4889 245.9338 508.4576] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.8738 374.2304 451.9686 385.1343] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> +>> endobj +1557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 339.7109 142.7416 361.9623] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6071 339.7109 210.2478 361.9623] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 192.4983 139.4144 215.467] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 192.4983 175.0106 215.467] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.9994 192.4983 214.0238 215.467] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.8893 192.4983 281.53 215.467] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1544 0 obj << +/D [1542 0 R /XYZ 90 757.9346 null] +>> endobj +1545 0 obj << +/D [1542 0 R /XYZ 90 739.9346 null] +>> endobj +716 0 obj << +/D [1542 0 R /XYZ 480.5514 597.9626 null] +>> endobj +1551 0 obj << +/D [1542 0 R /XYZ 90 581.3198 null] +>> endobj +742 0 obj << +/D [1542 0 R /XYZ 226.1581 463.4224 null] +>> endobj +1555 0 obj << +/D [1542 0 R /XYZ 90 446.7797 null] +>> endobj +715 0 obj << +/D [1542 0 R /XYZ 226.1581 316.9271 null] +>> endobj +1559 0 obj << +/D [1542 0 R /XYZ 90 300.2844 null] +>> endobj +750 0 obj << +/D [1542 0 R /XYZ 391.2972 152.8075 null] +>> endobj +1564 0 obj << +/D [1542 0 R /XYZ 90 136.1647 null] +>> endobj +1541 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1570 0 obj << +/Length 1722 +/Filter /FlateDecode +>> +stream +xÚ­YÛŽÛ6}÷WèCe fyE)/Š¤i¤hS¿%A •èµYruÉîöë;/–%Yò6Áb!Jž93‡4Ycø#ë¯(b~°NŽ+¼¾‡Ï¯WÄto¡Ûøu·úù7­#4XïöB@§„®wéãÍ–†X`¯}ó'49öºñ®LÛ\êöË2i²hâ&+‹Í§ÝÛÕ«ÓkÌâ, Jë?«Ÿð:óÞ®0bQÈ×ð‚‰"º>®|ÊìK¾ú{õ—ÃÑÝ€©Ùq¦¦ÇÓ£ð*ôìÞÔ`}zEYlÿ•U©ß²½~6©•Œk˜ÕåÇøtʳDÏW3`Y±ñ±÷uC±W~ÙìÉôR 9ÄÍXä%mUÉ ñŠx¦3)‹B&güClÆßIiU¦¹±f_VÆ,ýx8dÐë®Ù‚"Îõ”ã"Õ+VÊ67í;³Š§2ÏeŠÜ8êûݸ]gª/:™¬¸W/'7”ÃT ÷`íuºïÎ hëÎðE ŸjY¤#›X~È0ÊàbåÁ¯N¬)riœ5HíJøRÉcÙÕ‡²n.G+ͺ¥Ô¢áN 9Â$ë ðQ (™ÜgVhÛ—‡R!Œ`‰Ü(XçÆWññ”ËúÅP3Á Xsª}…ćfק¾T÷¦ë}Ï@‚„ñ) ûÑà䜘2±’u™ÝÜCÉÈJ"FCÞANjIÿMéÿi¤Ôgˆáh¸*קoå—Ôp•úFæ…lÒ‰¹ ˜O‚…¹[©%å#4=÷.UµG‘J‰ÁÍN°òKvŒp•ò.É3ˆé± ! ÐἜԂú1šR¯3Жp B9XGÐKùcZd&1*o5ú iÉä1AÝ(÷ú©†ØRÕf'tä8 ý^îe%‹DÚ´ø¤Ÿ‡¦9¥Ÿ!á'qžÄÃ?1K¥£åJ§K¶ÎŸCÁÎŽAâ«E> ÃÎ*Ȉ"B 4`Œ½Rí€ól>Wz²n⪱¸–]ÂR_UO3×N^ƒèä ®æë¹™édÆ›]!S~‰MãTéB•m?Ùš"ÍúÔMy:YŸª?ÜR,rÀp؇ [Û‰o{òã­5BUÓVîRöôýÔ7ÅÇ!â„Lln'4oÀ«·µ±—EV»6òömaK?‡jžå¹þ^ž´W#»fŠ$2;×áêÇ çžyÈŠ´T}Z6¾ßp(ž¢.-”!P$MÝQ^—b2[™Ù•ß¾5½™´½ä!&ÍÂä&‰Æ-ñ|K|ßWt)®Ù-a%"m~i#^? iw~SÚŒÑTqQ³æzð(ÿ2å÷2m « T¡CTÏ3}eTGi׫–D5† +Ô·º[#ÕÒ‹©Z]8+ºêSÞ(ÕÊŠ*ÉŽŠ•ÕHŒ…:Û]È\päN­&¼ôÂ+"ð²Á04ÄSˆáÇ`U[ó:hé(7…pxŒXÇGÓa¶/´ºüÕ)Ó*Òl’ǵßdG©ò`È€ÑêP0‚Ã"ÔCƒa†b)9ùmÀD:Ẅ“¿–ÐÔ¡èÒ©SÓ¼f85ù¯"FE§Ó&§«ô™AŽ5bž>÷¥®Ógˆ,D©ÞHŸçT?›>-œ¤ÏNlž?ú Ÿ³yï8©%å#´þ0`6Ô~Ý V~ÉŽîÄ¢œðy78©õc´>$ä¹üÓçñG–?~öÇ®W©!™¯O»ÀžÔt¢GüÎ'rÅëô±¹W³”Ž Aw†ßXŽØ'2Ø —PZŒî²­le¼Ædð€É`Ã]°ã.çŠ{¶uD]°£.ØR—eòû¿Y +Èwc)þõõW…)-Ûgp”ß-o?O½פ:¦]f’‰üq¾3ë –œ988œ ñ]Y5VgÚÊËý×”¦qŒ µ7žTª®»¾Z‹àpÉýùzÔ—º^„mÀppc=šSýìz4¶p²91eb}lNS9>LÇçó®qRKšGhÓ9 HDÈÃÒë·ò‹ê‡¸ 9 V\,l 'µ¤|„¶t‘ã£Ppq³¬ü’#ÜÅ‹Œ8eѼœÔ‚ú1ÚÅEŽyf!"ü= ñÜEŽŠ“o»ÆþäA m‹Éb08Ž<ø¦_Cº_sBBí§¬E‚…Ý …~@)Ê7¯e!«Ø¥Zëûw¶ñVå×Ö¼Ã~AÙ jƒblî×öªºÚB:þ…Èúýeùøt/‹©³É„—þÿºdœendstream +endobj +1569 0 obj << +/Type /Page +/Contents 1570 0 R +/Resources 1568 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1565 0 R +/Annots [ 1572 0 R 1573 0 R 1574 0 R 1576 0 R 1578 0 R 1579 0 R 1580 0 R 1583 0 R 1584 0 R 1585 0 R ] +>> endobj +1572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 662.2363 139.3246 684.4878] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.3134 662.2363 178.3378 684.4878] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.2033 662.2363 245.844 684.4878] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1576 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.5599 561.3549 409.5084 572.2589] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +1578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.3939 427.7347 513.9963 438.6387] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +1579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 382.8338 142.7416 405.0853] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6071 382.8338 210.2478 405.0853] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 136.5223 135.0008 159.4911] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.9895 136.5223 174.014 159.4911] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.8794 136.5223 241.5202 159.4911] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1571 0 obj << +/D [1569 0 R /XYZ 90 757.9346 null] +>> endobj +805 0 obj << +/D [1569 0 R /XYZ 384.3631 621.3448 null] +>> endobj +1575 0 obj << +/D [1569 0 R /XYZ 90 604.3735 null] +>> endobj +744 0 obj << +/D [1569 0 R /XYZ 226.1581 517.3041 null] +>> endobj +1577 0 obj << +/D [1569 0 R /XYZ 90 500.3329 null] +>> endobj +804 0 obj << +/D [1569 0 R /XYZ 231.9163 341.9423 null] +>> endobj +1581 0 obj << +/D [1569 0 R /XYZ 90 324.971 null] +>> endobj +749 0 obj << +/D [1569 0 R /XYZ 226.1581 249.8568 null] +>> endobj +1582 0 obj << +/D [1569 0 R /XYZ 90 232.8855 null] +>> endobj +1516 0 obj << +/D [1569 0 R /XYZ 379.3917 96.348 null] +>> endobj +1568 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1588 0 obj << +/Length 1348 +/Filter /FlateDecode +>> +stream +xÚ­XÛŽÛ6}÷Wè‹ Ô,/¢DîKÑ`Ó  +¤‰û”W¦×FdÉ•ålöï3I],™’»Åk‘ÎÎíP"†?HÄY—û<3Ûs–èÑ †’ÄrÎÉâËêÝìõª6lqqmößÙ§/8ؾw3Œ˜Îþ®õ˜…jÃÐñ8aSÎGa×ÇC¾XŒñü—úŒ1Í”=óþøõ¼9~}Øg›Ï˜ã$ϲ_ÍÒ1/J˜ªN +&XËø˜r„–•‰W°ÙzÎüüso=©Õ©¤qd™wäÒ;£t¤ö[RžÚ'E"6µÿúÇúpL•¯ê=¦C$ áq$ý]ä²Á;1 q³KŽ JzÔ +~€ËZjÌtO›6]Å#X†N¤ƒà’Wk÷†BöM__ÛH÷ŽXbÛoͯޒ6¬ƒvÈ‹ì ãn,lsWäç®bAÄ\rbßõ?å˜l}}¨ör½—ÏÕ(“]ÍÔ0–ÚYŸ©m©ë™J‚X|I Ù÷tœá–S‹’”÷ü Iõ0HR»ÿ•¤º&Ô¸žÞÉ$åuNCR~ûŽ¤:æ_BRuê2‰x8Òc[BžÄå…îî9Þb=†oî°=|ƒ ÖIi|…:åé÷Eô3Ød¡×7µÐˆñK]Ýk4ÜÜac>¥ÃênG€ÂiÚn·U…Ê×èžÍ¯ñ…Nâ­nŸºuNïб¿CŸ”y»HÕÄ–üQ]{£Ø¬Ëõ#ôÂîÑAñc¹«ŸíbvYçN^VÅ¥›V»½~Ûc¢~ùÓ#9OÖ™™Î³ôÙL=(3W¢´ò*Ìí­xõïÊÌV- f×fhcµ Ž~*x0¥ÝuÌÓÔHV5 ³Y%ù¤`´d8¶×2XÖóæép>•]tG€bµWðÜ™ ’œ“ê̵£tܬ݌o;W<—–õÖcºNT»[oºÝÚ¥[Ǽp[è­&ï»Rx—ð£·aµ¥®w,3$©ž»k‡x¸¶‡d˜kk1 Eçqj1 +CÎý篥нâëÐHtÍ6wüVM¹:«£Ö„kŸ Ô—<Þ¸RŠ°ÄÑH\[Rž¸²ዉLä3}3õrQ-6™Œ¼jØhÄ~OÛÿÁGã—Üøy›O„—OšÖí˜ÊÇ(&Þž¦‘ÁØíÿwY´¾Úm;•|³+O;¶‹[P8¥#ï"—h¦ œ4%X—_8 "a<˜|\O"½èãgõõVÀÂ:×Ìn½L¸›„>ê•©b]“Œ;ï_îáæÔ³jñewÔf+Åغ¢êPîö\ &w™ë>ÿñüØïÍúËì€~¶ù:Óendstream +endobj +1587 0 obj << +/Type /Page +/Contents 1588 0 R +/Resources 1586 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1565 0 R +/Annots [ 1591 0 R 1592 0 R 1594 0 R 1595 0 R 1597 0 R ] +>> endobj +1591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.486 661.9112 256.4846 684.8799] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 604.5791 139.4144 627.5478] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.486 476.2657 256.4846 499.2345] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 438.4462 139.3246 459.3576] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 220.9948 139.3246 241.9063] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1589 0 obj << +/D [1587 0 R /XYZ 90 757.9346 null] +>> endobj +1590 0 obj << +/D [1587 0 R /XYZ 90 739.9346 null] +>> endobj +1515 0 obj << +/D [1587 0 R /XYZ 226.1581 577.8727 null] +>> endobj +1593 0 obj << +/D [1587 0 R /XYZ 90 557.7368 null] +>> endobj +1517 0 obj << +/D [1587 0 R /XYZ 206.4623 392.0581 null] +>> endobj +1596 0 obj << +/D [1587 0 R /XYZ 90 371.9222 null] +>> endobj +1484 0 obj << +/D [1587 0 R /XYZ 226.1581 192.2311 null] +>> endobj +1598 0 obj << +/D [1587 0 R /XYZ 90 172.0952 null] +>> endobj +1483 0 obj << +/D [1587 0 R /XYZ 226.1581 96.348 null] +>> endobj +1586 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1601 0 obj << +/Length 2329 +/Filter /FlateDecode +>> +stream +xÚ¥koã6ò{~… +ˆy|KÌ}êí¦Û]l³¹·À¡-ÅRlálÉ•äfóïoø´^¶A`ŠÎ g†ó"™aø#3…g‘ˆb\ÎÖû+<ÛÀô‡+â–—°¾lü{uõÏŸ¨š)¤$•³Õ³Á ”ÐÙ*ým.èbIcáùñã= ž„íà—2=î2;~_®û¬h’&/‹Å«OW·«@×±%˜$šêŸW¿ýg)°÷é +#¦b1{ŒˆRt¶¿â”ùÝÕÃÕ»`6ŒNö–ãQøŒìé$’ˆ¥Å’`ŒçÿH³ß1¦…;Ó1?<«ÁóMš4É.+~ÇÃ?Ñ̬…$K9’”ÄójëÀ®M³µãòÙþ&Å‚ˆù«›<6Ëòyù”©Ð´ìH“Ó Äó ˆö´jX0_Í6qóÛ¤vÈ«*_P1ÿKÓÈNЉƒwl­Ë¢ÈÖZY¨¯­X Lâh&¥D1IÉÚ-ÛPCyÇ +aÌW£HQndsW6ÙMŸ*ÁEŒ’ËdÔݶ6ŽPD˜8aë(N¯½9VÖ^Íä!©’}Öd•ýüöñþñÛ×ïÏ\Bæ«…b04«ûcíÿäpÖ™›x.+/ìÜéäùX¬O„š²»3+’§]–EÀçpíW"2œ¿·†™Ÿx½ïro®B’®™é-»“-£-rv«f„ %u†Ë³p%˜»?uØ\ñž®Ã ˆNˆq¨ê¦:®›ÒG—ñL€}©Ü½ÖKÕÆÁ|m«ßÃ/Û†f7Ä«9Ò÷YÛý€ ŪÇDßòÐ2ámÊ}\š0(‚,B wxƒ;yºû}F©ˆQL„x«¸ü„¸†x=Kù!IÓêq 8F@À è¢ÌÔ„ÐØ<¥ç¥ºR#ʉ­² Ž—aĹîzp †òè­¢ ð¢â5¢$rD†1CŠ +6!C5$Ü ‹%âDvéʪ‘ »‰#áds& öÂÔx¢V`{×6RïÉ\¼ª²=¸vJï u^lìpõîÞxRëê°qv’rî¼³q—’·Ý¥s?{¬M4ƒ‘! +u“TJìøB}/vùãºÛl„‰ú­sí%=b#/öt`-œ0‡C ð›lþÑ3°Û•ë¤Éê?"ðãkÜ.1ÇmsÇ ÇÈSð­–›JÇœk˜¦R‡•ÚVô ¿SŸ‹TÀÃïnïVö ¤Ô¸“chЬUÖTIQïóº>aÎ÷:ä¥Â¨{ÚÖ ó—|·³£u³ÃÄþhõÀjí @–²Ù»ô†8‹".6j¿y’ÙºµÂlþî§W`™¡] €Ïä!«ò2Í× ´W7S•ë¬ »;ÞË6_o½5ý.<÷ñ=-}~ɺ ˜ Ÿ#©ÏÏžCŠqÊÆ+4£Ë«‘˜ÏÆZ¢xÊSyøe{Ã0EâíÅ¡v²Ûa(b(—Ôc¨ï·<Ôlš³I)×Å çñ头 u>)å@Z¼!#½H󔑉Žf¤ìto8dø'Ÿ§¿ül² 2yð!É.×Y¢. mðÙþÖǃu^—Î@Ív@yªÜÞC战’—ÍOcíêôÌ“#äJ#ãÊõ·N—cwåGí¼Þ­>þzûøåþö®(\†šr0Š¢QÂæ +‰XÉ©ÔÆÃ/Û†bâuV^´pÁbD ã=.z*PS´Ø‚iƒÈt‚¢”ê +ï!/ÖÚ'ðP=0Õ‡\ûé?yeâ ÷..txqÜ?Ãܹ+5¸¼…Éš]Ø–ÕÿÀkã@Ê* ˆrj|7ìËГ֒ª:°c£{OŽúf1«gàŸÊ®ü²½a(Ñ!^-´ŸWºDþr÷pÎcéÆ@—“±ÎÁeÒ§ûK’‘²ÕRY ¼†v«PK°‰ŠÆ/Ûð#ÔûX5ñmSõ¹3.QD¡ê2Ò÷^jŠ>X0v½ÓûðÑbgR½. å9뺙R°•w +ûó.¼ mù‘ú«ÓÇÂ"§ ËRBÕi¿þÜT ©´êÁjþ`‡×vQôšÈøš\S-Ù°]!.¹ “Ýý?¯œ-ÆF3ǨPCRM5YÚPçãØ.’‚ZÝÜëëí;õùà6ÆÀ… 7à¤S„„KÀzEZ‡pŠ¾‹"ð@#"èÚ'C„ÃéýߺÔl€¥vÛ$! ë–/ :/3([ˆ d"!hƒ]’•kWlºPM“u@Cª]AQ…Tu]ª®©Eäò)wU›‹'úvûx"\ü07¾?DˆÂÇqÁP(Q%‹Ée›oC·yª ËVÌÚü׬ÑíR(».üEê'å ÉFƒĨ@tyár|å2å­Lù>ºê•§¾\¹«ͤk&¶öŸJÜ­%™{ð»oŸ?Û‘Î5¦¢!k¾»Ô!KIè|e›žW(ä2”N9±6Ô…rŠHìœØí÷dØe—´y4G*&†!‡Žë€Ãq{0Íb½oh=ômŽÃÅeѨ)Êl¶§åÒa[U XÒ>õ mU?Åǯ)Ž³§õ.ÛŠb¨u@n—Å &ȱµói˜¾yüæ¾9ÇÑå¾ùº×®òÎæ9«2H×M–Ž»Ù˜Ö !M¸¹Ùijfyk¶YLwF·:“MíÖuiõîó—‡Û÷f‚„ íõ/wwnÙY@ÿÞú]õh·-°Ÿzîz`ÏuV¤í£83³¯îÇMzhü=‚±Qû=€º÷€¿LôÈÓÓKÛ.¯›¬8ßü&J &8D0 $ÔTă/Ûð#/}¬gÛµ”(˜\öèÛ²‡ÒíDJ ‚d’u ÿ­~-áPn +wŸa\Ô˜¼–phÆúš<ä?Ýv¨ËÐØc.d+-Ž1pD¤ë×¼SÇ°…°N´ÿ³Øt@jP»ÐÀŠ>ꇬÈ*¨ºož¿øÁ'Ý¡îßPvCÝ“6ÅXº';eýKÞðíÛ_—÷å÷×MVŒUœ#Rú?‰«cŒendstream +endobj +1600 0 obj << +/Type /Page +/Contents 1601 0 R +/Resources 1599 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1565 0 R +/Annots [ 1606 0 R 1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R 1613 0 R 1614 0 R 1616 0 R ] +>> endobj +1606 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 575.1408 195.0552 586.0299] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.8193 575.1408 315.7315 586.0299] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.1284 575.1408 384.9216 586.0299] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.5642 496.9047 374.8887 507.8087] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +1610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.2809 446.4365 239.2097 457.3405] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +1611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.3426 434.4814 513.9963 445.3853] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +1612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.5067 422.5262 147.7231 433.4301] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 227.0741 135.0008 250.0428] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.8662 227.0741 202.507 250.0428] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.3577 117.9412 220.1509 128.8303] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1602 0 obj << +/D [1600 0 R /XYZ 90 757.9346 null] +>> endobj +1603 0 obj << +/D [1600 0 R /XYZ 90 739.9346 null] +>> endobj +1604 0 obj << +/D [1600 0 R /XYZ 90 620.2512 null] +>> endobj +773 0 obj << +/D [1600 0 R /XYZ 90 595.6504 null] +>> endobj +1605 0 obj << +/D [1600 0 R /XYZ 90 595.6504 null] +>> endobj +771 0 obj << +/D [1600 0 R /XYZ 286.4315 154.5275 null] +>> endobj +1615 0 obj << +/D [1600 0 R /XYZ 90 136.4373 null] +>> endobj +1599 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1621 0 obj << +/Length 2589 +/Filter /FlateDecode +>> +stream +xÚ­ZY“Û¸~Ÿ_¡G©ÊBp’„󴉵]‰=ñ(O»[S”ıX+‘ZŠÜñüûtã/‘ãJÊ5&6º›_h4Åþ±…¦‹XÅD -v§;ºøÓ?ß1÷x Ï×m‚¿mîþò®šèˆG‹Í“á1¢8ã‹Íþ—eD¢Õš+ºl>ÞÛAz>ó]Zçea'žšb‡w¸Õ,ÖK%V¿m>ݽßÁN/%"†bÿ¸ûå7ºØƒ~Ÿî(:Q‹g¸¡„iͧ;É…¿9Þ=Üý;ð±Ì‚±×“^-ab±I˜–£T‰"”%1 ÁaLñq$M(ñ"‚ИJÇç²ÎÞöߎQNbÁù¢Íp 6PÈ-¹ŒÆ$fB]¹¡à‡¼Øe«µtYr€Zp·óÙŠ©å÷s¶«ÝãúàVœËª¶£¢9m³Ê>Îݺ"«ŸWŒ.Ëêwû`ûR»…eµjI—oà^êej§w &ÿDYu 4—¼øÖGG‚;Å*’=tðQõÍÑ|mÑÓÏà4ä‹8}جX²üòùáWª(ü±¾:Š2"Y¬¦¨f”PT’˜2ÞU¢¬†.âJ5aÑ z}%ŸrK„’5Äá­WZˆüXt”è{©§™-"yÒ–Œ>‰Ù ÈvÙå’V/«H-I_{Q" ã²Æ·µMm•‰é¼IY`‚„³+OT§ÉÏÇüRg¢ñaã<"1Ààß_oª&!Q1ª¦sG›êv&2R±Qéƒ,­ÒSVCÐÜÊ"lT[Ù„hN8â$ U1 ¡/ŸKrKüU¬#yÿŽpM…©ŽÔŸ¬‡°h½Ík;¶™ÉøËL8Î ïK­Ì„63áÈf&5åbõ‰ÙŒ[Tv„èÖœÛè~ÿ==Ù”'DKÜ¡$ _›†Ž&@fÒ@v<–k‡ÝqOvU!yRØ('AòDs*ôy¡o\±Pì¢N’¸Òm ùœ}®¨DÁ…F^Ÿ³ˆh +¦ž|ÿ@5#{È …ÇĈñL 8Q<²>ô.û•R^ä×**uqpÌ çâŠkçëOöŠKŽî!ä7²³" ¦c1‰¸´%Ê×ì)«2¨\BþÏÇûÇ~|ؼÿ|ÿåë*¢ËÍÃôº½5{5¾ô|é1­ýã¬|¨ëóè4¿8KthŒ½€',±¯>‰ bá@M½:äû€Àã%ó)”%‡b 5" ÞZž)IðCE¨ÂRuòfLdÌÉ>­Ó]™‰<ÏçO]õ7yD'žß1+Æؙ䴲ÛwÏÓÖê !¡†Ä<,µõ´‡€‚ÑÔúŒs+Sâ`×T`] û4:ߨ+lL…ÉcÞª0ñÎÏ6ã$0ªK{u†€QÙÔvº'P§PaÅøídõ@â'{ÝüýÞð“q´üR_§ë‰Ã)PRÇ᮸¯DíÌ6˼º®J‚òwtˆlÞò¹R>ïèá„óTº}([qåx{äÎU‰õ Ö¹ÉÔ}éá¬XVÞ•žÊâ!J:ÓáŒ}9C·«›ôˆ0à©úò’…µ'|ªMUC{ÙÁ:KŽ&²l-eŒjkö×=V%'H>{;¿}ñ˜ҧô{~jN]m6 ïØ}æ]gŒqq +T*Ñç ˜XjnÇ'ϹшӦ.O`ê{ox¸«Ê³}hué0¿”vƆ +~¡#gè@À£ÊÓÚ­ï)<â.’j>1®Ñ5µ¶†Ä¹ý=N+QH "_I5»Éyúu{ÁÈ.7àëkÝÓåfÙÏ¡¤—j L³óT3*p(ýÁ¡£® +6 ‘­CƧmSÌüÑdÕ‹{h"-ñ‘»£*ÎxËàØd‡$d5C–ºg×ÐÀ;ë?N¾Ýv¥S³ã¨Ö†7 +FÃ΃ÕÞdÁئº]0 +8‹P•èÙ¦›{-ó‡rGËÀ@ÖÊ㜶ó8ÜíKS0½,ÊÚN}kàdRÔYfoÐÜo 0¸¬˜Kƒ<˜„è9mªüš0Ý\må.ûìRçEj·žµ€]ýãSOã «¼öÇòâäæÅ•x$µ رàÑ5etÚVÝœ³u$cû…!xÎëÃ5¥ô Ó„'1Ø<¢ÜNÍÄz _· M:äëc½²žÓµ”èK¤÷ëêÔs®@5§I$ˆÒpÎïhÒÛmföE“—³Ú$yæv=›…G,`¢•+Õ{ºÖ°ÝæÚÛå±®)íµÊ®o¨u®ePsÝ©íþ×nXÞÎ}$µžÉ-ª‰LÀ9¤l—&_ÛS`*7ô5o²vQÛmÀÀ#= @ A Û$÷¢PõväþäþP)ûó¾7戟ùîàJëK—z›…Êk˜Ô8ÛCBÎd×Õ€žªUÄwზJMËôD™½Š9éÈÜx||-fY~Ël¯bËäG€óîÍUL˜žkƒµ©nÇ8 ä ×›oŸL‰þáöÉPÃÑ}3™Ø8ì둦 v=Y2­à:P͉p³ÇȾP `­UOèí7÷ôsâ|';&,†±`bæÝ=՜𷙞‘Ö°jñj<ýœ¾¨Çs¶Ýs ŽaãHJl«iÕŒø!·vãH&?Ø8bI’ü?:G¦Ã»6&“~CÇ<ƒøê&ŽtMœK]5»aó^6–îX¬I¢¢¹D~Ý^0Ì@C¾¾ˆjöçGlƒ [ƒpÄRq_“AkÐQ åwšMCnÝžSGÙvÏÉ«XdÏ××@×$Â/µòµ¨úÔ†|½Jù9Ýï«Çý„ä°«16Z šAM˜¸`7Q»Ù©«¬~#Ø +·ëÒñ,+’˜$‚F¯E2ÐÏ 9äkdÑBÀ…D‚ñiÕPpÉðcÓ]Á•ÿðÓ78 “ÀÌtóÍQ™ô».5g—#üÇÓëqMèw÷?Òy¢}bØ_¬Ý¼‘×Ô^®R€ÊJÙ¶8dJW9õØ +x…¥½¾“‘p<–;Ó22wN“¦p­ ˜ÃçG;ôÀöûH¶Ã¡ÝA”kÕÒf;ŠJ/?ØYëp¾¿Ó”(Oe¹ogÈÅ(ƒ­“±;”—ÌϽØ9rºôËÌý +OÍã¹OÔ~Ý^0rvðmg·m^ìoa¥Š ukÞÓ¨žjF©4‰´]=ÐÚZÛB½†ÿ˜ :ærmàJ:T¥Í«›êéo~½WpŠâ°¦«H¿óT3J0%Pt5i‡9t_üyÁŸÃ¯lï +”Èrèį+îߎýˆÁ`ÜŠt?#PÑÿôÛ ƒ|K˜è$ãÞO$þ·MN Ôõç¬È*ˆï}÷‹É¿üà†_ãnwWú–‹·œÚ;N©ûyÔÚÎ7_¡ÝiïÊï/߆'G8Žàó_ðØÂrendstream +endobj +1620 0 obj << +/Type /Page +/Contents 1621 0 R +/Resources 1619 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1565 0 R +/Annots [ 1623 0 R 1624 0 R 1625 0 R 1626 0 R 1628 0 R 1629 0 R 1630 0 R 1631 0 R 1632 0 R 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R ] +>> endobj +1623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.7601 717.9621 502.4137 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +1624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 706.007 136.9336 716.9109] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 607.5313 162.0093 629.7827] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +1626 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 607.5313 217.8992 629.7827] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.6109 416.392 236.4535 427.2959] +/Subtype /Link +/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> +>> endobj +1629 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.2914 356.9954 361.4951 367.8994] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +1630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 254.0374 139.4144 277.0061] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1631 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 254.0374 178.4276 277.0061] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1632 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.2931 254.0374 245.9338 277.0061] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 176.8276 216.6541 187.7167] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.5252 176.8276 343.4374 187.7167] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1636 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.8343 176.8276 412.6275 187.7167] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.7656 122.7745 457.7454 133.6784] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> +>> endobj +1638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 110.8193 151.6186 121.7233] +/Subtype /Link +/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +1622 0 obj << +/D [1620 0 R /XYZ 90 757.9346 null] +>> endobj +743 0 obj << +/D [1620 0 R /XYZ 350.0021 547.1921 null] +>> endobj +1627 0 obj << +/D [1620 0 R /XYZ 90 530.476 null] +>> endobj +1520 0 obj << +/D [1620 0 R /XYZ 247.4281 212.04 null] +>> endobj +1633 0 obj << +/D [1620 0 R /XYZ 90 195.3238 null] +>> endobj +1619 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1641 0 obj << +/Length 1580 +/Filter /FlateDecode +>> +stream +xÚ­XmoÛ6þî_¡}ì!âø.)Ã>lK×tiÖ¸ŸÚ"pd9fKž,7 †ý÷݉¤¢w·C ¦È‡wLJÇã™GáyõHHíÅ»õî ûùŒÙaÆý&à×åìÇßyäE$Ò\{ËM%A3¢8ãÞrý~®äÂç! èüøò +šŠÎ¡¦ñG¾>nÓ¾Èãã.ÉÊU™æÙâãòÕìÙ²ÖkÍRB3Ôú÷ìýGê­Á¼W3JD*ï>(aQĽÝLrá>¶³ëÙŸµ3PMZä°² ÏÇ.¨ê¡CE(  „Ãòþćö`z@YŇ$AÈ™ç@ÈÉ1ÝߤûÕz]Ü” _S:ÇöO¸jíGDj©*ä¡,Ž±Åà¬ãzçYE)¢%“žÏ`I2¬&üPXþØH÷¥XPÐ +I;׶çUô{lœ,âgL‡gð†Ø‰±AþÜ62Kº²^,ß\^c'ãB*7&2Ý Ì +þÎJ¾|÷ú5N0_ÿˆZs·i¶®¤ i—míþ€œ»>è¶[ƒopŽAª}¢‰ê’0"” +%""l!j¼Z0p„bµKʤ8œwõ3ÊI 84 gHî[¢xÃF0ð‡†¦Æz&ˆ0MSà@ˆ¦b)“T´/ïm8p±ÍHó‘oÌoéPE²ËKÛ¾Ï%'1"ÕpPkpõ„š¢Ê¢*¦öyQö´r  ÒbZ«õ´¶yÀSè–Öå•%U+;în“´ÓÌö%å:X^üe:nÝļXZ©9óy*Lû|5îó +ð!Õ&ò¼MÊc±`jž:<›Ö^£Ô‹¡Ý«aŽÈÞæAXtG+Žwò¶µ~J}Wj3V¹ˆÞ2#„uQ~bñtJ9P‘Nß²£'· +¯É!ß~ZhˆM}"JÂè tJ{W*'O)S%.*š³s‘| ”gé“w¯lìݦ™unˆöµ…S\º GŸÄÄå>, šKiCâ&)’,Nì¥w_æÙÌWÎêÙuà8?ßbä±]ï^^ݼ»¸ºùíÍååucc{øô=îì>º«·'nœuÕüÎái‚Cô‘ææÒDAÔY¥óOÕ”6mɶé¡L2ǘ¢ÝmçT)`÷¤d„ŸŒÏ5Üoàû1¢'µŠÏLßô.w.ÀQEG}Ç릧³•Pp &àB·tº|¢câh @<‚ª<Ø€š^ìCÞE„`h$BF&©º.ó½sNä6Íîl¤Ï;ÿ°OâÝÔm6Z3›E®…šŽÍMÔxlR`O×%ä4ãqyRíS:Ð×;qkXÅT +~¾ð…@NR8€‚GóÍ1³·ö'˜­|žJ;\‘‡#&ÿ–˿p8µóZù˜ü ‡Lþ%)F]Ø´ùÊtÃÉÂÎO¨ +‚Ú‚ã7°ÃŽ„š;€"¦ÃÎ豨ñ'xêËEž^,,œÛ‚Ê9cÓ(³àV äôfÕ¨F( +-nm#ò~}Roª†š‚†ò‹¯çæ„)gq0Ôß +ÌýKZ‘H¢cJï’¶¨Sà%ÍöþôàÒ4¸+«â±º&G«äßd¾èE£Ñp :“µ¡)©«í¶JíA˨"J' +ê&j"ŒÀÍaïk +j6hÀT`éZ2\%Ö°fTo£GÔ7Ê X»¼€ÀO¡«¥õûÞ¦ýÛ´ü¦E"Øc~mV¤Xø-²"Lj^¿¼^>»¼zóv¡é|yM†^ a2,À)ÐÇ´)»ÿ÷ƒbõ Â&Zž©á´ˆwFp˜(5¯MÁÕ> endobj +1643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.6997 570.6986 183.6983 593.6673] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 533.0943 139.4144 556.063] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.2799 533.0943 191.8873 556.063] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.4361 438.1884 231.2292 449.0774] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.7601 376.1104 502.4137 399.0792] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +1649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 364.1553 136.9336 375.0592] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1642 0 obj << +/D [1640 0 R /XYZ 90 757.9346 null] +>> endobj +1518 0 obj << +/D [1640 0 R /XYZ 206.4623 473.4116 null] +>> endobj +1646 0 obj << +/D [1640 0 R /XYZ 90 456.6845 null] +>> endobj +1639 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1652 0 obj << +/Length 1881 +/Filter /FlateDecode +>> +stream +xÚÕZËrÛ6Ýë+4ÓW«6ÊMuXî7.â^°a(· Ef¾®UÚÊ.É…Ïꣿ<†ÛÝ~Xa+Ro¶wá‘ú±ªüó«Íí³Ûj_mkÿÓ¢^t¡îõaÈðñé$ BÈ µˆ@XqÞTå¦z‡1ÝV‡3ÚD!Lõ¸tc@Û§q£,gšŸâ8Âw”&:$Ø>Eƒ;TŽ×ÊÊ`)û¼?¬|MrnUA»[û;ù;N#àsi$q]ÇÍÇÍÃbµÚ'yhƒ´á&Ó•cO¢5n¸­þ~lÅâ.qT&Q™FefŸ%iÇY?YKL4˜Å)Ÿé¿|£›Ìžj›¹äMævÀÊèSP—ù/Öbõþ¸ô^6 ƒCS)¦fÕÁ»âÖÖQÌv÷Á0Ç}ðH]ÐX=„ÁH1ÂázøjfG/;°Œ¹C(…˜n€;:XÖq@ÀÞàŽoÞ}òwdÒHâžÜ!ÏÚÃp¤•ë#°*GŸDû¯öˆÊ<*‹¨,£²‚ì$$E˜+^f§ Ø©ƒvú*‹ UmîÖþY"¯?n|ùq×<´&º¿Pø~‡1…§:ç°Ë;, +9 æíó8¬G^â08$nþù°Ü=¸µÔÓ0!jó'œ¸5:T&4ZpÚª:ÔÞ‡ýô¥ˆc. +ý¡!?X뇇§Â™¥Þà®^WûQô¸ìjŒs!¿ÁzÔÜh„ÉY ƒe-,á èñæ-Ð'/°@&$îÐ÷©úí0Ɉ‚¢Ce2H£ÅóLo2 À5EvXh€  ƒµ¸X´Òõ2ÜJXAqEÆT^d|·ÂGÖ(&'îË‹; +‰æíÄóˆ»G^"n8$î@Ü÷‹Ã§sg alŒ•É"6*p_viZç ¢e¡Ö#4¤õû­û¥Í¦^·¥mU»:`aÔex¢‘&,ëÆ ,àœP"ÒýÇÌ%òsF=#þth6ïa&ÉÈîA0ëüª¦Tó˜!®„*Ô|„†4`.µW®=š\vG¿X·«—NÐváîo[gøû»ÛìŠhÔÌP$ˆÔ±SE2¨¬¢p€`Òà€˜4ï€sà†Qû £h°þÝþæÆŠ}HèL2¤-zŒ„ÞÁ\¯7Ë+ŠgŸw=³wÛCP÷²®.!tAmK0}‘õc ª³J°¼Ô£€ÖaÞNì1oÚ{ä%r‡ÓHâöOǶÂIñ0}­XóÔхšÐæ Ðü¡ZËÊÝJ˜2l."wj ÒZÐŒÜ;XVîq@@îÞ ÷o^î}ò¹gÒHâöåÎFå·B'÷ }­TîTs$¸4erÑ€Ü; ÷z½iß>^TñT1$ôe2TbD9Í +>Àò‚B‚‡y;ÁǼ‚ï‘—N#‰Û<<Ø +'ÁÃôI´bÁs×~…/ë#0$wÔî>i…饤n÷ò†_æÕ<¥ cXNê–—z’:ÌÛI=æ-z¼DêpI\—Æoó+¢gþñ&IÃ.²•`4Ó•#O¢¡oA•c¨$…*?!•{”ÿ ÕŠ¨ög>+}9.¶õ¦~:÷%j½ +z÷i×› ÂËùðƾ·Ï=‡îMœk7@0LÉEf¢12BæìÑÁ²öˆöÈð{ôxóöè“Ø#“F×¥±­wëä” +‘1"L¦þ•#Vé¤þëzäpѵöðÞ‰šçñy¤Á‰B)’|diÖè"@º°¼.FÛÙš0[Ìt[PE.»N=qvG"?ÔIzL!‰ Ó£ˆ¬òéqŒ°¡$›^ÀõÒë:·¯*‚¤¶»°¿:TŽXr÷ŽdÐ.nÀMyâÚïxÕ>›Á0îxÏl÷•,Wõ€Ê{WÙ%Eø«;Ù¶ø Í6î?Ã¥›ˆ Ì7ìÿ1áiç²µ)Æg_hcÛD¶_›¿û€g36ÙÑÎnÿi|€S"ãÞ}ùó›®ÚO,/ªmµ_Ôádb8«ù*^ºÃGA¨ÿŸQöŒâöÊVÈŸEiNB†Ó“ÝyP‚pÿØãÍ»j;lNwú4¤µÏ¿èKm.endstream +endobj +1651 0 obj << +/Type /Page +/Contents 1652 0 R +/Resources 1650 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1674 0 R +/Annots [ 1657 0 R 1658 0 R 1659 0 R 1660 0 R 1661 0 R 1662 0 R 1663 0 R 1664 0 R 1665 0 R 1666 0 R 1667 0 R 1669 0 R 1671 0 R 1672 0 R 1673 0 R ] +>> endobj +1657 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 613.8755 190.8912 624.7795] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +1658 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 574.2326 195.8725 585.1365] +/Subtype /Link +/A << /S /GoTo /D (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) >> +>> endobj +1659 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 534.5897 215.1402 545.4936] +/Subtype /Link +/A << /S /GoTo /D (a00148_g769512993b7b27271909d6daa4748b60) >> +>> endobj +1660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 494.9467 213.028 505.8507] +/Subtype /Link +/A << /S /GoTo /D (a00148_g210e629f7252e4bc8458cbdf260b3318) >> +>> endobj +1661 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 455.3038 234.0589 466.2077] +/Subtype /Link +/A << /S /GoTo /D (a00148_g6b16e0bac41821c1fbe0c267071642f0) >> +>> endobj +1662 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 415.6609 216.9034 426.5648] +/Subtype /Link +/A << /S /GoTo /D (a00148_g969d7fff37a979737da045e0d538a9bd) >> +>> endobj +1663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 376.0179 195.8725 386.9219] +/Subtype /Link +/A << /S /GoTo /D (a00148_g22fa0681cd463191d7a01fe85d86996f) >> +>> endobj +1664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 336.375 195.8725 347.2789] +/Subtype /Link +/A << /S /GoTo /D (a00148_gffcd2fbe181e2aaefbf970551c302af5) >> +>> endobj +1665 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 296.7321 195.8725 307.636] +/Subtype /Link +/A << /S /GoTo /D (a00148_ge23534479ead15af8ff08ace26a47fb5) >> +>> endobj +1666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 257.0891 195.8725 267.9931] +/Subtype /Link +/A << /S /GoTo /D (a00148_g165b603ec150e26efec7be199c9c2901) >> +>> endobj +1667 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 217.8198 180.7494 228.3501] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +1669 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 179.8606 169.3122 188.7072] +/Subtype /Link +/A << /S /GoTo /D (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) >> +>> endobj +1671 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 119.8657 138.5977 130.3961] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1672 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 119.8657 162.6772 130.3961] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1673 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.4928 119.8657 191.1801 130.3961] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1653 0 obj << +/D [1651 0 R /XYZ 90 757.9346 null] +>> endobj +1654 0 obj << +/D [1651 0 R /XYZ 90 739.9346 null] +>> endobj +106 0 obj << +/D [1651 0 R /XYZ 90 739.9346 null] +>> endobj +1655 0 obj << +/D [1651 0 R /XYZ 90 719.3112 null] +>> endobj +1656 0 obj << +/D [1651 0 R /XYZ 90 633.2198 null] +>> endobj +1668 0 obj << +/D [1651 0 R /XYZ 90 197.2909 null] +>> endobj +1670 0 obj << +/D [1651 0 R /XYZ 90 138.8364 null] +>> endobj +1650 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1686 0 obj << +/Length 1900 +/Filter /FlateDecode +>> +stream +xÚ­Y[¯ã4~ﯨ„„Ztb|w¼ˆî°°ìö ÐQ6MO#Ú¤¤é.çß3Ží47é²hu¶v<™Ë7ãñŒC–þ‘¥ÆK%ÒŒËez\àå<þaAÜrëQ—àëÍâóï©^j¤%•ËÍ®á ”ÐåfûûJÈuDc¬ðêòÓ+ +¼"ÛÁÏåörÈìøÛ2½³¢Nê¼,Ön^.¾Û´rZ‚Ib¤þ½øýO¼Ü‚z/1‹å{˜`D´¦Ëã‚Sæ'‡Å›Åo-»Ð¼²N6¤… Þ> +æ*kžD +ÑuD0²?0¦Å-ƒ@’T€.Œ]!âX}²íñúq³&ñê×_Þü.à?â²C«Ù7 •ãÕ»5«¬ªô2z›»ñß—¤¨óúÙÎvUy´£}yvoŸk§@Ym³ÊëÒþYý~MÌÒ_aj!VȨi# +IÊy£ØfŸŸ×ruLÒª4C±òNU~Lªüðl_ÎÙÖ.ìÊÊÒ¾]yñdIáù¹‹#kY°ö˜gVC3rö˜åº´zö˜…!ucO$©Z}odƒ>Þ¸&:Hc\H;É»5+0,y{ÈÎ$ð{°s€Ã½»Ï†{„j†”ÁXr$vû׬TOŽäu'Ö[ò¨Coã½T#®ÆÈ} X›Pô‘ØÕƒQ€ƒÇ´¯Ç`§µDÓÒ刳X÷¤ï.EÚ쩉¼ž%[4T#“X-%xG*¦ƒjx¢¨K5Îi±F3àE„±¶žþîŸäxg¾J&˜"NŠæHÇ„ÃpÚK+¤! »@µt-™Qq»OO)JG +²qO+µTs¢G܌臑PÎ 7i1zÛrO?'~Ä·‰Ðìp(#·­ÛZ"©õ ŽhN…!¯ ÃjŒù½´ô3ÒÇ|ø*;—‡wk 9kd;eQ-Ø´ñ-Õœü·°ù Î7%åÝæ{úYñC¾FüùXŸ†K†„TrÆpO5'yÄÍÞ¤¥¤ØŽ¤C¶áTÜ€§ŸÓcÄ×èQg8X‘ψF\(1 BK5#|ÌÍ·ç~D©gB¡¦"P»(Ùž'ª×†Q¯I½ç-‚\ïÙ± ÷l‰{¼Ì¦¼ü±NþH§MºlW^ªk‘<é!Æ»‚YÏC0OÜóF¤™·"aÒ` ¿¦Ð¶ƒç“íß0æ:Zx´‡½gëz˜äEU¤…g§…ÕÞŒ¬ö0rÚG Ð7¨È >èŒ$ß±•Šó)KóÝsÛk 0ömñ>¯÷n' '£ 6Œ@Ρófpà)ÆÙ̹ÕÒGÝBGǯ1ÔÄ xªÈÒúf‡!5R**4<Á<Õœ +²ž„& §†÷…?ÉbGÔ‹4×¼¸Õ{0bî,éêw»éR[5åŽM…IsïÀ‘Š)¹òô`Ù û!)aGÛÙ>„àü•\Ø’Èí6CåAnÈ”D‚0SîÂîäª!þ¬Yq";ÏSË9Š‰©ù }#1ÒT”1ŽûÔ¬@¢é‘ñy Æ£!ýRKùe_C}n?nÜUHÜÄGË1äÊ4˜§gú¿.ÕíþÂAÊ•U÷•9%’*9f°Û'šÀüq£á©ÇŠÈ6¯%3ª4‰z(Ÿ‚W§ío©ô{<«œôå~e“Ç©l2^?É$Ãå±_„ø» ֽϗݳÎwȶ¾×&.›žÇ9Ýö…К‡ñ¸ú¡C6åOæý€ÇͶ‡nR°§ 8B"®ï Þì;pUþö®Lë¬îW ÿ.hë9¸:dSpy2¹ פà+\CÁ7àê +ná:gb¶ÿ#Z$†”Éâ¹àê’M Õ’y´èM´¦·h‡Ñê nѪ÷yõ¿‚%AœÐs`uȦÀòd,v¬IÁW°†‚o€ÕÜ‚Å™ÏQ–? mjx1}Šu©nŸbr8SXÝy‹9%úƒo1Ço1[²{n1'±¹ÞbΈq›¾Åì ½ãsFüˆ¯Ÿ™¯ÖAÑ1É‹CYž"søEÐÿ‡®·Ì¥:›‰––jF¥1·¹ë-†bLԽдôszŒøNBS^ê0:ð*Âj.^Zª­ÆÜ:÷^Œz&L°TÐãó»®½†ßF "\¿´`ЙH!?ê³ióÙ7†W4ïÜ"¡;a±ýP/rI[UŒÁ?dEV%µ¯Þ¼Õ?ûÁKãË›êoþ^Pö‚:(ÆîödgêFßñŽ?%¿}ö_]ÿy~ÊFÍ—ÝJÿÄ1,éendstream +endobj +1685 0 obj << +/Type /Page +/Contents 1686 0 R +/Resources 1684 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1674 0 R +/Annots [ 1690 0 R 1691 0 R 1692 0 R 1693 0 R 1694 0 R 1695 0 R 1698 0 R 1699 0 R 1700 0 R 1701 0 R ] +>> endobj +1690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.7281 646.4529 322.9445 657.3568] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1691 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 608.5208 139.4144 631.4895] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1692 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 608.5208 197.6953 631.4895] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +1693 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.6841 608.5208 233.2915 631.4895] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1694 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.2803 608.5208 264.5639 631.4895] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1695 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.4293 608.5208 320.4537 631.4895] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +1698 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.4498 360.5812 370.7743 371.4851] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +1699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 124.2624 139.4144 147.2311] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 124.2624 262.94 147.2311] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.8054 124.2624 416.0743 147.2311] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1687 0 obj << +/D [1685 0 R /XYZ 90 757.9346 null] +>> endobj +1688 0 obj << +/D [1685 0 R /XYZ 90 739.9346 null] +>> endobj +1617 0 obj << +/D [1685 0 R /XYZ 90 722.0597 null] +>> endobj +1689 0 obj << +/D [1685 0 R /XYZ 90 722.0597 null] +>> endobj +1675 0 obj << +/D [1685 0 R /XYZ 288.1051 554.1796 null] +>> endobj +1696 0 obj << +/D [1685 0 R /XYZ 90 532.2319 null] +>> endobj +774 0 obj << +/D [1685 0 R /XYZ 226.1581 456.1224 null] +>> endobj +1697 0 obj << +/D [1685 0 R /XYZ 90 434.1746 null] +>> endobj +1680 0 obj << +/D [1685 0 R /XYZ 226.1581 96.348 null] +>> endobj +1684 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1704 0 obj << +/Length 866 +/Filter /FlateDecode +>> +stream +xÚÝW[OÛ0~ϯˆ˜„R©ñ||™ö2ÁH“ØÖ7@(¤F+-kRÿ~vì¤!M/lÝĦJOüùÜÏ|¬à+ìK.‘¢Løɇý[ýúØ·êý° ø0ðÞ~$ÊWH "üÁM©Aâˆ?žÉ^H8æ'gv‘L'=†ƒ‡à å™Ë÷7óIRh)×¢¢J\ö.§ÞÑ ¶ïÜãT€±þÝ;¿ÄþP»yêaDUÄýZÀ”"þÇ­„±÷Õû\ë±å®(9ÐmÂ$Z”u”ˆ Ö c¼¦“Iê"Ïûx8œÁæØ,ôLpZ+mhÕÙ% Q¦¬Ö³,ùfU#§Ëèå…¦I‘VËûŒ]2«dciž#c̨‰a´VŸ»ãóâb¥¡£Çøî~œ´Ëq„!’¾` NU³KE©Àam #|]*‰¡, C2"°ÐiXTàJ‡!t‰¬ô®òV!¦XlTaʨkDH‘¶:SÏ}»ìÛCÐ'}Úg¦À]Ú]& ò½}´ºc¿VlÏ·:$tá…D7`ëÏɤU¼´<°IwÕ¹žšWæ/í·Ð=ƒx–Å×|¯tsÏ +?²ñ¸žÜ"Î&ÇÇs'ZUf®KB$ƒÎ™«ËÛD-Ï]¤ÆTëÒÓIˆ›×_ùRƒ&HR®u¦R0½,÷̛٭ÛúÒp°D(ïò°Y¡WÃŒ‹ÃQrŸ dÉA!ÑzõÉô’6cÚŽdÈ*Dï)*ʽCKTYQ³pìæ|œUô¥>úæÈxÁmh„\£ªçTF "üÈ7ñ#Ù–a?æ©nÒáNXk-=îÄÝŠ¦ú‹ÇÙvìØD¯fÇõï°#ù/Ø‘¬dGªKœ‹õìØD­fG +àhKv\gúÅì¸ìa';Ö°mØqmnì¸Áô’¶]°#`Ø=ŠMôH›‹Q6û ì¸ 3Û‘#軹76À«©±½f™‘¾œ£×ÇŒuÝö“sut ì°ÿòE°¼ÐFúPÒ¤T¡Û‚FÕEÏ9aRvœNÒY\¤Uw» >U‹S“©¹€Tq@èÁp7^“é¬u?ä€×Oöy8}|ºM'íô˜[jG~~A§Äendstream +endobj +1703 0 obj << +/Type /Page +/Contents 1704 0 R +/Resources 1702 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1674 0 R +/Annots [ 1707 0 R 1709 0 R ] +>> endobj +1707 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 542.121 139.4144 565.0897] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 300.0025 139.4144 322.9712] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1705 0 obj << +/D [1703 0 R /XYZ 90 757.9346 null] +>> endobj +1706 0 obj << +/D [1703 0 R /XYZ 90 739.9346 null] +>> endobj +1681 0 obj << +/D [1703 0 R /XYZ 226.1581 519.9805 null] +>> endobj +1708 0 obj << +/D [1703 0 R /XYZ 90 503.321 null] +>> endobj +1682 0 obj << +/D [1703 0 R /XYZ 231.1394 277.862 null] +>> endobj +1710 0 obj << +/D [1703 0 R /XYZ 90 261.2026 null] +>> endobj +1702 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1713 0 obj << +/Length 1160 +/Filter /FlateDecode +>> +stream +xÚµXÛŽÛ6}÷W °›å]Ô}i7 ²@€4õ[,´2½j[ª,gcý÷ER–­‹4E°)žÎ )“Ã?D8Eˆ"ÆelF8x‚ׯGÄ Ï`|Öü:ýô;‚E’Ê`¾¬$A‚ÌÆBMfTá÷oÞASà1AØ6Þf‹ýZÛö]–ì7z[Æešm'Ÿæ÷£WóÚ®sK0IŒÕ¿G>á`îÝ0b‘Á3t0"QDƒÍˆSæ;ëÑŸ£?j;PMèZ§°2EX0c)ñN”B (A„Ú!ŒY„Œ!X>¯¢ñêK¼É×zw{¾B‚) +¥A“ôÜ4·Þa;fÞOnè}ÃA‚C&ºÎjãeMlçŸÕÇÌ-o¢ +W{o¶g¹Ó"Æ6è.;™yõÙü§§gèÏ*Æq‘Æ~S¹yc;Ïézm[IJ›n;§¯÷®ËQ_šy›„FlX›¨~}äJ!©\P/ëãéoÖǶ‡úXîÑÇÁØõñ‚éÛÑGñÃôQ]ÒLJd“{‰$Ó£´Ðëôò·l“Ç…c-Ÿ'œîÔ)Ý­Tnþî» .Iƒs]†\]'uMt¿ÔÕ¨!©#Óf^-k~‰è”È)È[Ÿ´¥K3­JGD‘ç54UR«·_+B©ä’žÐæEº-+ê›ùJ,¼Ê±iT*d»x£oŽ®Íº¨þéË +åR’]P¦&ª_™(Ücñç·) ¸ßJ] èS—mðè¶'pêP f\©‚ÞÖ¸tN†#P£:Bpª?ñHðSÃsP˜_ìÊþ{CGhÀ3¨nÐçÏ> endobj +1715 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 717.9621 139.4144 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1717 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 473.5762 139.4144 496.5449] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +1714 0 obj << +/D [1712 0 R /XYZ 90 757.9346 null] +>> endobj +1683 0 obj << +/D [1712 0 R /XYZ 231.1394 695.4109 null] +>> endobj +1716 0 obj << +/D [1712 0 R /XYZ 90 678.4366 null] +>> endobj +1677 0 obj << +/D [1712 0 R /XYZ 231.1394 451.025 null] +>> endobj +1718 0 obj << +/D [1712 0 R /XYZ 90 434.0507 null] +>> endobj +1676 0 obj << +/D [1712 0 R /XYZ 351.1686 188.4371 null] +>> endobj +1719 0 obj << +/D [1712 0 R /XYZ 90 171.4629 null] +>> endobj +1711 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1722 0 obj << +/Length 1393 +/Filter /FlateDecode +>> +stream +xÚµXÛŽÛ6}÷W[ °›å]Ôö­M$@€45Ї$Xhmy-Ô–\IÎfôß;¼ÉºYö¦)‚`y9œ3‡Ç"†$ˆpŠEŒË`µŸàà†_Mˆ›^Àü¢ øe9ùé7Š$•Árc,H‚%4X®?L% +g *ðôøúm¬òlÆñôóŒàiR”)tÍø昭*è•ÐXNE4û´|3y¹¬ù{‚I¢Ùÿž|ø„ƒ5¸ùf‚‹”¡ƒ‰"ì'œ2ßÙMþ˜ü^Û±fÁÐ.9…*‚…nè5P=´B`(„!¤§¸È–‡˜˜¸p*JÒ±9¦‡»ô¯×Å]5[HŒ§¶GæÍýY‡¸D¡‚Ý^ú üc{‰èœÈ9™S˜$õòqÉE—y•ž6¨³áMÖšçà·,%Gœñp0Šu\š¨~¨aÌÀV(S‘ÝÞ;qï“ +Rä¶ËO0E!£tО#5ºï‰  OQH˜8YÕ®¬“²êñS†BÉÆ÷ïAûgMVªPÈ9k³.·‰½š>ÍâêtMòÂ6*ÔázšI1EgBEÉ"ŠDþzÔ¢  ‘‡igËbÕ£%R*h=ªOÛ‰GJª¨M[ǨÌÅʵ7E¾·­ÇmR¸Á*¿"RuR¨X]Jêj$©)EX2ëïË/ñþ°KΦ3¥æº$qhš9=R<¸©÷­“t'4à!#;|בÔ;©¼pñj•‹×ÝÃOtJØSt pŸë!›*óú³Î¢¸Hã{¿q>Þ¸‡%Ýíj)[Åi—®“¶áEDÂë…ðÙ—‡qŠ(‹äøËÓDy˜à |š¸NN‘AF´BÏ“a­PÃ.É©Ñý×rª¿ÿA9Õbý³¡ü1ÁÙw®À¤e[(Ü;ÌaÃÓp^T1*àY–áQÕ„ÊÃ.‰ªqÚZTõh‡EU‹vy&‹Gb€#h°K² ‹‡igôÕï'K„†ŒózTŸ·'F¨b²Í»|´81Øg‹øÁw8¹F«¤ÁjÐÅÕ—RŽôÙâà×|Ï°¿:ö}̤ôűڶb7¬œ]XD"u2 ¿Õa=Ø0¬‡Ó™jÛºs²­¿ØóÒköV`˜åEb±ÇR‹;CãLZ™£BÌÔÖ¡ïÓÊ;µ+;æLyÊ”=±²»X“n ’!®+ÚUº¡‰>¯jÔóuÕ¢áÛŸüï¡9Ú.×ËÙ¹åéF/¾]©Ñ"þŽ˜{b†¾Âã’¶hEšU†êRñÉÂMÖè†É-Ý(á¾9¹º2õÏÐ7/‚œêP¡Ãpu‰ò?}3Ÿõ,!Œ6U…„übÊÕsNh'_%YRÄ•ÿÑä ß[ßx£…ÕÑuˆ«}ßRvK±íQŒ¥ûÅ®õ–ÿ¨Q%ÔþEö"ÿòôº¾AØP|þŠ‘ð×endstream +endobj +1721 0 obj << +/Type /Page +/Contents 1722 0 R +/Resources 1720 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1674 0 R +/Annots [ 1724 0 R ] +>> endobj +1724 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 606.9556 135.0008 629.9244] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +1723 0 obj << +/D [1721 0 R /XYZ 90 757.9346 null] +>> endobj +1679 0 obj << +/D [1721 0 R /XYZ 357.2656 564.4285 null] +>> endobj +1725 0 obj << +/D [1721 0 R /XYZ 90 546.998 null] +>> endobj +1678 0 obj << +/D [1721 0 R /XYZ 226.1581 281.678 null] +>> endobj +1726 0 obj << +/D [1721 0 R /XYZ 90 264.2476 null] +>> endobj +1720 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1729 0 obj << +/Length 1266 +/Filter /FlateDecode +>> +stream +xÚ¥XÛnÛ8}÷WèQ".ï󸛦»ºÛmýÖ"˱[ruIš¿ß¡DÊ–([ AJÎœ9sáÈÄÃðG<…½P„H1.½d¿ÀÞ#¼þ¸ f;€ýàTà÷Õâ·[ª<…”¤Ò[mZ ’ A õVëo¾ÄË€F8Ä~ó×gX +섻ŧbÝìÒn}S$Í>Íë¸ÎŠ|ùcu·ø°êíX‚I¢­þ\|û½5À»[`ÄT$¼xÀˆ(E½ý‚Sfv‹¯‹{=ÝF{`Ê;NÁ³ˆ0/`EDñI©H L¢ˆ "è4‘B³Ð Cà>oÙø¼$ØËxŸÖiY]ý$˜¢Qꪶ ½´‹–G$‡($Lµj(ñz]ƒÐN& [© +Ø©a ‘+Á‡†W[òïÓ²ª»›VZUè 5€ DÂéöBÁ‰Ô%BŒ”僞çã’Õ##«gØ8±Ú“Q¥I‘¯ßÉ…„$£ŒG3dœŠ]`£ÓÀöqõäØ¥ +1 N]¶k¥\»#>8¢“C»=!yZk ­óPšF6€P|Zô&Õ”gmÇè3É´Ër£EqÒ-ŠÍ1élÏi²Úv ¯‘IÊ»:ý’nÒ2Í“ÔDäáµ?q—‡û¢©¿c៴çÛÚ')¡“|£ÕwÐ%LD!bKˆÆþm“'GÄNÛuPD9b\‘£"ä–-°Â„Rž€æÄ£tÑ[壑ù2‘‘N¸=ÌÕ«A4DÞ×`‚H,Fƹa¥æ †¤€+d`x[yeÃ(°!‚„'äí,Xù90ŽÞ³,P,¡Ðz)×ð 2)nï Ïñn"Q…žÂ)Ð2:1Ðiɵ­Š„!fÕzûÏK"ü´45Ddð™õÏ&Îë¬6E°)‹}·Ú¶}?¼Ö¦¨Šr–ݲ.úR~Ñ_Q>MK áO–áj›A¼ ýM_5úɾ=”Ù>.³Ý«~”~SézmÅ‹²[$Cײü±{ÿ¼¤.â,~Ø¥ÖDë–^unéUT¯Œ[ÚŒvK¿¸5%ݺBü[m0Ym§§jfà}UíÕ;¹]W¦YUf£†ž:NTSL¤˜'ôå%">S+½|pzÀmê®^í㟫%‰üþþj›æƒn +<†3ª›^jc!¢p0ìã¤4fÀl¯{ÕNvpK#Å¥¼<þJÿÜ® +´>üŠ÷H¸ë³7ú%Ó\§–3mÍÞçÙԽߋiˆ©ÎÃf°³|W‡à%«·Ü{(qòˆJDE8ÃY/5ÉÕ¦!]9F!®”©‘Íó¹kÄ猵jÛ0»ç¥„Jv}‡ïœH88ƾ[©9óŽ¶Î÷n°Ñpl=bÝ­ôV¬üG¯Æñ’>$» —¦ç=‰/çnÐK͘wµióf +„ð%T ¡¸xóH¢ˆ^“Ñ Ä†ƒ iÃ}'{÷ؘlŸªfoàÕÉF‘çiROìd‡³‡šõá|ƒKìe´Û¯ˆ>d÷épZZÃLÀÃÉ°aˆ ‘Bþ¯¯îöWƒŽ6øV–H…,ꂹ¤=MæÇ4O˸¶\ÚØ~²‹;Ý©ó@Lt ¾¦ìšš(ÆÒÌ,šªÂÌ%î/6P7ů×ÇÔùýA6ÅÒ^oçVendstream +endobj +1728 0 obj << +/Type /Page +/Contents 1729 0 R +/Resources 1727 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1674 0 R +/Annots [ 1733 0 R 1734 0 R 1735 0 R 1736 0 R 1737 0 R 1738 0 R ] +>> endobj +1733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 582.7574 152.1568 593.3475] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1734 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7156 582.7574 207.5088 593.3475] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.093 528.4053 335.7466 539.3093] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +1736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 492.7935 227.254 515.7623] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1737 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.2428 492.7935 262.8502 515.7623] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +1738 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.7156 492.7935 330.3564 515.7623] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +1730 0 obj << +/D [1728 0 R /XYZ 90 757.9346 null] +>> endobj +1731 0 obj << +/D [1728 0 R /XYZ 90 627.2963 null] +>> endobj +1618 0 obj << +/D [1728 0 R /XYZ 90 602.9681 null] +>> endobj +1732 0 obj << +/D [1728 0 R /XYZ 90 602.9681 null] +>> endobj +1727 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1741 0 obj << +/Length 1212 +/Filter /FlateDecode +>> +stream +xÚÅWÛŽÛ6}÷WèÑV,‡7‰ûXltmj´Ù`!ËZ[ˆ,¹’¼›ü}‡"u³d»M[†m^†3‡‡3Ã!x?àiê2 š åŇõv8ü~nÚÇy(ðýzñÝL{šhÅ”·~i4( ’óÖÛKE•Ï$]þ¶Òl•i´É’ʪdk[iîF~üÙ6¶É +äò5×/ÓÐå«ùIJ³^(¥— +VŸÖ‹wë¢Ûä + À??Qo‹;y\PÂu(½7ìPZ3ï°Œ·lñëâ—NhÌ!Ï3‚àk©`ÈL0`(ý·©@¬e ZÊÆ2ž’1ÌÂÎ2gû!©£4k=$U\¦Ç:-r§‡ÎÒ¨1ÛÑVM‡h9Ô‘ý{IVL.ßlg—›(³íW3>Þh½j·¸L.í}Û(oÙ "ìé«EÙ3Kr +.„îÆÔO}GAHBÁäEï +Ø32TÁCÑë1FŸ“綀š’üªEAtˆŽFíœ)wnêàÓiªÔMt­ÜÝ Ôs=Ç¢(ˆ«ðš·á J¨fp^+7†—Ÿ³$ŸT&²tpýÄ#!Á@´C™‰,ЀF®¯('¡ ü¥¤^ˆ(•hPbdÑ@‡^'fP®÷ÎUê®ÞÛvñÒú¼›Ð>"ΆÖUŸ,Nõ®°{yè$×c\S,h<®‘:êÙèo…ü¡Ô4ï„x™QxËžï»/ÑáˆõÑýô–a$àxC_3Ý-âvfÄK(.çŽK*'׉ˆMMlaú‡(ͳ¢8úoi½÷£òHâsàŒ)Âdpƒ³Nꤩ6éΕµùvb]`ý òÜúEj:ù[8&z¯Rƒ6Ï4¾tn«ßIÝ@5ÕfPÙx÷YØ*a’H-lõôK)ö +ý`ÂIò¸}bl¾ö) +É0ß4¢’âîú¹cYÄIU͘ÃíDªc–ÖÏÈ*fãVŽÌ½G±œÁ샚"o ¤úGOÕæ]âàlå + d¶/QÂpò>É“2ª[JZÎjƃN®ÌýÓ{Æïµ=F©rÏ0“‡O1+Mè˜ï‡âË×Ý´”1ïè~þ•àÞ¦endstream +endobj +1740 0 obj << +/Type /Page +/Contents 1741 0 R +/Resources 1739 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1754 0 R +/Annots [ 1745 0 R 1746 0 R 1750 0 R 1751 0 R 1752 0 R 1753 0 R ] +>> endobj +1745 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 615.6894 138.5977 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1746 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 615.6894 170.976 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +1750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 531.3846 152.1568 542.2638] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1751 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.6549 531.3846 186.2086 542.2638] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +1752 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 394.5058 227.254 417.4746] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +1753 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 394.5058 380.3883 417.4746] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +1742 0 obj << +/D [1740 0 R /XYZ 90 757.9346 null] +>> endobj +654 0 obj << +/D [1740 0 R /XYZ 90 739.9346 null] +>> endobj +110 0 obj << +/D [1740 0 R /XYZ 90 739.9346 null] +>> endobj +1743 0 obj << +/D [1740 0 R /XYZ 90 719.4886 null] +>> endobj +1744 0 obj << +/D [1740 0 R /XYZ 90 634.6393 null] +>> endobj +1747 0 obj << +/D [1740 0 R /XYZ 90 578.3693 null] +>> endobj +1748 0 obj << +/D [1740 0 R /XYZ 90 551.8843 null] +>> endobj +1749 0 obj << +/D [1740 0 R /XYZ 90 551.8843 null] +>> endobj +1739 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1758 0 obj << +/Length 2127 +/Filter /FlateDecode +>> +stream +xÚ­ZKã6¾ûWø(1ç¹u2Iv 3ÛØK’ƒ,³m¡eÉ‘äîíùõ)>-¿Dnø Š*«Š_«H“)†™fxšˆeŒÇÓb3ÁÓtÿ>!öó¾Ï‡??M~üfÓ e1§OÏšCL „NŸ–F1ÍiŠí>?BSàˆ l_›å®’¦ý©)vY÷y_6õìï§/“_Ÿü¼V,Áb¢fýgòçßxºñ¾L0bY*¦oð‚É2:ÝL8eüwò‡çc>èç´„Wp=ÔéGAÝĪ‡²Ùœ`Œ£§µÕÄëùôËã®Ýõyñ¢Ô2üÊ„ÐüÀ Š˘㇈åøIöyYÉ¥5슶Ü:ó60»bBÆ؈ed "*;óÌkõŒ£r³­äÞÎú[ólž½Ö^phoÛ¦oŠ¦2û‰´&†YÝËz©Êç¦5n“W•i¦óEÙ; –f‰÷›²h{Ý·MUɶCJ5¥ IPL9ß+K¯d™½–KÙ™-2hÕ²]—·ïžRKmÉ´hªñ$nkÙ›AE³Ùìê²Ð¶øúÒ,z+ûµ¡ÍÍãUM) cìtSŠf)û¦ß¶` ;4ujè…&Zo_AiN£Vþ³+[½ +é™›‡Yh˜åƒ†™Cµºò»m•v^¾á¨¦]ÊÖ6ŸÍ37g9c¿©½”°ˆU³xïegzÌÒq×å«Û¦;PØ€07ÀÝO/ë]½l¤µè‚W0Ž€µÐœ~7èΑ$àæ<¹«†Æ™‡NCpŒ8Kùžšì/æñ\Ã(*ØøŒž*4/Ä“ ÇñѼSˆ†Ç33ˆd4;žY}jW–æÛPG’ᄯvµr‹Ö'"ˆ™Œñqå9C$!$åâÃ{ÆRÀ ê\ÄAP ^H§)Œ¹B#N²têÉ”ÿ‘¹A@ÈÍ­±}0Ï(Ž^Ðé*©Àc6®‚Õ€PØ .ï–‚¥ˆf„…èÈÂ0Càø¼óx0ó5—ᄯC`q"ÏP’1®<§(&LÜŠ@Ê£4 !Б)!Ÿ®˜yÕ1öËp±˜eWÊ; öùÉ>ræx’‚a‰Ù¦À\™#%ôÖ¨GSŽR–ŠÄ<ÙxÔ+º—·U§¾l÷lqPJ;vY>ÏH=KBÕa˜îÎûܳÚäýE„!J†Ò$‹?¢1†¥fq£Ž, ÒÃûQ:.‡éPºÿÍ!°•ù¢’'F>ÉÑÇ7ôS,‹1LȨžsuPÛ;¹Ì\@y%HÌŽìÀ-×®¾ØŸ6Ú¸ªšE^™öë¡múuÞîùÎdö÷}ýã]$Œ`Æ*é‡ ’* _ÁŽ,ŒàÃû<.GðP:¿¤P!Buh^¾É®©vûýîÑÝG#ÐÙ#ÕcN`·ùíᘑ$„PG¶/n²L«c ÞÙœá#•€à±q¹kEñðíÑ|*í Kè1WеTÀDbèõ‘X}ùlTÚ¶Kô+šª¬_LWeð-íÔ‡ƒÜ©>8=TIZ¯óÕ½?rýZæ†Eßð=ÌŽ~¹¥ò'©@„°©ÈHB! %¡ŠÌ“dÈðn' Hçè¤8:Ë·ÍnµÞîz_ÿv½+@ÖöÖñÐSR”rÆG•ÿPÇþñO”ýDí_]@­Ø.®Ê³‡)ãáb\9ô©ùÿûJžüFýEʼn6°Ò¿]Á4endstream +endobj +1757 0 obj << +/Type /Page +/Contents 1758 0 R +/Resources 1756 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1754 0 R +/Annots [ 1763 0 R 1764 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1773 0 R 1774 0 R ] +>> endobj +1763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 574.0416 151.3297 584.9456] +/Subtype /Link +/A << /S /GoTo /D (a00136) >> +>> endobj +1764 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 535.1382 150.7717 546.0421] +/Subtype /Link +/A << /S /GoTo /D (a00135) >> +>> endobj +1766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 452.2677 224.9331 463.1716] +/Subtype /Link +/A << /S /GoTo /D (a00144) >> +>> endobj +1767 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 415.4215 222.1728 424.2682] +/Subtype /Link +/A << /S /GoTo /D (a00145) >> +>> endobj +1768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 376.5181 223.4387 385.3647] +/Subtype /Link +/A << /S /GoTo /D (a00146) >> +>> endobj +1769 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 335.5574 216.0761 346.4613] +/Subtype /Link +/A << /S /GoTo /D (a00147) >> +>> endobj +1770 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 298.7112 214.9707 307.5579] +/Subtype /Link +/A << /S /GoTo /D (a00148) >> +>> endobj +1771 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 259.8078 258.2974 268.6544] +/Subtype /Link +/A << /S /GoTo /D (a00149) >> +>> endobj +1772 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 220.9044 246.8006 229.751] +/Subtype /Link +/A << /S /GoTo /D (a00152) >> +>> endobj +1773 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 168.9847 249.8397 179.8887] +/Subtype /Link +/A << /S /GoTo /D (a00154) >> +>> endobj +1774 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 119.1224 254.5214 130.0263] +/Subtype /Link +/A << /S /GoTo /D (a00151) >> +>> endobj +1759 0 obj << +/D [1757 0 R /XYZ 90 757.9346 null] +>> endobj +1760 0 obj << +/D [1757 0 R /XYZ 90 739.9346 null] +>> endobj +114 0 obj << +/D [1757 0 R /XYZ 90 739.9346 null] +>> endobj +1761 0 obj << +/D [1757 0 R /XYZ 90 719.4775 null] +>> endobj +1762 0 obj << +/D [1757 0 R /XYZ 90 593.0161 null] +>> endobj +1765 0 obj << +/D [1757 0 R /XYZ 90 471.2422 null] +>> endobj +1756 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1780 0 obj << +/Length 2922 +/Filter /FlateDecode +>> +stream +xÚ­œoSÉÆßó)T•7èsófïΑÏɹ$wW” ²Mň$—OŸ´3ôhF݃+å*#У~zû×»;-íJLxø'&Ÿ8ãØ ´\ý¾Ç'ŸÂŸ_ï‰ñéƒðü¼Zì}÷ƒ&¬´“ÅǧV0#…œ,®Ù·l˜HÃ÷ŸW›³óñ/GçߥÇëåÕ?¦Ško÷­šþ¶x³w²ÈÆc^FYmÿ¹÷Ëo|rò{³Ç™¼™ü;ü™9ù}OK•~ù²7ßû)ÇÙ<ñô‚Öæ¡ÚÛ'Œ‘ieØ^·Ù¾ãåz¹Ù„ùúþñjýx?~õÐÚî˜r©,lœ¨¬à–iåõsœèÿ«”fÛKðð*iî˜U”¯ÐlàÖ–¾O[[9«!@R~Ë9>uÿiÔ\À’žÊ¡Šsx¼ùzyuw{[eá,³B[|ûíÀ´ áÂöyg45Šå˜°2¾J2ùÌy>ñ!O«Ÿò ÁÝà'Yó¼X}½Ÿ*ºbu»^®oîn7s÷qósYï›qãVWñ¬f¼IÈú°³éзhöcòB2ïC;ïj@k=³Æk¢³Œl@i@Â75`áK4`éÜÑ€DUÜÔ€×;šp°áÀ×À¡AÝðÒ&4Š9¯¨UßÒ‚ï_Ђ:´•Ôâ-èw·`<¶ŽýŒµ`’Ñ-b-ˆû愾T Î=-ˆçPÅM-Nžë‡ú R¶\ã°Ž…VÑ/í?a·f 0Éb¢ùüÿΓ±7ú|÷åúæöÓæ—un­Ö7뛫‡$Z®ÇÎ…>-ë7¸Þüåflð÷³óËùbƧ³ùbv45cЇÕs}·ù)v÷<×,<þ¿uÍ ˜÷¤å³ŒlyiyÂ7µ|áK´|éÜÑòDUÜÔò뫯áÿÏ×÷õaׄrU©TEUäñÈ8Ï}<Ê2ˆÁÁ}3èKÁ)œ{àà9Tqœ›«ßwБ\1áµ%ª F½ëØÀ‘^°dMÄèྙô¥èÎ=tðª¸`Á²k×ñ,²TF½ë˜°¦Ç™,£á€€Ü7þœÂ¹žC7ÁY­?_.¯[ld8ßX¢>lšÖê…gs£Â"€i²ìëIí>ÜŒ'Õ“xj¾M§Ø§| +ð°ó$¦3æÈÙ&oP·çvŠÖ$~3¸¯~ sۜԵ㌋Aïlm(@Z;ËÈÖFŸ[›ðM­]øþézÜÒÊ\‡‚I'¶ÌwwwÒSiTqcqv8Õ|ÿèÇãøãp*„Ø_LnŸ& xY²ŠÈG +Ë„°¾ÌG´¸›ÐKÊî~‡ +0îIFsÇwÜ7s‡¾Ü óîxUÜÄýôäçæ†Y‹×f>ªˆ\¤ðá¨0”©Èr­Y(±Û0äIF#ÇrÜ7#‡¾È óäxUÜ„üâä¯ïf‹zýgâÊâEÈ*Â]†¥ˆV°¤Ñ]·(+Á”ã»×*P€QN2š2æ(ã¾™2ôí \˜÷PÆÓ¨â&Êçgo߶–*aí`‰$åæ9a`A£·o1»¼öâçç1£ŠŒØ¾¨iÆ L;èBç¸hÛQÚ£·gó“šíÀ,¾õI„;K.˜ç\ζȆãåFìF Û$£ábŽ€.î›ñBß¾…y`<*n^Ž½:»˜Z¾ß8Ló°…ÊàuÈ*"8ôk¡e™€jU8*8)ÕNÒP€Î2’4êøLšðM¤ _štiÞAšH£Š›wæ³ÓÓ“£ÅÉqEZzƽ°x²ŠH@*†S)Ël댬ÜÀ¼BF,(ÀH'Ms¤qßLúv.Ì{HãiTqéÅìÝÉñÙûz—sNz¼ YEøK)™´j«üB¶ÎËaõ†pd¨‚Œt’Ѥ1G@÷ͤ¡o鼇4žF7‘&'ª¸Ä†p|Æë‘TT"ñuŽâE"­)Z͸CF*(À€' sÀqß úv/Ì{€ãiTqá®}ÑzÓÖa‰$a×d2^$S˜7ÏÔZ01ðÝoÍC9ÉhȘ#€ŒûfÈзraÞO£Š 'ª0<ÿ4|ÿýɼ>Žk¹¹b-GVyÈ08{ë·ÊѺüJ…%€BhðÓ&|í—¦]šwÐ&Ò¨â&Úoç‹tµ`½g{&7x)²ŠÈ!®À¶rh}Ž%|˜ÑdÒ‚Œu’Ѭ1GÀ÷ͬ¡o뼇5žF7ïÙóËw‡ó[×€ +í,^…¬"쟮T^•ö¢u¢N1'I +0ÎIFsÆgÜ7s†¾œ óÎxUÜž¾œÏþ~RÏ×.¦$ê¢8ÂÈÞØ ´‰—ÿâƆ,+nSü0 KDZg?®îÇoþ;>»ü×òæËò×ñ×w£âñ!i¯óÜÜ>ßظ½ù+ %&0U„LÖÛVÇM7˜¤ÍÚJD Ç,×~+‘­Êfa¯ÄÀ¼ û­ŠÆÎØyë‡P¡Ã·úß|O±2´¢Æç,£wbÛ‰qß¼Cߎ¸0ïÙ‰ñ4ª¸ù£è‹¸ ŸÅÿ6‡îËÙÑ»óÖdñ“f´&IDä"•`Ү̥õ¶w,²DÜ@€1O2š9æ˜ã¾™9ôí`^˜÷0ÇÓ¨âîf¿Œ¢B.™$^’$"R‰µðr«"­sõ`™Ò»wòç§Ü£ˆ„x=£FhàHc†¶Ñ¶bî¿ê¡`mÂ$b–¯W·«ûå:}@ºÁñ]zðf*Ìþãø‹ãOþ½TßK¾ùMrnÇõÁTšý¼FH_j Ø(üðÇæçñÝþø´ª¾J$~-Q£>ÿÚUßendstream +endobj +1779 0 obj << +/Type /Page +/Contents 1780 0 R +/Resources 1778 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1754 0 R +/Annots [ 1783 0 R 1784 0 R 1785 0 R 1786 0 R 1787 0 R 1788 0 R 1789 0 R 1792 0 R 1794 0 R 1796 0 R 1798 0 R 1800 0 R 1802 0 R 1804 0 R 1806 0 R 1808 0 R 1810 0 R 1812 0 R 1814 0 R 1816 0 R 1818 0 R 1820 0 R 1822 0 R 1824 0 R 1826 0 R 1828 0 R 1830 0 R 1832 0 R 1834 0 R 1836 0 R 1838 0 R 1839 0 R 1840 0 R 1842 0 R 1844 0 R 1846 0 R ] +>> endobj +1783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 704.2225 177.6109 715.1264] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1784 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 665.5053 197.5362 676.4093] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1785 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 626.7882 175.9567 637.6921] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +1786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 588.071 196.4301 598.975] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +1787 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 575.1882 204.1809 586.0921] +/Subtype /Link +/A << /S /GoTo /D (a00091) >> +>> endobj +1788 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 562.3053 199.1998 573.2093] +/Subtype /Link +/A << /S /GoTo /D (a00096) >> +>> endobj +1789 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 549.4225 193.1026 560.3264] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +1792 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 467.8426 214.6224 477.7703] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) >> +>> endobj +1794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 454.9597 216.6746 464.8874] +/Subtype /Link +/A << /S /GoTo /D (a00150_g39ce739bd352d7e348e37395ce903e43) >> +>> endobj +1796 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 442.0769 206.9409 452.0045] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf848ce44c810492e7a35c2d23a429f45) >> +>> endobj +1798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 429.194 193.6609 439.1217] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) >> +>> endobj +1800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 416.3111 200.3059 426.2388] +/Subtype /Link +/A << /S /GoTo /D (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) >> +>> endobj +1802 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 403.4283 201.9198 413.356] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga4c4310e54f18541b09e1e251fe7b22d) >> +>> endobj +1804 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 390.5454 229.0778 400.4731] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf84316f469ce0726985c0702db49a989) >> +>> endobj +1806 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 377.6626 220.769 387.5903] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) >> +>> endobj +1808 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 364.7797 193.9898 374.7074] +/Subtype /Link +/A << /S /GoTo /D (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) >> +>> endobj +1810 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 351.8969 199.7479 361.8246] +/Subtype /Link +/A << /S /GoTo /D (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) >> +>> endobj +1812 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 338.4114 243.3742 348.9417] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd605357e29affb0d3104294c90f09905) >> +>> endobj +1814 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 326.1312 252.8785 336.0588] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5c97ae587595b5444be80f5ecc1d3382) >> +>> endobj +1816 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 313.2483 224.6544 323.176] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) >> +>> endobj +1818 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 300.3655 207.4989 310.2931] +/Subtype /Link +/A << /S /GoTo /D (a00150_g28eda870cff3d8e3cf2949e6f57a502b) >> +>> endobj +1820 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 287.4826 221.3369 297.4103] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga5e3c856b86725125d19fccc34cd9eb5) >> +>> endobj +1822 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 274.5998 218.5673 284.5274] +/Subtype /Link +/A << /S /GoTo /D (a00150_g8af482dec973db57d8b3bd3f69461488) >> +>> endobj +1824 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 261.7169 234.7964 271.6446] +/Subtype /Link +/A << /S /GoTo /D (a00150_gae59b70658f28ee6e998eaaab05e423f) >> +>> endobj +1826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 248.834 224.5549 258.7617] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga533c394b1fa0030205534befa31c525) >> +>> endobj +1828 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 235.9512 224.5549 245.8789] +/Subtype /Link +/A << /S /GoTo /D (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) >> +>> endobj +1830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 223.0683 211.9222 232.996] +/Subtype /Link +/A << /S /GoTo /D (a00150_g64d9affc680a445d708234e70450477b) >> +>> endobj +1832 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.1855 222.8911 220.1132] +/Subtype /Link +/A << /S /GoTo /D (a00150_gfff0ed43201bf1e2020de1a0d6cac070) >> +>> endobj +1834 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 197.3026 219.2748 207.2303] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) >> +>> endobj +1836 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 184.4198 214.1439 194.3474] +/Subtype /Link +/A << /S /GoTo /D (a00150_g13dfcb4a5f920e108253ade527a66cc2) >> +>> endobj +1838 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 171.5369 211.7529 181.4646] +/Subtype /Link +/A << /S /GoTo /D (a00150_gde29ec025e6754afd8cc24c954a8dec8) >> +>> endobj +1839 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 158.6541 238.2734 168.5817] +/Subtype /Link +/A << /S /GoTo /D (a00150_ge0825474feee11b4e038bfe71757875f) >> +>> endobj +1840 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [289.3868 143.1256 318.6011 153.0309] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1842 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 119.9369 229.7753 129.8646] +/Subtype /Link +/A << /S /GoTo /D (a00150_g359951eecd80541c2101f628a9da9146) >> +>> endobj +1844 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 107.0541 223.6882 116.9817] +/Subtype /Link +/A << /S /GoTo /D (a00150_g517c770991459cc62dc009c0d3875c6a) >> +>> endobj +1846 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 94.1712 225.3421 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) >> +>> endobj +1781 0 obj << +/D [1779 0 R /XYZ 90 757.9346 null] +>> endobj +1782 0 obj << +/D [1779 0 R /XYZ 90 723.1038 null] +>> endobj +1790 0 obj << +/D [1779 0 R /XYZ 90 485.7477 null] +>> endobj +1791 0 obj << +/D [1779 0 R /XYZ 90 485.7477 null] +>> endobj +1793 0 obj << +/D [1779 0 R /XYZ 90 471.8276 null] +>> endobj +1795 0 obj << +/D [1779 0 R /XYZ 90 458.9448 null] +>> endobj +1797 0 obj << +/D [1779 0 R /XYZ 90 446.0619 null] +>> endobj +1799 0 obj << +/D [1779 0 R /XYZ 90 433.1791 null] +>> endobj +1801 0 obj << +/D [1779 0 R /XYZ 90 420.2962 null] +>> endobj +1803 0 obj << +/D [1779 0 R /XYZ 90 407.4134 null] +>> endobj +1805 0 obj << +/D [1779 0 R /XYZ 90 394.5305 null] +>> endobj +1807 0 obj << +/D [1779 0 R /XYZ 90 381.6476 null] +>> endobj +1809 0 obj << +/D [1779 0 R /XYZ 90 368.7648 null] +>> endobj +1811 0 obj << +/D [1779 0 R /XYZ 90 355.8819 null] +>> endobj +1813 0 obj << +/D [1779 0 R /XYZ 90 342.3964 null] +>> endobj +1815 0 obj << +/D [1779 0 R /XYZ 90 330.1162 null] +>> endobj +1817 0 obj << +/D [1779 0 R /XYZ 90 317.2334 null] +>> endobj +1819 0 obj << +/D [1779 0 R /XYZ 90 304.3505 null] +>> endobj +1821 0 obj << +/D [1779 0 R /XYZ 90 291.4677 null] +>> endobj +1823 0 obj << +/D [1779 0 R /XYZ 90 278.5848 null] +>> endobj +1825 0 obj << +/D [1779 0 R /XYZ 90 265.702 null] +>> endobj +1827 0 obj << +/D [1779 0 R /XYZ 90 252.8191 null] +>> endobj +1829 0 obj << +/D [1779 0 R /XYZ 90 239.9362 null] +>> endobj +1831 0 obj << +/D [1779 0 R /XYZ 90 227.0534 null] +>> endobj +1833 0 obj << +/D [1779 0 R /XYZ 90 214.1705 null] +>> endobj +1835 0 obj << +/D [1779 0 R /XYZ 90 201.2877 null] +>> endobj +1837 0 obj << +/D [1779 0 R /XYZ 90 188.4048 null] +>> endobj +1841 0 obj << +/D [1779 0 R /XYZ 90 137.9854 null] +>> endobj +1843 0 obj << +/D [1779 0 R /XYZ 90 123.922 null] +>> endobj +1845 0 obj << +/D [1779 0 R /XYZ 90 111.0391 null] +>> endobj +1778 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1850 0 obj << +/Length 3655 +/Filter /FlateDecode +>> +stream +xÚ­\ko\·ý®_±@b…Ö ß _Y¶•È–*ÉÇ\ieµeWÔù÷%w—Üáåå E,©{vιs†sI.÷Šÿ‹ÀÎ8”¶‹«O{|ñ>þßÏ÷Äöå'ñõ'ðÃÅÞ7ÏdX¬´‹‹›u+˜‘B..®ß,­Þ"=w|ùxt5|)ßüòòóõãÇÕæ÷§Ÿ¯?­nÞ=üúùvÿíÅ{‡…w+Ë(+ëöÞ¼å‹ë(ïÇ=ÎTðfñßøg"¹ø´§¥Ê|Ü;ßûG‰³yaý†¹«K/?‘ns-ÝË—ñbÜ]½W/¸eZy½È¨”‚_¤4Ó+<¾.Z€p ]¤B³À­­Hÿr½ú…sy»j˜µeN:Q3§WîÞo!gPC†¦Q“†×G§—§gûš/OÒ?ûÂ/O.^žÚ©*©s–ãù( \‹T–ISK1~®¦„€`ú^fv†ÑncŒÀnœ·ø y ¯ÈGÇe4q³çG§/._5sÏ„±ÏBAôRpfõ”^ò9Ÿ¹bÁ»¾Í»×1—·(Úd„xŒ’‹é€ÃyÄ`TÃ4j¶÷õÓŽ¿"0)u@P@8¹”‚¹Xùܶ³Û îi/ʸó—àÍW¼´Ã5ù€Å„Œ&n6ùâ gr¼;!ð4Á/%gÜ +WóÏbë<‹¹‘}£3:Ãh£1F`4Î[Œ†¼FWä#Fã2š¸»fÝÏ2B½°x" +ŠP %_­ à†W=e=üÛ渗Dœ˜+ +kb¬Ðoí€E†ÑE1‚¢ÀyKQ@Þ¢¨ÈGŠ—ÑÄÝEwü˘2é<žˆ‚"¤â ¢1`[EÃ, +#é€E†ÑE1‚¢ÀyKQ@Þ¢¨ÈGŠ—ÑÄ·„øï ´(°D€¢@ìŠbª _–Év—Ú÷mÌö £mÇí8o±òØ^‘ØŽËhâ&1Ý—ÏŽšl o#&h"EQ{ÏŒäjþ•ÏîXD\Å÷w]Ìå £]ÆË8oqò¸\‘¸ŒËhâf—Ïžq9¾‘Ç©:žŒ¢¨ƒd*˜I¢ËrÎe¡"&„¾Ë€¹œa´Ë#pç-.CÞ—+ò—qMÜìòÙùEë²O»%‚È@FQÔqïtšÐCê貞s™ÇÙ¿vºï2`.gí2Æ\Æy‹ËwÀåŠ|Äe\F7»|zþ¢ï2šË8uqRG—çVèÆ;ÆM“ ¼ŽxœQ¤ÅÝÎaœ4 Ii+æ{q Ó¨ÙÜïÓVêÁOŠh‰’¸þ "¸ƒb‚«Ššs«rãt\ÀKÄ]ÀìÍ0Ú_ŒŒó‡!ï€ÅùˆÇ¸Œ&nvùõÙóÖagÃÜÈ(Š:zl¸˜džÝ{16u\ô]Ìå £]ÆË8oqò¸\‘¸ŒËhâf—.Žçµ AÈ(Š:VƒôqY]Qó¯êfÎeí#Æõ·R!s9Ãh—1Fà2Î[\†¼.Wä#.ã2š¸Ùå“Ó‹ËÃWOÛTo¶ÊâY((‚^ŠH¯µ¬ég³2Œ{ÓßÌæ £mÆÍ8o±òØ\‘ØŒËhâB›_œœ¶›#œùà-ž†‚"ø¥TLù kþ¹•²‘’ñ û{£€ùœa´Ï#ðç->CÞŸ+òŸqM\èóËóóv8«ô‰•Æ³PP}Î’Û ýÜRÙļ +Îû"€Ùœa´Í#°ç-6CÞ›+ò›qM܉ͳ{à*¶X«ñDd!@jΌѮ0·ZÖÁF€ëïoBbt‘F£Œ;£ ÞltÅK]“MÈhâ&é,ÊåáÁ‹“˳ÃÓãý˜ÿåÏsn;) žŽ‚"tHgdBNtÌݧµ«°Ô*º~æw†Ñ~cŒÀoœ·ø yü®ÈGüÆe4q+¿Û³)å ž‚ "¨%7Ì:3ÉÀÜÖˆvœ )ûÛœ€Yœa´Å#°ç-CÞ‹+ò‹qMÜl±%Ç´Ž·a.=ž‚"„È($®§M-DÈ0g¹qL(Þß0Ìò £-Çå8o±òX^‘XŽËhâÖ–Ï9³–HBAìë#gƆš]ÈÙ¡­u„ 7ëÝë˜Ë[m2B:8ºØjùý¾byqtÒLÑ×Ì*æ%cpIŠG¯ã¯$ eæUfžž‚"t©¸3ƺZ—Pv®D:¼ªú¥€U@†Ñ€1‚ +ÀyK@Þ +¨ÈG*—ÑÄÝUÀ³ãõÏ/ÏçN$ +/ žŠ‚"4¤ó©Ö)9±€›Íi„ož QÆœ&R$Ôwßm õE9¼[ˆíœYÒqÎ(,ïoÖ@V8FÆ +ç-…y +§")\FwW8qïñ®ñúìàðòøèÕO±‰<=;lwp”NgPÆSSP„&'ÚûZÒœõ*ÈðýýX@¬/0Òz”qg=Á›­¯xiëkòë MÜÆúÍTáìùái?·Bàé)(B—Òé®!\­knO¹À„3ý©"`þgí?ÆüÇy‹ÿwÀÿŠ|Ä\F7Éø!.û–¯Ÿ5"¬eœkGd £(jë™0ŸùV‘þ»¸{¼zh?Ä Ìg‡Óñ”–&nÒòøë—ˇ«/ñß×wÍ}Ó˜¸šqOFAµ„†÷Mo—:–ù$\ÍÜcåx¡¶·ÄtGük#ÎÅÉvpa4OOä©›óô¯}É—7s ‰$1h +Š o£%ú7élëññú`ëÛÎAÅ¢^õ·ù!ëFw Œt œ·t È;Ð%*ò‘.Ëhâ&Ïzm fb¶ˆdÅX(m&©GÛDÚB”!®9óPð„–6.Ý&l\õ´R¦m"£Zu›°ŠYï¦u8Ú&’Ò»Õ»ûûíh}ûãŨ(ˆ÷·V!/FŒŒœ·ŒÈ;0^*ò‘ñ‚ËhâæYUoÈΔ¥’°QäqÆär“ÜãFê´ÕFQð„–6n0¿^}êÖáÉ(¨VA=bbÒ¤qÓJü³7V [ññŠ)x"Qm\êƪₜ ƒg© (ú&ÚðU§GøþÇl€5Š £ÆÎ[ähùH£Àe4q×ßÕyÚíÞÄË žHBFQì>ÎÀã=m’|¼S¤ /Ýh& +žÐÒÆÍàñº×(œgÊHƒ'£ Zu£ðœy­Ä4ýF¡Ñx°Ìé‡ó”ñTžš¸T£.M$ž¥‚"èÛhÃ"¾Sòþæ>xk[Ý%:Ð$PÒÒ#é@‹€Ì#Õ0š¿Ëw?Á™=Íž¾#„f!ƒÓX¹GÜ÷ŒNG.…êD ˜ÕF{1³qÞâ6ä°»"ñ—ÑÄÍŽŸ<ŸýZŠT2Š¢n¢e«?e«×O+‚“NNÞD?Kèø–ü‘‹}§—¿Y]¯nîg +$NÇb!…~+€¤@ +Œ,”qW o.Š÷asmyDŒ3f¤:6pJÂ4êº÷ {Ùn”Ùô®8À.]2/(þJˆsh¹&Õe\-/Mö¿èw××w—sÏHPÕ[zÏHPÒ3¼5ÿù¶­‹8Ûµr!µLS©HgÊc~ÑknÃ>r[½¾xw)á–ÈÏV_îö•[®îïËùÖ_Ãÿ|³ùùnûw~¸WJÓö ¬+[ &­q¸ì­j!ÓŽY¿KGpúÀŽkF5k8ok—kóÀXÃ%L£Œ5äÒÿøXÃÕ•±VÉ[5K5Ì!0ÖPe¬Aþ7þí\¿O»fž÷?¡¬3Œ®AŒÔ Î[jòR5X1Ô .a•n¨éŒ¥ÓMÁºY‹ëƒ˜ÖXJeÁÍÈì¨4–¯%nTAÍðW³XCi7™s±Ý˜~¼½J­vnò!tªWÛ/F@Š±ÀÈbDwÅHðæb¬xKK¾Ï¿^7Üq6„0î~9f<¥¢‰›þr÷ù*Þ³Ú ªd†KK$!£(zŸ>þQj’ü8A›«ô5ÎÑd<©`w?7ÓÓ;bñ¢W^Po:biDÖ“+çêÝûÎ2,Îßã˜Ñý9À +=ÃèBGËÎ*áC.sJ]PÝüÝY9fÓ7u1yƒQ¤Ó A +R^ÆÕòâ8¹úðïûÇOo­âžeÅ¿³Z77H‚Ž™qrB‹|˜¾Å“ +¦q»æ¤ceŠKüÂ3¨¥­7ðDˆù‘Í…Ó;ýÛ³¿·ÇÜ%óé—Á<‘ 6n?AÖ0£„ 2”Q±õ±ÝˆIŠ>®nçzH^nÉ™ A­’ Y%XpðîãÕãÇwÛg?|Øþrtû°º»]=lþºÚfùau•ÌZ¢ÍB*m”ÿ¶ºÛ.Ÿ6?òV¨ðË›øRÚ#뮦RûRº>ÚN¬¦ú=5ØËSÇS7(º¡nqÿvº …4S  o¥}a¸‘¢Â2 + +[O+;m4⌎-²¯ïIÁàÌ!Öi* +hUl¡yÂÕ¹çºtÂyþ›è¾EÀeYX¤'ø¦£õ7ë³ÛBÇRÍR’òç«ÛÕ]^×Û!s›Ÿ¾ýåÇ4²·¹ýÉ¿•ê[¹}Ö¸äÜn~»Ù—fùy;ÞÚ‡’ÿë÷ü@ò¯¿¿_5"7BÍeé¶~gŠendstream +endobj +1849 0 obj << +/Type /Page +/Contents 1850 0 R +/Resources 1848 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1754 0 R +/Annots [ 1853 0 R 1855 0 R 1857 0 R 1859 0 R 1861 0 R 1863 0 R 1865 0 R 1867 0 R 1869 0 R 1871 0 R 1873 0 R 1875 0 R 1877 0 R 1879 0 R 1881 0 R 1883 0 R 1885 0 R 1887 0 R 1889 0 R 1891 0 R 1893 0 R 1895 0 R 1897 0 R 1899 0 R 1901 0 R 1903 0 R 1905 0 R 1907 0 R 1908 0 R 1909 0 R 1911 0 R 1912 0 R 1914 0 R 1915 0 R 1916 0 R 1918 0 R 1919 0 R 1920 0 R 1922 0 R 1924 0 R 1927 0 R 1928 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1936 0 R 1937 0 R 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R ] +>> endobj +1853 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 727.7951 234.7566 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00150_gad0321f4c570f9983c6de81ece3ddc20) >> +>> endobj +1855 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 714.8027 209.1527 724.7304] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) >> +>> endobj +1857 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 701.8102 220.2212 711.7379] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb948296aea6b6b3aa1f156799c4d479c) >> +>> endobj +1859 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 688.8178 218.5673 698.7454] +/Subtype /Link +/A << /S /GoTo /D (a00150_g17d111686f98e4c09db73a770ac3f1a4) >> +>> endobj +1861 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 675.2227 229.0778 685.753] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6f2b90c597ec23f39ec716ccec11233c) >> +>> endobj +1863 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 662.2302 227.424 672.7605] +/Subtype /Link +/A << /S /GoTo /D (a00150_g15f2617f7dc1713f9d10282125c6027b) >> +>> endobj +1865 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 649.8404 227.424 659.7681] +/Subtype /Link +/A << /S /GoTo /D (a00150_gee37386b2ab828787c05227eb109def7) >> +>> endobj +1867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 636.848 187.0257 646.7756] +/Subtype /Link +/A << /S /GoTo /D (a00150_g88e60aa2cf23e1c65d630701db08c743) >> +>> endobj +1869 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 623.8555 190.9012 633.7832] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6020613f5062417d9811cfa837215c83) >> +>> endobj +1871 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 610.8631 189.2474 620.7907] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5ca559def464ef20d8b1f7d32f2f160d) >> +>> endobj +1873 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 597.8706 189.2474 607.7983] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1320fd0006a2f70138bc2d0018dda829) >> +>> endobj +1875 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 584.8781 191.6086 594.8058] +/Subtype /Link +/A << /S /GoTo /D (a00150_g44b3b1ab31a403ba28ec135adfcbefef) >> +>> endobj +1877 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 571.8857 192.007 581.8134] +/Subtype /Link +/A << /S /GoTo /D (a00150_gc84f499cba8a02fc0e306c10b2acabf0) >> +>> endobj +1879 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 558.8933 189.7953 568.8209] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1425d4a0c2760adb653a04c0fb137a8d) >> +>> endobj +1881 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 545.9008 215.2498 555.8285] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1215163245304bad20d6c5608ad75ab7) >> +>> endobj +1883 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 532.9083 221.8948 542.836] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9f1822e1d231235edacad691f3cb7bbb) >> +>> endobj +1885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 519.9159 214.7117 529.8436] +/Subtype /Link +/A << /S /GoTo /D (a00150_g691688604655ea8943d15f14c60027d8) >> +>> endobj +1887 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 506.9234 239.0603 516.8511] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) >> +>> endobj +1889 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 493.931 239.7177 503.8587] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) >> +>> endobj +1891 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 480.9385 204.1812 490.8662] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd58231410d58e34b455328b888a9e73c) >> +>> endobj +1893 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 467.9461 244.6991 477.8738] +/Subtype /Link +/A << /S /GoTo /D (a00150_g207d17b633cd095120a74bc1f2257b17) >> +>> endobj +1895 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 454.9536 209.1625 464.8813] +/Subtype /Link +/A << /S /GoTo /D (a00150_g4cc3e223b63f27b546d62e9a258dba5a) >> +>> endobj +1897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 441.9612 305.6302 451.8889] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) >> +>> endobj +1899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 428.9687 321.0623 438.8964] +/Subtype /Link +/A << /S /GoTo /D (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) >> +>> endobj +1901 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 415.3736 218.1788 425.904] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) >> +>> endobj +1903 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 402.9838 341.9936 412.9115] +/Subtype /Link +/A << /S /GoTo /D (a00150_g42288d5c3cf4b10becefec657f441e54) >> +>> endobj +1905 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 389.9914 341.0573 399.9191] +/Subtype /Link +/A << /S /GoTo /D (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) >> +>> endobj +1907 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 376.0227 167.0009 386.9266] +/Subtype /Link +/A << /S /GoTo /D (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) >> +>> endobj +1908 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.7613 376.0227 256.6538 386.9266] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +1909 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.2016 376.0227 305.9885 386.9266] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1911 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 363.0302 172.5401 373.9342] +/Subtype /Link +/A << /S /GoTo /D (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) >> +>> endobj +1912 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.3005 363.0302 262.193 373.9342] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +1914 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 350.0378 191.3593 360.9417] +/Subtype /Link +/A << /S /GoTo /D (a00150_g4309376690872fa4beb4f025f5cc199b) >> +>> endobj +1915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.1197 350.0378 288.763 360.9417] +/Subtype /Link +/A << /S /GoTo /D (a00091) >> +>> endobj +1916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.3108 350.0378 338.0977 360.9417] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1918 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 337.0453 186.9261 347.9492] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb9435261753469accec0c9bf8a5a2686) >> +>> endobj +1919 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.6865 337.0453 279.3487 347.9492] +/Subtype /Link +/A << /S /GoTo /D (a00096) >> +>> endobj +1920 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.8965 337.0453 328.6835 347.9492] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +1922 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 324.4265 191.6285 334.9568] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9c0814ed491fa452ec97910c0728d410) >> +>> endobj +1924 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 311.434 189.2275 321.9643] +/Subtype /Link +/A << /S /GoTo /D (a00150_g013c3a06a8b58589a77f4a3442f89c2a) >> +>> endobj +1927 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 254.0565 170.966 264.9604] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1928 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4642 254.0565 229.3566 264.9604] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> +>> endobj +1930 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 215.1201 170.966 226.0241] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1931 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4642 215.1201 229.3566 226.0241] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9ebb4dac683163840eab9c6c41ad61f7) >> +>> endobj +1932 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 202.1277 204.1712 213.0316] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> +>> endobj +1933 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.6693 202.1277 257.5805 213.0316] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1936 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 145.1237 183.4989 156.0277] +/Subtype /Link +/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> +>> endobj +1937 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.3145 145.1237 207.0205 156.0277] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1938 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 132.1313 138.5977 143.0352] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1939 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 132.1313 189.7953 143.0352] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> +>> endobj +1940 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.6109 132.1313 218.2983 143.0352] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1941 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.84 132.1313 266.5273 143.0352] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1942 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 93.195 138.5977 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 93.195 197.5461 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +1851 0 obj << +/D [1849 0 R /XYZ 90 757.9346 null] +>> endobj +1852 0 obj << +/D [1849 0 R /XYZ 90 739.9346 null] +>> endobj +1854 0 obj << +/D [1849 0 R /XYZ 90 731.7802 null] +>> endobj +1856 0 obj << +/D [1849 0 R /XYZ 90 718.7877 null] +>> endobj +1858 0 obj << +/D [1849 0 R /XYZ 90 705.7953 null] +>> endobj +1860 0 obj << +/D [1849 0 R /XYZ 90 692.8028 null] +>> endobj +1862 0 obj << +/D [1849 0 R /XYZ 90 679.2077 null] +>> endobj +1864 0 obj << +/D [1849 0 R /XYZ 90 666.2153 null] +>> endobj +1866 0 obj << +/D [1849 0 R /XYZ 90 653.8255 null] +>> endobj +1868 0 obj << +/D [1849 0 R /XYZ 90 640.833 null] +>> endobj +1870 0 obj << +/D [1849 0 R /XYZ 90 627.8406 null] +>> endobj +1872 0 obj << +/D [1849 0 R /XYZ 90 614.8481 null] +>> endobj +1874 0 obj << +/D [1849 0 R /XYZ 90 601.8557 null] +>> endobj +1876 0 obj << +/D [1849 0 R /XYZ 90 588.8632 null] +>> endobj +1878 0 obj << +/D [1849 0 R /XYZ 90 575.8708 null] +>> endobj +1880 0 obj << +/D [1849 0 R /XYZ 90 562.8783 null] +>> endobj +1882 0 obj << +/D [1849 0 R /XYZ 90 549.8858 null] +>> endobj +1884 0 obj << +/D [1849 0 R /XYZ 90 536.8934 null] +>> endobj +1886 0 obj << +/D [1849 0 R /XYZ 90 523.901 null] +>> endobj +1888 0 obj << +/D [1849 0 R /XYZ 90 510.9085 null] +>> endobj +1890 0 obj << +/D [1849 0 R /XYZ 90 497.916 null] +>> endobj +1892 0 obj << +/D [1849 0 R /XYZ 90 484.9236 null] +>> endobj +1894 0 obj << +/D [1849 0 R /XYZ 90 471.9311 null] +>> endobj +1896 0 obj << +/D [1849 0 R /XYZ 90 458.9387 null] +>> endobj +1898 0 obj << +/D [1849 0 R /XYZ 90 445.9462 null] +>> endobj +1900 0 obj << +/D [1849 0 R /XYZ 90 432.9538 null] +>> endobj +1902 0 obj << +/D [1849 0 R /XYZ 90 419.3587 null] +>> endobj +1904 0 obj << +/D [1849 0 R /XYZ 90 406.9689 null] +>> endobj +1906 0 obj << +/D [1849 0 R /XYZ 90 393.9764 null] +>> endobj +1910 0 obj << +/D [1849 0 R /XYZ 90 380.0077 null] +>> endobj +1913 0 obj << +/D [1849 0 R /XYZ 90 367.0153 null] +>> endobj +1917 0 obj << +/D [1849 0 R /XYZ 90 354.0228 null] +>> endobj +1921 0 obj << +/D [1849 0 R /XYZ 90 341.0304 null] +>> endobj +1923 0 obj << +/D [1849 0 R /XYZ 90 328.4115 null] +>> endobj +1925 0 obj << +/D [1849 0 R /XYZ 90 270.7639 null] +>> endobj +1926 0 obj << +/D [1849 0 R /XYZ 90 270.7639 null] +>> endobj +1929 0 obj << +/D [1849 0 R /XYZ 90 234.2545 null] +>> endobj +1519 0 obj << +/D [1849 0 R /XYZ 90 219.1052 null] +>> endobj +1934 0 obj << +/D [1849 0 R /XYZ 90 164.1147 null] +>> endobj +1935 0 obj << +/D [1849 0 R /XYZ 90 164.1147 null] +>> endobj +1848 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1947 0 obj << +/Length 2723 +/Filter /FlateDecode +>> +stream +xÚÍ[Û’·}߯à#Ye¸_ü9qYUq”híY¥¢H®ÄÒŠ¤¹CÉÊקÁ€˜Á ›ÝT¥ô %yØ}ÐӧѸÍ(üc3GgFâ„Ô³õç:ûoÿtú—ðù2üåöæû¿q7sÄi®g·w šÅŸÝnÞÌ5q‹%Wt~ûqÛþqþùU÷΋W߇¿šÕúÓb)¨´z®ÕâííË›¿ÞFÇ/%4ónÿ¸yó–Î6Àïå %ÂY5û +/(aÎñÙçÉExqóúæŸÑNûÁå cÓT+ìlÉM; ”5„iá0|Ãc<Yøº–> >¤ÆÙY@ù ¼XݯÏ÷«¦‹HB¢ñq»ÚlOíßëSðÆzÁéüÓÃùsûîánðÕãªE,o›ÜÌnßEw|÷Þ#ÏwÞ0F:ŒÊ0àÍ+‡ ‹ãÄr©¦S†j¬MRF$)ÃàS)¬œE˜Ñœ|‹+1K =Jâ,ƒÇÜ~æß9}è>úWÊj² ¸»3Óž0DS&‹ô8‘Žœž¤„:ÎPzקO¹Y×/3 É)…L¼HsQN‘Z¸ÁÓ£Š~ñivØmào6•fÚ1" «TZŠ.H-ÂJZƒêód‰êòÆj¿¹~²:7«f5)5m)‘Œ›g‘šÖP&­åˆÔ" •ZjðÉRCØ\]Yj%z–B/àúôà Ÿ7“RÄÈr—„¸çðì¸fðìj…¦81†ñJ¡%è’Ь$´_ü¿šdÄ2ê³C@¬±˜ÐZ˜«Z@ŽyŒ¨e ++I(õ$W SßÓJ xŒEf7(åaÛìŽ#DŒƒvM:$…¹·Œh«î½R2¿VJ¡Ë© @À£ †v'+‡äÔò¨8ôˆBsFý$<:R g˜¡®²4$èRi°ËÀCc»ÛïšÝê~÷ïU³;tš¾;ï×þÕ´l¡>r¬rUªV9hÿ­Qˆj# Umj° ZÄoPmÏ/ªÚ¾ï +Õ",2»Aµ«ÍFð\³Ú7ˆ A@aÎAÛRK1ý¨faÒ±ÌV?à1™ÝËðí˜d¡asØèÜ/ô-é¼ÎA©Ê GN…÷; yé¸$8ð˜ÃQðï2r$`„« OÄ#áÉíN—4¥ˆÒÖ ñ (̱²„*7ȌÑéRQS¬ªêŠZŠ.µkûÓé[×Ãœ»>eÕþ'øòý.¼µÙìŠåMiI4Ö@µõM1Hbðú`x}K –ê[Ùo¬o©_¼¾õ|×Ô·2‹Ìn¨o~ZÊXhhh6Ê(Ì·¶DR5ð]Û¼+á‹(e•Éœ KÉ`OŸ¡ׄ²çš¢™€F,…[˜­Há€|Žlj¬”è);ŸbëÃ~Ÿ1„\€M.#*÷Ý›G˜’DÂ6ˆL7ôS,*Ê~§GðØè3»éè·ë|¢€nUKÃʈ(Ä=÷Ÿ +c†È[Î ‰”ⵈx”ÁÐn¬0G˜N#S%¬åÅeV-F  àÚ«A[£)Pj%N-Á…¤ó¬£Ôhftm´"‰Vnw²£‚뢔ˆÂ ÄÀïéx85¥",%B;[W„St¡GØ¥£èTÒî‡z-Åi!Ì|ûù¶W>:àùa·ÿpÝÓd¢°«/­!’aK½ÊB-$ +Ò )Ô†êÔà“ 5Â.àz캽¼ñbm ¸ù]ÚËeDåþûÅ>•TˆAtÆŠµeÐwgÑ),w:<ÌnývÁÕük¾¸PP`° DB H~%†)2V°%#Úï&T!â1™]´`;@§’Ü)B-åãi0V°EMÁ†ú&/r¯‹VÄ#ÑÊíNl¥ c¬¥ÂÜÂPSfúnñz­1ÚÉÊz Kõ:À<…×a{ú|ìÕjóâl·Õ½ÔGKi‰eØ¢µ¶<ƒ +zæPxq¾š+¬ËNcÑMœ¢«ÀžãŠE`™ÂÐj,zûûÝC³Í˾õû˜þÙ”Æ@ˆs«‰ÖÚõƒ>ºÅ_²RÖŽ=À1÷«Ó8[Ú¸ò #¨ì•3ù꥓xEµË™ÿR¥t¯à’r;ÔE¸Í¡SlûÐcš®xõpÜ®wPù¶;gò̧õ +X­<Ï¥ á é· +p3¸‚#²,áVÐpÏ/*â¾ï +#,2»AÇ*†™–‡‰A@aÞ&†J>ˆý¨)¡¦®Úñ<Æ ³[8_âÄ0­ÊC(Ä1§ +Ölf0tLÎÂòv«·JÏ)º èk½:5ÿ I hè5ÅV}µ’†NÆX%0I.éÄà“WL»(ü”]ùrF‰Þ£/g ô®GïcsØ?Œmi M‰Þ2¢0ÇÚÏýl—Ñb añmø-l»ux”ÁÐîô“qþxX`C(̱óä{Ïñ¿r\Ýë`ÄŠÊz Kõ Àº­¿4ú² Uéë‘ÌçÕ¾Ù5ÝáÍ,¢Ôüðy¸¯òþ[Øk9\6_âUÊPQöÛæëáôi k›é­¿˜¢[žÔtXa 0¼°$K½BÙo,©_¼Wèù®éÊ,2»×Ë(û‘›(”X¿Æ,G  0ßF¿#Ý<ÔX †> endobj +1949 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 703.0355 138.5977 713.9394] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 703.0355 201.9695 713.9394] +/Subtype /Link +/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +1951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 664.4351 138.5977 675.3391] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 664.4351 204.7393 675.3391] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7023a34ba9e9d03b5fbedbcb32924453) >> +>> endobj +1953 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 625.8348 180.1912 636.7387] +/Subtype /Link +/A << /S /GoTo /D (a00150_g22f140b02c354dfebcc7ad481c3bcd68) >> +>> endobj +1954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.0068 625.8348 208.6941 636.7387] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 587.2344 177.9699 598.1383] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> +>> endobj +1956 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7856 587.2344 201.4916 598.1383] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +1957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.8776 587.2344 256.5649 598.1383] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1958 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 548.634 166.9111 559.538] +/Subtype /Link +/A << /S /GoTo /D (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> +>> endobj +1959 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 510.0337 152.9837 520.9376] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1960 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 510.0337 211.6433 520.9376] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) >> +>> endobj +1961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.459 510.0337 268.3701 520.9376] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1962 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.2043 510.0337 331.8917 520.9376] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 471.4333 172.9089 482.3372] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1964 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 471.4333 236.859 482.3372] +/Subtype /Link +/A << /S /GoTo /D (a00150_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +1965 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.6746 471.4333 293.5858 482.3372] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +1966 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.42 471.4333 357.1073 482.3372] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1967 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 432.8329 185.1725 443.7369] +/Subtype /Link +/A << /S /GoTo /D (a00150_gaa585784b0914cac1d37f07f85457008) >> +>> endobj +1968 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.9881 432.8329 213.6754 443.7369] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 394.2326 175.2098 405.1365] +/Subtype /Link +/A << /S /GoTo /D (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +1970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.0255 394.2326 203.7128 405.1365] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1971 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 356.0058 138.5977 366.5361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1972 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 356.0058 162.6772 366.5361] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +1973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.4928 356.0058 191.1801 366.5361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +1974 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 317.0318 171.8826 327.9358] +/Subtype /Link +/A << /S /GoTo /D (a00150_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +1976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 234.645 192.0768 245.5489] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +1977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 196.0446 152.9837 206.9486] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1978 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 196.0446 200.0271 206.9486] +/Subtype /Link +/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> +>> endobj +1979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 157.4443 152.9837 168.3482] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +1980 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.4818 157.4443 196.4305 168.3482] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +1982 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 144.6198 172.9089 155.5237] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 144.6198 239.8777 155.5237] +/Subtype /Link +/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> +>> endobj +1985 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 106.0194 172.9089 116.9234] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +1986 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.4071 106.0194 236.281 116.9234] +/Subtype /Link +/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> +>> endobj +1987 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 93.195 151.3294 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +1988 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.8276 93.195 185.3713 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> +>> endobj +1948 0 obj << +/D [1946 0 R /XYZ 90 757.9346 null] +>> endobj +1975 0 obj << +/D [1946 0 R /XYZ 90 253.468 null] +>> endobj +1406 0 obj << +/D [1946 0 R /XYZ 90 176.4106 null] +>> endobj +1981 0 obj << +/D [1946 0 R /XYZ 90 161.4293 null] +>> endobj +1984 0 obj << +/D [1946 0 R /XYZ 90 124.9858 null] +>> endobj +1945 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2003 0 obj << +/Length 2504 +/Filter /FlateDecode +>> +stream +xÚ­[ÙŽ7}ï¯ a"šûâÁ<8±ؘ8¸ý2¶a¨%u·`µÔÑ’Ääß粊d³]JÝ.U"ï¹ ‰ (ü±££ qBêÁôþ‚náö,<ÃóqøþêâÉKîŽ8Íõàê¦jA3¢8ルÙû¡Ö£1·ÔÐáþÕ%\*:d„Ö?­gûå¼¾~¾žîïç«Ýd·X¯F¯^_¼¸JýZJhæ{ýíâýG:˜½×”gÕàø@ sŽî/$ñÃòâíÅ/©úAõBßè$UÄ +;sS'uÀŒÂ4{p½áÉŠ,¼®¥7ƒ‡Ô8;ˆ(o“«»0èd’«.ŸÄë­·Áv·˜nIÛ±OàU&N0ðc‚)Ë ƒæ†²G9E&'£šHaå Áü>p®ºÜà-®Ä o°Ý£$Î2Р~æïlnã_sê €Të"»ˆk°ÛÛO»;Á‰æÀØq"5evBƨ-²‹¸&»Å甊Éí¶CÒ0¢¥(ɱ  ZX¾CÊjçã0óÌ~e¬¨lÞàÙÊØE\ƒ·Ýâa2›mzÖ¼%–•ÂºÌR["˜rE–×ay·†0žm–œCþ‘T¢,AÙ€*kl 1¶oLã+kœ5x¾Æ8»¤qÎî8–§kŒ³L·Y®æ»ûÉösGbHÎ\H‰’ûÂP¡ÊkI¨d²$q„•%Î<_bœ]’8gwœÄËÓ%ÆY&‰Û,g›Þ fœPÁ ʨ²ÂŠ&%˜ÂVV8kð|…qvIáœÝq +#,OWg™n³,'j„e;Qžei¡‰‚%‰#¬,qÖàùãì’Ä9»ã$FXž.1Î2IÜfY +b„ã)A H˸.)ae…³ÏWg—ÎÙ§0Âòt…q–Iá6Ëb%FHžR‰Aª)Iae‰³Ï—g—$ÎÙyãÍwwŸú„iC¤q eyì’I{&° .±Œ¸>–ýQlˆ0JrœP…î}Ò§ŠµŒôïz]þ×_ô»ô÷÷ß={Ê)"¸6( ”`EÂz<Ù +ì"®Á]kcìN^kØE\“8ÎõˆÓáþ¦/9ª8.ZB•º÷©É©V÷ïß½ºüôýˆÑá»—o_ý÷Å?ùÇC;:Ê8¢Çm9åhdÏ)Áú7&So›Ïžà|Wß‹Öbvx3ߌcûP +­—_cJ)I¬u¥EN‚•##k°ÇUê7ù|ÞïïÞFëÅÌ÷ýä%Ìþ³ùƒJ½T)‚’a…j<_¢Úi7Àäáa6ÙM:D#ÔR…[Ê +âL~ÇL#”<Ò?…#LÉ’{”'z9²Þ¦«8]刻uø?º- c¹˜ÖÛÃÕjPÕÕbÕžíÙÜæÔ û«È¬AIÅKÛp Vví¬A̵ñ~“kçý~%×n<Ƶqªv£koú6 NÁL±`ª€*KH)1Ô•vÙ¬,aÖàùug—„ÎÙí™î+܆hÊ$JïØÂ-Á_gEzפâ.ç«nÑö‡(0-ÃÂ*&ûÆÄœ¥ŽËYÒ‚Œ°…¤•`š +\owwõõúæˆlÔIYùTåä|%$ ›û*ùJjJʧUtõ¬¹³=§a95ÜÏn'»9Î-ÂÜ|ëór#ˆUŠaô|a®0e9¥&Š»Òù^‚•Í<_Qœ]’4g‡®90v'¯9 +ì"®Éîˆó=Œäñç{Æl¬.*aee³ÏWg—”ÍÙyÛM׫nD(݉2'T·ïÆLæœDËZ–é›ÑhhQQÖêÙæøÒè;í¢£wP{„÷3lô0·ÚÚS«Tª¨.U½;n®>Ýo6#a†óÕ.}¿!<ñͧ~¸˜ãRÇÌW)fÂÁÜQZ[ˆ‘+ÆHÞàÙ1R`q vÅÁ›c„”F\/Ãnþs +Ì-9JqœP¥ÎI`ÒÓè¼Úsùáç7oÞ~ìÙ¡ÆBåWˆ¿dÌ_"¬ì/H§û Î.ùKΟaôNžèE\“žŸé/¶»ùêa½ÙmûrŸ`ŽáÊ%TLˆ¥Ï*—ùÏ«·W/Þ\þüëHCºêw-!ÅÞÃÊžc®PeÏ9ÜÝ鎃RK~“QóºìgR ÌcãµHu:ocXºH*DÓ.}µæEÖ´írxì^{»ÕÒع°ÄZ&ñ± F sòÄb,¤#`1U(Æ ÖX‚vjî»çÇ×\£bÚê¯Ss9HÊUé”#ÁÊ‘5x~(àìR,äìŽ „屩´YdqYn»~«·Ò¢4Ç U À¡~£ZªD +n‡Ô_F‰¶Üö €ùN„•}éñtßÁÙ%ßÉÙ¡«UŒÝÉ«Õ»ˆk²óÓ©à]·†Y¸Ò—,¡JC½UÒ´Ló^<ã~Wš#ÏÃr4’8Ìw.Ç×_vñlR'SÃÉ—°·Ïê«›õ¦µ´||½v;ÿm?_MÓÕþþ:®ˆ¦“åt¿¬+‹›ûÃk‡‚ÊW‡¾ißú?D!µ¡J<6DXhêÛY£-ðÏ./Ÿ„>95¼9:|öÉŸv†¦Åá¦SíŠ{\U{µqÿ‹êø§¿û‡“Årr1´¹6Ø‘P;j¾È%Ì-ý$ÐÙB€%ü8¡''vÚ-AsÀ ¡m‹H;%GT¡{A)±Ü´ºoYV©zÙ%"À}Y×\Ê Èb †szx?™nü²4½[/gánpѧ Ü¢ÁKµ:p+¨WA¸ªÔP:’¨‚@…™W¥óÑ„ç/ô˜§ÓnA!ýI¾°-"-uªÔ=Ä&7´Õ}Ÿ:c)MˆŒ\0Ú6K³*Cy†§×ódîYPX….Ç)M@—)j¦wóéçÅê6Dàz¿ªDÎ0Ä]3Üjw¢ÑêÀ~ñçäþa9Ú¶©U„2k #C-âÏî<Îѵeõ–þÕ* ñAB±°ªL(O`»zØ€n>PE³3ðïFcM³Ö³«:S…Ûßücÿ ¹ú&|^ÀÛì_=ilº„œ ³ 0ædÔ“P&–‹˜.™¢ºicÿÎòñˆÜ‘¾ß>1Â|ñìq@ +´˜Vú¬ŸEU3/ðKó’¼¼èpÒîËáEYýò¨¦âGüã|5ßLv±VÆaÿ/^ûšºÿÓ§\<åá`œFƒTA2zç§b×_bñúóËm÷ÈDÁ4®ÇJÿ +b©Íendstream +endobj +2002 0 obj << +/Type /Page +/Contents 2003 0 R +/Resources 2001 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1754 0 R +/Annots [ 2006 0 R 2007 0 R 2009 0 R 2010 0 R 2012 0 R 2013 0 R 2015 0 R 2016 0 R 2017 0 R 2018 0 R 2019 0 R 2020 0 R 2021 0 R 2022 0 R 2024 0 R 2025 0 R 2026 0 R 2027 0 R 2028 0 R 2030 0 R 2031 0 R 2032 0 R 2034 0 R 2035 0 R 2036 0 R 2037 0 R 2038 0 R 2039 0 R 2040 0 R 2041 0 R 2043 0 R 2044 0 R 2045 0 R 2046 0 R 2047 0 R 2048 0 R 2050 0 R 2051 0 R 2054 0 R 2055 0 R ] +>> endobj +2006 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 702.117 133.6164 713.021] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2007 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 702.117 172.6397 713.021] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> +>> endobj +2009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 688.3741 166.8215 699.278] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2010 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 688.3741 221.3367 699.278] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> +>> endobj +2012 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 674.6312 166.8215 685.5351] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2013 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 674.6312 220.2307 685.5351] +/Subtype /Link +/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> +>> endobj +2015 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 660.8883 166.8215 671.7922] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2016 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 660.8883 213.028 671.7922] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> +>> endobj +2017 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 647.1453 166.8215 658.0493] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2018 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 647.1453 221.3367 658.0493] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> +>> endobj +2019 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 633.4024 166.8215 644.3063] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2020 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 633.4024 213.028 644.3063] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> +>> endobj +2021 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 619.6595 166.8215 630.5634] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2022 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 619.6595 220.2307 630.5634] +/Subtype /Link +/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> +>> endobj +2024 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 605.9166 168.4754 616.8205] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +2025 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 605.9166 218.5572 616.8205] +/Subtype /Link +/A << /S /GoTo /D (a00150_g499bb98a0b4ae9a98553ede81317606d) >> +>> endobj +2026 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 592.1736 133.6164 603.0776] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2027 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 592.1736 166.9014 603.0776] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2028 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 551.7363 192.0768 562.6403] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +2030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 511.2991 195.9522 522.203] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga05a3dde2048480fa3ab2a5961898d18) >> +>> endobj +2031 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 497.5561 138.5977 508.4601] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2032 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 497.5561 170.976 508.4601] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +2034 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 457.1189 138.5977 468.0228] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2035 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 457.1189 174.8513 468.0228] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5b5615dc240daed20949c0fded2b4679) >> +>> endobj +2036 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 443.3759 133.6164 454.2799] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2037 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 443.3759 172.6397 454.2799] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> +>> endobj +2038 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 429.633 152.9837 440.537] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2039 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 429.633 200.0271 440.537] +/Subtype /Link +/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> +>> endobj +2040 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 389.1957 152.9837 400.0997] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2041 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.4818 389.1957 196.4305 400.0997] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +2043 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 375.4528 138.5977 386.3567] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 375.4528 200.3154 386.3567] +/Subtype /Link +/A << /S /GoTo /D (a00150_g236d5c7872f59c8fe7b701c7252b976e) >> +>> endobj +2045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 361.7099 172.9089 372.6138] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +2046 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 361.7099 239.8777 372.6138] +/Subtype /Link +/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> +>> endobj +2047 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 321.2726 172.9089 332.1765] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +2048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.4071 321.2726 236.281 332.1765] +/Subtype /Link +/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> +>> endobj +2050 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 307.5297 133.6164 318.4336] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2051 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 307.5297 177.0532 318.4336] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) >> +>> endobj +2054 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.5461 195.4567 299.333 206.3606] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2055 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.5331 177.8323 346.3201 188.7363] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2004 0 obj << +/D [2002 0 R /XYZ 90 757.9346 null] +>> endobj +2005 0 obj << +/D [2002 0 R /XYZ 90 722.0018 null] +>> endobj +2008 0 obj << +/D [2002 0 R /XYZ 90 706.1021 null] +>> endobj +2011 0 obj << +/D [2002 0 R /XYZ 90 692.3592 null] +>> endobj +2014 0 obj << +/D [2002 0 R /XYZ 90 678.6162 null] +>> endobj +2023 0 obj << +/D [2002 0 R /XYZ 90 623.6445 null] +>> endobj +2029 0 obj << +/D [2002 0 R /XYZ 90 531.1839 null] +>> endobj +2033 0 obj << +/D [2002 0 R /XYZ 90 477.0037 null] +>> endobj +2042 0 obj << +/D [2002 0 R /XYZ 90 393.1808 null] +>> endobj +2049 0 obj << +/D [2002 0 R /XYZ 90 325.2577 null] +>> endobj +2052 0 obj << +/D [2002 0 R /XYZ 90 267.6373 null] +>> endobj +1847 0 obj << +/D [2002 0 R /XYZ 90 240.7961 null] +>> endobj +2053 0 obj << +/D [2002 0 R /XYZ 90 240.7961 null] +>> endobj +2001 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2058 0 obj << +/Length 2056 +/Filter /FlateDecode +>> +stream +xÚÅY[Û¶~÷¯ð[m f9¤$Jyk7MÛíÉIö­-ZYk ‘%G–²Ýß¡x±¨«=ÀÁ>,E~ä ç>4¬)þÁ:¢ká q/X'§]púçèå®ïº€ïWß¿gÑ:"QÀ‚õýS{BÄgÀÖ÷û?6‰¶;æÓÍý1Uƒæ×zæîã÷f|©ãäËvÇ©›@lÿºÿ°úéÞÖ|ù<Iöëê¿èzü}XQ£Ð_?ã%El}ZyŒ›|õyõ_{ŽZh7Œ]Ï>~?ù>3dx_aïGøv”ÒÍû¦Hê¬,Ô•Þ•IsJ‹:n§ðB=I¡(™GBázþÍ Âý(Z êðy¤—KÕAc>u®`ñ»î†¡ž†çJ&ê >¨ßc¡';‹Z"ìsøhác]%·?©O,„Œ€Û¥`ðKÌ Î”£A¶¤`QCÂh>WÂŒF„Rޓ·81`„ǀĠx@ƒx´ŽòÂ3VÕ‚ïÐò<ºù¶“Vµ0»ÇL¿6qQgõ‹úzªÊ“Ë‹F<¾ÔÚqËjŸVjX—ê‘ÖÏ[K_ÆѾ¿!’[ií HÀ<¯eìþ˜¡º9ˆÍ“uùefÏUvŠ«,‘ŸÁ¦¹¤{ /+5HÜ«eÅAÍÛ2ƒ[ãÇ<5$ÚkÉ‘º–)FåH_K’‘×’SεÆÐíµ0\À潤<™;š@wãPJç1Üõ啲ijÞèzÑ 5Õ¾F>¡aÄ×O‰ð¾à*¿ënP®Ò5°á¹òŽ¿Üo!Üüç÷ÏÒkivÙáÜC4í³Ós‹Z`‚sA˜.§8©´ 3”lï•É¡#(´cyïÒ?)eEv Ô±¶ô<+´X! ™–ü“ J”å&eg’ô¬Zqò)}J«´HR­Z+Q°è½Ñ·=ÿ!9~¹4'#Ô7…²(Ò¤YÉΓ›šýùñÜ[ Mü9}Lò ÓÕÃ!µ§“ñ´…ʈåuÒÓð[kÀÙþJ:Þï9› ìQH‚0*“p‡KÝàwÝ #}pnØѸŽ*ñ)æ#—ƒ~\7¨!]ðº^8Ž0ú:tÑz¸¥“ñ„ ëåÅ4ûqÈ|®AoÌûŒpA½[Ågñ âž;E€y`A~5$ìæEz @¸„Ë3‹Â™JŒŒ†Ä…[mÝÅU¥Ý­l´ÿÇêg×ôˆÖÛŠQÿý1Mb‰aS”µÄy. sPrÌjôÕ¦RñTò’ƒçc–ÕP—ÃЦ>¹/+ê´Ø« ›c¬÷XGJVéDÍ]Y™òêã)­³ä:ÇŒ<ê3âB-¥òŒ¿ë´*â\­Ü¹ L éšš™ šy›}©R™Pù§Té×&«Z¦E‡/qáE}f…‚ØبÁ¹*ë2)sµŽ_F/H -Ç U1´Œ8l]Že“kºHk,צõÐ V붒ÁùÐÖè—^4<çqÒI±íµØäµÉ3½ÅC^>*YR§éÂ$áŒô½'Ĥ +hœ6!ããm‰íº¨¡Ó†mI‰gñòî¿—uúvu)–½œÁ’sîÆ…ÿ­¡XÙsT³€pÉ]»° YX7ÅŽjhž®ÕЀº? {ÒI©N7¥¶ÍÜyšö5ØWS¸¹æg^ôº’¹ˆ¿œó¬~Àúâܼ¾¤æ“/A šº^‚ºf^‚,lù%Èeaò%h°y r Ûîgºk`”±[ n…Å/p4áÔcó¢°¨!a·mÀ¾VD^O7´ [†¶ö4Vsé•ádç€õu(]ûF jø’û§NË/D' +E° ?ƒÒuÛ†ˆb{r—pžãÏi&—šDE $Ü®!Oš<®û¥á¯2»`Ì×ï;Ç4¹Úo)C™~r‰QÖ O³/eíËSÔ!±n½‘kêÙ,Ò•.—Eú¤-¿4‘‘îâÆûNµ?½¿ÃÔ5]FA&˜7_FuQÓe”  {ÖWÕQc Ìdé'ãYÚÂzîî¦ÀŽ<+‹‚“¨Y@8Ç(èž+¥¬#ôt:á¶ûíìt&ë½>ÚeƒýÂt‰$_ô1ÀB‰Ô…Í ßÀ:áÄ<%žçû d jH¶'xŸx,]²ö‡3¤¨n‘òÿ—¼u?`,Xp¿jÚýÀG<¶°ºÂª›J^¢˜ó½9êµÈ6²æÈ6Ê/èãZ ‚¦¡ TvsÊþUªÛþÒæT£ýZ±zóĨ$) + d{ùo~ƒmDq 6]3À²WÈ÷¾§.ò?§EZŵ©°„~3ƒÒ8ýú±è[Æß2ª‹{Jý—ÔHYõ~ŠBÝòý]ù÷Ëaèïòâùü–K$endstream +endobj +2057 0 obj << +/Type /Page +/Contents 2058 0 R +/Resources 2056 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2072 0 R +/Annots [ 2062 0 R 2063 0 R 2064 0 R 2066 0 R 2067 0 R 2069 0 R 2070 0 R 2071 0 R ] +>> endobj +2062 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 702.4242 152.1568 713.0144] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2063 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7156 702.4242 207.5088 713.0144] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2064 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.093 647.6032 335.7466 658.5071] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +2066 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.6856 560.3152 218.4975 571.2043] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2067 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.3742 560.3152 277.1673 571.2043] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2069 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 305.376 152.1568 316.2651] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2070 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.5073 305.376 236.3005 316.2651] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2071 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.8907 305.376 288.6839 316.2651] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2059 0 obj << +/D [2057 0 R /XYZ 90 757.9346 null] +>> endobj +2060 0 obj << +/D [2057 0 R /XYZ 90 739.9346 null] +>> endobj +1996 0 obj << +/D [2057 0 R /XYZ 90 722.6349 null] +>> endobj +2061 0 obj << +/D [2057 0 R /XYZ 90 722.6349 null] +>> endobj +681 0 obj << +/D [2057 0 R /XYZ 486.51 597.8832 null] +>> endobj +2065 0 obj << +/D [2057 0 R /XYZ 90 578.8113 null] +>> endobj +1944 0 obj << +/D [2057 0 R /XYZ 224.7534 342.944 null] +>> endobj +2068 0 obj << +/D [2057 0 R /XYZ 90 323.8721 null] +>> endobj +1992 0 obj << +/D [2057 0 R /XYZ 167.4587 96.348 null] +>> endobj +2056 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2075 0 obj << +/Length 2271 +/Filter /FlateDecode +>> +stream +xÚ­YYoãF~÷¯ÐÓB¬Nß$½O‰Ç™ñÀ‘½¶fE4I[ÄH¤ÂcœÙ_¿ÕÅK”³»ÐûøºªºººŽ™aø‘Y€gžðPÀ¸œEû <{…áÄN/a~Ùü´¾øágÌH*gëMA$(¡³uüë\ú‹%õ±‡çõí4ž„Mã—<®w‰iÈ£zŸdUX¥y¶ø}ýùâfÝðµb &‰âúÇů¿ãY â}¾Àˆ¾˜½A#t¶¿à”¹Îîâéâ 3¡ŒíNöžíQèzvw(@ ñÅ’`ŒçeUÔQÕžŽ<.ýf¡f­fŠW yl ÑÀ—-üPU%N6Qž ôGŽ°ºô6ï0¶„·Ùö()®¿aÌÇž„âÀÁP>îß°À})©ð‘O„x§¢ø´¢T<é!Œãb38/F@³LÐIm5 iu1â!JOê ÖwõE«°ÂH7¢V†çBZÜå@z –O¹÷N%6ði%¨j%9¢=Ÿ¡€ +6­=píh„ùq";LyQh…H$±'¬VÀºˆ±N!L˜ åˆñÀ¼nf•›oh>E²Ï+뢶yiAu™f¯¦¹¾~XBæHñöK8qI9Ó”×Û´˜äó—:‹´gƒž˜»ÑºLbÓÒla¦¬Â¢2C¡ùdÉ‚Šù›™¶wÈ:.«¶‰(I”‚QGXëKcš5¬Á ½9´X2Áæ·N€Ý.Â*)[òˆF·]‚!Œ"ÛÒ1‚çi ÝHS,8c]2*çeR• EQþJµ/ZmOÿZmžnVkÓ-Uv"Ìb¡Z$Ufå>-Ë#åtÂâ¹Âhl3ö왿¥»iE!œ˜i†æ£ŽT hF@ÄüUÅ23`,ŠÌŸp3yí [;—éźaÕŒ0´k0ã„<$EšÇi‡öÝŽy””`a—Ýí½½·mm5×n¶ôð<Î3köo)pÏL#ae‚ľTJ§úúlí*%Hs£ÖGBb>“‚"ÂØ9åàËÞø(Öñµ=ª½À£BŽs i<†|ðF]iúËÎÈЧ¥d@}Ž¾@˜øÞL‚ÄÒcÞ(GZ¶QCÏì Ђ¸ ©ïkŽ+ðYWƒ$SY”L³mP#|Û;%ØCWÚÀŽ—†¿åðTφ Šçß” wiø¬’?5œgÊü4ðÅ|Ëú`<—¦•v9T‹¿©[âÖËdj.Ü47G¯ÜÏk](?§Fž-£8Q™öãªÿåöa³ó?*Ïu½¾ýçÍæþáfÕÄ^šAÆE±@Ôó@ÙX‚ž\Ây:™qøe{ÁPíCºÖÊóC…¶)˜(a¼'EïÈÔ9ÞjuƒÊT^AWyOi)‡À±sa,hÇB®œôuZè Ãÿ€†[Ïêý³v/Üê¾Ï¥ý’Â$ÕÛ\y^|µ€ï•…äEÜDÊ©vÜ°,C K*ÊFÚ{zäp­󃙀ôדg=Vƒ_¶ 5:¤«”öi½ƒ¼_=òXªNéJ2VÈL³nî¯ð)ò±oÎ+/^CyUÌŽ°3Õ‹…/Ûøî}ªŠù¶Ê³òÔž ›£Pïté{/‡:ÇŸ`Ê^o÷.öA´€ÀßïœôÞÊ\_¯– §½xmä¼²ZLtY GåƒÓmPƒ"î&˜»îý½qS>dÑA«ø7Ó¼4«H@/‰ô/É%Ušm–ˆK.ÆÂdwý§µµE_ŸLCcT)CõÌÄtHk£N‡4Aàl|ßD–u½Ã"Ü'k”§ƒÛ˜An I§9^ëÕfÀ=(õ&Uà@#*èÚ'C„« Òf¼vÉ•{IQb€¥šNþÒKÁºµK…NêŒC%•Ï˜NÚ° ]5°v¹Öá«Š¯³l-hȵ«(( ”t]®?Úè,—Ï©-Ùl;bkÁ}uØ@U·¶¢õ–Yà[òíR0‰ÍkÒ”ahä«bN¦–æuUØ×Õoú‚¦q£åMš¥­çD7âñw}š×hE$…jäßáñÄ]†:õ¨Ó‚Y5lùÙüÔVÁN]ÎŒžóÜ=#ºÕ„$IzŽ¼‘u}ýðƒkƒD_GÏé=̼à¯Y0X°B*ƒ¹»}Z߬îp5×O“ç*[ç*‡qÁCL@ AU-á‘s5Sƒ_¶Œ<•èž|½$`—DbÑ¡ïXêcp¨“h±NÕ¢íײ޿Ûz—Ò’²Flq®Ã]Tïªo0ÎF¶I»Pm“èÈr,Àš”I5\ꢤ’üYUðõ˨u¬ßÏß]¡£È*ÎdŽûa)>FéSÙOO†©N4˜ïOGð6êt'¬;`ÁûCø$÷c ² â ì/È9ýu á虎aOÄv ®¿´´þ߇ZFüÿ‡£úpó“²î/7·«õÏ ß<¨ ö¢°ók·Ÿ6w7«~0Ó.ïNOMù^”Tª²O²§â¤‚”‡]Zmòº:ÔÝPÙÿ?”¨Lqô_Z vA¤ÿÓ_¥ú¯^–ÖIZÁº=æë·N + ¹¤(j÷“,)T†e-sÿôÚÆgujÛ!Ô~ñeWîRSŒ¥¯ÊŒò¢›¿f?ä~M²±W’-ýÓÛ[ˆendstream +endobj +2074 0 obj << +/Type /Page +/Contents 2075 0 R +/Resources 2073 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2072 0 R +/Annots [ 2078 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2087 0 R ] +>> endobj +2078 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 726.9434 195.0552 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2079 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.8193 726.9434 315.7315 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2080 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.1284 726.9434 384.9216 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.5642 648.9799 374.8887 659.8838] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +2082 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.2809 603.5654 239.2097 614.4693] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2083 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.3426 591.6102 513.9963 602.5142] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +2084 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [117.5067 579.6551 147.7231 590.559] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +2087 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 227.4529 152.1568 238.332] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2076 0 obj << +/D [2074 0 R /XYZ 90 757.9346 null] +>> endobj +2077 0 obj << +/D [2074 0 R /XYZ 90 739.9346 null] +>> endobj +1991 0 obj << +/D [2074 0 R /XYZ 286.4315 370.591 null] +>> endobj +2085 0 obj << +/D [2074 0 R /XYZ 90 354.6099 null] +>> endobj +679 0 obj << +/D [2074 0 R /XYZ 224.9827 261.9201 null] +>> endobj +2086 0 obj << +/D [2074 0 R /XYZ 90 246.9153 null] +>> endobj +1995 0 obj << +/D [2074 0 R /XYZ 300.8374 96.348 null] +>> endobj +2073 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2090 0 obj << +/Length 2121 +/Filter /FlateDecode +>> +stream +xÚ­Y[ã¶~ϯÈclT],[ÚóÔ{wÑîÎÙÉyj‹“(3Æ&vêKg§¿þP×X¶“LÑb0ˆ,Q$ERI›Ì1ü‘¹ÄóŒgH²$o3<„égÄ-¯`}Õ'øf=ûê*çÉ”¦óõÞpH â”Ðùz÷ë"Er¹¢/ÖOʺwwnæÛ»¯ü¸ióíçåŠáD¤‹T._¿Ÿ}¿‚^œ¥D‹ýcöëïx¾ýÞÏ0bRðù3<`D¤¤óã,¡Ì?f÷³ÿ>vÁl˜:'ì5ç£ð˜…ã!†²åŠ`Œ. ^TÅδ8=Š¦U¥}þ s<<‘1žžF+½P?:ŠO=ý<õªG>VqÈSëÙ‘ô¡ +§D"ÂᤑôMÑH(§=¡””&œEROUm„LQŠ3ü5˜…8"Ö#Z‘D Ê©8Ä“4Ä÷m,9­i‹òÑ>¶•ûõq֜Զø cªœ?´6hhÁ&"›§)Es9iO´êS /$˜¯,A"%Ähü¡jÕÛ‘Û1E£äºØ@5!·o*‚3”ÆÏÜŒ©Šr ¦`LÛ¤h`Dåbß•Û¶¨J;¯–„/¾€Z·lŒ§WŒç̨ìŽUÛåÂí+UûlB½þl6/­ÛXÕ; Nðâ <'r‘Ûé-ˆLÌá U7Aƒ®ÑX'Éxš ¬sñZúvóÕvúi½$bññý¾Ÿ>ûêpLPB²äº³Õ %8NP†#%ªz"Þ©#Éqv <ýª¿áZ°x2-ÿ©­Êæ’€1cU†Ñê©n)ÀJàZGòu|ê;Zª­jš¼~Y¦|qù²ØHJ¢uåÒö¨­:€x€Q˜@w}=•ËÝÚ&?­]tcýÿŸKªqA#ìŽô©.ã— ÑTZ¹Ó.¯ó£já]F”)® ËH“ÕC°²>¬Gòi‚.‰?‹uDç"RÃ0IýÚFIW›¢=#º‹‡Rz\”>–z(¥',Jé‘E)îBl¾bNàŠAéB¤0¿S:{”…ÅK½-©§tŒ /9Ž{Ÿä1=¨P ­•uÉPJ“Ä°þ¤öªV€Ï.ìÿ÷îîáçw÷ëï?Ü}ü´L¡6ºìcñ¾?‘ý}R‡CõàN{Ø= µ¿ÍoIÛž&òÒ1kÕLÓ ‰ô :ÁÆÒùÅ–@âb Ô(/@3…DÐ8+R#‚$ýH2@j_"`f©¢èÌP…†%Ùåm>Uj˜øõ|Þøi'¸Aƒ¥ðüPµM°3×æFáBáYB]Ý"\6V0šÚ˜)%˶«Á»Î<`)@C|“!´69f´—Óõ“Ÿí$02•ü:GÀ¨êZ;ÈÝ +$a´*£VM¼·¿P®Û>‚ô¥‹åáÅq:Å6×z8Ú§ÜqxÊ—Ôç~;³QÊ«ëê ¨>ë€P»pZdÎm%é=4ûÊÝvµ¤Üñö–;Õ•Î"¡4ÜæÎÐMä„ÉfÚÈ«N3Ôcm¨¨ëôŒ=œ¡Û¶]~ÐfÐO¦ÎÊF…½'Ü·¦ŽÒCû³…}–\»È²µ ¸qª­’z\wû>;;¿yñÛœÒÇüKqìŽS ç!Äž‡øPÔ3ƹz +Tª´EŸpq"©µ¸^y.Œ¶@œwmuWoݹaq[W'»hu‰˜7•qFÓ +”~£#':€€G]ä­Û?PxâHî& lƒ^·:4¥tý&Ì…ë1ÑzABç,“H`Á^Ñ|úUÃDöñõű¹XbQ(ž>RfØ‹yª*PÀgÀ‰4VÁ^°ÈÆYÆC„´3tª~q‹æ¦ Ó2×èï=6è ª²Ü­¯†~²ñã䛬k:<­¦óª-t¬/”WŒ +5&»^^õ©.—W,ÁdE›vU치ˬ¼YÇ)îã8<í*S¹(«ÖN=vPÿ•­RöÑšúƒfI ÒàLOuYgÀts­•¸ìTÓenSÏŠAV·r¼a—×þP5NnQž‰£[kýÛ+ËtHÓ3dô’Ès6Žd*_‚ç¢}:CÊÀ‘0¨ÈÀç$….MÜzÑèWý c—Žùú»^ÛÞúx.¥F:¥%ʃX§Apª[š¤ q íK¤É 9jël”É‹—Uk@ž¸¬gQxÂæ¶RΑȉ1Œí’ë Ë÷^ÉÔêœxC­s.ƒºs¦¶ùÏäww."Õí3½õ¦Ou ¨~a#þ^Ÿ5%ÿ +4Œ™î³Y¿¦û,HÐ^? š0@Ü‹Cta–Hî×¾»‚BÙ7U£×kgÿ=?Û'WY71õF…ÂkŒégS&P0§LÜ@×>Ù5z²^[Îœp~C¬§‹ôªÆÒ"^vû‚ÌvZ>oöúųuwzË|€NÜßîT‰âßhUMK0¡vf Lþê®Q^éÛâTì.¿9§#!¡#> endobj +2093 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.3577 726.9434 220.1509 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2094 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.7601 659.7528 502.4137 682.7215] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +2095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 647.7976 136.9336 658.7016] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +2097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.6109 376.6552 236.4535 387.5592] +/Subtype /Link +/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> +>> endobj +2098 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.2914 313.2651 361.4951 324.169] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +2100 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.8969 154.1071 225.6901 164.9862] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2091 0 obj << +/D [2089 0 R /XYZ 90 757.9346 null] +>> endobj +2092 0 obj << +/D [2089 0 R /XYZ 90 739.9346 null] +>> endobj +1997 0 obj << +/D [2089 0 R /XYZ 350.0021 514.5454 null] +>> endobj +2096 0 obj << +/D [2089 0 R /XYZ 90 491.9191 null] +>> endobj +1990 0 obj << +/D [2089 0 R /XYZ 247.4281 195.2196 null] +>> endobj +2099 0 obj << +/D [2089 0 R /XYZ 90 172.5933 null] +>> endobj +680 0 obj << +/D [2089 0 R /XYZ 225.6001 96.348 null] +>> endobj +2088 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2103 0 obj << +/Length 1978 +/Filter /FlateDecode +>> +stream +xÚ½YYoÜÈ~Ÿ_1y F¦Ó'ÉÖ"/±÷°±k{íñÓîB HJ˜CNxØkùï[}qØ<¥$X›Í¯«ª««ë²ÅðG¶oC"Éx°MN¼}€éï7Ä~ÞÃ÷}ðÏÃæïßQ¹•H4Øî5…€ A ÝÒ_v!¾ÚÓ‡x×¾zCwa3ø©LÛ<3ã—eÒž²¢‰›cY\ývx½ùöÐñµb Åõ_›_~ÃÛÄ{½ÁˆÉHl¿À FDJº=m8eî%ß|ØüÜÑ1ô‚©Ý ž²= +¯¡Ù]€$bˆà¡À„QÄ8¨À5;õ¥z°÷=Æ|ßÙ¨*ZÜ6#þ"@„éól·­p +>×ãù¶IÎÉ㧺=™ü üùŠà]yLaL”L@ŠõHíKjO9ìDZ/â‘@˜Dá6à >i>´ï£ÆæI„1ZB Ã@‹ó>kÚJm®¨oF¶‹) +%ËÜ;Ôû¾É¢0q¡v9àgØX‡ëÉS­í\á¼íKSšçÝ×ST†¨Vw„ëF_šó;jïhÈ[þù±°2²€ûÒ«%ο” ŒÛ³¸Ïª¬H²Ú ?¾zwûîýÇ»·êßáŠD»··J„Ý2‰t¼¹úœ›Û²mÎm£\„r Èú†¾IF€$ë;VrAëMÕ&^N¢Fd çŠh ùš›uø}Á”ÇÒu.¯MÏ·p{GŠR ŽM%Øl‡ó'¼ÇLMñ‡Ódz ŸŒ=‹ìËÅ'd•ž1žªµ¿¢µ1]'Òñ§i5ŽRŒƒð®ä¢Ö:ÔŠÖ ž IجÖÀNk­2òMè–aĹw=’_R OÔd‡_Ñä˜îl ç$@e‹*ìPcÆžV €d†QŸqu.«fB;`¥<‚l=òÕ±ˆ( .æþà‚u{¶îÌ<À—Q±³Öûñ¥sÎpå²Dù¾I÷sxÔ™±Ý}[$ÖE2 +¾º±óš ŸŽöÑf ¸{b¢õ–AÚØ¡FAj@¡Æ߸«)¸ÐH›ˆhÌ0!ØJ1iO Æä¡^ð7ýÅ2íÍ'ßØlƒ¥*Ý#’àM}yÔ¹þU ® O"é5 ¢kø¯Ž{JÄÄ ÿá )ÁÖ‡·o>¨IBŠÜÉ㽂Y±”ß|üñGmrúíßFH€¼µÃ[›Lqç>÷ýÿÌY‡Î8—‹”>j¾Hapá™æž¿SEe\ŧ .ùB2%ÀB½2’Ä Á]½ÒÁ)Šßfˆ$«Ë*p  xwê#Â1ów…’kÞ(1²ºž)“ªìTº:¢Iƒæ•Æ`Îøçž²z°%e9˜—¯xŒ)hAl…±CûÊb ¬ŠYñaJ 6àªÜ¦=ÝéhÑ«‹¬ù¢{&Õ'W:¹…e¥jz!v³å9ÕQ‰ÒeËï£,Ÿ`DeÈŸ^ž/r¿œà˜ýdyÞÁœ"GçÎU®ó¥ž…¯±R]+ôHûÂteó´ÆŽüyès7¦­¬˜T°Ǽù’ +:£1O圭¥Ù;Z”Ó+’²Í]Ùn9¸ÖÅliå|vG‚‡ìÿÑ‘xlÊ¢vÎõ¥µàéæ&W·lâËÄT}=hϨ~Ô·/Þ¾yóáYí p„eþYQ½vgƒÎ¶Œ)\ ,äÓ{Æý Mã¶Þ5öE˜m¯0v}cŸ±9Šÿ±qLÇ—ºñÏk÷ûŠP7tQÕ‰oºN…gW×õǪ$óÀZ^xÚƱ"vi÷¾7#¦~ãØÔ€©ùd)ùã‰Ô¥ñ c8“¹ÈD(F¡l92õQó‘IpHø3"Ó"÷Kd³ŸŒLÌ ñOµ±÷§7ŽÙjkö\•àckÏw v#p×Ãɪƒ²H`JÅÿú9]ùF°N¹oà%Cé^¨Ÿð€v¢¨]}ŸYwºqè'7x­tÝÚðµæ‰o(»¡öÇGŠq`C¬Š§.pŽ¥t{Yþþõ!eêGà -ýÍWìaendstream +endobj +2102 0 obj << +/Type /Page +/Contents 2103 0 R +/Resources 2101 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2072 0 R +/Annots [ 2106 0 R 2108 0 R 2109 0 R 2110 0 R 2111 0 R 2112 0 R 2113 0 R 2115 0 R ] +>> endobj +2106 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 726.9533 157.1381 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2108 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.7319 549.2408 221.6354 560.1299] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +2109 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [290.5065 549.2408 348.4187 560.1299] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +2110 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.8156 549.2408 417.6088 560.1299] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2111 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.7656 495.1877 457.7454 506.0916] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> +>> endobj +2112 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 483.2325 151.6186 494.1364] +/Subtype /Link +/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +2113 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.6997 295.1891 183.6983 318.1579] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +2115 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 204.0406 157.1381 214.9197] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2104 0 obj << +/D [2102 0 R /XYZ 90 757.9346 null] +>> endobj +2105 0 obj << +/D [2102 0 R /XYZ 90 739.9346 null] +>> endobj +1993 0 obj << +/D [2102 0 R /XYZ 224.7534 583.8924 null] +>> endobj +2107 0 obj << +/D [2102 0 R /XYZ 90 567.737 null] +>> endobj +1989 0 obj << +/D [2102 0 R /XYZ 206.4623 238.6822 null] +>> endobj +2114 0 obj << +/D [2102 0 R /XYZ 90 222.5267 null] +>> endobj +1994 0 obj << +/D [2102 0 R /XYZ 207.0201 96.348 null] +>> endobj +2101 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2118 0 obj << +/Length 2118 +/Filter /FlateDecode +>> +stream +xÚÝZmÛ6þ¾¿Âm4fù¦¦Ÿ®—m³A.ÝfÝ; i°ÐÚô®P[r%9›Ü¯ïP|1%Ê’ïz@qE°0Eg‡Ï ¥†d&ð,‰$gëýž=B÷÷WÄ /a|é |»ºúú;*f‰˜Æ³Õ¶ÕQBg«Í‡yŒÄbI#<_=IÝ8ÞÜšž¿ß~mÛu“­],æiÈuþ ÆTšMQhPßi„0I“Y „A}`…–¾Tèù1])A˜Ëàwe#_ö­LQÂ(7ë¤ìú®"|OXtÒÖz*/Öà +Æ”OòZTÌ·ÇbÝäe¡ûå‚DóÏà§Æ ·ÎS#íε­â¸•ÎͼB6Ïm¼W¿ê‡/™XVæxþž¹˜gº{ &y{J¢¹¬j‡àX« ìy‡$QÌ{Þ9{0œü„ŸB½ÊO¯W ’Îxw§Ž¨ FN„ÕJøøf9© æpP€#; Ê* »©ÀJêŒûÀ‰/=ù±P1RÊøSSõ¹Õƒ0bº8ú‘j…&¬³qšvŒ«ÈT§³kY×YõeGóóÇ”1„Ó”ù(FŽ«'­Ñ+;aÒ:lDªÎ •j‰Òcnå’×+iëõ÷Í9p‘HOø‡øR#‚¸ÊÞ­:lY•íe‡ç<› a•I‡Ñ]¨81ŸÒ;öAŸ12k„Öß H CWÇêßtŒxù7'67‘cJµóÂF“ÇPªC3”ji†ŠLÍ–Ì\ÒŠ—XGå+©2G‘k®TӲƦÂ(ŠHj4nmŽÇt']€ÖÚTN$A1åZõ{¹••n6ÿÓÍíýÛ›»Õõ»ÛÞ/b¨ŽîKšËEÛž5¨åênŠ.…øȳkþU¹>îeÑdíÂŒ»YµU†H¿–içî³W¥‰]êÆ,†ˆ©ŽgΗH1E\V~éOF¨××ìpØdMT78†ø%IH¿¼±RæY·úã †]LS}$˼hlÔµ@Úåëì=-ÀN„:ÙƒªÁáÒØÂBøl4šoý@í…ѪÍé4V'ÁAúÁ hX&««Ž,aaÁÐó“,¦¤­Áu¶ÛÉ R<ßl1½Ñ›¦Tçõ“v¡!A_-‹[Uãú +@/¦œ¹Ï¾˜CVK+kÓH î”Ý]y®òFötúûaå䶬̸Zâ@eÂV†ÀàJ<.ØDp;ù¥?!Œ®P¯ nå¨s©™CÖÅŠS»hzî¤&0„ÚK’Ü*ñcð–„«ÃbÉåïÓÍêP•ªV°n1ñ’Þ嫆iîËcs86V ó £:ãžxþOyÊ"”ˆ8½˜ý #<èÄ.åÁ.³<šïñ d ÄyÿÙ<Èþ’ðûTîLO^¬Ë½þ´3tC7Äíciº™²V5 &'û© ~ÊÛ 4lª¼íЯ¿µLýT­½ÃNWk¾é3·c©­Ö eJ>h 9iIE4ÿ—®iADUQ?<Ø“ĦT}>põÜ®”XàЮd¶±8Ì õÎ 'ó<ÍÝéÁ'—•¬ýêÏ5 +âÓD‡mUîûïàêñ>?Öù¿e—ò\l0«V3tuL[së²P„ùx¬úL蔶/öÞ¾¾{ýÎÛš–åÙZ’à1¨=ÇkI_ê|-I(F4Jù¡FÍž^‡vkD'æmqöÊ­BjB«ltãÁÌjÏ…Ìݽ,7—¨Þ–ëN4&óºsáSÆü°VÏý°†¾ý±6ÖMP+›¦Çœ§RÙHÕ×ÐM÷î‡a7ï³½‹tf£m·TUÖœ ²m¹Û•j-ÏîK¨þª×^^}N'ˆ¨ÛûÀfcØOGñúÒÞþW¨Yé†(äðD¥ó­B9ì{YHo‰¶dù‡m¼Që9šBÍ/~IÙKŠõÅ86þP¾(«^>!wý÷ªüüåQÁ§>†üó;‰'¼Cendstream +endobj +2117 0 obj << +/Type /Page +/Contents 2118 0 R +/Resources 2116 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2072 0 R +/Annots [ 2121 0 R 2122 0 R 2123 0 R 2126 0 R 2127 0 R 2129 0 R 2130 0 R 2131 0 R 2132 0 R 2133 0 R 2134 0 R 2136 0 R 2137 0 R ] +>> endobj +2121 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.4174 726.9434 236.2105 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2122 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.7601 665.9261 502.4137 688.8948] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +2123 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 653.9709 136.9336 664.8748] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +2126 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.0073 491.9593 207.708 502.8384] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +2127 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.426 437.8962 436.0284 448.8001] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +2129 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.0073 370.7781 207.708 381.6572] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +2130 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.426 316.715 436.0284 327.6189] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +2131 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 281.9517 139.4144 304.9205] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +2132 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 281.9517 175.0106 304.9205] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2133 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.9994 281.9517 214.0238 304.9205] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2134 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.8893 281.9517 281.53 304.9205] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +2136 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 207.7121 147.1755 218.5912] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2137 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.6736 207.7121 182.6919 218.5912] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2119 0 obj << +/D [2117 0 R /XYZ 90 757.9346 null] +>> endobj +2120 0 obj << +/D [2117 0 R /XYZ 90 739.9346 null] +>> endobj +2124 0 obj << +/D [2117 0 R /XYZ 90 537.7634 null] +>> endobj +1998 0 obj << +/D [2117 0 R /XYZ 90 512.4589 null] +>> endobj +2125 0 obj << +/D [2117 0 R /XYZ 90 512.4589 null] +>> endobj +2128 0 obj << +/D [2117 0 R /XYZ 90 389.2643 null] +>> endobj +1453 0 obj << +/D [2117 0 R /XYZ 300.8374 242.7345 null] +>> endobj +2135 0 obj << +/D [2117 0 R /XYZ 90 226.1983 null] +>> endobj +2116 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2140 0 obj << +/Length 1602 +/Filter /FlateDecode +>> +stream +xÚÕY[oÛ6~÷¯ÐÓ`cË»Än{ÙÚµ Ú!ë<ì¡-EV¡ŠäYrÒbØß¡HʺEr»lÃP¤¦Èsç9ß!%âaøG<…½@H1.½øf½-L?_»ìúß&ø~½xü#UžBJRé­¯j ’ A õÖ›·Ë€®|â//Ïa(ð’ l¯‹Í!KÌøin’¼Šª´ÈWï×g‹gëF¯5K0I´Ößoßcoæ-0b*Þ<`D”¢ÞÍ‚Sæ²Å/‹Ÿ9f¡f󎌨 Bϧq¨E5 &˜¢€Q +¡à@‘ð˜è€BWBxŽJGå¶H7ÚIä+Ä%õô&¹Mãd³Oo“ýE™ä›wX`M ¿d„þzŽpÛA;+×wŽý«Cº»¸<\½Åï­|‰ñò×—ç¯^½¸xõì'-÷›Áé•fÕœY’®o¿p›‰¯óëÎáÿV°™76*$$Ÿ5±%ÛÛ±ÁŸpÀQñ§¡O²2yc†>Žï(K‹Šv»MTE3î¥~©§õÊX*ÔK”¬U¥>µI µ‰(ÇAMù4y‡1ÍÓº몌*󛥹­S”WæW³¸"ïPŒ\HH€$å¼ý&¹JöIÉm(/?5»}'e©¦DÖÞ6ª€4Æ „)‰À?ÄWPƒ¤²ÚâªDppzBHDCi‹Y/í·–æM»œ½ßfÜP®¶Hûù¹ˆâ Õ3¢$–h¨™ð¶æ¾,­ÂÏúJ)fäTÏùŒã©S~CN¡lè9ÞP¨fݦš!ì„ÕZÏ‹4¯’½I¡ª°¿×6 ãÃRÍf.–+“X§v/AÈ5p÷÷Š‡TxÊŠ`.¹ß¢ú2:™>\ ,ëšÐOG4£˜CLuïÚ‘Œ#[ö—®žKW¯.ÈQ¬Kõ‹î «¿ 'aŽd9Ö¸ÏÆqæpØ©ØÉÓ¢Ÿ@Gu +àt,¸oújG᦭u +mNó¹›I—û2O‚š)—H3ÐÛN ‚R hø,ÐpÌàäÌøÉHÓf˜€š†ì$¬éZq/ØÌèvhÓÑýïÁMÛ³L&aà1 ˆpÔ1Gä·©†™*5²€È'íÕ³ÑÍ.KÊ'í¯dR3‡=‚ÂÃ'lz@˜3°¿é5]CVŸI“,+ü»ÝgL…K†ö:#G4gB_–¶àÑP£@JAUtUÞG?«½/W«/oªÝˆ×ŠÂ±Cð·Õœæ4ã¸Iå|3@.݈9;9 ýŒC¹ÚŽ»ä2ÎR(œa¨P(PDN‡¡¡šS?¦ÕÛC‘N•3Ìþ§9È# &”ò¨Â.^j.—½ßfiý¹5‚y1rö€¾%±è™ÐÝC}ëƒËÞ,Ö†¤ tÖµšuCRî²´ºG!?»U§] …û‰b§ßÛ WƆÌsYE5#Ç {ÔµâËZ‡p.†òœ…ŽnÔÂÁ…©Ap9i¡ßPèîõ%@Eº›p§xìÆÚš´¬Ò¸Dc_%ê»âèË-ÐýXÈ¿õÁ¢þà a´GÈ­€…ÚžýÊ×™¢]zžäÉ>ª\-¸b{íghöPû‹ŸPö„Úo3ciF5þû^Œš8®Ðž?m‡]_À=`$J!%2endstream +endobj +2139 0 obj << +/Type /Page +/Contents 2140 0 R +/Resources 2138 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2072 0 R +/Annots [ 2143 0 R 2144 0 R 2145 0 R 2147 0 R 2148 0 R 2149 0 R 2150 0 R 2151 0 R 2152 0 R 2154 0 R 2155 0 R 2157 0 R 2158 0 R ] +>> endobj +2143 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 553.2679 195.0552 564.147] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2144 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.5347 553.2679 241.8394 564.147] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2145 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.9862 510.9639 146.0595 521.8678] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2147 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 442.6743 195.0552 453.5535] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2148 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.5347 442.6743 241.8394 453.5535] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2149 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.9862 400.3703 146.0595 411.2742] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2150 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 364.3227 162.0093 387.2914] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2151 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.9981 364.3227 193.2816 387.2914] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2152 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.1471 364.3227 260.7879 387.2914] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +2154 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.3636 287.6273 152.1568 298.5064] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2155 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.6549 287.6273 186.2086 298.5064] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +2157 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7506 117.8746 193.9393 128.7537] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +2158 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.4374 117.8746 230.7508 128.7537] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> +>> endobj +2141 0 obj << +/D [2139 0 R /XYZ 90 757.9346 null] +>> endobj +1999 0 obj << +/D [2139 0 R /XYZ 207.0201 589.4618 null] +>> endobj +2142 0 obj << +/D [2139 0 R /XYZ 90 571.7541 null] +>> endobj +2146 0 obj << +/D [2139 0 R /XYZ 90 461.1605 null] +>> endobj +1755 0 obj << +/D [2139 0 R /XYZ 208.1261 323.8211 null] +>> endobj +2153 0 obj << +/D [2139 0 R /XYZ 90 306.1135 null] +>> endobj +2000 0 obj << +/D [2139 0 R /XYZ 368.3438 154.0685 null] +>> endobj +2156 0 obj << +/D [2139 0 R /XYZ 90 136.3608 null] +>> endobj +2138 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2161 0 obj << +/Length 368 +/Filter /FlateDecode +>> +stream +xÚ¥R[o‚0~ï¯è#†ð1mz¼ ͪA/ëç—Í„–Y¸ÞO–wò”fQ:Èþ‹•:«ê,2½ÃÒdomÝZ×–IL®ôúxD2×m×zI6:–GIÜå¯ÏfJvx?”E”TÕTÿ@Ƹ®7zTsRÈ=C{G¾.ήÏH‹Çýžf³Dƒg–äIÖ=œÂùÔ+s„u40#é”ñ)£Å(•¶i¦(¼¡¿¹º+¾ÏÛ$ÒÓÜÈ??°}¼~endstream +endobj +2160 0 obj << +/Type /Page +/Contents 2161 0 R +/Resources 2159 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2163 0 R +>> endobj +2162 0 obj << +/D [2160 0 R /XYZ 90 757.9346 null] +>> endobj +2159 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2166 0 obj << +/Length 2324 +/Filter /FlateDecode +>> +stream +xÚ­ZY¯Û6~¿¿Â6P³\%2oÓdRL€23ó’…,Ë×ÂÈ–+ËIï¿ïá&ÑÚèL +?XËáÙÏGRd…áGV +¯R‘"Åx²ÊOOxõ~"îõÞoC‚ŸžŸ~|OÕJ!•Ðdõ|0‚%tõ¼ÿ´NùfK%Nñúöp)ðš l/~©÷·ª°×ïêüv*ÎmÖ–õyóùùÃÓߟ;¹N-Á¢¥þþôé3^íA½O1%Åê+Ü`D”¢«Ó§ÌßTOÿyúWÇǾ0¦¬„M›G8‚'ÔÛGÁÜÔš— ÆŒñúo͆Èu~,Û"ooæÆÙv½yù+Æ4·÷'·s®í½jƒ­$‚”F¸Z ¢²—„ˆ“õ®h³²*öÎwÅ5oÊ‹÷0bAD4­¿²|žÅP¸¹-Ïö¿õﳦ³eÆŽS¿òt© +Àoj~,òÿ96·““pv0ºÝ•nd¶ß—F-¤mÑÚ“%”³^{†‰á«ÿ _ÃÑÜeU~«l™åUÿS«~pª¯­£­O—›Í·¬ª^íÃbCÄúKq¾–*Ö_ô­Y_Š&äìþ;ÎÏo?þhµ¢ëk›ikõcc¤Ðvù ƒA0¼)µq1SëKöªãÁñº>höq[Û‡ÚËÐÒ9škGk5 <)Ì@¦Ò’ÁËìz-N»ªh6B¬‘V(q™#.·æR_õÁ3vnåe«sÁÞu1×Ú\íà¿*Ú~ì„­}¬&òÏ0ÿÝ0¡|–ûçåÀØéÚba®¸Qì=ÔÒutD + 3‡ C aåœ Î$ïùha¿R*†²Ö•.زĎ*&ðJá$ÈUÅH2T¡j(Y¿j^Í¿C<}L‡_­äÒo:~è8Ò#¥ˆ'8âD ª$ S…UH4á®@í­H(‚)¨‡tW4M¸ÑP§J®:2­é»"¯²F—$©)“ƒ–®sýºÃ{x0“]¦£qÜ­ŠB$¹L´' î¦¨>¹uâf¦Ê!þûp–d8WàQ™²Ù  2¼#‹fø¢Ä>Ã#r}†ßÉý²¡¢r?Îq &D d/丣i1âÛåø~Ïè8ÅX7°$âOž*(ήÇäJŠRIäÃæ{ú˜#¾Æ|ù[;Ô€bŒ€(üŽj,—ð@.Å@¨¡å˜M¬~ BFcCS_ýa¤ƒ²O™zÔ=}Ä=c¾Æ=$™ðH$PÐËþñT1ÁB",Ô 3ê I ;Èq©½ø…Ô Ú‘i ÞfMóêpôæW{ó ÀY°ä‰‚V Ëš:E 䨒|ßD‚ H$†ož,ŽoáD“ŒÐ‚Ä +У[L»Cí&3Œ0XDcÂÕƒXá4®Ç+J¢êyº{õó£YŽpJêIkQÅ­'ŠÉVR_¥ƒÀM¡£âàhçîÅÎ[ïé£ ùΗ?$+t ˆ{¢±Ø{p$ +üCG†Ïƒ#sà¸Ó³çí0ÆG8Æö¨ƒ:úˆƒÆ|çë>Á‰xÈSÅ'€àÎ{ÁUq^„G ,.ɃðP/Á£'³ðh{×bØAC Ôœ ‡ŽvÍYä:X}/Uo^†'UP½q€W„õ<¦Âr]IX0þ%˜J$" +˦z²8¦ ¿S—µë05Ô.‚© ê};¦.«×aêz€©åeUU‚×°º å¶£ŠÉWº‹AðWýâ{±ˆ0CL©Û¶z©ˆ<Ùb¹m¨c‘í}™Ì”Òa0ô’Y +]b¾ +C6~_B¡+91_jLANpò—Tƒ& á4‰TZG­´áwWZD;Ow§Ýr¥-©÷Í•QÏÓÝ«Anó™RÓ ´ntQÍmGQ€B^óú‡ûè=Xj,áH +òàŽBH½PjÙR©=¿ýøÝõ5US÷[Ʀ˾\öY›ÍWš`æ4ù êé]k+É™í§þ»Qt5e¶›Þ;¤ +ÖkŒÌ×nH°P»Y´v—$~síF´ótwÚMµþºà„b²¨Ý£¥Ë"朘vžî^;1y>½/ƒE¢–CÖQÅ„§fÒtàšOüó\–RIaeiH½P©™η»×¶;Õ±›š®¿]ýöú¡n…6å×â÷[qÎÝ›óí´ëfÑþÈe~“¦ I’m ¨§+‘2}HI2FÝɘßìœ9UœVvgc!§î”틆$½ŸØ#ŽÙ×3·S½¤†ì$h§„!"£;Iž|ÐTG\g·Ù(’¤â^üpúñD#¡÷}$øÅÌR¡Ð¾„Hô´)âÐçö[lŽ&£<ѸÇP+‚ÈGçÉ#Žro0%ADP¾ì9O4’zç *!\œ‘;©z÷-ê?Ÿň‰>ö“õÿÙNëS-,ýTäÙÍœü ²>×­½ÈªJ_л£¶«}ç`‚¬¿Ks&—î<Ûž¶êq%´¬ç½E²>fnìÊ0J‚ö,q+"íe¿*½´{õkŒ?^_ŠÑ7Kúc¢ /ý õ6oendstream +endobj +2165 0 obj << +/Type /Page +/Contents 2166 0 R +/Resources 2164 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2163 0 R +/Annots [ 2170 0 R 2172 0 R 2173 0 R 2174 0 R 2175 0 R 2176 0 R 2177 0 R 2178 0 R 2179 0 R 2180 0 R 2181 0 R 2182 0 R 2185 0 R 2186 0 R 2190 0 R 2191 0 R ] +>> endobj +2170 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 574.4454 173.4566 585.3494] +/Subtype /Link +/A << /S /GoTo /D (a00137) >> +>> endobj +2172 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 492.1342 177.9699 503.0381] +/Subtype /Link +/A << /S /GoTo /D (a00151_g6832e4d2d046536b6472f7ac92340f68) >> +>> endobj +2173 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7856 492.1342 201.4916 503.0381] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2174 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.8776 492.1342 256.5649 503.0381] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2175 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 453.586 138.5977 464.4899] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 453.586 189.7953 464.4899] +/Subtype /Link +/A << /S /GoTo /D (a00151_gb6683dd83fe1c8de9a24086d4b69e907) >> +>> endobj +2177 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.6109 453.586 218.2983 464.4899] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.84 453.586 266.5273 464.4899] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 415.0378 138.5977 425.9417] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2180 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 415.0378 197.5461 425.9417] +/Subtype /Link +/A << /S /GoTo /D (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +2181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 376.4895 138.5977 387.3935] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2182 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 376.4895 201.9695 387.3935] +/Subtype /Link +/A << /S /GoTo /D (a00151_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +2185 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 294.1783 133.6164 305.0822] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2186 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 294.1783 177.0532 305.0822] +/Subtype /Link +/A << /S /GoTo /D (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) >> +>> endobj +2190 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.6669 210.1544 223.4788 221.0435] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2191 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.3555 210.1544 282.1487 221.0435] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2167 0 obj << +/D [2165 0 R /XYZ 90 757.9346 null] +>> endobj +1777 0 obj << +/D [2165 0 R /XYZ 90 739.9346 null] +>> endobj +118 0 obj << +/D [2165 0 R /XYZ 90 739.9346 null] +>> endobj +2168 0 obj << +/D [2165 0 R /XYZ 90 716.7484 null] +>> endobj +2169 0 obj << +/D [2165 0 R /XYZ 90 593.2423 null] +>> endobj +2171 0 obj << +/D [2165 0 R /XYZ 90 510.9311 null] +>> endobj +2183 0 obj << +/D [2165 0 R /XYZ 90 312.9752 null] +>> endobj +2184 0 obj << +/D [2165 0 R /XYZ 90 312.9752 null] +>> endobj +2187 0 obj << +/D [2165 0 R /XYZ 90 257.149 null] +>> endobj +2188 0 obj << +/D [2165 0 R /XYZ 90 230.664 null] +>> endobj +2189 0 obj << +/D [2165 0 R /XYZ 90 230.664 null] +>> endobj +2164 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2197 0 obj << +/Length 1763 +/Filter /FlateDecode +>> +stream +xÚÅY[ÓF~ϯÈ[³™ÎÝ6o +©]òyÙEb§¶Ýß3žKÆ×di«j¥õí›óŸû8d‰á,¼ŒD„Æå2;,ðòn¿Yûx Ï×!à—Íâç×4Y&(‘T.7÷­I „.7Û+‰¾YSW/ª¯²]Þ¨¬9µÊ<©*Ë?aL3s}zûޜܟŠ¬ÉË¢†K.²ŠÄÍçͻů¯’ÕX0I´B.>~ÆË-hþnKb±ü‘$¡ËÂSæ.ö‹‹?¼ó ]0öâœÂKÇ„-×L¢˜$| „I(A„:n£8A³h1†p„yk¨÷7¯Ò*=¨FUõóþ{LQÄ(]†¢E€d&^:É!Q¯!w7‚í~$ª39ipÏúËÅ2fW›Ðá/™p wÚ„ äªF̛С†Ä«ÐŠŠHd—x¯Š1Û´EÒšF§¥Å„Õ +‚&BqB¤ö"$HBZôËtŸö©+?ÍΞ¼Õ­ +¾¹Êv*;‡p©«Ù7ýÏU4ÛEœ÷¨X݇U¬Wd6š„‘$ aíÈãHô³¼6ÇÆ€ãUY¨Ÿ´H{?+ǽ:@/3׺Î=o‰b¿0Ýï͉«Ýú¡íw[+DWnGâ^Œ DÒ‰Þ ïÿAY#ß¾~ kØÝ|$(6±2;D…¨é!J´ÝŠE/55:‘yZáec-ÙÃŒëµ_ÙնD{·(]Ä;\rýÒgvªªÖ‘úÂbíe¹Ž§ÇcBÔŠ 8Ç£µ°Zò‡Ò¯:\ã¬U—#o&Çc˜ZåÄÁ;/DM;'ŸDO˜€É¨3îh2>ayX¯\w§,‚˜€p˜µG¡IT"ƘìRÏ Á>Pz 9Q½¾ïòl×±NÅsáéî +ŠÊ©Q[4í!¢>—BØœñ,è]ÃcĹhjHÛ3¼@`—vãLüÍ®›ÿ¿å}úÑMì¾ÎÉç13©Ç Ì'vçu«Ú¹Xsy7Í8¼G=Z:-¨cõÙÆ|Á ®!õ^U7§–Oï6ˆˆX8·³É¹Åb0\=·‡ fæv»<·wU˜œÛ/»¹½K s{~ìOîßÚy ßN YÒŠºnƲŸov*õ»ç =¦™éGÍp©k“Zsëøéñë:~Ÿ}?}Ÿw·õ¦§ƒ‹Ð±Œf:-ônf6§CÔtVÇ"ŽÉõY=Ë~Îë!ýhf{ØrÉ~ãóRÿZ]à“uJÁÉ«ëB¸`¦.xØåºÐUa².\ vu¡K ¶l²ÿ¶0l^¾ÿ¡j0Rìþ¬ØžŸ¤Çã6mÒ™ÚÀ«œ*p³+ÓÇÆá‚‚Àã¸ÕŽšÍ ++^4u÷y3 ­Í3½[{fî˜7Ð'æp¬Õi[®}Øë'uwOfçÖ|,ëï%`ë%l²ÖH"ÌÀ…³µ&DM×€¢$¶ßçw^³´ç"3ä-2vÞts†€¹áGhÆ9øBKô·ks®§¯öè„„‘§—¥ô·f¿Þœ¦…vçã÷ªìúv# ëêPV7Rè]“rU[¦Ü +έzc8âÝcY×ùû®é†Ä:‡½þ£ßH>ýG?Ñ‚¸{|m}4ØÝðˆÆ"-@ÍD‹a`¯oj³äA¼ ØÇãÍÁ:MíÚbæqAò_[ÖLo{[…Çñš×ÿYŒ@7oÞ’H!ÿÑ/fí1,FºO¢$b±û-Ð*¡-÷FªJýë¸Ï¿¹“wÚ<'{A¨=âç”=wÅXÚ:˪÷ƒ!A¸k£Wå_Ãý¤ lÌ>\Œ¿Jendstream +endobj +2196 0 obj << +/Type /Page +/Contents 2197 0 R +/Resources 2195 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2163 0 R +/Annots [ 2200 0 R 2201 0 R 2202 0 R 2204 0 R 2206 0 R ] +>> endobj +2200 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 624.7403 157.1381 635.6294] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2201 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.4886 624.7403 241.2818 635.6294] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2202 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.872 624.7403 293.6652 635.6294] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2204 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 384.3441 157.1381 395.2232] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2206 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 262.609 157.1381 273.4881] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2198 0 obj << +/D [2196 0 R /XYZ 90 757.9346 null] +>> endobj +2192 0 obj << +/D [2196 0 R /XYZ 224.7534 659.9636 null] +>> endobj +2199 0 obj << +/D [2196 0 R /XYZ 90 643.2365 null] +>> endobj +2193 0 obj << +/D [2196 0 R /XYZ 90 419.4579 null] +>> endobj +2203 0 obj << +/D [2196 0 R /XYZ 90 404.8876 null] +>> endobj +2194 0 obj << +/D [2196 0 R /XYZ 90 295.6655 null] +>> endobj +2205 0 obj << +/D [2196 0 R /XYZ 90 281.0952 null] +>> endobj +2195 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2209 0 obj << +/Length 2273 +/Filter /FlateDecode +>> +stream +xÚ­ZkÛ6ý>¿ÂÀ Øaù~ä[»™´ šÅ4™bQ¤Á@±5c!˵åN²¿~/%Q¢D™T‘"D²Žî¹¼çð!JdáY¼PB!ø\¬Ÿ®ðâ~þñŠ´—¯áúµøáîê»WÔ, 2’ÊÅÝCA$(¡‹»Í‡¥’«kª±ÂËóë[8xInÞ–›ó.oŽ_–ëóS¾¯²ª(÷«wo®nî:Þ6-Á$±¬\}øˆHïÍFÌh±x†Œˆ1tñtÅ)s'»«÷W¿tqš õ S­„M7p¿P×> +ÍUMó$"duM0öÚ÷ýfs\½ÌO§æ‡wù©Üë†Õç·õå²*×åÎ6µá ÈQs@‘-3¬ã@Žåe^eÅ.ß´UËOëcqp5ƒ@ÌÓÂÆÌ%nr½ÛÚZKU'Ø$'ƒäàüöØ&Ö@ßÝ6E ?Ÿjn)—å±ùé);Šýcsò)¯žó¼õº½9kó6F¶ß4»bÿ¹=ÊWT,ÿ\±Ìwã› e¶-]… -§ózÛ” k‹\m['ÝÀÑqŸW­Ç¾_q¼üw‹u!QS!I9¯c6m5ضÑ5dùéXf›uvªš œócá®U+²,›Ãìô¹45±ëlà—¶‰öhÔD{_'\/Ú›ÓÏûÒâŸ÷Íi]Êñ-M!}ºmér}Þu‰àj1*!©›».÷¿cLÏGç¦ç¢ÚŽŠé<ÝÓ +×JÑsøwØ}m/¯H¯ÏSží«9¢Ý®9‚ ‡rðU{W[>–¯O +‡ -&Z-„‘ˆÉ';»]û¨p<ÓaÌÔBb¸ ².ÝÊ*1f%˜"Å(‰Óv¨ ^¿ï¬"LôÑš.\´…iÌjKõtØåýÈYÿVîw­§óáP]5]×@S£Ží 5ã5ãˆrªjÆW0Øœ&ÆcÁ ‚]œ%¼ëSƒ61Í»(–éwJEXS¸‰ Fפ0Š,åz8kLË`ú fDk¯[È;?O$0Žj8‡ûìx@Û ©fÒD›.1ÒŠHÚ&õ`Òž¨“Bf±k³‚мwžÀ ÷[“Aš0÷`eô¢ƒÙ<ßfë㊋eÙZ)sv“Ûî ë¾ñøÐ +[Ÿš):1 +µnÒƒYÆd!âmi›B(LÅͪ`Ú†#É OùÐÁÒFôÆœçí¬8àMxqÀ<ÇŒñ‚¸¾סâÊÄÛvdDýE7r‰¥Æ:áÆfÓ|=5è=\2]½ c*º ³Ö®×=}ÉGŠ3³Uº[Föƒ-x“sl+Ú¬g^fUÖäò¾:ž×Õ¹]ANŒ¼ÜŽÓJó‹ž÷Ïw°¤ç£Œ½ç¼ÎóÞSÝÚÐó0ä1¦GÌÏ·øTA\çù¼ÚÞoÁ%ãD4¬u¢ÛÇ¿êzXhl’®w°~,q·y¶ÉÁ/„\T™!H <Ó¼>zÚ¼ ž’`IÔš·™&Ýʘ•]‰‹nõ·v°¤[£Œ½[¼Î­Þ´“]8Hs ½]‘ùeÃ:|* ®Mã××·÷7w?Ýýv{so¹Q2”IxÆÅ<^‰•H2´&£ð¬±œÒ›‚O¹<:ù€˜Þ–Ö;Æèéçíôöygè= Ÿ£w< îXïסÜT -‰¢C%2 TÛƒQ!j¹ñ”ÜðXdbÏ> &·ƒ¥åŽ1zrÇy;¹}ÞrÈçÈO#ˆÊ-Ãî ‹~Ah¼*‘e 1ë”A +ø‹–›Í„ÞÔXpâå’Þ> ¢wKêeìõNð:½¼i½‡ä3ôN¤ÄõÖÜ÷Å¡v>‰y– •(ƒC¥øƒhÍs‡ÀðG¦äÖÌn\~¾ò1¹,-wŒÑ“;ÎÛÉíóÎ{@>GîxAÜv›ñþÝÍ/voì×›÷wA÷&0P%ã•èP‰(ák6LaRj…¦ê²Òýõ˜Ð-*­s„Γ9JÚ©ì‘ÎÙgž£q4‡qÔ^áÛŸAb¼ü-è„ð +AŠÓSÌaD è锺°^Ç£õÿP^Ó×ÁÒÇ=…ã¼Ä>ï äsDŽ§Äu2ÿôßzš†ézjn%»´ +¯Q‰ (<¹rx +$0Ù9‡'G®/ íbB;XZè£'tœ·Úç!ô€|ŽÐñ4‚¸6ê±úU¸%&aHå*Q‡JQK¸ñëéÍ͸Ý'i¶^a­ÐîU|÷ +è} É‘bPDìöÙÄ[A(´&¬ÃòÏÀºÜ ª‰œ[ÝŸhb×->­(^ž‚D4ŒjJÆ ì@)òq,Ëý¼´òaa£#ó¡ˆõ#K÷££×â¼]?òygô£ùœ~O#ˆ[ïÚÞ^êIŠÃÃ)IÕÀ¡RäJ!&è¨ô)¯¶Å¥®¤ìÓ¯áßÜ•¤°W³ Üám 㦺’‘°R"^â•¢¢zSðr‘byðvñ¼_7/ŽÂhå&±­é,Ù£Œ}Lðº8àýÓªR›p§ÐpCîÈNw‹OeÄXÄåQFçq1épŸu†¿£ü£˜¾·Ëóä8%Vц;LœX $ì7~©ž¶Ÿ?D¸šü>Ct"…ü¦4k‹hû%£þ HxPVLÛĸŸØï1]*6óó}~Ì*÷-›{µÿÖ¼±cù¹=!´ý¿ ìm¿G¥˶ÛØoÍ\× ?\ýôÕ}´úåëc >¶¦Uú?ü^aHendstream +endobj +2208 0 obj << +/Type /Page +/Contents 2209 0 R +/Resources 2207 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2163 0 R +/Annots [ 2213 0 R 2214 0 R 2216 0 R 2219 0 R 2221 0 R 2223 0 R 2225 0 R 2227 0 R 2229 0 R 2231 0 R 2233 0 R 2234 0 R 2236 0 R 2237 0 R 2240 0 R 2241 0 R 2242 0 R ] +>> endobj +2213 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 536.3999 169.0332 547.3038] +/Subtype /Link +/A << /S /GoTo /D (a00139) >> +>> endobj +2214 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 497.4963 168.4752 508.4002] +/Subtype /Link +/A << /S /GoTo /D (a00138) >> +>> endobj +2216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 414.6253 188.6792 425.5293] +/Subtype /Link +/A << /S /GoTo /D (a00090) >> +>> endobj +2219 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 332.7306 237.3867 342.6583] +/Subtype /Link +/A << /S /GoTo /D (a00152_g3e1562e8a6de32268e5df92a52152f91) >> +>> endobj +2221 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 319.7545 226.8662 329.6822] +/Subtype /Link +/A << /S /GoTo /D (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) >> +>> endobj +2223 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 306.7784 231.8475 316.7061] +/Subtype /Link +/A << /S /GoTo /D (a00152_gbb558f3a9b1ec015e83c314aba694e35) >> +>> endobj +2225 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 292.8261 198.642 303.73] +/Subtype /Link +/A << /S /GoTo /D (a00152_g737337d6a51e31b236c8233d024138a8) >> +>> endobj +2227 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 280.2236 216.8139 290.7539] +/Subtype /Link +/A << /S /GoTo /D (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) >> +>> endobj +2229 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 267.8502 202.6371 277.7778] +/Subtype /Link +/A << /S /GoTo /D (a00152_g06ba7b414e718081998f2814090debf1) >> +>> endobj +2231 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 254.8741 237.9346 264.8017] +/Subtype /Link +/A << /S /GoTo /D (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) >> +>> endobj +2233 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 240.9217 167.0009 251.8256] +/Subtype /Link +/A << /S /GoTo /D (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) >> +>> endobj +2234 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.2853 240.9217 281.0723 251.8256] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 227.9456 175.8576 238.8496] +/Subtype /Link +/A << /S /GoTo /D (a00152_g9f2196e2705036869611962425e404bf) >> +>> endobj +2237 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.3448 227.9456 297.1318 238.8496] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +2240 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 171.0022 184.6146 181.9061] +/Subtype /Link +/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> +>> endobj +2241 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 132.0986 191.7978 143.0025] +/Subtype /Link +/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> +>> endobj +2242 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 93.195 184.0569 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> +>> endobj +2210 0 obj << +/D [2208 0 R /XYZ 90 757.9346 null] +>> endobj +1775 0 obj << +/D [2208 0 R /XYZ 90 739.9346 null] +>> endobj +122 0 obj << +/D [2208 0 R /XYZ 90 739.9346 null] +>> endobj +2211 0 obj << +/D [2208 0 R /XYZ 90 719.4775 null] +>> endobj +2212 0 obj << +/D [2208 0 R /XYZ 90 555.3745 null] +>> endobj +2215 0 obj << +/D [2208 0 R /XYZ 90 433.5999 null] +>> endobj +2217 0 obj << +/D [2208 0 R /XYZ 90 350.729 null] +>> endobj +2218 0 obj << +/D [2208 0 R /XYZ 90 350.729 null] +>> endobj +2220 0 obj << +/D [2208 0 R /XYZ 90 336.7157 null] +>> endobj +2222 0 obj << +/D [2208 0 R /XYZ 90 323.7396 null] +>> endobj +2224 0 obj << +/D [2208 0 R /XYZ 90 310.7635 null] +>> endobj +2226 0 obj << +/D [2208 0 R /XYZ 90 296.8112 null] +>> endobj +2228 0 obj << +/D [2208 0 R /XYZ 90 284.2087 null] +>> endobj +2230 0 obj << +/D [2208 0 R /XYZ 90 271.8352 null] +>> endobj +2232 0 obj << +/D [2208 0 R /XYZ 90 258.8591 null] +>> endobj +2235 0 obj << +/D [2208 0 R /XYZ 90 244.9068 null] +>> endobj +2238 0 obj << +/D [2208 0 R /XYZ 90 189.9768 null] +>> endobj +2239 0 obj << +/D [2208 0 R /XYZ 90 189.9768 null] +>> endobj +2207 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2246 0 obj << +/Length 2421 +/Filter /FlateDecode +>> +stream +xÚ½YÝ“Û6ß¿ÂòL¬)Qû–6›6™k»Ý¸wÓI3;Z™^kbK®,g³÷×@€%kíÜ]çÆ"AA|ü(‹Y?1Ë‚Y¢? £xV쮂Ù#¸¼¼€õ…ËðÝòêooe6Ëü,–ñl¹6bá+)äl¹úèžó…Tw|wKƒ×«U3©§"ÜéC½=¶e]ÑüÖ,×m]Ô[¤(zI2ÿ´|u³ìŒa[U 4åÏ«Ÿ‚Ù +l~øa–ªÙL_d™œí®"ÚÉöêÃÕ¯Z0/Lm9 +”Ÿ†él!Ú¤ÃtÂ,‚ı'IpI";©`–Âëq„>°$Y:³\è(Øt˜xz¯«yá¦Ýè¦Ò-Í6:_é†ÆmMÏœýUÛ‡úhß³nÞçÅ\Þç¹<+%·L­iP®éùÄóJëÕPË¡³ô ¿¾c]dûŸG}hýñ9YŸ$v-BqÞì?‰DáËA§‹4íƒ0t‚P±…i4ëØÐÃH©Nƒ·¤ +g®À‰ce®KzEägAõ~Ác¨ËՉP#ݸÔ<2Ïk…å¿dʼn\´âXîïófß–;ˆ£±)™ðC©qÞ –ë’Yè§Q–ܨÀºÆâ¥8‰³À—¡ü¶Ç.2¶2Nü(ÉÄY+¥eArÙÊ-à¹d¥å›²rÊH 5NÅAvþð:® õãQ©òUÆi† ×—s¹ ðÞrôR,¿©‹ãNWmnH`Ö¨wC¼ÈÈWQ9’|Á²¾`#Á2FÝÜ”$uÏ’ÕP¢‹A¢œ6Òädà(ûjnyeUÔ»ŽÜóç÷·ƒIP Ž‹eD‚—›1F’RÏ…GÎÂaS·+?`óK¯È·[miÏDƒ.L„•žKå}) f^5¥!Ì…òLgž§®h5g5d*zSia“háAkæmt¡™+¾!ÿ—Ö[‹ºÚ(€>•[ÄJ1”‹5ÄÂ[AoakÝÀ™oŸiueyxŒ7€L»Ù ”½°Ð>ïõ5F„€T¶Äj| óœ¦Þ“6Áç‡FÙ%ƒXâ&gO¬|ß°ëãÁ ð£nX˜ y…A²í*¶aÃ9–Æ~ÑSþÉÇ 3 +Zäk74êÄ}A[ò-LóuSïF,FÚs¬<<3™zï ¬JzN7€÷^F6Ö•Or·:?ºIR›!Äòéôê%ÔÆ5H$Î7†æE£óÖ"Â=î-,+‹y£T°Í×?‰§Œs…^šHÖšä MdhtofnM…Û Ó¬gêΉ¦õz$äq[?ä[——*QÐÞ-)†H†Ô(`ÃZƒtF>’ç3‚‰Xµµ& Ãi8†1&ÎÝ30ë =«@õBű‰*¤ô6à +ŸÿÒM®¨«êi‰®˜lÏ7‰¯êjá¨(Û©-jè.euÅ{¤ô +Ìñ ‡·—q r‘pBŠ„© €YøQ¯Àóp¢¯5x®_÷ºhy9ç“GHºÙÖdÉ™¡1UW¯hÚßìÇÞìp¥dÑk@mI£íDgŽ$¥ô´oODáÙS8)cÇÚ,Âñ0‹¬ÛAþ Jdˆ4™… Ü¢£!ªï°ŽeZ¸\§ŸR@óA²ÒÄTO§vó5ßí_Ÿ"Vé'¡gUÄ]Ƃߪ) ‡xšù:64‘Ș¹ØAvlëz¿ÀYÀ}Ì/Nð¡Œ}h|Öq]0éTšD 7J+¸Àµ¡Y|£±EVem +nËŠÏàÈ0LWÕ.6„­MæÙ6ˆ¤À"«²d误 b¦˜ŽÓÈä˜ðîïnnÿÑx¿ÏáR‡‹ø&,Âʯ¶¿Ý|XΓȮ|ghoñªÇ”—øMé—Ÿ?¼h©ûíÝíýbª°Ý,\þ~{soìÂ{ÕïtSZGŒ%—{$Þ»ý«Q÷ts凡÷l€Ë‹¼û0óŸCïÛæ¯ýäôÿùÜä|júÖ2Þ÷¾˜{_Üá}\Ѐ£˜~°'ܦ®û±Ùí°ì›þ™PGNW3hÙèâ3ÛÔZ–Â7€ÐUÞ›‚'BAÕxn,æÅ1žƒ„ 5=çqðd)Žœö³Ÿ^cà~Ï-ÄÕÕvot¾StWÂçñ ™’3NÜY¿-GÃDKêô™ó·kèä9ÂV–[õzÁ­°yáq§ru)ŠÛ\ÔKÙÖu9@<º}2¹Ô|&f×J·º OaÑ5Ѽ÷Xvo¾þù C}Å2Bi»üÀ’81”…ìêüÙc*c íeðXc8³1†ãŽ…òWù>„‹5=)#߭陳$€VÍ3«0 Wâàl‘ðŽ5ôÎeÈHïC…À Q è¸P/È©@@yPW +³®ÁØÂÅR8%O +†ç8p#º;X!¡ê+€ŠY +É‚õ ­k.uÂÞh]}®O&ŽÐ$¨”Î],Œ8Æ‘<È[) JÙ3Œ ¤û6>ñþ–& a†‘h±‚§Ò¹tŸê i?…#ƒ±¶É˜k-OìrPùSëð\5õ~oÎ*µí ÉèÃÕÇåbÄŸ’“:=ÓlS>nè;KP¶¿qmiyßÐF,sUû>¦MšxËïoM?4kÎËU{„Àø[AŠ ¦mòê°+'?=tªßÝ ù½\¯úNǹ”r.¥n.¥œK)^i`¹;9¶b!S_±pß‘è¹&…ק6­ñýü¸em t?ãtǪü†RZHÑ3·y©ì·%8™©ÜÛ¼T¡ù@Ä!‚àOKðt.}’‹v'Xœ^úäô- ¸ô:fõ÷"ÉÕÚý’A® !òßÝ–ð/Má‹(™ü÷5'bÿOÿvšRxE ¯Y±Ÿ%ajÿÁe#p'?èJ7ý7 Û¤²ƒ÷˜GGžÉÏàZ†×2àËBÄü© +]a?Wu Ÿží‡ê¯Ïº»G‰pÊ?ÿ.´³ýendstream +endobj +2245 0 obj << +/Type /Page +/Contents 2246 0 R +/Resources 2244 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2163 0 R +/Annots [ 2248 0 R 2251 0 R 2252 0 R 2255 0 R ] +>> endobj +2248 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 702.4657 192.3555 713.3696] +/Subtype /Link +/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> +>> endobj +2251 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 617.6293 168.4754 628.5332] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +2252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 617.6293 218.5572 628.5332] +/Subtype /Link +/A << /S /GoTo /D (a00152_g499bb98a0b4ae9a98553ede81317606d) >> +>> endobj +2255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 372.6901 227.254 395.6588] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2247 0 obj << +/D [2245 0 R /XYZ 90 757.9346 null] +>> endobj +2249 0 obj << +/D [2245 0 R /XYZ 90 637.022 null] +>> endobj +2250 0 obj << +/D [2245 0 R /XYZ 90 637.022 null] +>> endobj +2253 0 obj << +/D [2245 0 R /XYZ 90 603.0588 null] +>> endobj +2243 0 obj << +/D [2245 0 R /XYZ 90 578.5313 null] +>> endobj +2254 0 obj << +/D [2245 0 R /XYZ 90 578.5313 null] +>> endobj +1420 0 obj << +/D [2245 0 R /XYZ 338.656 320.2263 null] +>> endobj +2256 0 obj << +/D [2245 0 R /XYZ 90 302.5028 null] +>> endobj +2244 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2260 0 obj << +/Length 858 +/Filter /FlateDecode +>> +stream +xÚ­Vmo›0þίà#HÃó»!ßZ­«Z©RÖfÒ´E œ·Y×?ÛFë6mŠ”œ}ç»çÎwOŒ\¨>È +˜¡ÜM +º{µ}í «”>˜\nœ—¯qäF ☻›ñÀ`aw“~ðDè8„zÇ›µô€½pW¥Ç\öò«*9²ìâ.«JÿÓæÖ¹ÚŒq-,F8ÒQ¿:>A7UðnH2÷Q- @Q„Ý¡˜ ‹ÜypÞŒ~z…9°”Å*³7 „(¢‹V!…B#€ÃË…#!® ¨ô©©ÆÕ÷¸¨sÙ®æ"ˆ »S§óдG{ÞiöVu?ˆ ¶„LŽv£™†(}ļfPÄY™WU> endobj +2262 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 717.9621 227.254 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2264 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 543.1103 227.254 566.079] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2261 0 obj << +/D [2259 0 R /XYZ 90 757.9346 null] +>> endobj +2257 0 obj << +/D [2259 0 R /XYZ 267.4535 665.9412 null] +>> endobj +2263 0 obj << +/D [2259 0 R /XYZ 90 649.2141 null] +>> endobj +2258 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2267 0 obj << +/Length 2057 +/Filter /FlateDecode +>> +stream +xÚ­šYs¹€ßù+X›²*Dp~óꊼ¶¤HTU’Ý-Õ˜‰ÌŠGÈaÖ›_ŸÆÎAT¬r•ˆ™één4>t7h’>†¤op_ … ã²?Yôpÿn_õˆ<‚磺ÀãÞ_.©éd$•ýñs©A$(¡ýñôçD„GTàÁÙjù Æôe·ÉŠùjén®Öv¼uÏC*«»Ø]ßÁ@*­Ê ê]Œ+G¼Ÿ‚IbÝøwïç_q +þ~êaÄŒýßá#b í/zœ²pñÚ{èý­Òã”/š® ìð| Gp‡† S˜¿ªÏ—`üM¦éôd„(õCÄ­zª÷úñÎó"›¿æS§à<ßN6óR¿WÄj cõX¯Óã oͽ/“ÊÛ o·/_Ü°˜ån°Î7CŠ£õfõ¯|R´_­MÔÞyÍÛ ÇL€Ó—J iföÑæÅËÜ×V ’Õ_pËPŸ]Wo9Éùâf/¸AX;M/Z«_I¥lw´YÛÈ…˜‹ „($)çåÃñ¬ »!LåâëYÂaä {} ·kXåQ1_xÁ=Dpñ\/¸%…;ÙrêÛÙj÷êÇ_s'Uüžg¿ äþA±rŸ‹¬˜ÌÜ0ÏÜH¶ë|2·>NÜ¿înr€”•øIYš{G´LçÛb3ÿj‰Ùy2àqmš “¹›ÓÕd·È—EéÜ·D ¾e‹õ«WúCXÌœ@1Ë +¯/óŠË)j°õÜéá>ps±š– \Ø´Ÿlc:n‡Ô§Z‡G „‰V}a$Ò˜ªƒì¡Q]ª›-5À™êK¬ä]¾Yù‡¶U‚)RŒ’¸ÙJê€Ý:²+¤{mÖð—ÕBʬžÝg¹ïí ³ÅK©€¡½˜/÷¯´|§°/” ²åûÑM_É'fÑÕÝôc©•‰G°’JØf†)á-ÛaÃÙ@,W>˜_C gÙò%Ÿþ®4ø]áATgY›1oçZ—O0GÒdæ<‚%zF³zòE‡ê‰ÍCåÒC~ƒ”é¿„³=PeÕ¾ fëê‡8“ˆ3Í÷z¬±_(]¾m‘,n±’JÙ…m°”-»KaÐPÓ¶|”ÎJ>åCGok¥Ú~(‚`ÙE< "np¤[•ë@¸"ЦØF^«0û<•¼ô ¬ŒîWbÖÓ¾çÂ*WY£îÛdÝ­ýpu×Ù¹$ SQ&TÜï>ì5ƒ3È!2ÆT‚ÁJ,É`]a„Á„ÝÀ`ÓnœÁ¦åLøÐÑËD2„¥ñù ÓbòrÅa IèÅÜ^9;ÆW³‰®7ÐØŽ3Ça~\cv¢Ç5éªïßçQS&%JgïÀI=(3õ¨Ñ5kÃ$"­:ٷꌳÁ,ÛºAf? Âì_˪·ÊŠ ŸÝBmV…šsß8•²™^V(+gãüû'ßlæÓi¾t¯”!¶®1´£ª;‚:‰më·õ:²¸&s]8óepýx«Õ‰Ûá²æÆ®±³ƒ²O>åe¶È=(³Ìf27½ö±f“ÛW¿¹«Ç뻧³Û›Ë!”it (2 ­<r%¤º@$!UbÉ„µ¸OH »!!5ìþiZN}ÙÍI\"Ei?ž“‚|ÊŽ^ëFˆùÓ—·ƒ›‹³ñõíÍC§—4 +ibd"$#)Ô[“Ð>s¢Iª+›æìÛ|±[xÚüŽ,÷÷³ûŸíËå(·;ñhŠbœ ¥!Ó¼CYdÐGhMŠÂ –¦°¦0FaÜnEaÝî 6ŒŸBaÜŽÞ…Ÿ¯Æ7w·÷C «x€Dè`‰°Ø“ ÖUÃ&N$:1£k[è‰Aì$_á8ž/«/u*0׫MACWG­7 IŽ2ImHD*3VbI&ë +#L&ì&vÓL6ŸÀdÂŽÞ“?Ú‚úxyyqÿôpýÏ‹’"­°N„Ú7Òoäѵ)«m¦Ã> endobj +2270 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [315.1536 672.5415 350.0824 683.4455] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2271 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.7554 593.6496 309.6842 616.6183] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2273 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 524.9361 172.3507 535.84] +/Subtype /Link +/A << /S /GoTo /D (a00141) >> +>> endobj +2274 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 486.1806 164.0618 497.0846] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 365.4596 298.8158 375.3872] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) >> +>> endobj +2279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 326.7041 293.2467 336.6318] +/Subtype /Link +/A << /S /GoTo /D (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) >> +>> endobj +2281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 287.9486 263.8671 297.8763] +/Subtype /Link +/A << /S /GoTo /D (a00153_gcacc406c3bf7d0e00412e4c946252739) >> +>> endobj +2283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 249.1931 265.0627 259.1208] +/Subtype /Link +/A << /S /GoTo /D (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) >> +>> endobj +2285 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.4377 245.6755 220.3653] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3001114ddadc1f2ada5cc9a780e866fc) >> +>> endobj +2287 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 171.6822 220.231 181.6098] +/Subtype /Link +/A << /S /GoTo /D (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) >> +>> endobj +2289 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 132.9267 286.1035 142.8544] +/Subtype /Link +/A << /S /GoTo /D (a00153_g9dd44616d41cef74d3beb51d8be5ecec) >> +>> endobj +2291 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 94.1712 253.6255 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00153_g529648ad3b0b327a43689b0f1779ff55) >> +>> endobj +2268 0 obj << +/D [2266 0 R /XYZ 90 757.9346 null] +>> endobj +650 0 obj << +/D [2266 0 R /XYZ 90 739.9346 null] +>> endobj +126 0 obj << +/D [2266 0 R /XYZ 90 739.9346 null] +>> endobj +2269 0 obj << +/D [2266 0 R /XYZ 90 716.7484 null] +>> endobj +2272 0 obj << +/D [2266 0 R /XYZ 90 543.8366 null] +>> endobj +2275 0 obj << +/D [2266 0 R /XYZ 90 420.1859 null] +>> endobj +2276 0 obj << +/D [2266 0 R /XYZ 90 381.3704 null] +>> endobj +2278 0 obj << +/D [2266 0 R /XYZ 90 344.7717 null] +>> endobj +2280 0 obj << +/D [2266 0 R /XYZ 90 306.0163 null] +>> endobj +2282 0 obj << +/D [2266 0 R /XYZ 90 267.2608 null] +>> endobj +2284 0 obj << +/D [2266 0 R /XYZ 90 228.5053 null] +>> endobj +2286 0 obj << +/D [2266 0 R /XYZ 90 189.7498 null] +>> endobj +2288 0 obj << +/D [2266 0 R /XYZ 90 150.9943 null] +>> endobj +2290 0 obj << +/D [2266 0 R /XYZ 90 112.2389 null] +>> endobj +2265 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2295 0 obj << +/Length 2082 +/Filter /FlateDecode +>> +stream +xÚ­Zmsã4þž_‘¾$3TèÝ2ßʵwÜAḆ`:nâ´†Ä ±C¯ÿž]Krì8±\èt¦–Ç»«Õ³Ú]%lLác:ŽTDb!õx¾Ññ<~7bîã øü¢ øf6úê-Ç1‰5×ãÙ²’ QœññlñÛÄÐé74¢“ýû0Ttµƒ›Íb¿Jíøj3߯ӼLÊl“Oÿ˜}]Ïj½Î,%4C­~ûƒŽ`Þ‡%"6jü7”°8æãõHráoV£ÛÑOµûAõ©ÙIªˆf|Á#;Ÿ¨f4"Lsð‡ÙG¼v‡¢c¯k‰î`ð!b3ö(ôI퉧[”Ù¼°÷0s{ݹërÊÌdyì¯:b œ Öo§3“ "åùe…ÉGšG‡eeeT)Œ×0œÈ®qðWbÜxÂ{ÒË$‰©Öm½åó6]¤Kë¤}–—æ®ìØÁ"Ʊ<²?Ú=8̧–Ÿ>dQGnµ¤§,ˆè÷„1D)ƒŠp èA¤Ó1%Š¯úYç`ÖFcýuŸ•v°H€~àÉsôÒQL”¦æU襵&‚Y@½jX^M=ô +èõôjéíЋé«k8‰ x§mÈy~y|ȤŽÜŠ_§LàÀ+)Õï‹Æ„z)ÁlÓ (7öÊÈ +,†®°ˆ®#LÓÆω½Ûtžá;s+!ß,R§5Ÿ¯ö‹Ô½W¹ÁÔn€IJPœ§å:)þjÏÆI’£™ž`$3:Iö«Ò>ØmöeŠV0WØgOéjeGþ‰]\Ãh—§îe§&e›8€u3:r[ÛåõìÛ“»%ÒІ‡\!"hñ€’/cаÉ:¹ªaUqë‹©ãí²*fZûæå'7X7ŽùNæòÍz›­ü.ú”•ç÷ØCES ^N¼ùÛ®PÐÆp!z¬>Ý ·ZØõžuGu ‡ŽÝhŸ ´& 'ÐjX0Ðz5- ×ZKo8ÐÚÊZÀŒŽ\h³Ù÷ÝCM(‹uÀRgyŒò¶j-Ï‘CPk·q¯î Vríc;A \H)Zfë´]>¯²`­kâþåm2Ç~ï/l;ÒÒ…XÉÅóó!ü¡¼;ß{óˆ­_éК«˜H<´®aáHhì‹„~½u$4õˆ„–ò!‘ÐoFG®„O×—··×7ß|‹I'¿v²Ž€%2ä ® â/Í:˜Ò˜ž\×°ŠÉS¥&û]Þþ–¤Øo·xVVÝ,ýnš¯®;­òCRéúÚZÕGSÔƒš2\j$kX˜¦ }4í×[Ó´©wM[ʇдߌŽÜMïn.¹ÄnòÝu·:ŠÕ4àŽ°ƒË˜àUË IÏ„J±H d}ÝÇzkíßëäs¶Þ¯Ýn]ïÛIÞfür‡Ç- þa]oÌÍŠë)ñ$Y~T¶…†ÝÓ«>û¤?ŹO1Òëyþüu7• +Š›mº8[,Ðݛ߯6ѧ‹.¦ ÝÆÆíoWÿ­ê‚¤E ¥âl7=A\ÂAÜ«ñĽ>ˆ[zÃAÜV> ˆftäú ÆõèT]ÑF<`(þŠà¥é…qxME¡VÚÁ„K/1ÇKˆ›êßÊ77O)¶v\óª•vÂýL–ïFpÑUlä«$hí…4¶:P«a=LíÕèyÚÐfiSíŽöp$³ÁÏ»7ß^¿ùîöç›Ûî×]h¢LïüµÃÀòNO¯K˜Vúý|¥ZV Áođ08I´†‰âOCàÙÎwižÂè é·Â?ø€ißÛ3î®ôk.¾æî—:0-÷ÝîrÊUÍåîOz|pµùüüv~È£ ž½i /ý ŒUéendstream +endobj +2294 0 obj << +/Type /Page +/Contents 2295 0 R +/Resources 2293 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2292 0 R +/Annots [ 2297 0 R 2298 0 R 2299 0 R 2301 0 R 2302 0 R 2303 0 R 2305 0 R 2306 0 R 2308 0 R 2311 0 R 2312 0 R ] +>> endobj +2297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.0032 702.6096 196.7092 713.5135] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2298 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.9845 663.1573 206.6718 674.0613] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.1599 623.7051 252.3298 634.609] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +2301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 459.7527 225.9098 469.6804] +/Subtype /Link +/A << /S /GoTo /D (a00153_g51195ea7cd5aa387a87f9d3b23905b62) >> +>> endobj +2302 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 420.3005 246.7912 430.2281] +/Subtype /Link +/A << /S /GoTo /D (a00153_g9069474ea570fd78c481aa164317dbaf) >> +>> endobj +2303 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 380.8482 245.6755 390.7759] +/Subtype /Link +/A << /S /GoTo /D (a00153_ge0f8cbeca9731af2171ffd37e79de893) >> +>> endobj +2305 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 296.6881 187.0159 306.6157] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb61381673de27f31848c5396bf0b338e) >> +>> endobj +2306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 257.2358 233.6306 267.1635] +/Subtype /Link +/A << /S /GoTo /D (a00153_gf963fdea2b75d27ef31e92d1d01359ee) >> +>> endobj +2308 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 217.7836 248.0566 227.7113] +/Subtype /Link +/A << /S /GoTo /D (a00153_gc3882366feda1cb759ccbfe98327a7db) >> +>> endobj +2311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 133.6234 188.6795 143.5511] +/Subtype /Link +/A << /S /GoTo /D (a00153_gdcf372ff9748996f7c05e9822a615384) >> +>> endobj +2312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 94.1712 254.552 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00153_g92f3344ec8ca46893163399c89fafed5) >> +>> endobj +2296 0 obj << +/D [2294 0 R /XYZ 90 757.9346 null] +>> endobj +2300 0 obj << +/D [2294 0 R /XYZ 90 556.5104 null] +>> endobj +2304 0 obj << +/D [2294 0 R /XYZ 90 312.6772 null] +>> endobj +2307 0 obj << +/D [2294 0 R /XYZ 90 236.1996 null] +>> endobj +2309 0 obj << +/D [2294 0 R /XYZ 90 149.6126 null] +>> endobj +2310 0 obj << +/D [2294 0 R /XYZ 90 149.6126 null] +>> endobj +2293 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2322 0 obj << +/Length 2189 +/Filter /FlateDecode +>> +stream +xÚ­Z]sÛ¶}ׯÐL®ô`\|è›»‰3‰íÚÊmo?Æ#K´Í©D¹"Õ4÷×ßI@ (tãñŒEŠG»Ëå9‹@2ÆðGÆ‘ ͸/Ö#<~„¯ßHsù®Ÿø€7³Ñ¿ z¬‘–TŽg•I „ŽgË_':=¡OÞnòß0¦»í¼Ì6yýåæÙõÉÔŠÉf[Ÿì.®á@&JM™þ>û0:Ÿ¹@š8“Ä„ñçè×ßñx ñ~aÄ´ã/p‚ÑšŽ×#N™=YnG?:;õ…êÇn—cSãšÔ7è:`‚D$…QHGB]~+ø¹ä&?.âD«±E™$ͦšN6S‚'Õ¿UÚd${¨??Ÿ]׋)“§t1¥xòG±[7¸âi³[-ëãû´I`‘6ßØ”æ›fÒFˆ‹0¾Åæ CB`ÚOÈ—À GæQ„`‰8S|ì`&¿Q*ºÁÁ¯¨`cßà‘Ä7¨˜_‘ÆR¶ý~·L -ó´ãœK”Є87—¶ æÆÃâcatìš0>_\ßÁS¾{{uyy{ +¥1š¨HàR)€®D Á‡ÒU*“>Ì"|u°Š°O ÉÖó¿³õn]ŸÌ×›]^6œk˜»Øä‹Ýv;eÉ$µ×ölÞäyº¨*@/1¡@0„¼m‹!H A›ê$93¹$õ}¼ÝGÒ_œºÅGBª•æ¤W>  ‹* èq¯€ˆ_«€–߸ÚÎ( FÇ®UÀé”Ã@1»øÏùÝÕõùeGŒ#•R³Õ:!œZ$©ƒ9b£N,ÌÄ|––évå‡õºØ=?o¶ ÝlýÝ<§y–?v¸ßÀ¶SÃßÚþzJûb³~ÎV¶¼gy¯x„f0ºQñ‚ªÞÏi‘@Ò9åN;X”Ó¾Á§#~-§[~ãœn;ÀéH»–ÓÇ+:®z¤H´¡šf/$²Q­“‘˜ +ô|·¾O·í‚^ÀåU9ÏÓÍ®X}Ý»>ò j´´ ìäX¿JÏ!˜F‰ÆIŒg§g0Äΰ_ÇNßïv¶œag8ŒŽ]Ëη³óËë«›©„§×å)£ˆ'"’ *#ì…}‡ À?®HŒ¦öí4]eEéU`ÇUSª,æQ¥é«ÔP®!LÇú‹²Ô7`iįeiËoœ¥mçX £c×uÆ7ïÎLkp:%„˜éƒÃCªÂM`ÊE,%) #âËj*Wæ2Ö8ØË›ÇÆ]Õ,WA×1/çåÜÍá2óT^ŸúM-O€Þ,y ¤Jb-‚ƒÅéí Ñ;ì×ÑÛ÷;€Þ-çCè£c×Ò».¾S¢&W`”4±Ç2aQ±`Ç´ÔíX/78Йs5P#:¤ kô,ÏÊl¾ªOêéb¹5‹ó¼XgEáÈ^fk¨é¥e9L8÷$ß#Q=ïVEÚ_Ú9cˆ(ñ: ‡9‰d"Ö€8XœûžÁ÷Ã~÷}¿¸ßr>„ûá0:v-÷?þ\ÓÿçnALjQEÉp¨H”P¤€ÿíT/5`š‡ul=ÌQßC‡¨oa{êóÄëe¸Ü÷2p¡êeàÓº¨ç5ªHÍhø¸®øÞ p|ßØ=PÑ”LÖYY«¥B™¡Ç '6œ}çÞø:bz~Xºìƒy'aüuz&S$¡¢k)–o0 ¬ˆ_+¬–߸°ÚÎ+FÇ®'¬Ûÿ^öi‹a7Éùp¨Hf–ðƒG zÉȮ®èù耴l/­„yÒ‚'­„×҂הּàp^@ÎꃶÆà7•@EËúô¾ñѬÁ¥–Æö.Z +K5äÏ]Z”ëZr?H¤i¡êebÛÞ-ÓtmǽrS>ÍÿJmhç㻼Ø-iQ<ìVýjåÊä먕*$&bjµ°¸Z=ƒ!µ†ý:µú~¨µå|ˆZÃatìZµBû÷éööب¹Pá,8TÄ=…‡ÇA)ÙǛޘ)Ççn/~9¯ÉsÒ,×›e‚ïï>ž_v¾‡°áÿ{¸VH/ÁÀ/fx`é£CŠ·°Vé¦Q­‚¶–«åÿ¥F°ýšÀÜý*š J™Õ>Ñ„ƒE5á h"â×j¢å7®‰¶óšˆ„ѱë¦EçoÏÍVÀO—gWS&&?uä!"BÉHBÈøóÂ9?M(Ò‰Ž5u Œ¶yX¬µ"UÚKóå_é¶ÌÜöl]þi_ÿËð´Y/ø’åËÍ—) ½,¥XJñëôY”+Äë³,ÎRÏ`ˆ¥a¿Ž¥¾ß,m9ÂÒp»®r_|ŠN Å“Ó‹YuzõyÖajBÔ‰ +'Å¡"Ñ@×W%ÚÑ@½DMÓØ*c¾‡1ßÂŒó÷@Õz•ucXç‡[Ý媢œ=˜½»J^çUViuè2\¶)%§¸í£ï›…Îx½ë}zóÏv‹ÁP˜°^åù€€ò,ª¼ Ç½ò"~­òZ~ãÊk; ¼H»n·øæº^ +~sW5-Gö.àDZlP¸KÅ_ºÉFx‚˜ð¨s\"6tpp+ç÷«0× “ˆ5û|ß\ü ¥Hq-c´°8=ƒ! +†ý: +ú~P°å|Ãatìz4íê½…wG(Lõç‚"1P–@ÊxÒŽ!PòÍ'ÃR䳇ñÙÂ:»qî% ÷ÛŘ]B?¾ÍìþÈ:õæÇáŠ.ÁåSq°¿—B^ö/íjÐFláÚŽQŒ.¬cxD +ùM/VúRØl‘R¤‘Ð62e_š$P«’ú¡¾KóF÷ú^“…Oöàƒ) ;›jsô=eߪ3¸!ÙûR¥A£xß ¿g›¿¿>¦ùa:TMš—Ÿÿ`,åendstream +endobj +2321 0 obj << +/Type /Page +/Contents 2322 0 R +/Resources 2320 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2292 0 R +/Annots [ 2325 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R 2335 0 R 2336 0 R 2338 0 R 2339 0 R ] +>> endobj +2325 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 703.2861 227.424 713.2138] +/Subtype /Link +/A << /S /GoTo /D (a00153_g196379ceb1219a99f4495e41ccc9bbfb) >> +>> endobj +2327 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 617.7172 235.8724 627.6449] +/Subtype /Link +/A << /S /GoTo /D (a00153_gac0de06236b02659460445de30776e00) >> +>> endobj +2328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 577.6656 202.5175 587.5932] +/Subtype /Link +/A << /S /GoTo /D (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) >> +>> endobj +2329 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 537.6139 233.4713 547.5416] +/Subtype /Link +/A << /S /GoTo /D (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) >> +>> endobj +2330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 497.5622 215.0208 507.4899] +/Subtype /Link +/A << /S /GoTo /D (a00153_g51c1cd531ff0afb81620151f2248cd21) >> +>> endobj +2331 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 457.5105 187.9025 467.4382] +/Subtype /Link +/A << /S /GoTo /D (a00153_g15de27b044603284f68db05a378235a7) >> +>> endobj +2332 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 417.4589 211.3245 427.3866] +/Subtype /Link +/A << /S /GoTo /D (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) >> +>> endobj +2333 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 377.4072 231.2496 387.3349] +/Subtype /Link +/A << /S /GoTo /D (a00153_g24aa5bc36939cc9a0833e1df01478a7e) >> +>> endobj +2334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 325.794 211.942 336.3243] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4910467b83a639f06739c82cd362037e) >> +>> endobj +2335 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 286.345 259.1549 296.2726] +/Subtype /Link +/A << /S /GoTo /D (a00153_g5b9dba2123705bce1ce95c3deca0bdad) >> +>> endobj +2336 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 246.2933 272.6941 256.221] +/Subtype /Link +/A << /S /GoTo /D (a00153_g2bc3b489923793759526a3181eb667fa) >> +>> endobj +2338 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 160.7244 233.1426 170.6521] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb1455b27c06532a399cf06d2c1d6d08d) >> +>> endobj +2339 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 120.6728 236.4303 130.6004] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3090117ef3ff5775b77cb1960e442d07) >> +>> endobj +2323 0 obj << +/D [2321 0 R /XYZ 90 757.9346 null] +>> endobj +2324 0 obj << +/D [2321 0 R /XYZ 90 722.0018 null] +>> endobj +2326 0 obj << +/D [2321 0 R /XYZ 90 634.0061 null] +>> endobj +2337 0 obj << +/D [2321 0 R /XYZ 90 177.0133 null] +>> endobj +2320 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2354 0 obj << +/Length 2254 +/Filter /FlateDecode +>> +stream +xÚ­Z[sÛ6~÷¯ÐL_¤Ádúä؎קñÆÊÃnÛñÐ-qB‘*/IÝÎþ÷= +iRÞz2àÁ¹áù€&3 ÿÈ,À3Ox(`\Î¢í ž­aúꄘקðþÔ%x·L0~Ôc ¡È÷žE¦”>’7LK5‰K‡Ý,Ç…ZTºB§AÙ‘|&Çu8äjy·\l~ÖìÎòúny}~×C&…°èyþ¸/CþK)òSÀ´dJ틸Š‹m’Å¥ÆYbPYª]VIdæËz·Ë Ær“×éÊ3¶Aq»KÒØÌ&Ùóèä +rB¾<F 9…OMv @-åB²1ˆºrÀhGø1 W£Ç×ÂôæÓÕÕõÏW=hêUÐ÷‚/Ç&ˆpF§°iÉÆ°™æ*2®›ÿ’lÝ §Q\Tab’r¼ bþ Êò5€‹9">g¯\Ĉf5Ü–l¸.ÃàNȵÀíÈnWøÀP£Ç·ÍøŸÏ?-˜˜Ÿ]œŸA¸íEWH÷œOùƒBÕèƒÌ—AXx°-‚ønÉ”ÖïŠó<\EaYu"é³0R Ðà5`&(’”S0³dÓ0sŽÁl\n 3Wî0ë?fãjôø¶ññæŸ÷7—?÷ã#AÜãdÊ GÉKÁÅ<äA„™—%ë•i’}5#ñL§²‰ÃT‹æU¶®6ÏÃŽJäc"^vª|aDLÁÎ’MÃÎa8»q¹-ì\¹ßT]'«žlÔˆº²ŸG¥ŸÒ¢ÇWiQ'»û4_÷”€PÀ´ ã°TS¢¥‡|ù½ëx,p´ %ûÍ{”B;Ì<¢ 1ÓD®`Ž«4Ͷ\?òÆx0–Áq'Â!9–JI¿-’ÌÙ¼6ƒð ·²µCó°Ë2lk‰æè<{>¸ï#B09Ry‡zøvC€ÍÏo¿u ÕáE›¤Š£ªnâáK‡þNÀÉ£{x@öÑ@?Ò0'æ-cóªw“¡È’R¿ü¾‰5Õ=ªš‹³UBAfHTÑÕyßÊÒÌ“$Úè©fÔœ«rýü`õå.Ž¥`¼jöE™ØzLü˜7I•yJn©GU¾ +ŸÔÐ{c=—&U•š±¶àGx€R"ÌVfÕƼ޶,³¼ +ÚU +DñÎ\ø¸ÜÛµó*/ò44šÓÕÐÐúó‡díª1hUÖßý{yyÿéóÅåg×0*ò‘Bvfk[ÇV†°PY•Áž\68ˆsAÑœS<[ýÝã“”]öV6l¸úb>F\úäÙTጤŠ–l2UŒJܧŠ ¹6UtäNW(]áGT(jôø¶…ð‡E +£HL8‚ª”1éeE +ƒL#Ý~{8&·d4?×ðR„Y¸5#…'õ[m´b´£8™oë²Ò£‡X¿/šð¾NÊ +2ÞJ¿ûžT=2&@þ4ËÌ‘’X¹­7u>ˆìêèžÝÞžŸÝÜèÝ6%QÊísÝ×%¾³îf”z& +3=(!ëÄz¨”ݽÓDaeˆ”eI¶_pp…Ö6£ ºý©~«¥?uô£YŸ¯­|ó½OALøˆùÐFuµ88‰-Õ”lI¦Lte—UQÛ¼¾Pm\¥Žä㓾YÚ;O;ãÞ&díÝâ=# äî.4·ª{‰MH4 +¯âÇ·íeV +HÖÀQU´»žÍ^ÞÛ7[í ê•K0ˆ¨6+ä¥ûâR]šõå»5áT7 &Y”Ö«ý ÚžGZq!|è,„ªÚù$´ ý©»`Z‡| ´ò]…6}hAò ´:Zô e¨¦d èª|z [;pHC2¼y +] UÓú_—›¡Š×Æ©i +n‡œ`ïB7z…uµÍu:(4}Nþµ—å|Ð@ãN|ŠäÕÂjêeW® xjâ¯fA€„ä¤#´öïÍš†zH¯šHKåuV ÑØöŠ/èí1Í:\'ý4o8òT˜ræWaîªâ'õ1Ê°¿Í¶ŒŠdg´„òQe¬Ëõ¿C˜d}1âË04ðÅ› ½Á?-À°Dêòÿþ¾ß´Pß2â|P$H@%óuD€…j4«Êþ#~e• Êíàƒ:uµy Ôüâ·”½¥æO(ÆÒœZuþòâ ælÿæÁ†ö‹ü§uÜKoêO¼ô?«(Àlendstream +endobj +2353 0 obj << +/Type /Page +/Contents 2354 0 R +/Resources 2352 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2292 0 R +/Annots [ 2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2364 0 R 2366 0 R 2367 0 R ] +>> endobj +2357 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 705.2116 209.0629 715.1393] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3589822ecb9d9c4145209756396b8a6b) >> +>> endobj +2358 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 666.5202 222.0741 676.4479] +/Subtype /Link +/A << /S /GoTo /D (a00153_g5726142fec34f35fb9ea19e5a45975c6) >> +>> endobj +2359 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 627.8288 214.124 637.7565] +/Subtype /Link +/A << /S /GoTo /D (a00153_g21664b7441cfa37d280228d23316d609) >> +>> endobj +2360 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 589.1374 228.3406 599.0651] +/Subtype /Link +/A << /S /GoTo /D (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) >> +>> endobj +2361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 550.446 212.4703 560.3737] +/Subtype /Link +/A << /S /GoTo /D (a00153_ge6f4a2453dbd8bc60e6a82774552366a) >> +>> endobj +2362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 510.7784 166.3534 521.6823] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> +>> endobj +2364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 378.2912 233.5112 388.2189] +/Subtype /Link +/A << /S /GoTo /D (a00153_g285a80366aed9428f64282b8d13c918b) >> +>> endobj +2366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.3051 251.4958 359.3784 262.3998] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.4596 221.9163 356.3884 232.8202] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2355 0 obj << +/D [2353 0 R /XYZ 90 757.9346 null] +>> endobj +2356 0 obj << +/D [2353 0 R /XYZ 90 720.8203 null] +>> endobj +2363 0 obj << +/D [2353 0 R /XYZ 90 444.8446 null] +>> endobj +2365 0 obj << +/D [2353 0 R /XYZ 90 311.3811 null] +>> endobj +2352 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2377 0 obj << +/Length 1774 +/Filter /FlateDecode +>> +stream +xÚÍYKÛ6¾ûWèÅb†‘’rÛ]oÒd»ëE“ÀÐʲ­Ö–\=²ÙþúERÖÖœ´‡ÂQâhÞßÌP&†±NRuSÌïa!×»lòyñvt»¨Ñzr&ˆTã¯ÑÇÏØZ¾oG1ÏåÖ3Ü`Deà@O¸ÕçD'à}Œ«ê Šõ, Š=œwT0,ò±ÌKÄ ©1BD³:Æ£äUl'œoó_o—îoßkŽì,ÇY˜‡é>’ÅJ5Ý£²âpHRÝÖæsHrã(Þè3Tù0¨9I“}Ï™Ðô­ ٢ݱk•EZªCTZ»Ôk.õð\Ý+aQë•™Ù*;¤çýT¥E¬õƒ›²©Jºä hžJ;X(»€A¾4ÓCšüF©›U¢®q¢Äa©vÉTó(I‘o’J8jÕ¼4­ 4™×½2MÛ´ù@¡ê~ 2Gë¸éOhx±ñfR~½Z7†4\AØš=‚deæˆèïÖ€"D·"ÃêÝ-:jd•]d2‘2Öä(_ÙéM˜À´E§Óΰ–¥óöäûÃýò§«ßÊ´¿»UÏ Åƒy_g{ÿkTè´õ7-Gwí6ÿɨ`M#—}ègEÚžÀηY“SB\WÙÉ\¿ŠOØcãÊÃCÚ¥c—¦å§”Uk44è"7:~Â_?ÎÔè XZìrxNNêsI„w/Œp;Âu˜†q`œöôR½´ôS8¼Gû0•:Wú]”#¬7G¢y½|œÿ~{ynt‘QÁ§™'ݸ(!ÍľŒ{UE”Ï%‚å5 sµ)ã(øê²óÓ qÇ›0UÛ_$¸ý]¡_“µZ^Uíee“âÝrõÉ/qrsëO(0ë½=”¸{Qwz._Põ\IÐoì’Àß5ËÑå,–‰•¤~NÙÞ7ç”}QNE ؤԫæ”íÖŽ¯¾7#i=#íóyý0axüA‚üjvsõ¸ÌÉë4ñWŸåöÜ“wÚÌß4Û +T+½kzôÓÖSñ<23×" ×…þ¸›Ä»S6!d‰žž£|«­l%—'…M/m%í¿fà¨o;'ÿ1Áàf"¸øWÿÚ”Ó» ¯FëC<‡¹æ_(­„´ö.ŒChêU«Ö&ÿdo% ÓB¨i%o({cê:ÅXœý—JR#ÜÀ,ùú² ;‡qNØ)ÿüøÞd+endstream +endobj +2376 0 obj << +/Type /Page +/Contents 2377 0 R +/Resources 2375 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2292 0 R +/Annots [ 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R 2384 0 R 2387 0 R 2389 0 R ] +>> endobj +2379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 726.8189 213.038 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> +>> endobj +2380 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 687.2449 190.8907 698.1489] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +2381 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.3888 687.2449 268.6482 698.1489] +/Subtype /Link +/A << /S /GoTo /D (a00153_g69646a81a922033c5281445a71f8ffed) >> +>> endobj +2382 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.7197 672.2644 372.0849 682.1696] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2383 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.2897 647.671 239.3189 658.575] +/Subtype /Link +/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> +>> endobj +2384 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.7197 632.6905 372.0849 642.5957] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2387 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 564.2011 245.6657 574.1288] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb6e04358481bd2057524fb874cfa472b) >> +>> endobj +2389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 550.8899 229.0679 560.8176] +/Subtype /Link +/A << /S /GoTo /D (a00153_g6836f92f3692f3a4429eb599db40cbae) >> +>> endobj +2378 0 obj << +/D [2376 0 R /XYZ 90 757.9346 null] +>> endobj +713 0 obj << +/D [2376 0 R /XYZ 90 739.9346 null] +>> endobj +2385 0 obj << +/D [2376 0 R /XYZ 90 582.5346 null] +>> endobj +2386 0 obj << +/D [2376 0 R /XYZ 90 582.5346 null] +>> endobj +2388 0 obj << +/D [2376 0 R /XYZ 90 568.1862 null] +>> endobj +2390 0 obj << +/D [2376 0 R /XYZ 90 536.5063 null] +>> endobj +2340 0 obj << +/D [2376 0 R /XYZ 90 511.0399 null] +>> endobj +2391 0 obj << +/D [2376 0 R /XYZ 90 511.0399 null] +>> endobj +2351 0 obj << +/D [2376 0 R /XYZ 238.8902 421.844 null] +>> endobj +2392 0 obj << +/D [2376 0 R /XYZ 90 404.3073 null] +>> endobj +2350 0 obj << +/D [2376 0 R /XYZ 215.8768 311.4556 null] +>> endobj +2393 0 obj << +/D [2376 0 R /XYZ 90 293.9189 null] +>> endobj +2371 0 obj << +/D [2376 0 R /XYZ 352.8421 189.1121 null] +>> endobj +2394 0 obj << +/D [2376 0 R /XYZ 90 171.5754 null] +>> endobj +2368 0 obj << +/D [2376 0 R /XYZ 238.8902 96.348 null] +>> endobj +2375 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2399 0 obj << +/Length 1725 +/Filter /FlateDecode +>> +stream +xÚ­X[oÛ6~÷¯0°¨9’%±oiív.’4s\`[[ŠÍÄBuquA’ýúŠ¤¢›-'+‚ÀynüÎ$cø#cŽÇ.s·lg¼‰Fx|ÓGD/Ï`}V'x·ýþò1GÜ¡Îx}WJpb”ÐñzûuâÙÓõ°‹'Åò +† OÂjp‘l‹P¨ñ<Ù‘ˆs?’xú}ýi´XWzµYÌrˆÔúsôõ;oÁ¼O#Œ,î±ñ|`D8§ãhdSË|„£ëÑŸ•µP2ôíŽë”íQøtÕîD(¢ˆMgc<ùm+¾aLc½§/Ë«›wSƒ×ËrW Ϊ‰8©á¬·ÞiÎ,øW’;õ››¥ +ƽ¿ù!…‹\}ßN)¬ÞM)›Ü‰tÊØIRq‘Cm«®ƒA´%ˆ¶•sÙ.)­lj!,%‘Iùah(󫑃5ÙS.²7rlMüx«x¶‰ÈZâb!´†<©+ “ÐO§Ä›Üwu†ëZžwLgL9é<‘[yPÌulS‘až© V¿a“zýþÊ8 MŠûݾÈßh†QƒrwÁýîˆÐ–¯ìÒò¹ +§ Ì‰’Á×Îd–Ë›‘"YLVÁ>Ùçh× +îñF¡ôT1Ýdû0Èo’"Ó¾a†áŸ À¼À–…°í4òÁ9’¯7ŸWóÅêé }«7™n ˆÌxõEƒ”nvA.6y‘6 ßÃ.ØìZyhG© Ã:èÀ‹E| @[9fãÇMvä•¿ß-?Þ,.ç˳Kã"†/’>–åGô £ô·Ùœaò·ÛTÖ²F„Ób/BKPiyZ%¸¯RYNJ•r૵†J9_2y•JH›˜Â/e‰<‡ªi¢TKËä‰Y®—¥×SG‘v\2yئc 3äy.È›Š~Vgè‰ÐŽ\‰‚ ¢Ž ³–íì0TCº¹¼àYVS· +fh,ç•;À] 0=ÙÁ7i’µ-´A&wø©0òK;R5H73•Ê6ÖbT£TëàÖ]bÁ$U§‰ØZ)·à¶H{ᬈf5ªžæЖ¥ +qG£ƒ8gNSãáÎdȇt·¤|ƒmz Š=dûQ*¢ãVP‚Ǭ‰@_¢Ÿ=C= »%³@,òÈÏ~D€;Ȗ玣¢+¸‡<¥¬nF½hš[…<»™{e– kzÖ^|Ôçî¯<éóž²XÿqZK¹Þ‹M E´{J÷!äl¥Qí=©¼MíƒÐ(ÇÑBÞàbó¾rq6µá’ùÊÞD]¦—7GwOùr¹ºNºúR +sXžÈ\GïÚÕÕ³ŠE6Äd%Ó”ë ¥†¡ŸÕz²#·–P%K&…Õ´©Ýr Õ€%–…¡’pÞ´D]º¦[ŽN‰u¢f2GwOÆš®æY˜~v¦üÈuFÙZcã•ñ,"Ñû2pJºúKóàà w¾¼^/.¯>¯dÜ®¯_ðÞòªKv@AR—ÛÆ…rŸ¤yÖ‹×óíóoß5”¾æÎ)ßn!xìþPÄ€ q˜ó¿˜ËrXH½Òó±#ï ^È¥)ˆ"©|%h¾V]˜Á'Y•ŠØDþÅo©õ–êë7ÅØQ£òáÖ”¤î£»¹:̓ǧ{Ñyj—oà=(ýçžÛendstream +endobj +2398 0 obj << +/Type /Page +/Contents 2399 0 R +/Resources 2397 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2292 0 R +/Annots [ 2404 0 R 2405 0 R 2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2413 0 R ] +>> endobj +2404 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 421.5214 227.254 444.4901] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2405 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 421.5214 380.3883 444.4901] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +2407 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.808 302.734 388.7368 313.638] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +2408 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.9727 302.734 513.9963 313.638] +/Subtype /Link +/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> +>> endobj +2409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 290.7789 143.0105 301.6828] +/Subtype /Link +/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> +>> endobj +2410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.9993 290.7789 209.4109 301.6828] +/Subtype /Link +/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> +>> endobj +2411 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.7857 290.7789 297.4 301.6828] +/Subtype /Link +/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> +>> endobj +2413 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.4335 197.9645 328.7205 208.8684] +/Subtype /Link +/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> +>> endobj +2400 0 obj << +/D [2398 0 R /XYZ 90 757.9346 null] +>> endobj +2401 0 obj << +/D [2398 0 R /XYZ 90 739.9346 null] +>> endobj +2374 0 obj << +/D [2398 0 R /XYZ 224.7534 640.6243 null] +>> endobj +2402 0 obj << +/D [2398 0 R /XYZ 90 623.0456 null] +>> endobj +2341 0 obj << +/D [2398 0 R /XYZ 238.8902 547.8099 null] +>> endobj +2403 0 obj << +/D [2398 0 R /XYZ 90 530.2312 null] +>> endobj +2314 0 obj << +/D [2398 0 R /XYZ 208.1261 381.0771 null] +>> endobj +2406 0 obj << +/D [2398 0 R /XYZ 90 363.4985 null] +>> endobj +2316 0 obj << +/D [2398 0 R /XYZ 233.9089 276.3076 null] +>> endobj +2412 0 obj << +/D [2398 0 R /XYZ 90 258.7289 null] +>> endobj +2342 0 obj << +/D [2398 0 R /XYZ 238.8902 171.5381 null] +>> endobj +2414 0 obj << +/D [2398 0 R /XYZ 90 153.9594 null] +>> endobj +2397 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2417 0 obj << +/Length 1471 +/Filter /FlateDecode +>> +stream +xÚÅXëoÛ6ÿî¿Bè¾È@­‘Ô;ߺ¼–"M³Ô:´E K´¥E¢\‰jšÿ~Ç—e)Šëa(† y<Ýï~÷°°…à[1²B?tb× ¬´š!käËÖÇ 8_ì3ü¶œýzAb+vâ€Ör-%Øñ &Ö2ûd&óñ‘}Z³Ï‘M×$¼¨™"Ö[±nÕf='¾]7jÓ]ÝÂ"£ÈŽüù—åÛÙùrgˆ¶Ów,Ìø:ûôYØûv†7Ž|ë6ÈÁqL¬jæ×lÊÙ‡Ù;9ê@¾0u]»S÷uG÷%° ÕuϨ¸#+ú&\=Ë‚Qµ"~¬/¿VOñJ©»b >qrG\¬XàÐ ˆçIéwtMÊRš)æÕÓî¥û”~F>‚üº'—EË)$,ë9:6ä‘šGQ;\ìÄqèí‚êãù#„ì_2um}‡?¯nﯯ¿¿>¿Ñ²Ü¡,â9®c)k™ÓƒôŠ + |›cߦ¥"å4ÉhcŽÙ†O;h™KØ6O®Äcálºn©ŽGÁx=bÞXÍ ¸e­9¸{Ä$a9°ÛiÂÔb¥™ÖuÇ2gNsí qZsžó9¶sp›MaÑ0ÊeHÈ/t´yÝ•ÙPž¶ÌÐ6c¯¿?Æ÷•3÷t!ûÃ5ØŠ1¶uÔ§T ­Ù;Ç(ÈF“>àžý €oÓü¡íª o›:¥m{åí¶,ø}ÝñmÇBº;@:9€ô÷——W7—?Fúå´©ÀK: +…öNYo6Û ]–Ò†'…vñ^>0~ †i]m‹Ò8¯`‡r$Ò9»kéº+­ª[^>©õZ" 2ªÒBÚ °ö§óVpu,•hÕh{ö"ÏòA;ADUXqÒl4ËÝ^­Ý±/öøŸ×ÛgRÅ•d¡«7&®cK\ˆ(( •zÃsX»ëzr h¯º–+WÈ8€¿Šj[Ò +b%Cé´…gÛ\±p㾤Ió‚Ó”wPjD¸3Z‰Nm¥Åƒ›z  ÿ^{}L&ßA63¨¨Ç¨pÏktl^×>Ü—“êÝ›wsÙËŠÛHPdWÉ÷¢ê*µa]µ’eÖÒlxò¢’9ËD=Z*’k#B&aŸ]p¸ÒrÊ›„µUÁU\åäˆ>æFZ3FSíH!|BV²ªr°‰ sœÕ|”ìyÂ6ÏDMýŒ*=*Åÿ ÞA4|øëfÿX@@î½p o4 %ŠêÔ~ˆ 8ÙÅe(€6F†<ÒÈèepä†~íh;;èé*ñM¼3 +%%öè<uYuƒª#Þ±¶KE, ¶O‚ä8ct¬í0òŽŸHþÏÈ6wÿeäÝBgsvvwúþæâLj»ÝU^3%&YÖ€QzÓ&4y7ùƒÇ(@;nÅÊÀ„W[ûJ‘¶Iú0Ç0ðVÊ&-N`€ãR¿ \‹¨ÅèðÈUið{«$ëZÕx((êG™¢H‡ÆïCã¿ZkJ ­ÚfoøcQ–Úž4Üy®µ²)xÓjËEãP9 ž½Óâ@Oq@Uõ$MÁÌÈ—Þ“ØÚM„¶‘雂Á¬¤¢;ã`Å棫Ów·J +MóZŽò¬w¾Ú« ‹ÕŠNãI ÔµÊwQôò¦®v9Îx˜‰|á(´0!NäFÑä4c˜û\ϬG±ƒ ²`¬ cÛšÓ“±RŒˆŠ‘ä ÖׄÚý¬Á(tBìú½´a9z>®›‡ÖL,åÓpÈ™yqõñüLt‘žÃqGÿrÙ%Õ,Hàx1ŠŽ.PX4££ +Ôø£†>N~;AàøÁú^!?ÀDð +vÉ~HjZd¾Gh#Äm/)£MÂûáO=ß™Å[Ñ::½1_j0:!î AºZ#¼ø}Fp;hXŒÏêïOúì÷€ø˜2áŸU%©Áendstream +endobj +2416 0 obj << +/Type /Page +/Contents 2417 0 R +/Resources 2415 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2425 0 R +/Annots [ 2421 0 R ] +>> endobj +2421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.1521 514.0489 332.2253 524.9528] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> +>> endobj +2418 0 obj << +/D [2416 0 R /XYZ 90 757.9346 null] +>> endobj +2372 0 obj << +/D [2416 0 R /XYZ 319.1084 712.3476 null] +>> endobj +2419 0 obj << +/D [2416 0 R /XYZ 90 695.8178 null] +>> endobj +2370 0 obj << +/D [2416 0 R /XYZ 368.9116 591.1728 null] +>> endobj +2420 0 obj << +/D [2416 0 R /XYZ 90 574.643 null] +>> endobj +2345 0 obj << +/D [2416 0 R /XYZ 238.8902 487.6225 null] +>> endobj +2422 0 obj << +/D [2416 0 R /XYZ 90 471.0926 null] +>> endobj +2346 0 obj << +/D [2416 0 R /XYZ 207.0201 378.4029 null] +>> endobj +2423 0 obj << +/D [2416 0 R /XYZ 90 361.8731 null] +>> endobj +2315 0 obj << +/D [2416 0 R /XYZ 207.0201 257.2281 null] +>> endobj +2424 0 obj << +/D [2416 0 R /XYZ 90 240.6983 null] +>> endobj +2318 0 obj << +/D [2416 0 R /XYZ 238.8902 96.348 null] +>> endobj +2415 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2428 0 obj << +/Length 1383 +/Filter /FlateDecode +>> +stream +xÚ½XYoÓX~ϯˆ4cKÄs—رy+4@P 1ƒfU®}_á%x:¿~ÎÝÇ1iDѨRï~Öï,1ž"øÃÓMî èÜ›ÆùM·°ý|‚õñ Îgý OÂÉÏH0 œÀ#Þ4ÜH +v\‚É4L>X¾gψÈjWo`ê" ;HM®Ë¤Í˜š_–q›³¢‰^ö§ðådv|µX.õ°àúeòáš& ÞË rhà»Óo°@2Í'sBÍ"›¬'vtÔ|0¦‹é9êX.”vžƒ‰C Jb„õ[Â>"D +­Ô»Õ››·Ë‹õzyýäʈõ·Ð HÒI0)™;t(’¡=w­¶*…Ru»Û•U£›²RcÑ]¶1²˜¾P±¨®Y~›ÝÙžk9‚©`ƒŽGæT²‘Þ „ʵZõ^Êu¹#±6U´îa‰Ú7¯÷œkÇž¹$°Â”kZ5mÅjE¡b_Z®WÔŠ +=& oÊ"Êô2/ۢ鳦ÖÛ‹ëN쮫ìÔ”pŒ+-³DÍšÌN1:TnmðÛØÄ™*µ÷½ŠË„©YÍÿÕ3©šx½ÛUåwžG “×áù!Íí®aÂsßcè‡=â#º >¬$6j”rJ(D¹™I¹Ä,ª—Z¾»1TåÆ‹ÈEqYÄnÁQ‰¾y·ïáÛwÏÖ«–p;ÃÀô]a1õÈÂYPŸ±°2—fý[Ç¡åBhÑÀñ|Ï•–yU6ìñ+Fè|šmwk„o?þ0‚SLÝ=5ÁøŒÐ:pSQê )‹„©¿rsÐa£‚P„ ä5#žCi ”¼TIƒËÔ§ü©‰eܤìz‡xO²½·Ë]㤎N/Áaz¡µÂkq*c=]®þZÞ¼_½º|mÃæûSYK‘ Ó#L7J¾ÚصXÕðÚ€­b1ã”úèwÛu-mÒo¼HJqöm$‹Í%ÛuZ¶"ü ñ¬[¦ÆZº +&™~,ëÜaÎ#XR$³‡ØV‰WJn˜I¹ûG‡±$8Ä’ µ/±°éŠ4‘ñ8Ò~íݨd3Â@N‰Y­¯ð".s^lÕ*‰šèÑXê0¥ åÛtÕ”,<ß„3PË(ðzä•â•L{ApV3Èßñç%åS¼_cÿŒí9‚jŠ}ëµæ}Fñ5VáB Q•H›**êœ×u§ZÃsV¶Z¿XT-iÞ»¡³k³ZÔ„£©r)#Ç`¹ŸMnµ‚ÿ/àHf¯óK> endobj +2429 0 obj << +/D [2427 0 R /XYZ 90 757.9346 null] +>> endobj +2430 0 obj << +/D [2427 0 R /XYZ 90 739.9346 null] +>> endobj +2348 0 obj << +/D [2427 0 R /XYZ 238.8902 601.3918 null] +>> endobj +2431 0 obj << +/D [2427 0 R /XYZ 90 584.8893 null] +>> endobj +2344 0 obj << +/D [2427 0 R /XYZ 238.8902 497.8687 null] +>> endobj +2432 0 obj << +/D [2427 0 R /XYZ 90 481.3661 null] +>> endobj +2369 0 obj << +/D [2427 0 R /XYZ 207.0201 388.6763 null] +>> endobj +2433 0 obj << +/D [2427 0 R /XYZ 90 372.1738 null] +>> endobj +2347 0 obj << +/D [2427 0 R /XYZ 238.8902 297.1084 null] +>> endobj +2434 0 obj << +/D [2427 0 R /XYZ 90 280.6058 null] +>> endobj +2349 0 obj << +/D [2427 0 R /XYZ 238.8902 205.5404 null] +>> endobj +2435 0 obj << +/D [2427 0 R /XYZ 90 189.0378 null] +>> endobj +2317 0 obj << +/D [2427 0 R /XYZ 207.0201 96.348 null] +>> endobj +2426 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2438 0 obj << +/Length 1725 +/Filter /FlateDecode +>> +stream +xÚµY]“Ú6}çW0Ó˜ ª>,YÊ[»›¦I›NšeŸ’Ìž€Mdÿ}¯°dŒ%,§ÙÎ>¬¯Ï¹_º: 2ÆðGÆ +c#Å"1^îGx¼_Žˆy<ƒç³¶Á¯óÑÏ¿Q5VH *Æóõ AÄ)¡ãùêýD B§3Êñä&Ï>`L7U±(Ó<«?ÌúúX߬§”Oò¢¾©^½… K9‘ñôãüõèżqÄøÉ™ ÚFï?âñ +ü}=ˆ)ÉÇ_á#¢ïGeöf7ºýÝàÔN/øÂå„ ‰—Âm|ÁÄL0Æ“ŸV‰:Kê î_½}˜Ïÿ¬oD¤Ã<ÖƒÓ±HÕxó­yó” øß¼ýs\¦{ó¸Ìëÿ»TçðË”ð sb²¼¾9,–Ÿ§O’Òdþ˜de}õéñœ~BÈiµW$F‚FÌx•Ú·yµ[Õ×Y^ì»Ý£½³ˆÆÅåv‘m’U0:ÞÖYJϱ(m@6w$êD£_Ù™‡Uz€VB[dRª.SÊb<&%b×Ktûöáæ÷7ÜÝ¿¹ë+R8ŸJðj³Ù%&+©ñplìÉòó±Ú{²fÓSó‰]AÔm|É&2sIPL„ô¶­5šµ­ÜÖ• +aÌK1$Lÿþ•—Éó.)ÁÅŒ’~ÖÆÊCÛNÁ1> endobj +2445 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.2945 407.1106 229.0877 417.9898] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 333.1135 139.4144 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +2447 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 333.1135 175.6584 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +2448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.6472 333.1135 211.2546 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2449 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.2434 333.1135 247.4088 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2450 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.3976 333.1135 278.6812 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.6699 333.1135 310.5115 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00039) >> +>> endobj +2452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.5003 333.1135 349.5247 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.3901 333.1135 412.6078 356.0822] +/Subtype /Link +/A << /S /GoTo /D (a00050) >> +>> endobj +2455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.3132 280.0189 219.125 290.8981] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +2456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 206.0218 139.4144 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +2457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 206.0218 175.6584 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +2458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.6472 206.0218 211.2546 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2459 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.2434 206.0218 243.0849 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00039) >> +>> endobj +2460 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.0737 206.0218 282.0981 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2461 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.0869 206.0218 321.6693 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00045) >> +>> endobj +2462 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.5347 206.0218 384.7524 228.9905] +/Subtype /Link +/A << /S /GoTo /D (a00050) >> +>> endobj +2464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.7012 152.9273 279.1888 163.8064] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +2439 0 obj << +/D [2437 0 R /XYZ 90 757.9346 null] +>> endobj +2440 0 obj << +/D [2437 0 R /XYZ 90 739.9346 null] +>> endobj +2319 0 obj << +/D [2437 0 R /XYZ 238.8902 670.3741 null] +>> endobj +2441 0 obj << +/D [2437 0 R /XYZ 90 654.4845 null] +>> endobj +2343 0 obj << +/D [2437 0 R /XYZ 238.8902 558.783 null] +>> endobj +2442 0 obj << +/D [2437 0 R /XYZ 90 542.8934 null] +>> endobj +2443 0 obj << +/D [2437 0 R /XYZ 90 451.9385 null] +>> endobj +1385 0 obj << +/D [2437 0 R /XYZ 90 425.3268 null] +>> endobj +2444 0 obj << +/D [2437 0 R /XYZ 90 425.3268 null] +>> endobj +1321 0 obj << +/D [2437 0 R /XYZ 242.1978 314.3947 null] +>> endobj +2454 0 obj << +/D [2437 0 R /XYZ 90 298.5051 null] +>> endobj +2313 0 obj << +/D [2437 0 R /XYZ 242.1978 187.303 null] +>> endobj +2463 0 obj << +/D [2437 0 R /XYZ 90 171.4134 null] +>> endobj +2395 0 obj << +/D [2437 0 R /XYZ 242.1978 96.348 null] +>> endobj +2436 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2472 0 obj << +/Length 1155 +/Filter /FlateDecode +>> +stream +xÚÍXKÛ6¾ûWèh1Ë7©=y  H[ßÒ`á•d[€,9zd³ÿ¾C‘”õZËA/¦È3ß|$gD‘Ã!”P(d\Ñy…ƒ#tZ7¼…ñmðûnõÛG! +%•ÁîÐZ Jh°‹¿¬µÞl©Æ +¯›?>CSà5AØ6þ,â&Klû}5ç$¯÷uZ䛯»ÇÕ‡]ç×ÑLãõÛêËWÄ@ïq… µ^à#†48¯8eþ![ý³ú«³cÚ sÑ Âî £²ÑID(bˆo¶c¼®_/IœÆô‰”ˆ)ƺ©­s3Räï¾íá§T&V ¡&½<ÕÑåi¹T eòTÉP®‚yC2#%:Д©’”êÖûîäVÓa[ÅÁõø!`–¥‘]涣åéAûÚ¶ÒÊõöÿ9ñà¢Lb‡É¯¦GA2 +›L`}¥w[ò¿íO˜<µëEŠ|²m™Ðˆ0"G,FZw¨%ß›Q:ô]ÕeÕM™ ãVN9Ô–(hpæÆ ÚTÍ>Ë^G*Û}ûà•õªï½èƇmŸŠ,NóãòZ¦ù¡(Ïí £ÂD«@ +8=ZªY]ãõñ¨£* eS®ù/ZB;z÷–Ðþ„%töb ²x³„.øö%tà{©„ò_¹„ +àˆ Dy³„öQo—PA5ô)~g ½åú§Kè”ál í`†b|Š.Ñ\ …0àr[›µäzb­—@¹·ñ³ù“«·óg™TEö}#źŸE A¡Ô§Q(nº ñWM]OnUÓ„LÍkSHz–q¶¾o0LÝŽ6G4+Žž¯ÀÑi_Z›°Ò=Á(E”ጛ³( E)ľ…œ«ã 7"‘Ä6½A¨¿:[Â!‹̇|.ÓÜi^4õà$v×Ð.–sRUû£;ýxîÔ3¥×‡NXótnªÚ´Â6­šžÔœ£µÉ¦ãùÕþ·i»ã®»f–MÓ¦·©çÁ0#„˜wóhÞQZ¬gAÖo£1—S{‹ +³hb”vêÞšP}p~ÝmàÃDv;%¤ ÍÝ "\Í~À°*D +ù¿.èí SÜz%3xlËLä’vTL Ÿ> endobj +2475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.377 726.9533 248.7336 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +2476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.0545 702.4697 359.1278 713.3737] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2477 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 649.2336 135.5587 672.2023] +/Subtype /Link +/A << /S /GoTo /D (a00039) >> +>> endobj +2478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5475 649.2336 175.1299 672.2023] +/Subtype /Link +/A << /S /GoTo /D (a00045) >> +>> endobj +2479 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.9953 649.2336 243.1941 672.2023] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +2481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.377 591.5789 252.071 602.458] +/Subtype /Link +/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> +>> endobj +2482 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.0545 567.0953 359.1278 577.9993] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +2483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 513.8592 139.9724 536.8279] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +2473 0 obj << +/D [2471 0 R /XYZ 90 757.9346 null] +>> endobj +2474 0 obj << +/D [2471 0 R /XYZ 90 739.9346 null] +>> endobj +2396 0 obj << +/D [2471 0 R /XYZ 227.8216 626.7922 null] +>> endobj +2480 0 obj << +/D [2471 0 R /XYZ 90 610.0651 null] +>> endobj +2484 0 obj << +/D [2471 0 R /XYZ 90 476.7479 null] +>> endobj +2373 0 obj << +/D [2471 0 R /XYZ 90 450.3624 null] +>> endobj +2485 0 obj << +/D [2471 0 R /XYZ 90 450.3624 null] +>> endobj +2470 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2489 0 obj << +/Length 2005 +/Filter /FlateDecode +>> +stream +xÚÛ’Û¶îÝ_á·Ê3k’ºXê[Ó$ͦi›“º/§íìÈmk"K>ºÄÝ~}ÔÅÖîf:ž±H@\€r)à'—±Xn‚{~¸LO ±<ø‡…äå5¬¯Ç¯¶‹ÿ¼Uñ2vãP…ËíÞP¥(©–Ûìw't¥·Z«@8ÝýGl¿çA{¬W2rªîp³žq±÷ŽQÿ ©‰¾sFOC¶4ï7ÖKj<l‘„OQÃÁ'»¢}e®5 ë»y}rÐõ2¢¬Œ8´U4º3Ûå*Γ3Øô\çIË€R³ÖŸ Ωë½9XMôΑs%Š‰1äÇ„Ü'² ç»2âTû²^3SòcìO–1cÊèã)aÕ÷" cÒŠRÁ5/)0'Þó{¬—øBQ‹0¼â+„*ô gÊ_sÆ¥úÀ8ŸÆ2Xü—d¸¡‹2ôáoÙ7’P =«‚ÐsÃÀW ëgF] ÂM"]åǃ¤XF ièI¡›8Zöh(éO#—RËè&Æë kw³Û¬×Þ8ëå¶6¸TS'M¾Tyvý}‹“ïVÝ·¶èóƒiÑ—³oÅ$ãôqã]¤(]Žñ•Za÷ÕêBàþ¾–•7o»ÒfsqÅ1ÂÓq4Fx&Žz´ãèYŽC½À×ÆÑ„/å30ÛM$¶”Áïg"‰ñ_’â†.GÒƒqÇðBô†+i”ëyAô¼&z¬dPB¹^É€™Éj䜧üND®ûÁWúÝû¹hµh(É»¤Ìl´öu™AªC ‡t÷„Œ^ŒM`ð•±1Æž (à ;Šü¡ËRÜeÙ@á.«J»¡#²©j¦Ï’#J}ÇöÅ$9{…Üø„’•äÄJO5sòemN4yÝãl9%‡Î~tJl°š3ômf-ÀÊ@Ç´ÃiIcöЗ/FSN=ìИݞVìêÆ=õ½Ð÷Ñuš‚‡e1X€'“îšž+S õý…5‡:³ºº.†ìÉ rÚÀ¥{\äs½MK3œ› +¾ }ö]Q¬¹lÇ9ÕÀ@`Ú•âFþ^ò¢ ÑŽYpQ‰»¸| —NŒ1­ó‘}É Û:)è÷ZÍu½>'5TdТ…ƒ­HY»nâ±]#HuǪ+2Z1•ÀRè㻓ÑLßê„qLÙd€$…ž§ qFm^ž2¡¬·LÀ:öH”;Dß8£íˆÂa=kÁ3Sšï ;ëÙHÕóœ#†OÑyH<0¸4€'. óœ·%MAŸñÞŠ€;f`üæ­å8õ{Üø=’,³+QÎÉcQ%Ù˜³7欘³‡œgá‚-ÁÔ|Ç@Ý>´Ng8®i#LCg‹˜B—[ïÛ®©¯pžºS¸Xâ¢iuT0Ùö¢¯¨FÉCa»> endobj +2493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 503.0404 171.8124 513.9444] +/Subtype /Link +/A << /S /GoTo /D (a00134) >> +>> endobj +2495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 420.2854 201.2321 431.1893] +/Subtype /Link +/A << /S /GoTo /D (a00154_gb4b17aaf20d630f30919b19937b966a3) >> +>> endobj +2490 0 obj << +/D [2488 0 R /XYZ 90 757.9346 null] +>> endobj +1776 0 obj << +/D [2488 0 R /XYZ 90 739.9346 null] +>> endobj +130 0 obj << +/D [2488 0 R /XYZ 90 739.9346 null] +>> endobj +2491 0 obj << +/D [2488 0 R /XYZ 90 716.7484 null] +>> endobj +2492 0 obj << +/D [2488 0 R /XYZ 90 521.9904 null] +>> endobj +2494 0 obj << +/D [2488 0 R /XYZ 90 439.2353 null] +>> endobj +2496 0 obj << +/D [2488 0 R /XYZ 90 382.9653 null] +>> endobj +2497 0 obj << +/D [2488 0 R /XYZ 90 356.4803 null] +>> endobj +2498 0 obj << +/D [2488 0 R /XYZ 90 356.4803 null] +>> endobj +2487 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2501 0 obj << +/Length 1890 +/Filter /FlateDecode +>> +stream +xÚ­Z[oÛ6~÷¯06 °ÌñN1ź&mS¤ÁÖ¸ØC[Ž­Ä;³äfEÑÿ¾C‰”)K"U¬SäÑùÎå;$E‰ 1ü‘¡ÆC%ÒŒËáâa€‡÷Ðýz@ìðÆ'¾ÀÓÁo¯¨j¤%•Ãé]¡A$(¡ÃéòãHãñ„&XáÑáòOh +<"—w»åa“–íóÝâðnóy¾ÞmÇŸ§oÓ +ך%˜$õŸÁÇÏx¸óÞ0b:Ã'¸ÀˆhM‡N™»Ø nUzÊâ†6ïaí‡:ÿ(¸«J÷$"|Íò Jѹ² ÊU”ÚØ1¸æjžŸ ?îÖ[Û÷´J}Íe˜¤B˜ekaÚ´s·ìy<š[¦B¬PGQ1(£Ä–æ+(¢¬e&J!†UÒ9Áùå P#!–ˆ³„õ°O”ŠS,‚M‰ F¬¤b¸À~¥<ÁÆoÒ2ЄP}Šl†ö÷Væ½oƒ“ÙÐÐ[dnV 8GJsöÁ¨1|ãÜ—i‰“Bæà‰1ÉŽ&B…$`¢ä…‰0¯b¥“a%šQ3g%ŠPʘë°IÖ"Bƒ„wŠ%ˆ &b„rbqBy +C„ +ãV„ªáFUCîC¨° ½%¡&ÙÓ:_¬Zx¥ Â)SáH Dý ¯(Ckã•3–^ºµÒ›«ŠÙ~7ÁÅV^·Ä» ŸÇDŒVŸ°ÀðOl?h7Ýd +åO!+× ³u +“µ‹’ÕW kבµŽ&k¹Y#64ôZ²Î—Ëýf~›n²Â&À¡d8 A‰òÇËØ™µ/LØJ짶ÚFþrUx_^¸eúË|sH³_ìî2ÃƫدÔAï‹N^sÅÔ’õ ‡']mÜ»à6gÚ”.)"qžöl[·ÜìF9'ÝEâ „ŠÄ‰Å‹$„èI·*÷×¥õ´¹FK¤¨"'àÝuâäcf4ô3f³«—³›¿§—/ßÌÞÌf§ÆPغ)*U$ÜJŧ1Ì ¤¨ŠeȉÅ3ä) e(Œ[eÈÇí‘¡xŸ …Íhè-6I/g—×—Óæ O˜B$‘8©tC[9‘ œy+^ùó{ùƒŸ·”(Óð$Ä ë$€/ @%%@ñH€®#@ 7N€:xDÌhèµxqóáÝE£81‡šL’p *©xS[Š àIç7»:ÁRd©qÖF xäЉî~ÀóBÔpbqj„=j„q+jø¸=¨QïC° ½–7-SEDp €“Š!7´E§XT.¯/f³ç§Äp­üa“àN~x!~8±8?Bˆ?¸?|Üü¨÷áGØŒ†^Ë‹ëó¶¥CxÀIÅÚZøñ½-á‚"œ¨î|ÇCé¶Rñlà¼dA«\{ =Rí#÷ÉtІS­}öAß«-B÷TWt¸þpuÕ–vØîÐÔwO ”x'Ï|ÑK}·Ê½Û#ù5ð>Ù›ÑÐÛs‹Š·E‚7µÕIÐ’l*0§û‘Í%ۉœBô’Æ­’íãöHv ¼O²Ãf4ôöYôƒ8.úa䆶–r_îjû?3úÍ­óÅÁ "€ã>"ŒÜÐÖ˜\N&ºRí½ašŽ}}L—é]Û)±w¯?¾@€•X”AÄ#?"¸Ž5ܼô³¬Ã6[ßoÝq`¶Úíóæz@]KrbS'm*ùˆuM½å!ì¬iekxŠG…Y©è‰å qªc H%Ï–§0”­0n•-·–­/cŠG»µ}G ï†S̽u‡ €µ½pQ‚èk»ËßÉÇìnèíÊ£9A—æp</m…ÀŠhBZ³m^¥)Ôÿúˆ¤ C·uü³f‰´2¯ï`)ƒÍ÷"ŠÀ¯’…k¯ÓmºŸç§gèï\ã­yós°„Ú_|FÙµßËPŒ¥=NS1rl4?¬¹ýê>ªù÷ë}ÚøœÆ|çâLó¢ôàÏÔ®endstream +endobj +2500 0 obj << +/Type /Page +/Contents 2501 0 R +/Resources 2499 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2425 0 R +/Annots [ 2505 0 R 2506 0 R 2507 0 R 2510 0 R 2512 0 R 2514 0 R 2516 0 R 2518 0 R 2519 0 R 2520 0 R 2521 0 R 2522 0 R 2525 0 R 2527 0 R ] +>> endobj +2505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 576.2119 145.7904 585.0586] +/Subtype /Link +/A << /S /GoTo /D (a00125) >> +>> endobj +2506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 537.3577 175.12 546.2043] +/Subtype /Link +/A << /S /GoTo /D (a00124) >> +>> endobj +2507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 498.5034 190.0538 507.35] +/Subtype /Link +/A << /S /GoTo /D (a00123) >> +>> endobj +2510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 414.6673 235.723 424.595] +/Subtype /Link +/A << /S /GoTo /D (a00155_g44311ecc30759ca38b4069182247bdae) >> +>> endobj +2512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 401.1132 185.352 411.6435] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> +>> endobj +2514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 388.1618 205.845 398.6921] +/Subtype /Link +/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> +>> endobj +2516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 375.2103 183.1503 385.7407] +/Subtype /Link +/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> +>> endobj +2518 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 362.2589 185.91 372.7892] +/Subtype /Link +/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> +>> endobj +2519 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 349.3075 185.352 359.8378] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> +>> endobj +2520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 336.356 205.845 346.8864] +/Subtype /Link +/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> +>> endobj +2521 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 323.4046 183.1503 333.9349] +/Subtype /Link +/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> +>> endobj +2522 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 310.4532 185.91 320.9835] +/Subtype /Link +/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> +>> endobj +2525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.1599 253.2274 224.0961 264.1313] +/Subtype /Link +/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> +>> endobj +2527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.7556 240.276 190.6918 251.1799] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) >> +>> endobj +2502 0 obj << +/D [2500 0 R /XYZ 90 757.9346 null] +>> endobj +1165 0 obj << +/D [2500 0 R /XYZ 90 739.9346 null] +>> endobj +134 0 obj << +/D [2500 0 R /XYZ 90 739.9346 null] +>> endobj +2503 0 obj << +/D [2500 0 R /XYZ 90 719.4886 null] +>> endobj +2504 0 obj << +/D [2500 0 R /XYZ 90 593.1046 null] +>> endobj +2508 0 obj << +/D [2500 0 R /XYZ 90 432.641 null] +>> endobj +2509 0 obj << +/D [2500 0 R /XYZ 90 432.641 null] +>> endobj +2511 0 obj << +/D [2500 0 R /XYZ 90 418.6523 null] +>> endobj +2513 0 obj << +/D [2500 0 R /XYZ 90 405.0983 null] +>> endobj +2515 0 obj << +/D [2500 0 R /XYZ 90 392.1468 null] +>> endobj +2517 0 obj << +/D [2500 0 R /XYZ 90 379.1954 null] +>> endobj +2523 0 obj << +/D [2500 0 R /XYZ 90 269.8939 null] +>> endobj +2524 0 obj << +/D [2500 0 R /XYZ 90 269.8939 null] +>> endobj +2526 0 obj << +/D [2500 0 R /XYZ 90 257.2125 null] +>> endobj +2499 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2530 0 obj << +/Length 1914 +/Filter /FlateDecode +>> +stream +xÚ­YÛŽÛ6}÷Wy²,Ëû%}j»M-Údß’ PlíZ¨/[YÞ&ß!EÑ”d“ +øÁºÍ Gg‡"™cø‘¹Ás%2ŒËùj7Ãó¸üjFüí¸~½›ýô’š¹AFR9¿»w$A‚:¿[¿_HDÄò† +¼¸[½¨veÝžn«ÏuQ]~¼{3ç„!Ì'öCìÕÙïwÁ±K0I¬Ûgï?âùâ{3È-æÿÁ FÄ:ßÍ8eÝÉvönöw°ÓÞp\ž ìòøGp…v¤0^`œ`kƒ #„³Ydâ2Ø@Ä[¹-›¢Ú–ëÖÈmy\ÕÕcSöÞ‹’ v¨@’HáìÜmJû”\4]"Dá®?Ö‡%‹§j]ÛÛ÷§ýÊ?¶€ûƒìX6MµxnÏÔ¢.ýy‹*öë×›¢>ßp~þ!ŠŒ®6å꟮îÛ«E³eŒ*ä +Fµ)Žm.Jû—Ǫ.×(’”3üeßâŠÇÇmµ*\ÎÜ…ÝéØ´GÏvÅþTl·_Ÿµç.¢ö° þï®L{¼)–/žlå(˜Ÿ=~Syt÷¿?x·ëÃÞ?VœšÃB[Ù –R,#áíHlpxÆ›„ÿu¹Úµcœþjá¹!ãBÔHJ¡|I›ú´jb³c6)([†¢}}ÖøvëV«òè=6ÿï(w9Ö]±ö7?[þiã^5œ>ª}Ó¡G–Âmb -¶¥ìs¢õ&|úb¥Ða¢Õ\(Ž(5äbw ›5Ö2mYš ª=Ëþ<4å‹¡W‚)RŒ’´Û€ºà7~+¤gkçê6êœjU7œœŽ®ª- ƒ)H˜¡˜"´·êyÅð™XÇvm¬¿m®®¢‡ñH(3&±€ÊE¡¬œjÓ¢¥–ZìÊâxª£ì¡å dñÚ²ðiIAƒ¶>sÇÍá´]·ÇŸýÇÇrU}À˜–þFµ?§Ù€ÂAQ{ÂJ†¸¼OXx7^Ñ]-ˆŽïVƒ|®¢)£Ó…á¼aEÂã†c˜bykû%LÇ 3&7@s }m&—X(gšŸíXg(cöÃST°´Ç€ÊùµŒÂPñ}¿ÿíˆÕ„:P3ô|•ÕŸ‹ad·¯:›Q B#¬9I§@`È€­û%Mº/…ô7\)D9!TçB•Ü… +ÍVFÏ̉… ³ß‹Ø Ëw0¡• Îþ¦O-¹ ¦] \JD5‘é€}¼ÐÌ(©´ƒ4@§¥r´ë`yÚES´Kû ´ëùÍЮçy +íÒ1Œìöi·Óšbj_P*pIN¿•v f+ÁXŽvl +íªÝã¶Ü•ûÆug×éF R†O 4B‡†ý,š@9¦ ¢ +·ry[4EÍ;×jÛ·_TP&¸]Éð«TŽ *X–ÊIg*güvTîùõ-àˆÊº>¦žTöø\ #»g*CÀ]Éezð¦ULå7’˜1 h’áp‡êzï®û_B®‹"ƒµ—Æ”LŒ$B_f)…¶”*¥ÛI=,ÌÆ´¤0Ùz]`£û Rv¨,'SîΔL;í;}²kªCµSÀ„ˆ¾ã#=<ÂÐjàã'XÜŽb€†Ò¢Óƒï@ÏГrMûž?`/W$…U§ŠN~€§ƒY½ZŽ”B¥ ˜¿SC ‘W(ßÈ+Þp-CÇìÂò^&̯>›çQsüÉÆùɯ¥«¨i‡$’kÕ ­Ô´–Óª3F'„"ÀlŒïJR1Y2`i"`Ôé£ìÒ s _¦Î;X¾Ð#ƒ©JOû ¥ûÍ×zÏ÷”bOG1²{.w÷5k\ðÆ®ÍU& *ç^SX†26Hþõš'ÐøIM¦¦!à3qŒí^/{÷ERëtjì¸_øŒ!©Í}‰Êï>þ6©¢&Æ­C&Nþ1:QÔfÝ¿uäè¯Ð›sGû_ÕlwÅ®Œ¥©Ø^-3<ƒ +ü!åO$tX"þN}±ü,[þ±ÁDùgüvåßó›-ÿ¾ï 埉bd·Wþö£õ(x7š€4§ÓСrhÁlþ„… Sð™8Æv   „N'  ÆŽJ©¤&`ÂÔŸáÖzt¢Dè”t0/ŽW%à¾^r±8솟ñNu½dj‹Ûö‚ûÊÝ ÃÙJò; þB3Á~Œ@@ó…¥Ê-N,/‘Á”@¤ýˆýÚT ÝR5¬äÀíumèð¹FvÏÚíêŒõf4[É$xP.»¡Àµä>¡0‰Ƨ¦"à3qŒí&ÔA B9I? ÆŽê „ ð½êÿ «‰âp§´Á£Ü®Æ¦\Ù‰l°cXŒ$"Ú²¸å“S†õÕº‡„qM&•=dŒb|qCÖˆÝôûž=r§!Ñ·?XºIdÓÝ8´\µ¢þªÜ—uÑtÝ®ëÝÁ'B¨ÿÇ/({Aq{’^]íÊîàóxzý—G#Üß=¹=|ùúPî‡ù´ø]hQ~þH9¼endstream +endobj +2529 0 obj << +/Type /Page +/Contents 2530 0 R +/Resources 2528 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2534 0 R 2536 0 R 2537 0 R 2539 0 R 2541 0 R 2542 0 R 2543 0 R 2544 0 R 2545 0 R 2546 0 R 2547 0 R 2548 0 R ] +>> endobj +2534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.9242 571.076 269.2362 594.0447] +/Subtype /Link +/A << /S /GoTo /D (a00157) >> +>> endobj +2536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 493.9051 159.0804 502.7518] +/Subtype /Link +/A << /S /GoTo /D (a00130) >> +>> endobj +2537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 449.4179 158.5224 458.2645] +/Subtype /Link +/A << /S /GoTo /D (a00129) >> +>> endobj +2539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 353.4255 161.5608 362.2722] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 255.7495 172.9881 266.2798] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +2542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.4309 255.7495 224.4542 266.2798] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 211.2623 180.7289 221.7926] +/Subtype /Link +/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> +>> endobj +2544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.1718 211.2623 232.195 221.7926] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 166.7751 186.816 177.3054] +/Subtype /Link +/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> +>> endobj +2546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.2588 166.7751 238.2821 177.3054] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 121.9143 184.6543 132.8182] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> +>> endobj +2548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.0971 121.9143 236.1204 132.8182] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2531 0 obj << +/D [2529 0 R /XYZ 90 757.9346 null] +>> endobj +2532 0 obj << +/D [2529 0 R /XYZ 90 739.9346 null] +>> endobj +138 0 obj << +/D [2529 0 R /XYZ 90 739.9346 null] +>> endobj +2533 0 obj << +/D [2529 0 R /XYZ 90 715.481 null] +>> endobj +2535 0 obj << +/D [2529 0 R /XYZ 90 513.6142 null] +>> endobj +2538 0 obj << +/D [2529 0 R /XYZ 90 373.1347 null] +>> endobj +2540 0 obj << +/D [2529 0 R /XYZ 90 277.1423 null] +>> endobj +2528 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2557 0 obj << +/Length 2012 +/Filter /FlateDecode +>> +stream +xÚµZK“Û6 ¾ûWøhÏD,Ÿ"™[_É43餛½¥ŒcÓ»šx%W–³I}A‘Ô‹zd“69˜6? ‚¤%k ÿÉZãµiÆÓõþa…×wðóËñÓ Ì']ÀO·«^P½ÖH§4]ßk )A‚º¾=¼ÛhºM¨Âo®¿½¡À‚°¼.דqã_ŠýõÁäծʊ|û×í«Õ¯·^o–`)±Zÿ^½û ¯`Þ«FL+±~„/­éúaÅ) _N«·«?9n¢^0¶;AØøöAZöGa»Òm/ED Ø"Áo^\ó}mþøŽžWRŽ×]IˆxYY^91Uö`Ê÷æó9+·DmÌÁýü'øR•×}5teI%× ”RªÜVíLyç!7MxÒÅÇq¤Z›kÛ"ý)C˜èt`ÀÀ× *ÖKxWo* ˜öÿ‰1s.…¨´`‰8Ä;ÛF\N‘Lµðð ñÖÁ$D $‘!<¤Fÿ|oöë³£ûÜuä†÷»‹˜-2s@V‡ 6‘`?çµ´ÛûÌ#½œ©Ì¥º|‹Íý 4ÕµÌ= ²Ä²ÂK8n €OÿóÁœM~Èò;òÆdÁ” äðõ‚†?a)‘R8š?çJº¨8½”FRi1dµ—ÞÔf–»S™òò|¨²IFɨ‘! :¶¤—CK$ ­Ô&›zÊ F\±ùÍÐÈæ»)Gàäó”³¾ÊóÏ”‚úªðŸ÷¦›š 6Q뚸t@3aÁ ŽvGáÆ&—M½|&&sºÛPDÊÙX$Ê*ÿ½È“LYôÉÀ“Çä™û¥PÀÊò1»˜Éìʲ˜¨b­;¨i7ŠT"Š¥®wòëçÝÃùdæ|8£š#­ Pâ…êÞøpÄÂq_˜5ñp¿?ïÑ>2)ĉš70iPKª#iVõ³H)‡ÔZ ”Nï<à—ÔGr­z—3u€’‡]–ŸŠâœ„z†R‚ÙB‚xÒÅÇE ’Ú¤×{pA8tQ!‚¬dº¼¾1ÃBP 6ØYHKÚ7"DmÎ%„*8Úžn_¤¸_˜¸ÆÒeLMô¶PÁT]‚•.Jö‡~lì”M;ã!2”å½a}»j Χ„ýí´»ø½ž%œYÛKs,J• +l†õN«ì¤]ù˜¼UûÝõbZÃBê†ö¹)=2ûÁ4õïC(¸…5Æ¥XÙ_1¯ù)ûh3ÒŒ°÷p +À[MôÚ¬IšÇ$Ô¥d–æuQÓ4Á@é4}R3fÀ sŽ,obØl3»ù¦‰‰7?ÚÄôT>¡‰±·ëdt8&¢ZÌ.j&:‚AU÷•ô­ñ6@7\ÌgFÿ“™xlæ(o`mi³™ Udª¼‘Ô"È»ywaDô ³Ï9TºàSœ"P—.ø”(õ•MWè÷»3²pÜö-ôÈ$l9kxÒ LŠ¥-Ð{®€ÊŠ¡öiŽðKvDr¿ÞC2AµÖ¤A-XKëÐ{ª‚§Ò{Å¿…ݳQvÿ’x¶LâkÞ°Dã9EÐÃZ>Sв-¥ˆÇ'Ý#4>’;óزšÊt`BÔ{T¬x@ã[¸uzŠÿßǾ +XŠVoý?Fäeñ0˜Ý_KÈ–ªsó…´iWÏÑzÅ»´¾ù²ïçvî#ØCOëíµ 0ð´FZ_ƒêãa6´¾ i½E­Øá¡W1 ¾³~ãXÑ%^ðIwÁÈñä~%³'paÁ­Ö7'böµ`g ).Y߈.³'Ô3û&žÙû…=ÎëøqSú%j“À+Æ+šm«f¶Ü4UÃ-¶TeßÙPÙ××.GIåÐD¤ßõ’½þ#h2a½N,EZÚÇqPã),ä)mL±{irSîªð*3¤Õë0xeç5ký'~NÙsêÿž€bœ†œT4o;ã?<øð%¼¢ÿüåÎäcGfÄKÿÅ)›*endstream +endobj +2556 0 obj << +/Type /Page +/Contents 2557 0 R +/Resources 2555 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2561 0 R 2562 0 R 2563 0 R 2564 0 R 2566 0 R 2567 0 R 2568 0 R 2569 0 R 2570 0 R 2572 0 R 2573 0 R 2574 0 R ] +>> endobj +2561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.7907 702.6042 264.0158 713.4833] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 552.0997 139.4144 575.0684] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +2563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 552.0997 262.94 575.0684] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.8054 552.0997 416.0743 575.0684] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +2566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.7 476.8541 258.9251 487.4443] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.5998 434.4572 435.3076 445.3612] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +2568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 339.0297 166.2529 361.6249] +/Subtype /Link +/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> +>> endobj +2569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 302.8975 227.254 325.8663] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.1194 302.8975 380.3883 325.8663] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +2572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.9988 227.652 267.2239 238.2422] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.3063 185.2551 432.0141 196.159] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +2574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [460.5476 139.225 513.9963 162.1938] +/Subtype /Link +/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> +>> endobj +2558 0 obj << +/D [2556 0 R /XYZ 90 757.9346 null] +>> endobj +2559 0 obj << +/D [2556 0 R /XYZ 90 739.9346 null] +>> endobj +2554 0 obj << +/D [2556 0 R /XYZ 90 723.1038 null] +>> endobj +2560 0 obj << +/D [2556 0 R /XYZ 90 723.1038 null] +>> endobj +2552 0 obj << +/D [2556 0 R /XYZ 264.324 511.5135 null] +>> endobj +2565 0 obj << +/D [2556 0 R /XYZ 90 495.425 null] +>> endobj +2553 0 obj << +/D [2556 0 R /XYZ 208.4343 262.3114 null] +>> endobj +2571 0 obj << +/D [2556 0 R /XYZ 90 246.5665 null] +>> endobj +2555 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2577 0 obj << +/Length 1169 +/Filter /FlateDecode +>> +stream +xÚ½WÛŽÛ6}÷WèÑ"†Ã«¸o-’] @šõ[,´6½j[®,gwÿ¾C‘’u³œ¢@l,Š‡3gfŽ†$DÿAdh¤¥&† ­ö3=ãëO3Ó1ÎÇmÀ¯ËÙûߘ‰ 1Š©h¹©,( ’‹–ë¯sE@.b&é|¹€džímᇻì©H‹·Å÷å}$€ʵ@'náîíìã²qxI®À¹ý{öõ;ÖÈï~F 7‰Œ^p@ âýL0^v³‡ÙŸ?Q- O0 -Å\‘ŒE%’PH4f‚l<‰!ƒŠ4Çà4UhÖúðÓÝ)¿ë‡ ”Í‹Ú–ûþ…§Hýœ{S<‡©/-–@5ÑÀåMÞ¢Ùà˜ãYºB=ödËoTRüƒYi(£&ÉÆ ê ¬°2u“xì7JÙ!+³ü2VÖÂ9„þ!ßø_·d&«RÎÉŠT"Cé‚&Š _‰/vc {Xٓǯvùê¯G·ªø]ð{Xû‡S™ee«Wi´ÌÊ ¿‰Zò„ä”Òù ÃlÝ¢õˆi­Kz*‹óªì§—1E(K’H N45ìF½|Ü^0”åÐnSïaS zznPCÇø²åXÑXþŽ_¬÷Å™ V¡YèåHÆñ3QFÀ»~Ë“Ø””IÂ’ìPÚâGº1ͱyI€¬…ßSkÌ–XàÃ'\„h겦} vÈ+ôr›¡ö8À|s>¬¼ÐÝÈ¿eóóÉ®ý›2÷¿•lÜCÞûvêÀ›¼L…EùÞ^FYpRnmXx.Ï…%‹XŽ”lQO…NQB‘¢XM.õ U6ø¸½`øùí^º]€œ¿³Â®¯õ"a„ëê=Výî@·¨TŸÛ!:T^²]¥4CÃ| @Œ Ó.˜ÄOÿKwç´¬›P~‹sÝ÷7e½V%¸È¤zܦ¡µ‚&ýhë }ЊMïRmÔõ]J*A€ƒïŸ]ËJ‹…c‹Óµm +F w€=dÒù@›¨5_Ç9P">|  ¾³÷a£غ.ñ8æU—è²[³«‰Áóããg¨V>.¨©tT¿ous׃…œv\ƒŽ»I[›4ÇË:nÏÀëÜ¿y²Ø{ìuI_”|ºªdüžˆâ §•ÜFM(k/•T¼?¾¦ûãÎNhxÊuuÔÿâ¨5d8zÔj`Žâz»:®ÈjXÒ„H¦ Æ ê–ë5¿söâÞÌ‘=§×#¯ñ·Üìúžé”Q(Þ§Ùa—çÇø%+·qZ‡ÁC1‚ßPKƒºAih­u–pg¾¾÷„“„‚þÙÔ4ø[<v'S“ŸËñììeTßÒKƒºÁjhͱòÇ<ìÖFð¾$ýÓvõœ×Ûêú¾»Ä»‰Ð£}“Fî#ÕºxV7ç—ïlÄŠÍ“úâH¸p?Ùƒ-ðˆ×9ý£~¸w9‡°úBtÇø£~Ä(Uþi㲑‡~|þýs@“|zó¿ò×·g;8óI¼mŽäçno¦endstream +endobj +2576 0 obj << +/Type /Page +/Contents 2577 0 R +/Resources 2575 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2579 0 R 2581 0 R 2582 0 R 2583 0 R 2584 0 R 2585 0 R ] +>> endobj +2579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 718.3357 160.1659 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> +>> endobj +2581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.0325 640.9795 250.2576 651.5696] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +2582 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.0264 598.5826 495.3943 609.4865] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> +>> endobj +2583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 495.4786 139.4144 518.4473] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +2584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.4032 495.4786 262.94 518.4473] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +2585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.8054 495.4786 416.0743 518.4473] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +2578 0 obj << +/D [2576 0 R /XYZ 90 757.9346 null] +>> endobj +2551 0 obj << +/D [2576 0 R /XYZ 229.1564 675.9038 null] +>> endobj +2580 0 obj << +/D [2576 0 R /XYZ 90 659.5503 null] +>> endobj +2575 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2588 0 obj << +/Length 1530 +/Filter /FlateDecode +>> +stream +xÚ¥XKsÛ6¾ëWp¦i&Bñá[k'™¤MÓƾ%MA1Ç©’T÷×wA_"Õtt÷ùí `ø‘@ã@ …4ã2ˆ÷ |ǯ¤~½†÷ë6à×»Åϯ¨4Ò’Êàn[I Jhp·ù¸Ô|µ¦!Vxy|ó'\ +¼$»‹wÙæ¸3îú&‹{“–Q™déêóÝÛÅË»Fom–`’X­/>~ÆÁÌ{»ÀˆéPßà#¢5 ö N™¿Ù-n5rÜ‹êƒ1ïaãîŽà õþQpW9÷$"rµ&ãåõ.‹Ÿœ3IZš|ÅÆ:â$¤…¨$@­ž$ R˸1e”ì̦Ž‰)â<9øˆ€ ÖŠ´•cíÒNÎÝcɸoNJॵÅ=*Üéá#˜S~3&={é€|"RH%Ôž+öUþ¥Æ|hŵÁ¯Û¸à¶=ʵŽ•ÉÞäΖ]òGùsßÆ0R’“ž=½ì6¨+cˆ +v­ˆÒM/p‡]Tn³|ï‰“OÓx…í1m£]R>¯¤X"ë€Í^­hM’”óÿ’Çý±(}¶jÐþ°3¶„<}À8wa¢øqÌæò1ªe SœM7ƒ´h)D Eˆ ’ÙLºüºýÁH r/K7gÐA¸Ô={zénP3V ¥Y+ê1î…L¦ˆë±m²*¨ð2KwÏîY–çdE–ÅÕjÍà›¤ÎÃÞDÅ1÷ŸÙP ¸På!ÏVD,¿&ŸÏÈa÷Qœg/Ü£ëßß_ÿv¿®<„&Ò´&ðìöåõû?njÜ·ÇÄó&Îr°ê¥O“¬çOaâÌ—H¶­Ÿ=¥ñ\«|ée2“PBc†’&ÒƒÖmÔpá 5˜AïÀ…œ¸ª½5µyѮȮúê @£dR?G:$.§IO°BŠ01ff›n ®UŒZ1±œ%>‘¶ƒ±p:^ j4`­…–2!$´¸z¹1¶¥Àœáò+G˜qzvWÐŒy-g!?ɱ +?Q*†9±k£`ÓÔœ^X¹5–²«÷§Míé@9—HQEzÊÏ'ÝãçÌȵf¸:t%7Xb©@ÀL=""´mOà'gº š‚½µû¨Ýjˆ!kÉÆÂî+ ,ó0kì/í2ÑîV+¦–~ÉIÒaåÛŽµ¢xùtj¶G¡aæyƒSŒð }i¡Ç9΃ØÔ1U¯Åcç‚ ªôyŽ·o`³ŸÔxâøŒ^ÏñŽÞ¯6äY²è>iBDO÷yŠ{üœ¹ÖŠjµºORXßúv(]ŠÈ™xÔœv¥`+Ei/öX`¸&çÇ™DŒ zãÚè‰êi`Ö’7öÿ˜Þ&²W¶ñÛâ°Í_LÔ·íšü´ÅµÁ„B9~žÖà°I˜£µ‡ÍÓº%pŠÖÓzZ·õ:BÙr?¤”Ô´ìè?OmŸ³d ·kÉ wfç†p: jF;µãa(zÚ/¥6Ó +ñ_¸0´ÑÔn`֒צìsú˜»E!-l`¡D¶˜/³ùïÿPƒPˆèfÚ¦õ´íƒ3'½ f3o“–¤frÿj÷á¶ßžvé®ïU÷.]¤“®sã<™ïOÝmb3Râþœâ§ýmÇÓ¤‘]Ì wÛg¿µ/³ãnÓ<ãh×Ylólß“¹’Ôú_ù=bŸšÜ槀AÈ5WíøtvzC+ ß~0 ãìî0û©7à\š…Ü”Ç<-¦Ä÷·QOÌRvɤ ªtr–j£ÎÏRj ¢í +ýƒµ×ÖmZœŸ¤&µ7¨õ£3RëNÝèìL§v¥e?õ”OüèF¡ª½ÝÐ{Ï'%ù}Õ¿¾Pá©ý¢ý†å2ÊËÞ»ÓR*L@c'ž®Fϲ0‹H!ÿ×ahµö‡ð aî)‘V0=Ú +ÚsOoŠ«ˆÔäQsÈäÙüÎ_¼µ¡9Ö7„ÖÿøŠ²+ZŸûRŒe]+*–þ˜jx@ìƒ~“}þbÇÂö¼v$JÿhäC4endstream +endobj +2587 0 obj << +/Type /Page +/Contents 2588 0 R +/Resources 2586 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2591 0 R 2592 0 R 2593 0 R 2596 0 R 2598 0 R 2599 0 R ] +>> endobj +2591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.6865 672.5415 331.7604 683.4455] +/Subtype /Link +/A << /S /GoTo /D (a00156) >> +>> endobj +2592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.9692 654.9172 432.0432 665.8211] +/Subtype /Link +/A << /S /GoTo /D (a00156) >> +>> endobj +2593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 587.7333 161.7601 610.7021] +/Subtype /Link +/A << /S /GoTo /D (a00156) >> +>> endobj +2596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 531.8574 226.3182 541.7851] +/Subtype /Link +/A << /S /GoTo /D (a00157_ge3ced0551b26c9b99cb45a86f34d100a) >> +>> endobj +2598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 448.4997 175.7578 459.03] +/Subtype /Link +/A << /S /GoTo /D (a00157_g78ab77b57cf2e00089f0a3a22508524c) >> +>> endobj +2599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.4252 409.6454 214.6911 420.1757] +/Subtype /Link +/A << /S /GoTo /D (a00157_ge5b7160f2e653725ba5e2024c3cb7bff) >> +>> endobj +2589 0 obj << +/D [2587 0 R /XYZ 90 757.9346 null] +>> endobj +2550 0 obj << +/D [2587 0 R /XYZ 90 739.9346 null] +>> endobj +142 0 obj << +/D [2587 0 R /XYZ 90 739.9346 null] +>> endobj +2590 0 obj << +/D [2587 0 R /XYZ 90 719.4886 null] +>> endobj +2594 0 obj << +/D [2587 0 R /XYZ 90 549.8311 null] +>> endobj +2595 0 obj << +/D [2587 0 R /XYZ 90 549.8311 null] +>> endobj +2597 0 obj << +/D [2587 0 R /XYZ 90 467.076 null] +>> endobj +2600 0 obj << +/D [2587 0 R /XYZ 90 371.9517 null] +>> endobj +2601 0 obj << +/D [2587 0 R /XYZ 90 345.4667 null] +>> endobj +2602 0 obj << +/D [2587 0 R /XYZ 90 345.4667 null] +>> endobj +2603 0 obj << +/D [2587 0 R /XYZ 499.0115 286.0122 null] +>> endobj +2604 0 obj << +/D [2587 0 R /XYZ 90 269.2851 null] +>> endobj +2586 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2607 0 obj << +/Length 2480 +/Filter /FlateDecode +>> +stream +xÚ­ZYoã8~ϯ0°/60æòuôÛö¤§‘^loï$,03(¶ -KIîLö×o‹”hI–¼hñøX«ŠEÆbÅáŸX%|éˆ%*W»ã _=ÃðÇa§·0¿õïnþüƒLV KB®ž …P0-…\=ì^‡LD›­Ô|ý¥Þˆx]µUSí¾n_gmC3EþX§õÛf«x”ëDo~}øtóá¡ãkÅÒ*Èõ÷›Ÿå«=ˆ÷é†3•Äzõ +ÎD’ÈÕñ&ÊuŠ›û›tthÂ,˜ÒN 5­žŒH§Ÿu#_=Áù5úVDN°DkCì‰ÔdÜ“c¼ÍÚ4/²=¹Íš]¿´yUZBÊ3;ÒA!¢ópÈ`U¯_ê3p0éím¡×ßò}ÖÐHZÒ7/Û¬~Â…é.£•mES­£ºûB3M›;™¶–‚¥ØäǼHë 4Ú:Ýç¨WZâýý­]× *£’d:a”<“uˆˆ…2 ⧲ȉÐSu}®ÓcC½×:oÛ¬¤ÎSUSƒÄ‚FUïó’Ì=RT!) ÖB“ee»Ý×¹×'Ä™\ßáX0Çù5oÖÃ];Sžv¸ßC¬Ó:£F†rüa„ÙZã:0š—FŸ&ûý²çÆÜÐ'Q›záJ³P­÷•ñ *«–‡t#¹Õ—FÌ~Â÷ÑöóãK‘cŸ6¾p/E¾Ë-1pšÖ®:¦»C^fÍ`•QöK=VUY¼QëÇ«ú«í‘A¡õðýj쪲Ìvècͤ£˜xQQ4ŽìótN ØdŸ¤à,I°ÒI̩ϤœªŸ-æG/Ñtø­¿€²Õcº5ÚC¥û±$!gIãÓ̯°ã$·aŸ†H¬q´ÒR³P)5#´õQãj'N82ÐRPÄPV úŸ«6{7ä*¸–bžm‡šàë§à‹„Ò=5dü>Û¥ž`—dH‡±wÀ`ŸÒ cR´¢37ƒHP^ÕÎD0àÎ7Þ ½æ…4»ˆ @ ›’Ó7 {̈~ã{ ·ÛlÚSÞ„›ˆÛ)é¤ÑŠ¼ANyƒô½Aú~¬D´¾³S–0QÁÁŸÑpºÿ–7ä}Ò…7R$à‚Ì"·úd—ªîü‘öÄkk8§¢}‹™Ëp´ŸPö@}jçéTRS.½*Î"¼*Gœî ¡M}ƒãMVB]óL}Ú¦4BW˜ðpØòÌäx„gä +‰ÕÇ hkHŠÇ¼i ·‰¤z"ƽþZRÖ‡²öÙ I¸! L_3³Ûq?BŠlÄ£Z¬š¥z è«FPÄ’>8ÜéƒÃ¾>8i áF’xÌ:º T-“e˜Ÿ¤Ž•Ëhà<¥«Q²A)Ò§xFÝ'k.ˆeAbr<¶& +y½®Oæ4‚V꾚âí Wm_ tpë©8×TÌÁÒxM…t¬‘z664iÝ á‘d:ñ*PÓµTuø­¿`œúÆtMMtÿ÷ïÿúÛ–‚IÅŽ”¿Uï?|¼ûŒG“9‚†éâŽG<‚+"g±Š§³³m=ÔDr†Ð"éhGAKóÄîOȲÔ4UH?û§ çöûzÈ7øTÆ»‰ úbJb^÷t+ºÒá<Ï…¬U­Vƒälýѹ>WpmjÝ)þøvv‚»dÎ'<¸Â†Bµð˜Å±Œ—ªh‡ßú &*ÙÝÞc>üóîá’OÈ(d°6È3¬¦jIŠ5”‚M= +lEìhªŒŽûC^Œ¯ _)-™àêò‹˜ª%B¨8èé˜NJ=®að©B«yŽj‰¯X¡¨?ç˹,²gÅ„ÕóE×èðK2ŒèšKÆ;Œ„€{SóÚkÅÂX‚¨œ>ÃLX*b"°‚òQ$½ãh¾‚;W.ðfŠî€¨Í(lñlUÄxÈtUñ‚8«©m ,ôš÷—äRŒI•ˆ+…÷Ð݃YïÌà€2‘ŒÇ!UÇ·t¾‚$÷m}Úµ'ól6éØ2LX ! .9¶˜qì¶èس{Ç^àëûŒoc´;v´‚3âœóŒc[ü’ #ºcÿFwÛ§‘(±9­â%³C–%.ï™Âxiolyo<‚s{3Ï·ÛŸïÒÞœq¾foæeÑíöfœr Æ‰ rf•×pþ“Ž  ïùg:ët°þ]¯ê­³úÀ•‚-lÍû4¸´O¦ª‹ÙGBN†ª®ÔÂCOg‘€édQöÉ0ÿ•“éFD +Ì7ãÒ>`Æ¥;Ø¢KÏrì]z¯sé3¾Ú[MG̃E2æ—½Úá—ÄÑí«¬»ÏwãjOáSG2o„µÀ}LÍ=DùB¯¹¾Vÿ¿(ÁîŨFŸ…¢C,¨îPKŒGÔñw¶ü¶¹îÜOP|z¢Éÿ•M^‹l˜ ™!‰ôu1é£g2KCyïÊŸŠAŽÿ)yˆ f\Å )ÐÉiŽ°Ëá®4‡z©lî`Ëáîœ ÷y¾]¸û|¯÷3æׄû¼#º}¸››öøo$õ‚y+t¨öcjãv[G<¹Ö~Q‚!ÝËñ@Ñ$T¸ ºC-1Q³ª_Ž^ B^»v.r „|ïí3†v¾¼´ƒÉö@ÕCj_ +òò,òû·ÛKZAÀÈPˆÿG¨C‰ ‚xé`'Ôrœ[Ü|”÷ ™÷8.G¸ÏöŠøž`@³íûŸo§nbÅÅœâf–ïÒå VLQxÎzž÷€æÌñ 8hgÕu˜y–JÞÁÏÐ^³ÈÊ©Ç_£’zB +¬DHyä¿þÍŒ‰¸*á¿È&«%¾m>ùB ³2«û@w+ø›k|·‡“íi¿üTï$§žä<´Y ”Ê>]Ðo0ÍøùëâmõÇÛsV̓?è™°Ï¿]„¦Qendstream +endobj +2606 0 obj << +/Type /Page +/Contents 2607 0 R +/Resources 2605 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2610 0 R 2611 0 R 2612 0 R 2613 0 R 2615 0 R 2617 0 R 2618 0 R 2620 0 R 2621 0 R 2622 0 R 2623 0 R 2624 0 R 2625 0 R ] +>> endobj +2610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.6232 595.7581 261.9762 606.662] +/Subtype /Link +/A << /S /GoTo /D (a00142) >> +>> endobj +2611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.5956 429.6401 513.9963 440.544] +/Subtype /Link +/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> +>> endobj +2612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 417.6849 128.067 428.5888] +/Subtype /Link +/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> +>> endobj +2613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.8032 405.7297 277.2062 416.6337] +/Subtype /Link +/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> +>> endobj +2615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 348.9505 161.8402 359.8544] +/Subtype /Link +/A << /S /GoTo /D (a00127) >> +>> endobj +2617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 266.3068 181.8351 277.2107] +/Subtype /Link +/A << /S /GoTo /D (a00083) >> +>> endobj +2618 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 253.3937 163.7728 264.2977] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2620 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 170.75 204.7292 181.6539] +/Subtype /Link +/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> +>> endobj +2621 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.0542 170.75 231.2894 181.6539] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2622 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 131.9725 215.2497 142.8764] +/Subtype /Link +/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> +>> endobj +2623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.5747 131.9725 241.8099 142.8764] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 93.195 210.8263 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00158_g70d236d1cf34b4e21836edda60247b70) >> +>> endobj +2625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.1513 93.195 237.3865 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2608 0 obj << +/D [2606 0 R /XYZ 90 757.9346 null] +>> endobj +656 0 obj << +/D [2606 0 R /XYZ 90 739.9346 null] +>> endobj +146 0 obj << +/D [2606 0 R /XYZ 90 739.9346 null] +>> endobj +2609 0 obj << +/D [2606 0 R /XYZ 90 716.7484 null] +>> endobj +2614 0 obj << +/D [2606 0 R /XYZ 90 367.862 null] +>> endobj +2616 0 obj << +/D [2606 0 R /XYZ 90 285.2183 null] +>> endobj +2619 0 obj << +/D [2606 0 R /XYZ 90 189.6616 null] +>> endobj +2605 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2632 0 obj << +/Length 2761 +/Filter /FlateDecode +>> +stream +xÚµ[ïÛ6ý¾…îl Ëò7©~K²›\ré&·ë"´Eàxµ»F½vjËMóßßPiJ´8êݯüüÞp¤7R›PøM +:1ÊBH=Y>žÑÉ=~uÆÚ¯Ïáûóð|~öÝK^L +Rh®'ó»šA3¢8ã“ùíOÓBÏ饆N¯ßÃGE§ŒÐæÃÛÛúl>_l—‡ÇrS-ªÕv3ûeþæìrtÛ°”ÐÌ©þvöÓ/tr á½9£DVM¾À”°¢à“Ç3É…ÿc}vsöïÀÓ|QÿàÔè$UÄ +;9ç¦OJÀŒÂ4‡|p½á!ŠN,ü\K—_RS؉G¹œÜ”›ÛfÔ·‹jAú£õ̆Áo™`ù0Ú('Š6Qœ>kT@dz&¢³Æà[)¬œ˜‹ógÎUüŠ+1‰ O$§EaºL’‚jÝÕýæ¶ü™R¾)q©‰á†õÄÝW»ûs‡áñX ¯ ãýÍ»ÿúxsyuññf~Ý… A¨å&Ÿˆ€B"HÙê@MuáTAvÆæ àÑú¼.‚Ïûíò×$U-Áöù¡{&œ°9áoƒì«$ YDœPªÅ8§ÆèŒU¬ëÕEóÏæ°^ŸWåîqµYTåmsµ¹Ÿ15t³¶P÷¤‘ÂÍlÐÍZ[¢$ˆ› usL˜q3¢ëÝÜÑÅÝÜáf$Œ„÷èæW—W—×ÏfŒ±é|ÆìôÝumðä +7‚Xé®…\^ + (e4·q€cSðh}ÞAs J¡E~è…§l‘¹ïËM¹[TÛÝLRl±s§å>kz%ÁItäô£s¦÷0ß+˜s38ü8Q7Ÿ¾¬ª‡NA¸;l–uÓÒôåb +Ǫ. +Ò•}fž¦(J”‰³ÓEÁÃð¢æŠB^7…XwDQèˆ) +ù0ÞcQxñöÝÍebE¦ˆ€© Ÿ…€BäS¶ÁÀ,ÑVÛ± x4‚>ïðü.œÚB"C÷(L8ak‡>lp¦Á”²ið3¸‡9õëí¾ì¸ø3!5ÝV[HÈŒÓé¯3F§eƹ°V`L?‰q4šZ¬70Ô¸1aƸˆ®7nG7nW|„q‘0Þ£q¯/Ÿ]WÔ™/³—”0)Föß1:gq´øçÖßÛμ½ÿ\.WîªõKñ¥ëÛMû¾¬\‹½a³CÌJó$›l +z mŒÂÌîa¸Ù#ÂœÙóºÁì±î³wÄǘ=FÂ{4û…[úey!¦ÏÞ^^¥ö³DrªòI ($š”mxFgÄ;6Žé÷Y3ž‡Óg©AÆíQ˜n†Îè”fÌÈn?–‚êaQµ‹ñÅ>´ïÂLKgúßWÛÃ~ýµ9Þ^Üú_ :»âIæz mŠa ëã µL˜±?¢ëíßÑÅíßa$Œ„÷hÿËÿ¼ž'—}½Ìu> …¨§lƒv‡´ZNG?àÑú¼ÃŽw74·ÈÐ= +NØ0ÇK-Á|d£3Ž0§~ùǪêÙ{`þ73ì{ê÷µÌñ4M¼„æÄH5ñ†;"Ì;¯ŒëŽ0vG|Œ±óa$¼½µÓöv;ŸÐõæSPH )Û ½!ZMßØ,<AŸwØÞº€Æ[idè… 'l¨½¹&®iï³·‡ý©íµÞžyé¾úëKS„[ó4{wc)Öò^"Â\iÈë†ÒëŽ( ñ1¥!FÂÍù'îºQ˜" +ZäsPˆxÊ6<å·¹%Ç?àÑú¼™)Ÿ«C†îQ˜p†Õa-x‚Úq5!FgjB€9õ‹r¹^´]z×ÞáF™où‰í…1D&ÌØÑõ¶ïèâ¶ïŠ°=FÂ{´ýÕå‡d±?´âÎæ$¬³ó±$\ÃË|E¨Rjl2  Ï›Yéƒ_ +Ë‘{&œ°¡E@Q"˜b#‹@„Ϋƒ‡²µr³ß~S/Ü¿ô×ù~u¿ØíV¿û ¾p§ý»q'DšæOS ë±²`Xð0¼ D„¹2× e ÖQ:âcÊ@>Œ„÷X>Ìœ«g¯ç¼š¿~{ju Ý£˜Ù|HÊ–[XÊÄØT<AŸw¸J¨”ÈÈ[&Û犷ø·›Û•{n%[ÀB#— +1:W<ÌEóaVðé·üÑ}¼E/Ìî ¼jw(³Û ʈ(¨~’}}ŒµB"60Ôæ1aÆ戮·yG7ks nìjg]îàX}ÖSŸÿÓÝÍ;µ± ÓËg# @R¶A“+C`¥jÆf"àÑú¼Ã&·°V§¹ +NؼϵíùÉéûyrn\žþîþw*aRR(£Æ&,à‘¸SÞÁ„IÈ-wO'gP˜p·Fß½d2+ˆ‘; ‡ù[˜Qĸb667…˜ðÖ¹©}+ vQäJ +(L5aó‰i¯&wyÀuîÂp ¨%ªp‘0Yj›¼ãåvÌ(/& „;˜7›ÊuW€±¦‘yÙ>H¹?ñúçjâÀèu‰Ž¹íax‰Î(º[h0™S¬„úE +yÝéÉéfÂm)0™ YPƒ‡'¡;(8CÃó¸NxµM?ºf}]&/ì°ÂjÍŸ·€Â( +¢LröàRÜC°¬N=¨¡¸à=õìƒ5‰#åÍ>¨a´*ò ¨T¸S‚x}3C«~¨8¹„Iâ3s[‹Ç†žðfæ6Ý6UÈÐ= +N؆V±®JPK$™F.䪄‡áU"§5ryÝàÿXwébIì/‰’Üöt‡-îñX ïÑâÐIrXœ×ËòÄæ0I1, - ¡€+ŒŠ^r&׮ߓcSðH)oæ9éÖ,?|Je{g0á2Ó~cñþ4íç‡ÙβLCo®Ew–…ÑAó3ƒ‹“Òé…_+œ~³÷n'­'ná’ a-×qáQ“5k€ç—¯^_^iS÷’•œ0¨Ühƒ®´[üyüƒôýÓ”7s£¥í…܇kQ˜pÂÖí);'Vžž5ÎèMµØ¥7¿š½­Î³ú`õ° ÏÉ­6'ßI©—Çî¼Á™Ò\Êöq›z­Ùôq±Üm›{'Ýn´áCW,öɪ}ïM‡—a’ßtâu¿Û´‡}{h¹}lñ©¼ÛîÚÏ V?«{‚ÈÄ_à®D.Öë}7!oÝ×rüƒß?8ìËôN{͘ùÍÉ(œ?¦•þ¿Þ@®g!ëvDãúSL4)Ü.µ{cŠ»!ë×›P IÇ× ý¨~ðÞ¸½Cûãí¿ô{.¾çíËÖ°ÞÑmf\=߶OD§oeúê«Á_ïÓÖNAá9‘¥ÿsÉ6Fendstream +endobj +2631 0 obj << +/Type /Page +/Contents 2632 0 R +/Resources 2630 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2549 0 R +/Annots [ 2634 0 R 2635 0 R 2636 0 R 2637 0 R 2638 0 R 2639 0 R 2640 0 R 2641 0 R 2642 0 R 2643 0 R 2644 0 R 2645 0 R 2646 0 R 2647 0 R 2648 0 R 2649 0 R 2650 0 R 2651 0 R 2652 0 R 2653 0 R 2654 0 R 2655 0 R 2657 0 R 2658 0 R 2659 0 R 2660 0 R 2663 0 R 2664 0 R 2665 0 R 2666 0 R 2668 0 R 2669 0 R 2672 0 R ] +>> endobj +2634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 703.3528 234.079 714.2568] +/Subtype /Link +/A << /S /GoTo /D (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) >> +>> endobj +2635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.404 703.3528 260.6392 714.2568] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2636 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 665.3872 274.846 676.2911] +/Subtype /Link +/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> +>> endobj +2637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.171 665.3872 301.4062 676.2911] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 627.4215 216.3655 638.3254] +/Subtype /Link +/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> +>> endobj +2639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.6905 627.4215 242.9257 638.3254] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 589.4558 231.2097 600.3597] +/Subtype /Link +/A << /S /GoTo /D (a00158_gd895ab98c54d9966ff554aa873151751) >> +>> endobj +2641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.5347 589.4558 257.7699 600.3597] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 551.4901 225.0331 562.394] +/Subtype /Link +/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> +>> endobj +2643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.3581 551.4901 251.5933 562.394] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 513.5244 229.4168 524.4284] +/Subtype /Link +/A << /S /GoTo /D (a00158_g4ab2de595d36e9e55dd61f6ecd139162) >> +>> endobj +2645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.7417 513.5244 255.9769 524.4284] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 475.5588 207.4989 486.4627] +/Subtype /Link +/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> +>> endobj +2647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.8238 475.5588 234.059 486.4627] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 437.5931 244.0317 448.497] +/Subtype /Link +/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> +>> endobj +2649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.3566 437.5931 270.5918 448.497] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2650 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 399.6274 205.2872 410.5313] +/Subtype /Link +/A << /S /GoTo /D (a00158_g4a264bb64ae706d53f572b1d9e4037a2) >> +>> endobj +2651 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.6122 399.6274 231.8474 410.5313] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2652 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 361.6617 232.7343 372.5656] +/Subtype /Link +/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> +>> endobj +2653 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.0593 361.6617 259.2945 372.5656] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2654 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 323.696 244.4801 334.6] +/Subtype /Link +/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> +>> endobj +2655 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.805 323.696 271.0402 334.6] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2657 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.8747 285.7303 255.1444 296.6343] +/Subtype /Link +/A << /S /GoTo /D (a00158_ga87ff36af81990e6ffe20d76d5e4606f) >> +>> endobj +2658 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.4694 285.7303 281.7046 296.6343] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2659 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.9613 285.7303 458.1965 296.6343] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.7532 285.7303 484.4966 296.6343] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +2663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 217.7672 138.5977 228.6711] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 217.7672 198.084 228.6711] +/Subtype /Link +/A << /S /GoTo /D (a00158_g3178402dd725776415bf9745e7bf92ba) >> +>> endobj +2665 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.5269 217.7672 251.7621 228.6711] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.2416 217.7672 282.4768 228.6711] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2668 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 205.2601 196.7092 216.164] +/Subtype /Link +/A << /S /GoTo /D (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) >> +>> endobj +2669 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.1521 205.2601 250.3873 216.164] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2672 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.0101 147.2581 265.361 158.1372] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2633 0 obj << +/D [2631 0 R /XYZ 90 757.9346 null] +>> endobj +2656 0 obj << +/D [2631 0 R /XYZ 90 304.3794 null] +>> endobj +2661 0 obj << +/D [2631 0 R /XYZ 90 236.2728 null] +>> endobj +2662 0 obj << +/D [2631 0 R /XYZ 90 236.2728 null] +>> endobj +2667 0 obj << +/D [2631 0 R /XYZ 90 221.7522 null] +>> endobj +2670 0 obj << +/D [2631 0 R /XYZ 90 192.0859 null] +>> endobj +2626 0 obj << +/D [2631 0 R /XYZ 90 167.7577 null] +>> endobj +2671 0 obj << +/D [2631 0 R /XYZ 90 167.7577 null] +>> endobj +2630 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2685 0 obj << +/Length 1701 +/Filter /FlateDecode +>> +stream +xÚÍYMÛ6½ûWè¡6P1ü¿rK²n°išl +¤A µµk#²•Jr7ûïKŠ¤,‹”´›äø`šÎ<‡ï‘2Š ú HˆS$IX´ÞÏ`t«º_Î}«çq×àùjöäw,# $Ã,ZÝ4#­6æ ¾ˆ1…ó«rļ¨‹ªX^ 8ÏêÊ<Éw×eZÞ/b¹Læ’/>®^Í–«6®…E C:꿳a´Qð^Í RÐèNý€I‰£ý,ÁÄýÈgïgµ~̃f@hv V3ˆD1a@ ™­ ®@ˆâp"„qBä0i²q¥ç–é>«³²zÚŸ'‚p‚qÔuíx@Zk‰jž ÈG„ž¼j(_Ô2h4Ÿ=A ‚8wV4npB \œÿRXÕåq]› +øÒÔ„òäw”tFS:¨‰1: ‘˜Es6ŸÏ¬ëbwPÉ6?êÂ~o3û´<+Ès«kkTÕiYgÐÏ”«&³ñréZ — “*_ çÍd–_Óý—<,4ºÉK¢šÍ3ÝSÞÚGïÎÊÈ–G! •Qk¦!n³wň;¯Êš$5Ö/ò¢²éKƒDeêñ@Å1+¾Ú"‰çût]¦¹Ö®lwj¾<Òkž©ýc¤Ó(ù½ii"4ò<³f7e±7­»]½ÝÙ1 ±¶1êm™¥ÖÞYÜmwëmȸÈÍ I©ÉH¾[`:ÿoè<«™˜*µIÇãLܵfbšp`üáFACÂHÂÂÝš=L¸G³pn? Aá> þ“ ÷ÖQÜ® +Ky³†•<‘¨ÝDÇë§k5R?¨9ƒ>TÉÇB?ZÉ}„A%oÍ¥ä£Ij•|Bß×Ôü<ô´’O€è{Vòѹ·J>Öó5¬ääÁJŽ ýqJN&•üÓòïËUPιZX(e”$"“rîìãªz~‡å\¡ ¸¡¿XÎj*°çmLÎÕšY¯’óSá7LËÜ×]=Îy¿.(WGFnGŽÚÒ Z2¬¾WõíÀB¬K¨T|ÄÑ8ëv­†Y—p}ìÃøQª0¢Ú’°j·fSíÑ,œTÛOCPµÏ‚ÿ¬ªíH& ‘üî/~ßý…Ê.í%c´w± TMRÒùj!Õt_/ßùª¹h:%"(Ÿâ?gwhÈó;Ì\ΡìAè󟳚 +ìy½ÎçµË+·þyv¸­·çKÖÇ&­Óþ9®9Ž¤-—dÍ%`W+}5Ñ}SŒG’–ñÔú•Y},¶ßV½-*ÕÙ R}öaâP5] *ÕwB¥º=TÊÀ\{tëXí·ý"œªÆµªB¯*™(’Ö>îðw¿ï·aÁ¦~ß-Ÿ]¬ôØ·ºlÝúuQ%Š2˜~o{Žªÿ’ÔYM`I˜¾½qtŽ¥(MZ ¦ØìÍÙ©½ñòÖ€ÔAéÐg)ŸrtŒ†…c¤nëäqÂ?¢}aÙpVS±œDÃË@P3º‘î‹Þ¶È7z_ù2 )8H ôãÒtLQ–o.‚ +‚Õ9«#$¢`Î&ÄÙÇÝ"÷ü+ˆZU,ëAè+ˆ³š +ìyUæ¼vä"[çi™õ> endobj +2687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 680.7395 162.0093 703.7082] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2688 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 680.7395 210.1583 703.7082] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.6739 621.5426 267.0248 632.4217] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2691 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 495.0915 162.0093 518.0602] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2692 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 495.0915 210.1583 518.0602] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2694 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.0136 435.8946 296.3645 446.7737] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2696 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.4163 297.3671 279.7672 308.2462] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2697 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.6802 255.2592 460.6174 266.1631] +/Subtype /Link +/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> +>> endobj +2699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.9319 147.2581 254.2828 158.1372] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.6929 93.195 231.8468 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> +>> endobj +2686 0 obj << +/D [2684 0 R /XYZ 90 757.9346 null] +>> endobj +2675 0 obj << +/D [2684 0 R /XYZ 236.6686 656.6872 null] +>> endobj +2689 0 obj << +/D [2684 0 R /XYZ 90 640.0288 null] +>> endobj +2679 0 obj << +/D [2684 0 R /XYZ 236.6686 471.0392 null] +>> endobj +2693 0 obj << +/D [2684 0 R /XYZ 90 454.3808 null] +>> endobj +2678 0 obj << +/D [2684 0 R /XYZ 236.6686 332.5117 null] +>> endobj +2695 0 obj << +/D [2684 0 R /XYZ 90 315.8533 null] +>> endobj +2680 0 obj << +/D [2684 0 R /XYZ 236.6686 182.4027 null] +>> endobj +2698 0 obj << +/D [2684 0 R /XYZ 90 165.7442 null] +>> endobj +2683 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2704 0 obj << +/Length 2110 +/Filter /FlateDecode +>> +stream +xÚÕYÝÛ6÷_a •šå·¨¼åšm´—ä²ûP WZ[këΖ|’ÜÔ÷×ßðK–DIÞEûrX`I“Ùápæ7CŠ,1ü‘e‚—±ˆQ¸\nŽ ¼ÜÁðÛqÓk˜_w þö°øþGš,”H*—O†ƒ$HPB—Û_£D­ÖTáGçwŸ +pD¶¿—Ûó!³ý7åæ|ÌŠ&mò²Xýöð~q÷ÐÊuj &‰–úŸÅ¯¿áåÔ{¿Àˆ%J,¿ÂŒH’ÐåqÁ)ó?‹ûÅ?Z>vÂ,Û§°3EØrÍ$R$á£TJ LT † "è¸!T‚0fñ2f Áö¹±Æ§ÁQZ¥Ç¬ÉªúÕpŸS3J—]Ö^@‘–:ÔºWMŽQL˜¸rÕªœêr£µùw ÃH )F•¸ +÷T#f`]áL ÅbÕþO,pÝTçMcO_+cùþGÂ;«C2VZ¨]…™%ê‰àöÐ< –çkÇºÌ 0¶ýÑ”®Ý;·;UeSá`Š¬ACcøÖŠ!Îd<ï]ªi‰$Êè{÷Gz<²I_ ³¢ÍÖ9tÍœ©vnêsÏSœŒhÈÆ<¥%Ó*î³Ã¡\Õ*«ÃmU!à1œÀ¬‘<Ñ-†¼´ßÙÃJ‹m ZQ¤â¡‘¦ áÈo)1䪕¨Í)Ü;Å "’ÎïÝÝðÒbK‚æıŒ’Òë› B‚¹ÁLk"P‡¼pΨ°òɶz‰G]wh\Tu½žQÄ°4’$"1¢H®À—0Ž¾ÙZɎͧû?üôåî—w:°*„\J +û’V'©¥_w„ñòõ¸`IÂ’ +ÃcòT·ÜZä Ñ ßs¥±˜p÷y3Eß®„ˆêÎT³¯²tkýNDRÎ ·‡}®)9Žé¦*mPï˜i“¹)+:nvÀ¸F@qUÅêð3z_ž¦/¢ôp,kOpÐä(Ò‹úè8žëÌ­Î ÛnÊâ_çbãó½ÙA‰p)âkÞìƒh'QH¥B&HŸÅ§£Ý‘¯»ô#Ñ>äj2µqé~þx§}Ún{âŠ:CÜóT·´¸µÑ?–„v~Âä|BêRM'$Á9`‹²xsŸ9wLu9•æä¿8+…jŽf¥–lp@-òŒ…Ó•Bªy‹*dPi¬Y  'æÍÊØ"V·ÌŠ¡Š¦/¨üÀvÖ·*?2¢Éxå×’=¯òSb¤ò Í0Zùõ„ÿßU~.”arÃ#:TÓ¹Ad³gV~s¢_c¡†£1Ö’M—<„qØó¦i©nI¸uªîy¼´ê¡Iü×U=ñ\ÕóöîÃÝç׫DD+¢¢Ÿ¿Üß}x3V18WÁH¼d p•TÝ8»–~Ý]zWÈw²b )(088GsKè€S§LßeEV¥MY­Ú–ÝTD™•Ù­ÞZ6ÎØÛ´ImÏ–©mž|Ñ^L§Î|/ŸŽnpOcL磻K5ÝŒ'ˆRÁ_„÷c +Ìà} É8Þ·dÏÃûY+\ñ>4Ã(Þ÷„úS |5%ˆª‰¼Ü1O‡lÎ<žLkxuסp#!»ä£Â=U(¼oQÊ¹ê Ÿ7ÏUµ¾£OZ D!ÕÞ²R‡lÎJžL+šV»@,lD"nˆõT¡Ø¾}P DS}±¯+ ª;ó4ør#™‡<ô—@ÜmI%]èPÊsÊܤƒèYLŽÆ”Ú›ë •+"¢ßõ?sŒ0b5’À»õ c+]E›´°+Ì% ZwI‚)³K­Ã¥Hù&=.vÀë8ve² +ÃGOÚŒˆÔ¿›*-êc^×+Áv”Kà&V7æ¨)u¢Ô¤N@^ìì¸Ùžðܱ¹Áé÷óqÿÎO+*¢§¬²S¨íÁp°kv×F·Öæzq•mÏ›ÌMiY#û*2mŽ`÷@&Œ³cY]VRDZ&a 3³31\®À/£—nu5¦ýÌ {¼ØÖZ€ÄQz:à,oAaCÓ¤¶iKN³®¼®ïíÊ–8ý´•»›þ.×{²þä3Zí3Û5—öcâšÛ¨Ð.ÓÌðJ¤tq åÅ’“[2ž~Ý]0ò~ð½^Ô\™D ꤱ[‡Â‹Ó„T>Ø{ªŠ…Ü:5&£ž‰}Qá#ô¡ã¾ïàžïà¤} Ñ3§CºqkšÁbãQØ Êʆþ‘WÙ¦Ñq­)MLu—žóÓp8u@?pyŽumÅ(uNUÖœ«Ÿ‘P:dÅÎøŠ"¶4VÄãîj«ÇµhY˜Zkè±.Ø*ÒÃOb}Zí{– 6AÔBFž–`ð^,z‚/ï³b°Ä11U|U7cáä ºùnP +–ÅÆ…Å“OÙ5̪‹óy˜lòÙû»…ç¯Á(¾Âñç_LHò×]LÔÜÅä݇‰çXš ®D †D›Ü +~O¾îм‰¹Î¼Å2¤8g}ùÁS¬#º!uÈ«s qñ¢cåz¹Öù³é'[/½{!y§O6=ÀºÞõc¬†z†Ë~˜ø÷YÝÍ[~n.µM!fÎ9ŽçÚ =f¶õáfÇtÞµ}% ½BºæÐQ.¹Ç¼Žfiø:k£M?ºx;e›\{_VRP^œÎMÏìmºî…â³oú30APp>Lá¥þB"äŸúBl¾p+XBXï¶'Që—<}ñ……\ÒV•î]µÅÿÛuÞk 9»„º¿¢ìuÃ)ÆÒF›É'üjþxñ_Ìÿ¸…Ϙ•þ?hrrendstream +endobj +2703 0 obj << +/Type /Page +/Contents 2704 0 R +/Resources 2702 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2701 0 R +/Annots [ 2706 0 R 2707 0 R 2709 0 R 2710 0 R 2711 0 R 2712 0 R 2714 0 R 2715 0 R 2717 0 R ] +>> endobj +2706 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 680.2836 162.0093 703.2523] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2707 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 680.2836 210.1583 703.2523] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.2593 620.4508 257.6102 631.3299] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2710 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.2077 566.739 186.4774 577.2694] +/Subtype /Link +/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> +>> endobj +2711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 529.4341 211.653 552.0292] +/Subtype /Link +/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> +>> endobj +2712 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 454.077 135.0008 477.0457] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2714 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.5354 394.2442 327.8863 405.1233] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2715 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.6755 238.611 418.4257 249.5149] +/Subtype /Link +/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> +>> endobj +2717 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.4897 147.2803 254.8406 158.1595] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2705 0 obj << +/D [2703 0 R /XYZ 90 757.9346 null] +>> endobj +2627 0 obj << +/D [2703 0 R /XYZ 236.6686 655.7754 null] +>> endobj +2708 0 obj << +/D [2703 0 R /XYZ 90 638.937 null] +>> endobj +2674 0 obj << +/D [2703 0 R /XYZ 236.6686 429.5689 null] +>> endobj +2713 0 obj << +/D [2703 0 R /XYZ 90 412.7304 null] +>> endobj +2628 0 obj << +/D [2703 0 R /XYZ 236.6686 182.605 null] +>> endobj +2716 0 obj << +/D [2703 0 R /XYZ 90 165.7665 null] +>> endobj +2702 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2720 0 obj << +/Length 1889 +/Filter /FlateDecode +>> +stream +xÚåZÝoÛ6÷_!`/60³üžµMZ¤ÛÚ,uч®[Ž½)’'ËK³¿~G‰”%QNÖ‡bCQˆ–Nw?ÞïwC< ÿˆ§°'…DŠqß[ÞM°w ·ßLˆy<‡çóºÀËÅäÙkª<…”O}o±.4ø J¨·X}žúˆÈÙœ +<½Ìf$˜¦yºO—ÌžFù¾|oo²0{˜Í–ŠO•š}Y¼œ/*»–`>ÑVÿœ|þ‚½À{;Áˆ©@x÷ð#¢õî&œ2û#ž|˜üZé)/tÍŽS˜Y@˜7g> +ˆâR@˜A "DÐnG +a̤'CXb^xãRÏ;Ì»(²ýóö< ¦H2J½ºj ÀRI»H`xDB°D’0qÔª¡ì ͆Q |Ñ âhÜJu¸Õ3&ƒ¦ñß°Àû<;,ó2vENg¯ ¯½-òe –oaV +5Lð2hVFRç £:Ý&àìòGžšë&2O³FB6¥nŒÐ6ÙæÛ0Þþ­z"F<‰!-ºe¥æu±¡HY1=¥›ÅÓÃZ¯žu3sCF‘(…•rQ´B&ÁëX5Qè-7aÖ%J‘êãQâO‹Ò6ÙLl¬3¨˜®­ü:͆ÊzÃæRŠó‘°ÕÅÂV‰u‡mä áàlÆè+å"i†N@ˆ o!Ñ¡;$ûím lšC°°^+ð£t}r„˜:îµ%ÒQ¬Ôp­Kõ×Qßgˆ@½Ñ:ÿÞí⨷€’AËU&ÏôìÖ<ºjDßDµ 댾Ó7Q§ó{ø4‹Whé@–ÄP¶}d…Æ ´ui?–á +·h²í¤~Gñ1m­Äþ.ß¹s‡ÇK:¨Ã„¤iÔžuœ´dî8ÒÆ`Ÿ§»£ó b÷/G %ed9Ö¤–#óõAì©'C¦}‚à"ì> endobj +2722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 648.0568 162.0093 671.0255] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 648.0568 210.1583 671.0255] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2725 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.7339 570.3345 283.0848 581.2137] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2726 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.0953 528.1725 365.4795 539.0765] +/Subtype /Link +/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> +>> endobj +2728 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.9318 418.3349 286.2827 429.2141] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 364.5914 154.6371 375.1217] +/Subtype /Link +/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> +>> endobj +2731 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.3228 266.7089 280.6737 277.588] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 212.5917 154.6371 223.4957] +/Subtype /Link +/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> +>> endobj +2733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 120.9622 162.0093 143.9309] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2734 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 120.9622 210.1583 143.9309] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2721 0 obj << +/D [2719 0 R /XYZ 90 757.9346 null] +>> endobj +2681 0 obj << +/D [2719 0 R /XYZ 378.1965 605.8182 null] +>> endobj +2724 0 obj << +/D [2719 0 R /XYZ 90 588.8207 null] +>> endobj +2676 0 obj << +/D [2719 0 R /XYZ 236.6686 453.8186 null] +>> endobj +2727 0 obj << +/D [2719 0 R /XYZ 90 436.8211 null] +>> endobj +2677 0 obj << +/D [2719 0 R /XYZ 236.6686 302.1926 null] +>> endobj +2730 0 obj << +/D [2719 0 R /XYZ 90 285.1951 null] +>> endobj +2629 0 obj << +/D [2719 0 R /XYZ 236.6686 96.348 null] +>> endobj +2718 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2737 0 obj << +/Length 1898 +/Filter /FlateDecode +>> +stream +xÚµYÛnÛ6¾÷SØEí¡fy)©»J›´K·¦Yã!m(² •¥L–—ëÞ}?ER¢ŽN YüøŸO¤ˆƒáqìxÜCs…mgع…×ogD//a}i^­f/ÞÐÀ P ¨pV7A§„:«õ§9Áx±¤°Ï÷§çðÈñœ ¬Þçë}«çã<Úo㬠Ë$Ï_Vïf'«š±–‹3A$Û¿fŸ¾`g ò½›aÄŸ;÷ð#ÔÙÎ\ÊÌtv1û£¦£ª Cêq£…ŸžRO â!Š],AS<ÿiƘfZ©ó‹¯»º89;þŒ9îjEY€\×÷jŠ•Lr¥¸Õ–t5|iáûö¨J9ïvyôµÇ_0äãûŽI æÏ%Éò¹2Á:,Cë130‘¢ fÑXO³¢.bn ¨\ÄÙºÙä> °HP—UÕ&ÙÉ#óm¹|ÄóìÓoåFõ”/Ÿÿ-ÿ‹ õ&Tè»"/óÊDÏã-–Ì£@8V¨Î²õ²Üq¸V/®S@ìÁ}V&©f‘¦m9ð|jÑ®ã8SO oY+GPÀ¹Ò?4êW:Â߯Y¾ |~Ÿ©Ÿe®þnÂÅZ7õFÓ†§"ŽâDnRËšàõƒ¦°‰ l›—ú¹¶z~ÓA­^ë,Žò,‹#™­¨X>G˜@ +E"H0Y´´QýÐò„1Zœ Bm…5`;;€/ò™ç·™Ëª²+‹}T*ŸÔiþâ q­Ýœ!áù’©Ú…Ù@º(ð¡ $iEóH“Γ¬¬ÒÆŠº:*ú"c§nðæ~“D›&Û‘mˆ^kš2%иk)Cœ`تK-Ø”K Lê^‰ÖåK9r©ð5¨>ߎ71r±OÛ|¥7£MX 8R( Ìÿÿظ£Ü„å“6õypÐ1lÊ1f ¤Ÿi>"<8ÀYƒúŒÛžq".fmÆÒ3ûl—Üf¦z‚- ¯ŒA¸Ûr3R9ŸlbS1a˜‚.ë»ÓeÕF—UîCd10´Tóä[¸½K㉂:ź +?§Ç˜Úµ²¡¨aRÄݶ¼CQ?\PÇåÓ¦©Q‡8÷¨IÎjöXº†È®êÒÇjêKªÙµr qpš˜Yx~;0ä3ýV…mÎjÛS00Š°pykâd‡&Ϋ‹ÕÇÁ©SÍjÔáȺwhì4ø¥½at´èŽž>ä¢à¼#Bwô4¨CŒ{Ô¬ñºãè¼újà$S'k¶OÓ%Îm’…¥I ›d·£êrèê$ Ój£Æ3Ô{žžu;ø 0QŒ{’ ãö¸ÁgÒ +ÍàÓ7ÃààÓb~þ#ÓÈx¯r8>9ЫlØ”y ¬*TeÑcK|D™té$[ƒê³mFJ:\ëN¤ô@sÊ¢hèbFìóoöYÔ”4s¤zTjŒM€ö‘ɧB83ñéT²Qã©ÄO)÷Ùì¦Xÿp³ëK8Øìj˜q§i¾¼—Ê‹t=Ð÷°i#Ð!º´¬**O¡]Ö08ø^×Hã†ÐðCBt©Ž÷|ŠåAˆNën@ØöhY ŸM‚Ê`äñ ? Okø¢ÕðÝ©†¹ pü?:]]ýy¶:ý}°ï{PHY@€¤oÆäñ¾oðK{Ã@ûíÑíû c2“ŽŸÕ¨ŒûÔ¬ˆòl]yg¬ûSb¸ØÝÿráƒ+íKs‹ÓT¼šlg|/öqçnÊ»›²/Šˆ®‡C×IÖR ÚÝÅQ"½k-ü4Ì”<2è›K,%@Ç#.%ˆqWF‡ @°AQã—ö†~BõéV]»ŠÕ³“Ëã…+Ï¥„ùj°ù‘ Xã)[>y#ÛmèÊvZ–ÃlJDù8 +³v?ÜïLï22ÚĽÊÅ:y!ßäµ[÷(…uµ¶3×æêmú‚Ä„OUá!êÌHÙ»á”Qùp—Daš>,7A^ÖÚD—E´Ñ*4í<‡vRiÑoz¦“R +i!›ë¶k£•á…ãÁ‘ ÒJÞEž}´FU1°ºZýúñ䨺Wñnßb lÝbU§q˜eÿ@,pUãþ¹ZÒ´­÷»çj»MªL¶q5‡9ž@+£TíM8J-ÄaÑY >‡ýS­Á‚›ìä¯NÞžžUŠI:¿Ô^õQ@ wÙªÙF…:QŽŽVG5µøý»¥ÛUüí.)âʆµØCì’ i2ЦÛж´¢ZI¿­>Ø’>û §åìYÃu9°ù_…Ó]|€Í&4¾’ª­¯ò}Ù±à0ñ1ÛêÏ.½ýÆ_¢ÙßýØD ßzƒßÀ°#Ç.žôªúæÃÂZ§?¹Ãüª¹AÎýZ)êÛ8‹‹fÒ6]è½yx'‹Ð^ÿߤª¿ø%e/©þäF1ºÈJë±¼ÿmÎ|8ο=ÜöïÜdÝ°Òåendstream +endobj +2736 0 obj << +/Type /Page +/Contents 2737 0 R +/Resources 2735 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2701 0 R +/Annots [ 2740 0 R 2741 0 R 2743 0 R 2744 0 R 2745 0 R 2747 0 R 2748 0 R ] +>> endobj +2740 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.4524 726.9533 264.8033 737.8324] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2741 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 567.8253 135.0008 590.794] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2743 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.8109 509.031 289.1618 519.9102] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 370.1174 162.0093 393.0862] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +2745 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 370.1174 210.1583 393.0862] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2747 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [274.8955 313.1712 301.2464 324.0503] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +2748 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.3578 271.0632 513.9963 281.9672] +/Subtype /Link +/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> +>> endobj +2738 0 obj << +/D [2736 0 R /XYZ 90 757.9346 null] +>> endobj +2739 0 obj << +/D [2736 0 R /XYZ 90 739.9346 null] +>> endobj +2673 0 obj << +/D [2736 0 R /XYZ 236.6686 544.1142 null] +>> endobj +2742 0 obj << +/D [2736 0 R /XYZ 90 527.5172 null] +>> endobj +2682 0 obj << +/D [2736 0 R /XYZ 236.6686 348.2544 null] +>> endobj +2746 0 obj << +/D [2736 0 R /XYZ 90 331.6573 null] +>> endobj +2735 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R /F14 636 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2751 0 obj << +/Length 564 +/Filter /FlateDecode +>> +stream +xÚ¥TMs›0½ó+t„Ê®¾å[;i2õLgÜ)·4bãÄRŒ'õ¿¯@†Bsép„žö½Ý}p DKM-Š¬g÷û>°ºýtøœE7wÌK­bŠdÛ.‚B*2’mbEQ')“¯êM\5Õ±Z¿&qÑýÎ~÷Tçõ9I90+bL³eô%»]’+liE@6Nß2Ê­‘äÝ-€¢µŒ"Áx¿ØG?¢ï—8~£;0—ž`.5ƒœ¤\QƒVÌ¢Œ¤€F»J0¤ˆ’ÍWÂX +À5ÑœSÐ ºr¬ÚÄó:?MQç‰À¨æŒ‘aè^ÀDÈ=Uâ¦W%šjäòµ•òæúЪyˆà@TrVÄ•¼GÍ”ɹ¤†k3&ÿ ŽM}Z7Þo)œ›;ƒÓ’S¥MKêO÷ …ðMë1}ÌO!tµ+]±ý¢©ÂøR„ÝzäHúŽ Ñ •ç}s¥ÔG}¨Vïº*7»fW•f¡¨PZ}Ì܃&Ìã&H¤B;bÎú\%ŒjôÞyu:´­êDʸ+IUˆ—º#Ý]hãÝ®?¬DÊ›þ‚—Škæ'ÕÖí‘}10}¡s·ßyGèÙG \ž¨¤ú¯‡¡{ÙŒ;‚|tµš›þa "Úd¨ó¦Ø„tBÆßúÉ2AŸÂCÒ Æ üŠ¨Pۄɸ +=}]4 À§³o«ßççbbé¼?SŸ?*æI+endstream +endobj +2750 0 obj << +/Type /Page +/Contents 2751 0 R +/Resources 2749 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2701 0 R +>> endobj +2752 0 obj << +/D [2750 0 R /XYZ 90 757.9346 null] +>> endobj +2749 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2755 0 obj << +/Length 2441 +/Filter /FlateDecode +>> +stream +xÚµZ[Û6~÷¯0šXsy¿ä­É4E¤»ÛÎ[SŠG36êˬew’þú=I™eR-² tû|¾ÃLJ¢ÈÙ\vµ;¿;®/ûúp®ÎÛãaùëýûÙw÷±÷K0I,íg¿üŠçàßûFÌh1 Œˆ1t¾ŸqÊÂÅnöóì?÷ ýÁXóaãí#ÁH¡½ÊµO"¢—+‚1´¦ÞO_\k>íŽëßÝé¾:TOµmš»~¼Ö¶m¤³N¢µñµÆ¹`uD¼ý»ú\mwõƒWݬOÛç-0Ä¢n°vÀg)—÷efûà#œá´ÚÁ¹‹<\ëÅéx9ouãž>ŸŽK"l¼•Êšíþyço}©Ï|\R±x©O—‡…GÇGgýööãñ䳑Úžú$ѯ¡¶e]¼ eûaÐwÞrÁñ#Æô³õ>Ä­ÙþY£Î’B’rëos‰·IÈwëÝo¬d×Á/îþC½ÞU§–ž¾lÏwÿ }05Ã)Íù\r‰°ÆÆ©Ò>:=yÌO‘>;ü*þiÜû©]ÛÀß}xó ÿ$ñ„S¤¥82TbçQŽUŸ}_­OG´„6ÈëH„ÂæOœCOÇ}ÛeЃ޶imŸ7>‰D±·#/Ö†?ŽôÅ )B¡ñŒ#8êB/tøUüƒ4©]/ØO¿µí»ÕT$1˜êû3èŒUòBR„ d™žaþÃE¥:ø¹h#÷ÜðB!‡)˜QSCØá Χv»>žêúV¹”HpNòìP%'¤A˜q5A4$×a¢Õ\‰¸äã3M­bT:›j`Æ ˜±Fœ@,óÇsýzÈ +ó,RŒ’W¾ZL³qˆÆ]ú+v.° wá4[¸ñ°Ê]_›Æ®M£ [Ôþ'߬ô;Ùl]ÃèbSyvíëÍåð{3Vc Åa¼N×PÅÏ[k>âµ^Pfãs‚_–D/ž\lGêaHºTÙÞOÞAýÛŒ,¸†š(usÑÆÒŒT¦ùÕŽ%ûH©HÓ,ü +¢•gìP%^˜Þ –rÀ %ë.I—„ÁŠ†š!óíñð%»aŠ]r¼@ët¼ÂêNÀê.‹ ˯•m¡&½zr$\ +ÁO…¥W4 <×à©ä.µÀl¨Œž{˜ót¸êZR¼ðÂë­jàú´äbáW6(íYç‡ö%uÞcï0G4Äî¦ì8¸¯•(É.Àʲ‹ æd—çíd×ã-ȮǀR”}š¸tWÛa|ï[(–$Ó¹ ×»VîÞcÔ¿yÞ®ƒcÞW¾¥ 9—HAÕ< ¿ÝË_r#±*ÛßÞþëÇ·ß. !‹{š¬r¨„L$d>ªàDjÍenâ—ò m«lwN^½jèˆ(,M°¢ä¦b@F +¬(…,ãU +Þ …oY +}ò R(¸‘Ø“Bª +Ó/„¢C|H­e•èt 9¢ 󌦷ëêÓI€•u’cŒt’çítóNÐI|ŠNòn$vƒNLìv‘“o~@•xkAö½Aès_ +„ëÃe?º<÷%•ê/¬§Õ'1:SQu07uÙõî’©EÞX¤oqC¥u³Ž¢Ž|jå£ÇgW;δ4n‹à]¼u3* +ZžY Ä€ÜP °òPÉ1FC%ÏÛ •˜÷äãö!­ M ÖèsgJ(/y‘Ø튨ía›rJƒ®M!T¢Ö eÔ ð6=Ž‘k$(çSCÐá ~¤v u$•q»y•B‡Jé¡zˆßšBe‡aÀldw±]\q h]Ì¥ ¢›6ct&mt0Kÿèc[í¶NÈaÿ¢ò[±/Uïµ¹'ÞîÙ®Ó°¾´*»]×â KíßX3…”$£á½Ò{P‰}hË’ß̯DqRå_åõˆ}—D‰)U™¬˜cƒ™”Xà )±Ç§ÄáØÁ¶3~<„1Ó¯0(bš‰ƒ™ +ÃãK®&vû[ŒéÚ“ É4-* JìÆî‡AŠíwÐíÔikVÅäÔ(tø‚©ÝRê„ɨ¤;†©3 Rú~÷à Â%'Ã0ÜNlRê„ê‘2E&¦ÎKÖ~ñàwx§&ÎG÷&kßÃ0c{³«ÐH³a»o'W/´<±ZL­#i4ÿ•= Jô‰µ|veQ#ï«dWTkSÊ®Vή‘Á\vÍóvÙ5æ]o@ #ŦàTx³Åf‹/yØí}T›ðS€šP%rMÇv™Ñ ûíœI0b\É©Aèð?R»ÅrÌχ¡C¥ôƒrS#Å4†aBÎôëÕÌ|ÌìGŠ æãœÑçó)›ŠáÈ°œ¸¨ŒÑ¹T`nñ[}dœÁ?û¥uû!ßñÒìþZr6Ê>+Û^(ngç€/D#µ[ÊÏœAµ%Íx§\¿í ¨j-›Ÿ„A3mkB&‡ªpÌ; 2$Òí7ýíOYÛ•#ŒÆ¯/¤­Y´v%¾(Gåö­¾¯õéúUWØ£úNÞ[\ü¡þˆ_Sö:lÞC³¤× ýl¡ýzSŒ}Þ¾¹»;~þòT'õÚ¯mƒkQ”þ÷µÈ7endstream +endobj +2754 0 obj << +/Type /Page +/Contents 2755 0 R +/Resources 2753 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2701 0 R +/Annots [ 2759 0 R 2760 0 R 2761 0 R 2762 0 R 2763 0 R 2765 0 R 2766 0 R 2768 0 R 2771 0 R 2773 0 R 2774 0 R 2776 0 R 2777 0 R 2778 0 R 2779 0 R 2780 0 R 2781 0 R 2782 0 R 2783 0 R 2784 0 R ] +>> endobj +2759 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.7882 642.9278 343.8612 653.8318] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2760 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.7163 630.9727 260.5985 641.8766] +/Subtype /Link +/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> +>> endobj +2761 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.5434 630.9727 467.5403 641.8766] +/Subtype /Link +/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> +>> endobj +2762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.7434 593.3114 307.8165 616.2802] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.4207 581.3563 163.4938 592.2602] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2765 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 486.8218 162.5475 495.6685] +/Subtype /Link +/A << /S /GoTo /D (a00120) >> +>> endobj +2766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 447.8916 163.1055 456.7383] +/Subtype /Link +/A << /S /GoTo /D (a00121) >> +>> endobj +2768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 363.8772 196.4299 373.8049] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2771 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 306.282 227.9818 316.8123] +/Subtype /Link +/A << /S /GoTo /D (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) >> +>> endobj +2773 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 293.2926 223.0005 303.8229] +/Subtype /Link +/A << /S /GoTo /D (a00159_g720ac440c7b24bdd07c53ba146e36fb2) >> +>> endobj +2774 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 280.3032 178.1689 290.8335] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2776 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 197.3698 179.0853 207.9001] +/Subtype /Link +/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> +>> endobj +2777 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.5282 197.3698 265.4205 207.9001] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2778 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.8984 182.3375 338.7573 192.2427] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 158.4396 192.6345 168.9699] +/Subtype /Link +/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> +>> endobj +2780 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.0774 158.4396 278.9697 168.9699] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2781 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.8358 143.4073 391.6946 153.3125] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2782 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 119.1358 180.9085 130.0397] +/Subtype /Link +/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> +>> endobj +2783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.3513 119.1358 267.2437 130.0397] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2784 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.2067 104.4771 431.0655 114.3823] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2756 0 obj << +/D [2754 0 R /XYZ 90 757.9346 null] +>> endobj +2757 0 obj << +/D [2754 0 R /XYZ 90 739.9346 null] +>> endobj +150 0 obj << +/D [2754 0 R /XYZ 90 739.9346 null] +>> endobj +2758 0 obj << +/D [2754 0 R /XYZ 90 716.7313 null] +>> endobj +2764 0 obj << +/D [2754 0 R /XYZ 90 503.7525 null] +>> endobj +2767 0 obj << +/D [2754 0 R /XYZ 90 381.8888 null] +>> endobj +2769 0 obj << +/D [2754 0 R /XYZ 90 324.8962 null] +>> endobj +2770 0 obj << +/D [2754 0 R /XYZ 90 324.8962 null] +>> endobj +2772 0 obj << +/D [2754 0 R /XYZ 90 310.267 null] +>> endobj +2775 0 obj << +/D [2754 0 R /XYZ 90 215.9841 null] +>> endobj +2753 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2791 0 obj << +/Length 2035 +/Filter /FlateDecode +>> +stream +xÚµZYÛ6~÷¯0лX3¼%nч4GÑé‘.ú’VÖÆFm9•å¤Û¢ÿ½Cñ°$Ò⦠+d)ñÓ\Î|¤Kæþ#s…ç™Èb\ÎËý ÏßÃëogÄN¯`~Õ|s3{ôœª¹BJR9¿¹ë$H‚%t~³~½ˆäËxñ²Úš{3¾ÝÊ_Íp_ÔÅûj_Õ­y¾;Õe»=ÔGx¤™” ‚ÙòíÍ‹Ù³o‡5S0I´¿Í^¿Åó5˜ûb†S¹˜‚ŒˆRt¾ŸqÊÜÃnöóì'/ÇLtļ„ÅÝ%)!¨ó—‚ûÙÙ]D—+‚1^<­Þ`LëÊ8öôPž´›…öN{4Š„–rĸêKBÄÊúb=öòÙËoÞ`ëb_]™WǶ9•í©Y’|áÞÕ§= ˆÖv–O:ù¿,]»Su=Žn.&y6—"G˜qÒM#^õÑ&Nr‘Ë0±aò­ý¨ÃP.W\+7EcFÚ«wO~øþÉãïÜ»}µ¿}WNu«]y .½ýÊÀßÆ;×DJH ù‰¸„¥kp¡©RjàŸ‹J°/.ˆ7ãNL—ÞGóBK7£¯ÍŸ?Û?ªÃÖìíÒJ¯,þ´¿i&’"¡0ð€X]Mz ¿úxØ®»)š#©(h °xÞ¾ìf8ÊrJæ½÷Zt2„Ù g½ _Q H‰€‘@ì“÷´*wEc»°Ua\,ó€dHRλ/o6[]&ƒ*R63t¯NÇjmF­1kVìvú‘/Ö^/Ìæ+L0<ÜYÑÎ-iS´fTµý¢«»½7òÛMå‡ÒT€îÙW»³]m!Ö?-AïlYïĽ™²^Íla^>±OMSXاm»1£ÂÊ,4/¬Sðn_´åƈ"Ö|üP•[]|:aRô¶j̸‹€\Êwêµy "¶ÍÐ1Sܶõz»¤bñq»>;[¿À ct™Ÿý^ì?ì.*A(Â<{Xê£eÊÍ»=¦Ó»<ÔueÖÉî©ñ¶•ÌãzÛHýðÕ%ãy,Sñä­î£Â¦›+„1Y0Ìÿã’Àvj`g¶Us ‚G0…-;;f@`ˆG‡–À’ž-!8Caâ,U›ÒÕÀ±~†Ç9™€GE"Ð/- ±\ñ¡^³hn‹0¥Êä+¼iÝ”ßÞ0é6*¼ÖK»+Ú.ÍáÑînuiä ÓåŒ9òEO5ï-æUÏ+OxÊÕ^uev[ouÇ®½ÌÉ‚'BëQ)#iÚˆ«@iLJòÐ8|J} ×Ç +¦—‚À™R¢&ƒàQ +8P Ae>´Bº±Z!€¸eü¡aðø”\†»¦ª.EAÀ~$ŠäÓQ𨄡4ÇÐåòä…åDÅ·÷¹¬ô`SeÅÁ:¦[ØX/¥HŠ,¡Ö‚B­Ã¢B¡ ±œµš¢b–uEþVE¹ ùK¹9Õ¿ZB¾­-§¹om³‹C sh‰ õ`SAs°®ŸöaÌ$\o±Iµª•b}ücj¨ÖG­=´®ã{Ñ a¸ã0p­“sf…Ñ® +lövžèª=ÔDW¥ ȯ]}ËE¦úé„jŽTN8 §‹‚_¹ˆ…,ºÂ¦Ml«]]µkT&ríD°éèxTJy M+7X–•1$úÝvké¯fûöпۺƒ­Ê‡ù ¿ØU>7n—/Ðùósï(¬‘1” v>?3{z~niö??‰3ÿ¨y•=7=z«yþP21˜ºhn.FÒ3Ä3j!ç6æ¼õ„r´v”Cýgð!ƒ¢$0g‰òøUÿƒ0ÉC¹Þ.KéÇ}CŒ1¶‡†ŒÉ…C…êcú¯«?GnPБ‹F68÷Ñ7Ý0<ƒêò4¼ ylNe‰#¨½Ÿjû®7+bö|¶6OQöÈÄŠÑ.´D's‚99üªÿA„9rûgš(qÌ%Ês–,¯­C¥ôÒ|ˆ•l*a}q&§Kvu¹dÓLiÒøy¡˜Í7°$Þ|=Ìgí@9úF†M{ïQ÷‡„NK\È¡ÒÇ“ùü¡©ÌIüpÜ=8e),-%”̾\>á@(7™²Ðœ©JÄÏÚYÓù +…D +¥ùÚCMä+gH{듦Sª?›b„F)†‡=ŒbLFçL1ÊiÿÅê£ÝDñ¯ª»ª©ê²:žá¶O^_w÷®W‘ xˆ½67½õ:2¯Ï(NO ¹Ä¢OOÜæ6Ý »3¿TI~¡/P€«!¡„ð<µ¡-|ÕÇGØÅXj‚\PÅaß°±£ôñ¨Pû€\P%5§jÿ/¸…]¶ &9 õ: ˜àEÚ&¢Ø-ŒhŠÒHðOvÕ¦GjžVÅ¿¡5ÉvqúŒ~ÁED™0Š°YŠâ8üªÿA¤brSý‚S…(×)9°d|-äP ý¡´É–ùÈxâLzÆ\nÃŽ×ÌîsèM¨|‚ÜŒ¬ˆS š&6>ŸiÍØé(©¨ëRíÿ`6 ºŠØ}¹ :ô¤c™INÇX¡ËæDì> endobj +2795 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [324.7453 474.4264 376.5504 497.3951] +/Subtype /Link +/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> +>> endobj +2796 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.3663 474.4264 437.2485 497.3951] +/Subtype /Link +/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> +>> endobj +2797 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [454.1911 474.4264 508.1881 497.3951] +/Subtype /Link +/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> +>> endobj +2798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 410.341 142.7416 431.2524] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.1409 324.7746 304.8028 335.3648] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2802 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [348.807 300.0021 387.8801 310.906] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2803 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.2161 264.2545 324.2892 287.2232] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2804 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 230.5641 142.7416 251.4756] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2806 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.3477 153.4162 295.0096 164.3053] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2807 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.1676 128.9426 430.2407 139.8465] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2808 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.4576 93.195 334.5307 116.1637] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2792 0 obj << +/D [2790 0 R /XYZ 90 757.9346 null] +>> endobj +2793 0 obj << +/D [2790 0 R /XYZ 90 739.9346 null] +>> endobj +2785 0 obj << +/D [2790 0 R /XYZ 90 723.1038 null] +>> endobj +2794 0 obj << +/D [2790 0 R /XYZ 90 723.1038 null] +>> endobj +2799 0 obj << +/D [2790 0 R /XYZ 90 371.2512 null] +>> endobj +2786 0 obj << +/D [2790 0 R /XYZ 90 344.9853 null] +>> endobj +2800 0 obj << +/D [2790 0 R /XYZ 90 344.9853 null] +>> endobj +2787 0 obj << +/D [2790 0 R /XYZ 492.0776 188.3053 null] +>> endobj +2805 0 obj << +/D [2790 0 R /XYZ 90 172.6296 null] +>> endobj +2789 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F52 1229 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2812 0 obj << +/Length 1157 +/Filter /FlateDecode +>> +stream +xÚÅW[oÛ6~÷¯úd3Ç»D¿µHV4@€®ó[[ ŠL'Âd)Ó¥iöë{(RŠdÊRŠ ô Jüx®ß!I€á!ÂA(B¤—ArZáà~¿_7½…ùíðn¿úõ7ª…”¤2Ø[ ’ A ö‡Ïk‚ùfKa ^7>ÂPà5AØn‹C“i;¾*’æ¤ó:®Ó"ß|Ý߬®÷½bg—`’µ¯>ÅÁì»YaÄT$‚'øÀˆ(EƒÓŠSÖ}d«?V¿÷rìD»`Ê=N0¢2Œ°Øz4…"˜¢Q +¡ àxHûH:ˆÁ! + A‡2áx¬ËsßQˆ1%ƒ4_gòt‚G”#FÉHå[ßÇ"Ík]Úºpïý“>å³ßeEòW7×v”Vã•wnáAÇàãZйg‘@˜Da EL†á¤gh;Dù¼Š˜…Aˆ‡4j]û¤ë¦Ü±Î«V›%2¯½GM¨gSÉìaFÿÞ„¼Îõ†Šõ“ý(õQ—:OÜ\R4ym‡Ç¢4bãnþtq7cw3ü‚®Š&;¸)Çö•í»j’DWÕ±É2'cAìÏNë–Œ—+ j àRB8Ž™òûÆ¥:=ØA^ÔNyÛT5¤å~#Öqva—éÂ)ŠpDè2@]¦‹…’±Ö±ëïñé1Ós\™QÍ‘Š‡a;gþ”÷nêÓˆQŽ)N3ªƒkåº> Ä3‘rÁæ£Ó£–”{ÒŒò6#ÁVt2`‘eú•þ‚1ÍÓvs¶‰v‰ÏÒÜm¡²ïâhßfEö²¿Üm8^£õ” ‘¤œ»Bv%S½ÀÿlYRívmý21îwœ&æ«ôݪ;#(gŽn}“ˆDˆ!¶Üa¼þ¶1%“¦àxçf]6I}ž jD2¡!☒žôøípÏd_®±yà§gˆÂR¨å±!gLéQ¾z ù@½bˆªsõZf;:òBÄáÐÁÖ‰À㎠ݟ,fHÍ-…lˆ¶ÄÍaÆ•ÕøÁp/Î ££}fñÜz2ÙŒ«î°J²¸Ô.µOiýà/’(2}ƒ€ +ÁP IìàÛÞ/7Oªñèöúö¡S‡¡Œ28¿U46ã,…=h^¹'«/õ©ÍW`†8Îê!êòæ+ˆ¡ ³gõÇ6e|Òp¶ÌlÁSÌÛž%Ó=Xë©9nÁÀPÉÙ¼÷=jÂýq†aVȱҷ³„},Ûâ[ZTÙóÏúl~fö,[[ü‚¾Ü×ðvŠùøu 힬Y¾rØ–"ÇÈ,_‡¨Ë|å!°E)ñÊfaNõO7 ¾…“ÍB{]³0—faA¹'í?hýßš…Ñï¼yeqÑ +·êΕ­KJÛ3t傦î³NÞ01ŸH!ÿÕU·½«G°„°Q,á00[²)4XÈ%íM1n½×¹.ÍõÁ¥'ïnênpcúúÆ}—D‚w”í¨»ÕSŒ¥ÍžV¸›„ýïBvU|¾×Þ¥_6¥É.Í?endstream +endobj +2811 0 obj << +/Type /Page +/Contents 2812 0 R +/Resources 2810 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2809 0 R +/Annots [ 2814 0 R 2816 0 R 2817 0 R 2818 0 R 2819 0 R ] +>> endobj +2814 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 641.7124 142.7416 662.6238] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2816 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.1396 562.6724 291.8015 573.2626] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +2817 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.903 537.8999 324.976 548.8038] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2818 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.2161 500.2956 324.2892 523.2643] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +2819 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 464.7486 142.7416 485.66] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2813 0 obj << +/D [2811 0 R /XYZ 90 757.9346 null] +>> endobj +2788 0 obj << +/D [2811 0 R /XYZ 407.944 597.5968 null] +>> endobj +2815 0 obj << +/D [2811 0 R /XYZ 90 581.5869 null] +>> endobj +2810 0 obj << +/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2822 0 obj << +/Length 2497 +/Filter /FlateDecode +>> +stream +xÚ½ZmÛ6þ¾¿ÂÀ}±šÇwIý–k¶E‚4Ý&›»Úb¡µ•µ¯¼µìns¿þ†IóE&uèâ^Ëg†3Ï ‡É Ã?2«ð¬ª—³Õãž=À㮈þy ¿/]À?n¯þþ=­fª$•³ÛϽI „În׿Ì%"ÕbIž¿~ÿqøã° å¼éö»?Ï›Ãâ·Û·3ŽK„…5jÁB=½º¾µºµi‚I¢4ÿ~õËox¶ß^aĪRÌžá u=^qÊÌ—ÝÕÇ«Ÿ­œá‡~ÀØ aãS$ÁjæHaÊ…;E‚qfŽƒ‚*!z1àK&R"­DŒ æXowÍZ»®éV‡íÓq»oµ æ¸äPŽ§ƒœÛM3Œ:½¹ =¯-Ê¢þÉçS»Rb»ák}0c;£û¸>wûý—Ó“† ›}wlëG=¤nõˆÇZöG_„Öž›ÃvUÆÊz½û:ÔÓæD +$)gýœÞ€$V½m 2‡nxR»m×Cð|ÿyxâÌu=übÌÕ#›ZYÕíðè¾ü~‡adþ¼=n†ÇGðlÀJV2TQVÌ$PF–L“JýtxИ½,~é8æÆ4–«Ü0ÌénůX`øOB“8‡,‘\&<·¨Œ!\Ä…`¾!†6h±,¿oTÌŸûÈ-!A‡KËuá8_»w¹ú㾉¨¹6ܶš@±ãÁ7HÂìg0TÐ’eoñKw@<ßX®ãxÅ‹¯—üN+‰¨€¢á[øÝ¢rvT%*¸ò»kÇÙォ)Ö ,¼ýkÓ(çÊ>9¨ôònênx|ß\à|øMMr~ý¼?µúqŸÉrHõ½Ý·ËFûò¯nÊ/ߨŸx³½Ú¯õoPvg«zr_¯¾hÕ0ߥ-úR¨™´Su2aÑ‚ñ™$PWyYdèañKw@–X®CÞQ—èA*†x‰«À¢€•³£°þáÛ1”´¾Ÿº£Ÿ`Ûǧ]óØ´G“_÷_ÏÉ5ŒÙ¯O»Æ<4’`%è Q!æhluƒuL›¸dXžz¿‡U­YÛ”—Kv±íp#þÀqVò³¥ìWJ£>‚`E!g’-*§Ú‚ +KèŘ“jµ¯BÍ Nj|ΆH áÙD–@‰f˜Ò´fa +†Ä +ævÄa"ÐÁ(Š£çÞIàY ¶JÞÛ +}.ªrfaÊV§mbÅÐ6™E× +Õm4õÚ<Õ&š{~|C#¬ÖF†X ëEòZI‘#ŸåÉçL‘/­×’ÏÓ›!Ÿ§y +ùÒ6Drò­bòaX´ $} %µä+'’S$‰S4/ÏÀ<ò©eRw¨¶©5­«Û¤íFK¹LH^$E5q&.ÚnAÎÕHÉ…DBm™úI4*ìíhiåŒ!J +~‘Ý. Án ˲;©ñÌîŒ^ÃnOïßÖz¦‘r.¡O*H ü2Á >gF$W™ñéÍÍݧ×7w¯nn¾{õî]ÜJTñ’¦=aQ(«T*ßÝtÔOOª‹;ì'K&/W5Š»åãžÒèÄ=­×ÆÝÕ;!îžò)qO›ÉUf¼ÿ›•²à™éTNoý~QzUWùÇ‚Âöv»º-Â=† F)ק'à(6rNn-É##Šº—9sþ=EÊ3&¡Î!LR©å‹£t]\ÍSØ’´!”ªløñÕ¿ï>\ß~xsý1ªjUUzþ”Ö •¼ª<ÝåHhì-pÐy±u‰àZX6ºIçðfôšøzzóö•OˆpÆŒH®2ãÃõÇŸÞ-ÆóÞ]¿5tHœÐ2í ‹Ê˜Ao0á›ÁÇw`\cý˜=ò¡lo%#—wa. EËS$¥Ñ¡HZ¯¥ˆ«×­—áÙ@E`cêëNž ôøœ‘Üü2­öû˜äÜ A9ý•€†^pWŽ±s uJô²ärÔ@*ê–zJ£õ´^uWo>êžî)QO[É O„"KÊq×]£NРœöR½‡àEà{ˆùjSÆ:( ªÆôNAm†¾‰ŠçˆKXt&zÓâ3ó‰å*NDÞ#¤Ú*¹S­«+öý"+Øo‰Ä ÿ0íŸí“ÚŽùéÍÕ…äÓv~.:±‡µ0eÃwé©¢þÿÅÎðíy³]©Ó’> ì¼³S iÚÄÛ3¤gôÅ=.­T2â8t¹¼ÖÐ’¨×}¹í‰…e«Ž+0Qu2zMÕñôf«Ž¯{BÕÉXÉuªÎjß~Ž‹4œ—'TN} iÊDè|(;cÅ®ИLu€Ág-å^.Z+^é©[T¬Ø/*hÌ» …bÝv]sÐçæ©zA¥TŸbZ½pщzaa}½Ø·ª{~8 ÇW£Ež‹)£ÍÁ«9;u©ú—áiw¹4¨êN^â<–r‚Jµá͔˗G`¨Ñ1Ã\SrÖÙâZ7Ê\Ò¿Œ$7õH®Sµšã9=âf°*iGPÆ +µ¯.úzàû!Ý'[S /åÄätЩä40eÉO÷ÇzÛïÜV§Ã«íq÷Õ¼ñ’x=ž¶É3iå +^V/ó’„bŠ.sgC–OJG`j½Nëµéæêͯמî)ëuÚŠH®Ãüm»S¿PwÉ8Á rêKH}JŠÀù)OJ‰ +Æ'¾tÑ Ê[X¿êô;/fY%ãÓVRª6ux´Çàx"…üK·µûD…æ…FÝ«À"u)D_Æ&*ÔPlhÚæPÛKnÆM?š?ÞªtÒ_ÕŸø[ʾ¥xø’Ú¹êZ«q°½NMöoнÞÿùõ¡iCwª«äÆ4Ç?ÿYÚOaendstream +endobj +2821 0 obj << +/Type /Page +/Contents 2822 0 R +/Resources 2820 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2809 0 R +/Annots [ 2825 0 R 2826 0 R 2827 0 R 2829 0 R 2830 0 R 2833 0 R 2835 0 R 2837 0 R 2839 0 R 2842 0 R 2843 0 R 2844 0 R 2845 0 R 2846 0 R 2847 0 R 2848 0 R 2850 0 R 2851 0 R 2852 0 R 2853 0 R ] +>> endobj +2825 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.9274 654.5304 448.5608 665.4343] +/Subtype /Link +/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> +>> endobj +2826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.6088 642.5752 297.2509 653.4791] +/Subtype /Link +/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> +>> endobj +2827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.2771 612.9957 194.4771 623.8996] +/Subtype /Link +/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> +>> endobj +2829 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 556.6105 162.2985 565.4572] +/Subtype /Link +/A << /S /GoTo /D (a00103) >> +>> endobj +2830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 516.8967 161.7405 525.7433] +/Subtype /Link +/A << /S /GoTo /D (a00102) >> +>> endobj +2833 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 430.0643 237.9445 440.9683] +/Subtype /Link +/A << /S /GoTo /D (a00160_g3d768e989e308144190ae1a5ddfa9726) >> +>> endobj +2835 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 417.0567 174.2837 427.587] +/Subtype /Link +/A << /S /GoTo /D (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) >> +>> endobj +2837 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 404.2781 216.3555 414.2058] +/Subtype /Link +/A << /S /GoTo /D (a00160_gecf13b8dc783db2202ca5c34fe117fc3) >> +>> endobj +2839 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 390.8969 231.4091 400.8246] +/Subtype /Link +/A << /S /GoTo /D (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) >> +>> endobj +2842 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 331.4782 194.0092 342.3822] +/Subtype /Link +/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> +>> endobj +2843 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 318.097 188.4803 329.001] +/Subtype /Link +/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> +>> endobj +2844 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [243.4737 318.097 268.161 329.001] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2845 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 278.7567 182.941 289.2871] +/Subtype /Link +/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> +>> endobj +2846 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.7567 278.7567 211.444 289.2871] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2847 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 238.6693 138.5977 249.5732] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2848 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 238.6693 214.2533 249.5732] +/Subtype /Link +/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> +>> endobj +2850 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 199.329 178.5273 209.8593] +/Subtype /Link +/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> +>> endobj +2851 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 159.2415 138.5977 170.1454] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2852 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 159.2415 205.5661 170.1454] +/Subtype /Link +/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> +>> endobj +2853 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 119.5276 187.9223 130.4316] +/Subtype /Link +/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> +>> endobj +2823 0 obj << +/D [2821 0 R /XYZ 90 757.9346 null] +>> endobj +1315 0 obj << +/D [2821 0 R /XYZ 90 739.9346 null] +>> endobj +154 0 obj << +/D [2821 0 R /XYZ 90 739.9346 null] +>> endobj +2824 0 obj << +/D [2821 0 R /XYZ 90 719.2952 null] +>> endobj +2828 0 obj << +/D [2821 0 R /XYZ 90 573.933 null] +>> endobj +2831 0 obj << +/D [2821 0 R /XYZ 90 449.444 null] +>> endobj +2832 0 obj << +/D [2821 0 R /XYZ 90 449.444 null] +>> endobj +2834 0 obj << +/D [2821 0 R /XYZ 90 434.0494 null] +>> endobj +2836 0 obj << +/D [2821 0 R /XYZ 90 421.0417 null] +>> endobj +2838 0 obj << +/D [2821 0 R /XYZ 90 408.2632 null] +>> endobj +2840 0 obj << +/D [2821 0 R /XYZ 90 350.858 null] +>> endobj +2841 0 obj << +/D [2821 0 R /XYZ 90 350.858 null] +>> endobj +2849 0 obj << +/D [2821 0 R /XYZ 90 218.4785 null] +>> endobj +2820 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2861 0 obj << +/Length 1851 +/Filter /FlateDecode +>> +stream +xÚ­YKsÛ6¾ëWè(ÍD(Þ$}k›G“I“4qOIÆCI´¥‰L*Çÿ¾  ‚yšÑ µÀ.öï@æ~džày$"”0.ç›ûžßÁçW3bþ^Áÿ+WàëÙo/i2OP"©œ_ß6#H‚%t~½ý¼ X.WúàEýú4^„uãïb[2Ý~^lêû,¯Òj_ä˯×of/®[ÅÆ.Á$Qj¿Ï>Åó-Ø÷f†Kb1€ŒH’ÐùýŒSf_³O³ÚqôM‡¾é ÂúçGJ„ v‚æéùIPƒèrE0Æ‹—u¾iÌïŸQÇUàKÊQSˆëÇ’àE±ßê±Ê%‰Ù©8ü¸Ùù­þø ÜõÅb4áó DâÄÄQýUޙΔ[ù•Û!Œk8®²¹&ò¦ +L`#}:ž62¡RÂ]¥Œ! š}¥_0fÚ‘³p„8Ä7"ÛütÊJp¡XdeëY‚‡&6 +b„˜#´" F” æÇéÏ" è]]šÌ}Øí7;òwŸtÃÑÞ¼W…~Ö'Óé¶0ÿ|¯³rŸP׋±@˜ÄÑ\r‚˜HX+´r¥ÂàÅ ŸÁX‚!F ¡æñA%XZ¦÷Y••§«®~‚)Š%½†´Ò¡%^¤QD˜8Ú.Ï.Q,$÷D+Õã +7¨D³ˆûü®cq,öyÕ Yª|µ~¬LðÊìXf§¶´›o…)Êjg„ìj—n· |šÌ˜µÜœÓn;œ,†“d"Y©‘d!Q)Hã ?Óûã!K“Õ%16žX‹Úäè±õ&‘S&–Íò¸”b6•,†Õ+æãj¥¦ô£)ýÏL¸óm ]Å’u´ûÁÊOÙŒÛñÃ.°$QI°8î+5¥?Méo’SÓh‰aÕiþ|ž©$Î÷çºI+ý<ìs“éœÅ~±¨.‡¶ôÎQÖšFI0Áõòü1»ÍÊ,ßd¦âþºVÐùþÝ'Ÿwÿ¾}kšõþxSo7 ˜ŠÅƒ‚SN =±2»/T…ê2EýˆÎ8’B\D§Sˆ~«ÔµÕ§ìØìRƒ[ .Hik sXß{,¥É„GFèYáF‡iCT)œ`V~åvèaÁ¸Ã,"áHpwLèò+*ö™DA‚{Š/ðßþ¨Öï>J¤–LP +(ƒ#.:"=Öé曡ktØÄÞ¤ðij­ý;Ë=\Ú§ª ²×åV¥So}\ïJ\½ðv_ŸT%Rª¾ìÕŠ¯l£>¬õSƒ—êcù;ôªvM%ÃWà8§Ž F9h˜òÕ8' ˆ—+†ÉâµéjMkg m3cP‘êíŒíì,9Wárço +Ù2­ ×=4|ÈôÏ‹ªëÈ>¼å4†zLâq¼u¥†ñ–sŒ„Oâf}úG¸Y`H?7kÅÜćSŒ8ŽÉøü[©øp*‹akáé£d-{:GϤ_7Ž‡¢ø¦ÞmùÔG4ìLH$™È¨2g':bcN´bþ*â»VÌä„f+jî¸ÀFòÄ׬܈…ãFxiÜÏT?Zf«>•eú¨›@8«tŸïó;Ó«q:æšØ*Ù–ØÂKƒÕg)Ñ—*BÂuÂg¿ºµê¡ùC‚$S“v«{SÔ‡m§@×Ù%…Ê$„O`:^¨®Ôp¡ÂîÁ†”]HŒÇT?™‡öãVìbb<ê 31žÐŒv!1öµ_@Œ'ìƽ˜û¡%ÆúƒÑZbÜÉ)‡&µ‹dì1G† >r ©C§xY+¿r;„©Ž;Èˈã8I:&t=e¥BÅ>¡1Ô9¾â3/ó¬ty™CŸï² +6Ïj•o¶ E£-å¢gX‰»ììýZ­{¤ÙÔ%ì*ªÃc¸ÞÈ7g`E¢‚!"_‘\©á ¶é0IͨªKe@>²(j?c]¨¾w¹iÅ,âÐØAiÄ©~´ˆíà,Ä0ÿ Œ5ä¨þ-äÀ‹–ŠÎRnŒÔ«#øbhh䶨¡Ì³A§>ZykQgâÔfg‰Ç:³dó¢ƒ +.'MèF»Ÿ|íàÓ„Á¸ãÓ¸Z|šÐŒökn(ý…7ÎAMp5•_]•†VÛeö¢Ó>ˆ©„ª; Ì/ÆT·Ã¦¶bÓ˜ê›0ˆ©â~Lõ? SÕ¾©>NžGÅ¢Xôk£†ïcœ®ßª-žÙÜŒtÝnuœ|ýë»: ÌýÂËu HTåôÞna0šH!ÿ×Ues×cu_ãíG€&E,n.±(tä€úÖåWYž•ieY‰-Ö¿mãB«Ú¼S¯_QvEÍ­,ÅÍ­ÚS5“ÚÂëÛõ£½èüùx——¶ê6µÇKÿÉësendstream +endobj +2860 0 obj << +/Type /Page +/Contents 2861 0 R +/Resources 2859 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2809 0 R +/Annots [ 2865 0 R 2866 0 R 2867 0 R 2869 0 R 2870 0 R 2871 0 R 2873 0 R 2874 0 R 2875 0 R 2877 0 R ] +>> endobj +2865 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.3331 702.4599 232.1263 713.05] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 599.8741 139.3246 622.1255] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.1901 599.8741 192.3555 622.1255] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2869 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.7449 518.2645 295.538 529.1536] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2870 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 360.3144 139.3246 382.5658] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2871 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.1901 360.3144 192.3555 382.5658] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2873 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 313.9634 157.1381 324.8426] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2874 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 199.7115 139.3246 221.9629] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2875 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.1901 199.7115 192.3555 221.9629] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2877 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 118.1118 157.1381 128.9909] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2862 0 obj << +/D [2860 0 R /XYZ 90 757.9346 null] +>> endobj +2863 0 obj << +/D [2860 0 R /XYZ 90 739.9346 null] +>> endobj +2857 0 obj << +/D [2860 0 R /XYZ 90 722.6705 null] +>> endobj +2864 0 obj << +/D [2860 0 R /XYZ 90 722.6705 null] +>> endobj +2856 0 obj << +/D [2860 0 R /XYZ 358.4819 555.6542 null] +>> endobj +2868 0 obj << +/D [2860 0 R /XYZ 90 536.7606 null] +>> endobj +2858 0 obj << +/D [2860 0 R /XYZ 90 349.9037 null] +>> endobj +2872 0 obj << +/D [2860 0 R /XYZ 90 333.1669 null] +>> endobj +2854 0 obj << +/D [2860 0 R /XYZ 278.4221 155.4916 null] +>> endobj +2876 0 obj << +/D [2860 0 R /XYZ 90 136.598 null] +>> endobj +2859 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2880 0 obj << +/Length 1378 +/Filter /FlateDecode +>> +stream +xÚ­XÝs›8÷_ÁÛÁL­Ó' ¼õ&¾N3=·{i;bË S)ÆMóßß +Iƾ»ŒÇH«ýÞý-Ãx{‘ˆd<ôVìÝÃò» ±ÛSØŸ¶ þXN~ÿ“JO"ÒÐ[nj!A‚ê-×_üL©Àþå|anʀľÚÙÏ€`_•Á·å•ÇqŒ°AŒ>Ep¤W'³e#Ûª&XH´ä“/ß°·¯&1 ï0ˆ“Ô{œpÊÜC6YL>7|ÌF}`ÈBNÁº˜0oÊBÉ©b0‰#p%ˆA‡K„1‹¼ˆ1„#ÌkÛæE¥.ºÖLQÄ(õÚ {bª¹¬%܇"ÂÄž›¼|H·ÎüÍ._Ui‘ë'îyöbÖ³¢ø¾5‹in–ªå*UæIf–“²L^ìñYúžþ³=øPl«XpÞü-Âßšµ÷Ÿ Q²^]f ¿ìÎo>|0ûu)HÞcß.ìKtU”©­ª+Æôïº5ÀÕ0„× à¶Ö®Mõ?´& ž<ÿÕHü¡¿JALýJŸ25üÑ\w·ãeÞ„~@ÃáqdûbBá£UOK#F¡9Œ:¨¡:%¿ÇMËÓÊbXv£rÜ|GJ|oÇü‡ž&G<†Óãæ;ªSò{ÜŒù&m!¡»ÒeˆÇáÙ~pô§ôèñÕz<«»U–Bé÷³€r ‹ãxÜ Õ ñ}nZ|]š`ƒpL`ô±ib—ê+Æ4OmOÒÞªÌ5Ks[öL†‡E¯dv³â¨i( +l›Þ¨Rå«z€׳ÅÇЈ°ÿ÷íl¾¼~?[´âTß,–ô³·!Ä_În/?ÎgÖüµ=wg›SãïÛäéi•d™Ú® =ὪQ-ªÓ€@0£0eò¨vE"€þ†Ôóm‘®»cï­ÃÍÚg¯’Ò0‡ÎÓ.b=í™™¼Ë L<{*€ûÈ‘ÔóO_KJQ¨Ut|ÌdÑÉð €Üˆ¥N+HViúþçÚ¹%æb§,¸Û \vX0p»O3´cÏâ9Í2%ÇünójW…êzbˆrj¢*C§ó:UëãAƒS«5´ÕHÐ`„eügbþ˜èù} 1¿!;óG´Çüò{ÜÆ1ÿPè˜B|ïÙ˜?n~ƒù'ä÷¸‰ùçú¡Áüzôøž‹ù£nØcþ¸ø>·WÁ|ÿæóWÂü›ùÍbvù:¨†>1D†<=ý®,Âÿõõ©þ‚ÃÂÞi€"»hV mÕ;•«2©œQ.2¹›+ý¦»³„Ú+¾ ì‚ÚPQŒí ¶ÑhïêHMð¡Ç.‹_/÷ª÷D6䟃͙žendstream +endobj +2879 0 obj << +/Type /Page +/Contents 2880 0 R +/Resources 2878 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2809 0 R +/Annots [ 2882 0 R 2883 0 R 2884 0 R 2885 0 R 2887 0 R 2888 0 R 2889 0 R ] +>> endobj +2882 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.7877 706.007 338.4298 716.9109] +/Subtype /Link +/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> +>> endobj +2883 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 619.5604 139.3246 641.8119] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2884 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.3134 619.5604 175.4788 641.8119] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.3443 619.5604 242.985 641.8119] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +2887 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 424.9723 139.3246 447.2237] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +2888 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.3134 424.9723 175.4788 447.2237] +/Subtype /Link +/A << /S /GoTo /D (a00047) >> +>> endobj +2889 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.3443 424.9723 242.985 447.2237] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +2881 0 obj << +/D [2879 0 R /XYZ 90 757.9346 null] +>> endobj +2855 0 obj << +/D [2879 0 R /XYZ 316.2991 559.1605 null] +>> endobj +2886 0 obj << +/D [2879 0 R /XYZ 90 542.4334 null] +>> endobj +2878 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2892 0 obj << +/Length 2408 +/Filter /FlateDecode +>> +stream +xÚ­ZMsã6½ûW¨j/rUŒÅ' ä¸Ojfk6Ù±o™”‹–hK»å%©ŒýïÓ $H€®Mù`Š|ì×è×h€È +ÃY)¼ÊEŽãÙjs¼Â«g¸ýó1oàùøÇýÕß?RµRHe4[Ý?u2‚%tu¿ýmM°¼¾¡ð^Ÿ?ý +—¯ ÂýÅ—Óö|(ûë§ÍùXVmÑîOÕõï÷Ÿ¯nï±ñK°ŒhÚÿ]ýö;^mÁ¿ÏW1%Åê;üÀˆ(EWÇ+N™ýq¸º»ú·³Ó?è^˜jž lº}„#¸Cm)´7ïÛ—! +!ãõÝ—{ÓÀÛ›c±?ô×MYmËZ7¨·D¢³±Ô†¨¼XBÄØúP¶`¡ÜšØ”ͦ޿ØÈ€!æ…\ÛÑþ©ÞÎý"Ê„Xßí/‡îš¯¿tþè»÷×L¬ë¢jžÀ«îÙ¯õ©=mNæù7,°n ü'ý¢éqÛòÆ´ÒNéÛoýí¯’Ô@÷Mÿ¿ÝÞ¦-ªmQ›W¾_¼.Þú§'í«gÃUmu u›úH‘®M­q¸Ã鈔^„!(ÝÿŽT_|ªÚ²®Ê9S9Ê(ç&<ÚI*غ1ñ¡‚®Ëk"Ö¯…½ÁÖݳK>ö÷Ì‹{°¢nûW s·0¨À”n¨îN×TÇ »ÙžF<ýÏ£EÓ¿²76u×!„¬°T£(õÊ÷þA„m§êYú$4Á:·a¯)tOó`W3ÕÉÜy,Kâ¾mÐúf¯Ûò‡þYÞ YÙ´åͤ:cˆQ¥:G?Bj7}\ä +’Ï×Ð÷M¿#œ!Î$¿ØÑdß(c.‚uÇ,ÎèP)^( +gÙˆ: è0ffÐÉ©3ëGõ³Á|õ}°ø”]íCsl_Ð.ðAdP¿d¢õ\!I2¦]@Jîƒ&B•#òFdü€+ë¥À+ ^f¼ó +Ε\9˜öòR8we¡‹ewmâ†Bùz6!8üÏYÜ5ã™NG%Õ|nq +@ÉS¹eaéÜò Ær+ÎërkÀ›È­ó’ÜŠûØu¹µ™Ê-Nq¢õ[TÈw畈äy*µ j˜Y¥.q—ªŒG~>Å }(‘d¡‡ÚÍ.eÒŒK†¤”ý°ö¡h‹Þ›»¶>oÚs}Mäz²4ÂìZ%òÙôõ‘ôu°dúF/é›àµé;àmºÖ†é«`†Çäˆ9’¾Ÿò!°kÓ÷¦'mØ$Àà…D,j‚=RRr!{ÑÍ4jReHŒñy•=@Le K«côTŽó:•}Þ¿Ù c@Î3”ÓœŒÈç…¶ø”][n¿~}øåŸcG(xå‚Ä£àP zèøp y0 Çs•…)†§Ë +‹Ž”>‹Ò¼·u}Ía–mFÓê||´#k»+ÌÌ®Ù?W{-Ri§ŽvêWÝ”C›LÓ£¥’é!ùKFc–Ø#½O'ºƒ%Ý7Iô¯Môo4ÑáM>"&z‡O¹Øu‰~wû¯Ašc†2Ni<• ­õ3Û“þ>át½Ù˜‹§út4—Íùñ?å¦5¿ŽÍsÿI™2¥>QÞoÄÞoëCYé×áÎxX_á#Q†é|Úy€XÚYX:íbŒ^ÚÅy]Úù¼éú:$_P_nvµŸî~y¨¹@CÀ¢RÌyåB€_q1%2ã€!l^dÙÂÒ"Ç=‘ã¼NdŸwÈò%"ÇÝìZ‘7õ”Ⱦéãí7 ¯–XªQóAâí”Ä”†ÎÏ“|@Lb KKcô$Žó:‰}ÞÈ—Hw#°k%~)ëý)8i%”'‚`Q)v%PŽÙˆ¿ÒrJh‚ÃļÐ &´…¥…Ž1zBÇyÐ>ï¡äK„Ž»صBÓ°+S”3Åí·¨1ôy(Ó#büÊè„ÆTIÀDv|@DcKje¼hœàµxÓÉhœp#°k5f³ÇÛï4N[Ä 1›ÒXêq;²|áb[XZ㣧qœ×iìó.Ðx@¾Dã¸]«1Ÿ×8Úþ‹Æqb§±O ó)s=pgóßt> ¦±…¥5Ž1zÇyÆ>ïäK4Ž»ص‹y£í¿h'vûÄ ±˜Úɹ‘Ýmèô“´çj£W¦V´(Qˆ(>?€û€XRXX:)bŒ^RÄy]Rø¼èEäÓ>œ Á”U"FÜ‘•KƒOyØu+—ÛÓDjæe,§‰XTŠ\Dh®F¡‡oìs¥×ìæôfW˜%¢²®OõÔ—·]!¢’³…‹é>:²èå`Ú½ŸŠÃá±ØhþÛ;õd’s¼ôe7K7ð†mÊ÷Ýè,ªp—´­õfTQ5Ç}Ó8‹ÖN'Hl³ +Bˆ(O-ø-\Ó«Ï”‹Ô'¬ƒ%{o0Òk¼¶× x“½fȽ ×$¼ìº^³¯öíT5Bå‰XTŠª)t‘qèá– ÃÌÒÉa¦Ì³ùOZ“ÜÂÒ’Ç=Éã¼NrŸ7-ù€{‰äq/»NòâåEwñp“G"ÌI–ˆ‚E¥øF‚Q6ŠþÕÌy>?<ú€˜ê–V=Æè©çuªû¼iÕÜKT{ØuªoN•ž¾=Ÿëp”T’úX<•òA)Ĥ¢#@ùn\ìfP„ûËçæR,³‘Ï&ŽtA»$¼Õc»SÓVűü¡iü0Œg)NÉãÌ`š²îOñDnÂaìÙÂÛGGnë6/^ÊM·µyŽÀ—-|íªÝÂ*ìy&›øÐ sUªOìý%C/%`L&‡^ K÷HÏ`¬GÆy]ôy½™åk›‘ãÑK:rb¾kxÊ›±ÕËŽ{YmÃmX&y<•à¦ $£jDï‘™Ââ=²ß£¢j=c‘¨<{‡Å~³+bªÆ2mǶ»fó69C‚w8éí¾Í[±,O4»m¼QJpž#œé"½,/>‘¡Ý®›ì!˜òL¡> endobj +2896 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 575.9645 157.9746 586.8684] +/Subtype /Link +/A << /S /GoTo /D (a00105) >> +>> endobj +2897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 539.0153 157.4166 549.9192] +/Subtype /Link +/A << /S /GoTo /D (a00104) >> +>> endobj +2899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 459.0226 183.1495 468.8008] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +2902 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 404.9565 217.4713 414.8842] +/Subtype /Link +/A << /S /GoTo /D (a00161_g029256bc17a12e1e86781887e11c0c7d) >> +>> endobj +2904 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.6302 367.0311 204.6385 377.935] +/Subtype /Link +/A << /S /GoTo /D (a00161_gcff75c8c930abd6ff168e85373a4eb92) >> +>> endobj +2906 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 344.0533 176.5052 353.981] +/Subtype /Link +/A << /S /GoTo /D (a00161_g3212e70c55244608ac16316888c354f0) >> +>> endobj +2908 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 332.0544 176.4952 341.9821] +/Subtype /Link +/A << /S /GoTo /D (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +2910 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 319.0793 194.2087 329.9832] +/Subtype /Link +/A << /S /GoTo /D (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) >> +>> endobj +2912 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 308.0567 173.7357 317.9843] +/Subtype /Link +/A << /S /GoTo /D (a00161_g34b924954ba5707d536df28d71a80d39) >> +>> endobj +2914 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 296.0578 173.7357 305.9855] +/Subtype /Link +/A << /S /GoTo /D (a00161_g9e97c58fe35f750ad192774be9408ac8) >> +>> endobj +2916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 284.0589 173.7357 293.9866] +/Subtype /Link +/A << /S /GoTo /D (a00161_g28cf9765e4b57451af559ab988ad7160) >> +>> endobj +2918 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 272.06 173.7357 281.9877] +/Subtype /Link +/A << /S /GoTo /D (a00161_g17ccd786400fd08b941e11046df1668f) >> +>> endobj +2920 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 216.0414 179.6335 226.9453] +/Subtype /Link +/A << /S /GoTo /D (a00161_gb1fc692a2700b7a51517724364683f67) >> +>> endobj +2922 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 179.0922 173.556 189.9961] +/Subtype /Link +/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> +>> endobj +2924 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 167.0933 189.0379 177.9973] +/Subtype /Link +/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> +>> endobj +2925 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 155.0945 197.8948 165.9984] +/Subtype /Link +/A << /S /GoTo /D (a00161_g37e3103b9591790d484a450525739661) >> +>> endobj +2926 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4857 118.1453 216.0979 129.0492] +/Subtype /Link +/A << /S /GoTo /D (a00161_gf0349a8481565e80f55a751e2b408d6d) >> +>> endobj +2927 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.0722 118.1453 470.7595 129.0492] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2893 0 obj << +/D [2891 0 R /XYZ 90 757.9346 null] +>> endobj +1316 0 obj << +/D [2891 0 R /XYZ 90 739.9346 null] +>> endobj +158 0 obj << +/D [2891 0 R /XYZ 90 739.9346 null] +>> endobj +2894 0 obj << +/D [2891 0 R /XYZ 90 719.4886 null] +>> endobj +2895 0 obj << +/D [2891 0 R /XYZ 90 593.9619 null] +>> endobj +2898 0 obj << +/D [2891 0 R /XYZ 90 477.02 null] +>> endobj +2900 0 obj << +/D [2891 0 R /XYZ 90 421.9777 null] +>> endobj +2901 0 obj << +/D [2891 0 R /XYZ 90 421.9777 null] +>> endobj +2903 0 obj << +/D [2891 0 R /XYZ 90 385.1719 null] +>> endobj +2905 0 obj << +/D [2891 0 R /XYZ 90 361.2178 null] +>> endobj +2907 0 obj << +/D [2891 0 R /XYZ 90 348.0384 null] +>> endobj +2909 0 obj << +/D [2891 0 R /XYZ 90 336.0395 null] +>> endobj +2911 0 obj << +/D [2891 0 R /XYZ 90 323.0643 null] +>> endobj +2913 0 obj << +/D [2891 0 R /XYZ 90 312.0417 null] +>> endobj +2915 0 obj << +/D [2891 0 R /XYZ 90 300.0428 null] +>> endobj +2917 0 obj << +/D [2891 0 R /XYZ 90 288.044 null] +>> endobj +2919 0 obj << +/D [2891 0 R /XYZ 90 234.0388 null] +>> endobj +2921 0 obj << +/D [2891 0 R /XYZ 90 197.233 null] +>> endobj +2923 0 obj << +/D [2891 0 R /XYZ 90 183.0773 null] +>> endobj +2890 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2933 0 obj << +/Length 1783 +/Filter /FlateDecode +>> +stream +xÚµYMsÛ6½ëWè(ÍD(¾IøÖ:Nš¤I\[=%MÑ[‰TIª‰ÿ}"@EÆÎd|0E>âí¾v ™bø#S…§b\NãÝO×pûõ„˜Ç x¾h~[N~yEÕT!%©œ.Ž#H‚%tº\}šIDñ|AžÝ¾_^×WW‹]”nëë2ÉVI×J 5#XÍ¿,ßN®– §1I0I4ã¿“O_ðt¦½`ÄT(¦_áFD):ÝM8eöÇvr;ù³§~p|¡Ï3AX¿k„ %µ¾Qp58¹†è|A0ƳW‡,®Ò<«½z™Ç‡]’UÑñxÔQ d¤1®Ú#!bÆúoNð,OWF¡]µ¿‹óì3Æt}(æ$œ%õ“ÏXàx5á-"$b‚À¤ à]V£À“*@|©!ÛM^VY´KzÌåIª„A¾¨Ù+}v*äì äeRÀpb–=ì TÀeØŒ&ˆ±hA%Jd`•%Gôí>‰S­\¬‡¬-²îŒlñ„ߊ‚4¥ @ +΃/7iYÃœèÛ»‡21ÃTyýÿFÂj“tmÙå«ÃÖÜýšV›'ÛÜŒÙDôø+èyŒºË-“0˜‚¬óþµb1‹ÈÏ¡Bx‰…pë™~­'MT€QUR”]v‚) +%}ôž سÙg( L4cz³Ý±@@’àlЋñýgΈÑÖPõ”ù¾ØÞ\é$\‡yØoæIŸlH ó—¤ÃÎ(â³v‹òÙ]™$N¤Ëþkíý>O³ÊNp»ˆ¢ú_Ü?VF®¨("³¸‹d_$PUª4[wDµšF«@Ê3ÒŸ_aÖ€ûÄ[Í«:A,¸qfA¡dÁѾ¼L4*KO "ªêÿÛ43CQ"]sô+6 è +€âÞt“<$E’ʼnM9éþ.Ýk¡dìõb{œK1Cý5BD”»V ¢çkÐ*ÏZ…ç•é:³ îT†Ü©(”ÄV‚¤(òÞ Of8ÉðD…(T”»µó2Únï£øŸ¾D\m¬Ò6%Ç€¶6Ý$™›\“VcRQVîÒ²ôÒºÖ¡ 6Xv‡²rgNºÛoÝ X[î;³°]Nn@E)G +ÇÙŒÎC„’áŒÞÏè\º¼'eôúŒÕµ£?aY”3·vBïÀé ó È÷ÞMT T¸¬M>Ï»{›'¼”RÛVGþ¡3åNò8֙ĴWö®ŽïÝÕÍÍÝÇwçCK`õ2¦FbÛB Ô ¡iŸ®¾Ez¦…u€š#B_ˆëgúN±6nœ¨›pöXÈzÃnaÇ:uLŽ~âàÃÒ4¨1fo´V¬û.¯‰öh—ý¼?f‡7n£ÀƳ!„2¦€E1{£ifSô”£UôšÂÔIpÇJí÷:ë2¢“ý`u +ÚÕ‰™êÔ*>’×Åçxu]o)ëŸC¤ D‚5¶G‘„ƒòïÛ SRà°µ3’áì %¨Û²ð;í¶(Ž{¡rü$Ƈ"ßõp¸¤â'q–‡û¿“¸êë 1‡ägñîÊuŸ«Iœ8{š_Æ 2ÎW[Ú¿h¿à§_\M ò®ò³‹D„Õ1ÁÛ¤”OìS"É ¸1h³MúN.¨B°úÅH«¦‚ã)‰»OìÕm·ÎV5r©jmÔùªF•DB<±eé3` gñ,éoZØ)§8ìDÀ¾ :ÊA÷TÿNÞ†´É¹.kÓµ´Þá]Q‘ÄI:§bæìˆüN§?¤'I%Ì6X_#Ö6lHJ ;%KWJºÄt„Õ¢|ÖŽ” N:¬Ïòòò¢_Óò¹¢ +¸ XŒ‰Ú‚ ‰jaízà6ÕFY(Fx-ÊçíôV’² +]ÞgÈÚœ$?KB&¡Ô`6&a 6$¡…uÊ›[H$¤[1Âl@>±«!'ˆ’¹Ä†Ö‚gJ)$äcÂ4 !YjP«öºÓ +ŠÅŸté:ëJ†[-ºFŠ(®ÑÖŸZ;˜WÑ:Ps*5vÒÖ† )aan­uçG€°`#ÄäóvæEXŸX:¼(À¾¶çÌg¦‡¯Òt!Ì O>ëbì‡Ïº$f¦Ù¯¢*¹¸Ðy +úC©èì÷¥þDòñíþ¹© ÊÜ“™}*˜gþúãóòõíÇËwwo>¼YÎ^wƒG³Ž…H³ý²ã›•ö¢µ×1OªüEç˜^ÕÅy–ÞÙu?~hã‚ÞÏqBL¤?ô]ìøM/„WtcÜê¡$tp,´Ÿ½ŒÚß×I–QsreãüÞ^¼ÕÅì`~jþã Ê.ì§@Š±9î|ÐåÏu4‡Þaw×ø2ÿö¸ö׈þh×£Ïÿ•‰«”endstream +endobj +2932 0 obj << +/Type /Page +/Contents 2933 0 R +/Resources 2931 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2942 0 R +/Annots [ 2938 0 R 2939 0 R 2941 0 R ] +>> endobj +2938 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 413.0808 135.0008 436.0496] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +2939 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.8662 413.0808 183.7077 436.0496] +/Subtype /Link +/A << /S /GoTo /D (a00039) >> +>> endobj +2941 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.345 341.4685 157.1381 352.3576] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +2934 0 obj << +/D [2932 0 R /XYZ 90 757.9346 null] +>> endobj +2935 0 obj << +/D [2932 0 R /XYZ 90 739.9346 null] +>> endobj +2929 0 obj << +/D [2932 0 R /XYZ 90 723.1038 null] +>> endobj +2936 0 obj << +/D [2932 0 R /XYZ 90 723.1038 null] +>> endobj +2928 0 obj << +/D [2932 0 R /XYZ 206.0041 564.8934 null] +>> endobj +2937 0 obj << +/D [2932 0 R /XYZ 90 548.1663 null] +>> endobj +2930 0 obj << +/D [2932 0 R /XYZ 212.5591 388.6469 null] +>> endobj +2940 0 obj << +/D [2932 0 R /XYZ 90 371.9198 null] +>> endobj +2931 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2945 0 obj << +/Length 2274 +/Filter /FlateDecode +>> +stream +xÚ­›]O$7†ïù­ä¦‘Çß¹X‰˜,#ÈÐQ.²b¡g‰šÝÌ¿ÏqUÙm—ÝÇN6i¦ÞöûÖyŽÝT±…?láèÂ(Cœzqóe.>Áÿ°Ç¦oÀ÷RÁ?V{ß½ånáˆÓ\/V‡4#Š3¾XÝþ²dŒîpx]¾ž\ÀKE—ŒÐñÅûÇÛ×ûõøúèñæõËúas½¹{|Øÿuõnïx§\Jhæmÿ³÷˯tq ùÞíQ"œU‹ÿÁ”0çøâËžä"|q¿w¹÷cgüÆð†Úå)&ê×Ç$ÿáá9\¯¯OÎö¥t¹Úw|¹¾XoÆ+zY?ï3ºü¯ÿ ^Â%c1â”Æ‚jú¡¸ÝŽEÂhGëÍõÝýúvªÎúåæùî)ÔIÑý8>¡ÇY}žj+¾ÉcA$å#)µ$;r A,§nï-äx© ÑÌÍÔîVIc)ÓÔŒj"…•Ûq¼Ù¿8Ws/F}•”À£ªå 4ÕzæK)‡^œ; è#îæÎþ[ÏŸ&͇4Cз2ãú #¦[ò¹ˆ¡%1 ð¢ð3DA_À*aRM¥X†0èèM¡Æns*º°SË!'ô'5Î.¢Ìç¼ü¼¾¿ßv“ïsÆÆVʱÊI˜kšò0N””jgO) «‹>Å{*Êš=•ˆôTÃ7ôTî‹÷TîÜÑS ŸiOÝÔzŠiX¦Ñ(Mœ_GÿPO)m–7z*ÊþLOA0Dü5=%\œ´­ž +²vO%b=…ûÆžÊ|=•9÷ôž¡×gxñ¬*«0‘œ6._:•¡£XgKqh gL«¥‚lh©»/Oa{1DþÛøúóúúúkx=•“)¤Õ˜õmjÿšVƒuT:)Z­díVKÄZ ÷­–ù6Z-sîi5=>›'â–3ß%h9¢ª‘ƒN`¹SyIkÀaiäN¹ÝÀ<ÈÚÀ1Ç8À3óàxŒbÜøÙOï=óË’8¬ 2­\ø¤já–îÃå9˜®—œÅž0àAÖŽ9&Àqß<õíž™÷Çcãú?\\^\¼9<=-0ÃJfñ*DUÞ[>«~øarýôts Ç¢ +tØ-qª‘Yž0èAÖ†Ž9&Ðqß=õ퀞™÷@Çcãú'—çWE±™QDQ몖³1þ@=+ý^× Ã©Bû]îNȉƒdmȘc÷SßÈ™ydøíØùû‹6ç„iañRDU#ç’h%Užá›ìa€átÆ’w N¬Ô¬¼úï•{ÞáÇ4Ѩø¦vûÿMŒ‘TO·³³±Í÷\~}Zß®?Öî—q°¤rwÃ%ßGú-¨ší†Ùm» 7 Í–šnÆ+,;ÍnTn‹ôÙ¨nøÏÆlß å Ñ!Ïa… ž?žSÓ ?ñ££,Íøz÷tµ¹yò¿db^mÊ;:Ž[œ’DÎÓƒsôÌeþ¯§W†þ³ð&Dzg˜&ÎÀD¦ ¼Ñ?¨bükÆ»õX?¬Ÿáú¦GIÂÃ7Ó‹wþî××é Ƨé÷\|ϧu ~z|õqŸ«åãóìù’øDÏ¿¿†§y~ûúi]<Çã° Ñ’*ý¥Øìòendstream +endobj +2944 0 obj << +/Type /Page +/Contents 2945 0 R +/Resources 2943 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2942 0 R +/Annots [ 2949 0 R 2950 0 R 2951 0 R 2952 0 R 2954 0 R 2957 0 R 2959 0 R 2961 0 R 2963 0 R 2965 0 R 2967 0 R 2969 0 R 2971 0 R 2973 0 R 2975 0 R 2977 0 R 2979 0 R 2981 0 R 2983 0 R 2985 0 R 2987 0 R 2989 0 R 2991 0 R 2994 0 R 2995 0 R ] +>> endobj +2949 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 618.5198 165.7154 627.3665] +/Subtype /Link +/A << /S /GoTo /D (a00109) >> +>> endobj +2950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 580.4794 165.1575 589.326] +/Subtype /Link +/A << /S /GoTo /D (a00108) >> +>> endobj +2951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 542.439 157.4166 551.2856] +/Subtype /Link +/A << /S /GoTo /D (a00107) >> +>> endobj +2952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 504.3985 156.8586 513.2452] +/Subtype /Link +/A << /S /GoTo /D (a00106) >> +>> endobj +2954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 421.7425 190.8904 431.6702] +/Subtype /Link +/A << /S /GoTo /D (a00086) >> +>> endobj +2957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 365.6635 271.1301 375.5912] +/Subtype /Link +/A << /S /GoTo /D (a00162_g26440a35353cb457747a4cea372c62e9) >> +>> endobj +2959 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 353.119 280.5446 363.0467] +/Subtype /Link +/A << /S /GoTo /D (a00162_g30fe27cba3c14ae7f9a7f118144af43a) >> +>> endobj +2961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 339.5983 213.038 350.5022] +/Subtype /Link +/A << /S /GoTo /D (a00162_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +2963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 328.03 176.5052 337.9577] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3212e70c55244608ac16316888c354f0) >> +>> endobj +2965 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 315.4855 176.4952 325.4132] +/Subtype /Link +/A << /S /GoTo /D (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +2967 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 302.941 224.8339 312.8687] +/Subtype /Link +/A << /S /GoTo /D (a00162_ge429c985be88ed048f382511c9ff00de) >> +>> endobj +2969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 290.3965 198.4231 300.3242] +/Subtype /Link +/A << /S /GoTo /D (a00162_g19709735f29dafeabb91e0882231f9f1) >> +>> endobj +2971 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 277.8521 206.5625 287.7797] +/Subtype /Link +/A << /S /GoTo /D (a00162_g7e904ab59f7ee134cf3218a8219e7e29) >> +>> endobj +2973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 265.3075 211.4442 275.2352] +/Subtype /Link +/A << /S /GoTo /D (a00162_g5025948dd998f65a13a375a37aa5edf5) >> +>> endobj +2975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 252.763 196.052 262.6907] +/Subtype /Link +/A << /S /GoTo /D (a00162_gbfc1d8d15852318927cda30e1bc0470a) >> +>> endobj +2977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 240.2185 209.3322 250.1462] +/Subtype /Link +/A << /S /GoTo /D (a00162_gaaaaf66ea67900c36d01136d5bad1168) >> +>> endobj +2979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 227.6741 213.2175 237.6017] +/Subtype /Link +/A << /S /GoTo /D (a00162_g57aca709a33690cd4fb73fe199fa1bdd) >> +>> endobj +2981 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 215.1295 207.0906 225.0572] +/Subtype /Link +/A << /S /GoTo /D (a00162_g8b600918f84783490fd791ce773175ab) >> +>> endobj +2983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 202.585 215.23 212.5127] +/Subtype /Link +/A << /S /GoTo /D (a00162_g6b2d00412304e2d95e7b853cce5858b0) >> +>> endobj +2985 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 190.0406 220.1117 199.9682] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3318dec654781e9d6d8ec873636660c6) >> +>> endobj +2987 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 177.496 204.7195 187.4237] +/Subtype /Link +/A << /S /GoTo /D (a00162_gf784a76fe619452eddf87e6376a4bf9d) >> +>> endobj +2989 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 164.9515 217.9996 174.8792] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3a4852e2372e34e1c0142d1147fbe027) >> +>> endobj +2991 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 152.4071 223.1601 162.3347] +/Subtype /Link +/A << /S /GoTo /D (a00162_gaa60ca995565b799bb958c806e933665) >> +>> endobj +2994 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 95.3518 198.6315 106.2557] +/Subtype /Link +/A << /S /GoTo /D (a00086) >> +>> endobj +2995 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.1296 95.3518 276.389 106.2557] +/Subtype /Link +/A << /S /GoTo /D (a00162_g4647b76d0ef50a5305505041f5775a37) >> +>> endobj +2946 0 obj << +/D [2944 0 R /XYZ 90 757.9346 null] +>> endobj +1317 0 obj << +/D [2944 0 R /XYZ 90 739.9346 null] +>> endobj +162 0 obj << +/D [2944 0 R /XYZ 90 739.9346 null] +>> endobj +2947 0 obj << +/D [2944 0 R /XYZ 90 719.4886 null] +>> endobj +2948 0 obj << +/D [2944 0 R /XYZ 90 635.0055 null] +>> endobj +2953 0 obj << +/D [2944 0 R /XYZ 90 439.3093 null] +>> endobj +2955 0 obj << +/D [2944 0 R /XYZ 90 383.2303 null] +>> endobj +2956 0 obj << +/D [2944 0 R /XYZ 90 383.2303 null] +>> endobj +2958 0 obj << +/D [2944 0 R /XYZ 90 369.6486 null] +>> endobj +2960 0 obj << +/D [2944 0 R /XYZ 90 357.1041 null] +>> endobj +2962 0 obj << +/D [2944 0 R /XYZ 90 343.5833 null] +>> endobj +2964 0 obj << +/D [2944 0 R /XYZ 90 332.0151 null] +>> endobj +2966 0 obj << +/D [2944 0 R /XYZ 90 319.4706 null] +>> endobj +2968 0 obj << +/D [2944 0 R /XYZ 90 306.9261 null] +>> endobj +2970 0 obj << +/D [2944 0 R /XYZ 90 294.3816 null] +>> endobj +2972 0 obj << +/D [2944 0 R /XYZ 90 281.8371 null] +>> endobj +2974 0 obj << +/D [2944 0 R /XYZ 90 269.2926 null] +>> endobj +2976 0 obj << +/D [2944 0 R /XYZ 90 256.7481 null] +>> endobj +2978 0 obj << +/D [2944 0 R /XYZ 90 244.2036 null] +>> endobj +2980 0 obj << +/D [2944 0 R /XYZ 90 231.6591 null] +>> endobj +2982 0 obj << +/D [2944 0 R /XYZ 90 219.1146 null] +>> endobj +2984 0 obj << +/D [2944 0 R /XYZ 90 206.5701 null] +>> endobj +2986 0 obj << +/D [2944 0 R /XYZ 90 194.0256 null] +>> endobj +2988 0 obj << +/D [2944 0 R /XYZ 90 181.4811 null] +>> endobj +2990 0 obj << +/D [2944 0 R /XYZ 90 168.9366 null] +>> endobj +2992 0 obj << +/D [2944 0 R /XYZ 90 111.6113 null] +>> endobj +2993 0 obj << +/D [2944 0 R /XYZ 90 111.6113 null] +>> endobj +2943 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F11 705 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2998 0 obj << +/Length 1852 +/Filter /FlateDecode +>> +stream +xÚ­ZÛŽÛ6}÷WøѺ ‡wå±Í¥ Rt“¸OI(^íÚ¨-o|é&ýú%R¦.&µè"@Ö–Žf†3g/2L)þƒiF§Zj’q¡¦Ëí„Nïðòë ¸ÛWxÿ*üº˜<{ŲiF2ÅÔtq[YP@$6]Ü|š)Â`~Å$-æ››²8ÖßÅ~töý?~Y¼ +j• +}ÙGÀ^¼\4¸ø$W`ÝŸ|úB§7çÛ %<3rú€_(,cÓíD0î¿l&'ï;õê¡aJàÃã ™”Ì”á¸u=ÎW§ry\ïÊÃPÈT# ¿œÒP»âAJ*"¸g;ÖágÆd×P|ŠI÷Ø R~AŒ*ÕöûÏœÑÙn}ÓóÍ ;¾í­ýÃ|£ðøT=»6ŠcE¤›¯ùýý2ßlzÁd’hÃD"• +!3„iPI}2ðóW:ÀÊÁŇ€HáX²ðQçÂ'üú·ü& ßö=¢ð‰(zvm‡U±Ù|ý~Z{qhZÃU"•ò®ÑT°Nî±æËU^©Õ³W ‚CiàÚi×gJy jYÅ|Êcú¤d(ôj€P.[ò4PÏ|¢«¡H:5èT‰j((STgælÔzoSX ñqU8E¶¹%CÒÍ(ÉEŒ ì2ñQ\•/A|K?0#~ÜoCüÐošø-ßcˆ¢g÷Lüûýn{ߧ¾ÑDdH¾x<*åßàg#ºÙ +ês‡©‡mÁ Sht\èXx˜áz¿.]äõŸûý\ÈY•àº1vC R|X—7»‡¹³Ë ÃáT˜G4Ld¦€Œ˜LèTÃxXºaƒ±†‰ûm&ô›n˜–ï1 ¢g÷Ü0»Óñþ4Ð0‚ Â³D<*åß(Û'Y'ûOÙ0‡ã~©™wÁ&ψT ~¤MmAŠ3_ÆFvàk@‡î? h]Þ=IïÉLà.Óôž4ŒK­Î=*Ùy¹HãÅú¾ &Û®åxD×ÅCèZ —åër`}fpÇE©ŠßƒÎñ¦Îp‹ÙJzzA.UF40s¹Ô VkK;æ1¨vÜoSîÐoºÞ-ßc +¢g÷,³ƒ׌P +&‘JyÇ…;JG7÷‰š7z %áée1 Ñ5k`6’7˜u¾Yÿ[V)¸8å~Ë—6Ì¿¯Šòæ2—‘`RgO³C8ƒƒÊR;Ä–ärh0Âå„_Ïå–ß$—Û¾Gp9EÏn¨ÄCë]ÈD–H‚G¥Ü ÊÈŽûäzׂҠ˜¨Ùô[¾Ù.€‡UQ^–¦Ûý®q‘ÌD]7'’ eBŠjàr(¶.;\ ¶dÙ QÑe7š•rÞ³f×ôÂIÑÙ`œL^uïEbÄ,;=ò¦Ì¥c€®?ìn=ÿ)Û´¼ìP¸6þ¡¸-öE¹ôdúæhn’l/Ù"Ã=ŠkMµ +{”E{ÔjÓ¤Ô¸¶¼è ÊœQš\Õ´Ôx FA‰ :'Úºà®NöEK¨ +×ûÑÒÚU‡áV†ÙúY°õ•e #u`@E`öú¯7õµgÓ~S‰Ù–ö-eíe•—AÔ`CìJQõ}•|…‹ µÉàeeUÓ 0‚ÝisÓ ±Òú:;^ŒœžõH4¼H^ yy͉–ÔÄ5(D]Ö [SMkj^[.æû|[à #B4ä`6tè~ -‚6RÓÀ:Tm !À@ÅSРrÐÉq¶“sèzáKâchM!½z^®ÇU€ä‰"A‘IŠë ÷î*=OD?zšèÅ78KxÔ¸I"–˜ó÷ܵ58CbŒ£ö¨‚ÓÇ΢=C8¹øøûËwï¾^˜ :ûóë…=ât§¾ ŸÂ÷@­Ù£û£ ôàÏ8(&”Tÿë'Õ&ÍžÖg! É4.õÝ/$\v°¯‹²ØçG/d>øo­ÄžÜ`î/}ÎøsæòË(UNöç WænéuzsíЄ¶UòÅîÇÏ»¢ì¦Çž· äç?⡽Eendstream +endobj +2997 0 obj << +/Type /Page +/Contents 2998 0 R +/Resources 2996 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2942 0 R +/Annots [ 3002 0 R 3004 0 R 3005 0 R 3006 0 R 3008 0 R 3009 0 R 3010 0 R 3011 0 R 3015 0 R 3018 0 R ] +>> endobj +3002 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 704.6952 196.7787 715.5991] +/Subtype /Link +/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> +>> endobj +3004 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 692.285 175.2098 703.189] +/Subtype /Link +/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> +>> endobj +3005 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 654.5133 188.49 665.4173] +/Subtype /Link +/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> +>> endobj +3006 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 616.7416 185.1725 627.6455] +/Subtype /Link +/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> +>> endobj +3008 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 579.3435 181.2968 589.8738] +/Subtype /Link +/A << /S /GoTo /D (a00162_g82ff99d50221f7c17df57dc6092ffc97) >> +>> endobj +3009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 566.9333 172.998 577.4637] +/Subtype /Link +/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> +>> endobj +3010 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 529.1616 176.8634 539.692] +/Subtype /Link +/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> +>> endobj +3011 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 491.0163 180.1912 501.9203] +/Subtype /Link +/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> +>> endobj +3015 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 334.2427 142.7416 355.1542] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +3018 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 137.7572 142.7416 158.6686] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +2999 0 obj << +/D [2997 0 R /XYZ 90 757.9346 null] +>> endobj +3000 0 obj << +/D [2997 0 R /XYZ 90 723.1038 null] +>> endobj +3001 0 obj << +/D [2997 0 R /XYZ 90 723.1038 null] +>> endobj +3003 0 obj << +/D [2997 0 R /XYZ 90 708.6802 null] +>> endobj +3007 0 obj << +/D [2997 0 R /XYZ 90 597.5219 null] +>> endobj +3012 0 obj << +/D [2997 0 R /XYZ 90 454.7247 null] +>> endobj +3013 0 obj << +/D [2997 0 R /XYZ 90 428.2397 null] +>> endobj +3014 0 obj << +/D [2997 0 R /XYZ 90 428.2397 null] +>> endobj +3016 0 obj << +/D [2997 0 R /XYZ 204.8181 294.2849 null] +>> endobj +3017 0 obj << +/D [2997 0 R /XYZ 90 278.0449 null] +>> endobj +3019 0 obj << +/D [2997 0 R /XYZ 295.0094 96.348 null] +>> endobj +2996 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3024 0 obj << +/Length 1356 +/Filter /FlateDecode +>> +stream +xÚµXKsâ8¾ó+|4U‹¢ÖÃwB²I‘Ç&Ìif*e@jÀfÙLþýH–ll,RÉTÈr»¿îV݃å8!v|î£2Ï™®{Øy‘ÛW=0¯òý *ð÷¸wvIB'D¡GÍ[±b€ <Ò]¬ªRíÅŠÉ‚K°wuj›§a‰½ã”bõ$«Y@}„9…î”R–Ô+A˜Ê©!—]ÇvjQ9l1k="êäpd–ªJµ•õÒ£>œØOº ßÝOšZûI)vZ?éŒÎ¾ŸohûŒ~ô³úÉìËXÎ2EÇ8ÄøPSáM%W¹ï'…HKÇõúþ´ÿ¸«¤Z#ûÅü“f­Ëó4‰³}5~]ˆ¸V{åÉæõ±è¹WL&#ì+¶U©v&‡˜b{œÉ]ÐïfrÓB+“K±Ó˜Ü=“€7´Y™ÌÇhHÚ©œ'BƒÈÔJäêåÑéžþŽFÏjj¼¿}÷}æÚù¨›I­ä0Õõ)<ËÿïÕû5‡Ws€€ùÖC,÷>tk—_;ò µT—#¤Ou–”È™<ÂÂåÙ•ˆEe…cř݋uY³‹‹s3¿øœÐsb.(ejx†ðŠÏIj¶ÆMfµ‹ä×Û‹hÜ_ª‹EK”~/² ]endstream +endobj +3023 0 obj << +/Type /Page +/Contents 3024 0 R +/Resources 3022 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2942 0 R +/Annots [ 3027 0 R 3029 0 R 3031 0 R ] +>> endobj +3027 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 583.7986 142.7416 604.7101] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +3029 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 371.5861 142.7416 392.4976] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +3031 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 198.9704 142.7416 219.8819] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +3025 0 obj << +/D [3023 0 R /XYZ 90 757.9346 null] +>> endobj +3026 0 obj << +/D [3023 0 R /XYZ 90 739.9346 null] +>> endobj +3020 0 obj << +/D [3023 0 R /XYZ 200.3847 522.0587 null] +>> endobj +3028 0 obj << +/D [3023 0 R /XYZ 90 505.3316 null] +>> endobj +3021 0 obj << +/D [3023 0 R /XYZ 273.161 309.8462 null] +>> endobj +3030 0 obj << +/D [3023 0 R /XYZ 90 293.119 null] +>> endobj +3022 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3034 0 obj << +/Length 1133 +/Filter /FlateDecode +>> +stream +xÚÍXKÛ6¾ûWèÅj†3|ˆÌmÛm‹Ø6Î) ®­Ý5êµ\[î&ÿ¾C‰¢õ2µE/…/zŒæûfæ›!MH8ý ±N~ ~ªåCÑ)ÃádôëøÂM›áç‘ø*À¬R¥ Ê¡ó€æì‚wrËÍ6[Wn®³ãê°Ù›|ç‰FªGÌV~®ªoŽOËí¶ºÌf ¦ß–Oûmæß=æ3TÓçÍî¡zàï«›"÷ä›Â°Üï·›ÕÒ8ú—›â±[– žêD§Ši[kǽ:FÞêãü¾nßË­{zíáòj˜I5­úÉÔ=ÅúªUi:ZÏŠO +­yQàŠúŃq³Q7F>‚[ ¼xùáÐó;$ðÕÀ%O µþ—WZ1.%Ž<˜•+ÒÿP¿J2nH/ ºaöçOV´DQCCïõ²XV¼>‡Óª8f`¦ƒÃ_Ú”¡p±7š‘Þf£½E<÷ÆnÝ-Ücm¿7h5Ât#½áíÇ8ôü†Þ¸ ½qw,–E¯]8Ív¥ãÉVDºõ—ZÞ•­êŸ¹)±.¸¤§‰Ôûü>Vno5^í\£ØQÐPëèkcYj–b +mäËÅ®ÍG8t½:ŸÞßÞ]ÝÞþ|õáC¿ÀHå?ű‘âWÛIïÊŒ†ÓÊí·‡¶ƒ€ÞA{;xÚ­ªYÖ‰ ù­Ð˜‹*iDdÌFuE< e·VJ ÷o7óͺ?È@u°#sÁÛ±èù)X[8$4š,ñ„«*H«rÙIÈ®xº†!¤œ©4—Ð0ˆ  6@ ±!€8n@w\-ì— ΢çwH›Ý¦·T!šóñl«H›ü1íTa¼ú)0éàÿUNþA+ýŸŽ?Jú6—4ÍlJë©?Ýð$ç·Ù.;Ð:ê#r¿Ÿûµ¾¸q 'þœøk¯‘WwȹökÜQCý×&ìî€yÃ?¾û3üÛ÷‡l×M;›ÈÏ?º:€endstream +endobj +3033 0 obj << +/Type /Page +/Contents 3034 0 R +/Resources 3032 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2942 0 R +/Annots [ 3037 0 R 3039 0 R 3040 0 R 3042 0 R 3045 0 R 3048 0 R 3050 0 R ] +>> endobj +3037 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.3113 672.5415 370.5648 683.4455] +/Subtype /Link +/A << /S /GoTo /D (a00158) >> +>> endobj +3039 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 617.7467 184.9831 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00101) >> +>> endobj +3040 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 578.8924 184.4252 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00100) >> +>> endobj +3042 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 495.0563 211.8219 504.984] +/Subtype /Link +/A << /S /GoTo /D (a00078) >> +>> endobj +3045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 437.2279 213.038 448.1318] +/Subtype /Link +/A << /S /GoTo /D (a00163_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +3048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 380.3757 217.7102 391.2796] +/Subtype /Link +/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> +>> endobj +3050 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 367.7979 202.2283 378.3282] +/Subtype /Link +/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> +>> endobj +3035 0 obj << +/D [3033 0 R /XYZ 90 757.9346 null] +>> endobj +1318 0 obj << +/D [3033 0 R /XYZ 90 739.9346 null] +>> endobj +166 0 obj << +/D [3033 0 R /XYZ 90 739.9346 null] +>> endobj +3036 0 obj << +/D [3033 0 R /XYZ 90 717.1645 null] +>> endobj +3038 0 obj << +/D [3033 0 R /XYZ 90 634.6393 null] +>> endobj +3041 0 obj << +/D [3033 0 R /XYZ 90 513.03 null] +>> endobj +3043 0 obj << +/D [3033 0 R /XYZ 90 456.1778 null] +>> endobj +3044 0 obj << +/D [3033 0 R /XYZ 90 456.1778 null] +>> endobj +3046 0 obj << +/D [3033 0 R /XYZ 90 399.3256 null] +>> endobj +3047 0 obj << +/D [3033 0 R /XYZ 90 399.3256 null] +>> endobj +3049 0 obj << +/D [3033 0 R /XYZ 90 384.3607 null] +>> endobj +3032 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3053 0 obj << +/Length 2297 +/Filter /FlateDecode +>> +stream +xÚ¥Z]sÛº}÷¯ÐL_¤™Å7ˆ¼ùÆJâÔŽ][éíÌÍ,1±¦²ä+KMÒ_ßIÀ @.Øv2Qæឃ=K`)‚(üc#KGFb…Ô£ÅÓ }ƒ?¿?aÍéS8~™üå·#K¬æz4ûZEÐŒ(Îøh¶üm̘œœr¸†Ž7p¨è˜Z\m—‡uYŸo‡§r³ŸïWÛÍä÷ÙÇ“é,7º”ÐÌÑþqòÛït´}O(¶P£ïð…f-=H.ü—õÉÝÉßBœúDuA×ðÝãc’À_¸ ‡ñšz|šp19e”Òñ¯­ÆåC=œÅzƒqã¨0b•ª@ +%Öƒ@Xâ¼ÜÏWërÙ¤¤|YìVÏ>!HD™†8\É”ªâÌW/õeå„©ñùÓ³OíËãvÂÕø{s~^|˜ÍnZZ«ãýã¼9òáæ>Î~[.ëp›õvÞ(ýî‡ý<ÿVúë6ÍÉ/”òµÿë×Ýöéèš—r÷/'¹Ü½7N72fˆæRV#»ARéñ®üã°Ú¹@îÛ¼þØžÊ]}¼ýê>Íx1_¯æ‹ÖýzØ,\ +›ëÜ ÜçCY®\ž\ṬW'~6ÀÇñÔT© ½Ÿ°q•!÷å°_­Wÿö‚~±]–o:*XKAlÁe]zî»oÍÙÛ£{,†Ö5(Ú÷X¸A&k ï—óýü¿.w_¨¢ðŸ a…&WÅ‘œ£;! 2RÒhNПRˉäjh +<GŸÄm'cþ°Ý!U!5¬Ú<•“FëÌ…Ô +.Ñvh.>K·‹ÓjÂg}¸°Pl±Þ¾ôç‰qNhK¬pÀa=ìœH<ê4†uÜËI4§€t- §Â‡–(fY}·rkL:ë*­‰¤¦·‰Îw¨¢pR2DqL_8WI2(\Ä•@é(C +݆¥Z·I«E4¡…N‚q{DÛ?¯zxFÀqÔVÍÇD…ÑDèC°ÁkK˜ªZÚ-PG¦ ̥ఒ–P+Dªè¨p¥*뢳Æ£sJ?”ó¥k ^{¦õØî|Sv·@$µµÖ¡DSŠ”¸èF3SD¸ö··â Ô &x®ä<,_sQ@¬èpÞPu-ÞLÙµ˜‡Ô®!‰Û®¼EZyŠcž]íÚäÿ²ô(t×Öª\éyXÕªúf²~Š©JËu¥ÿ[ÕI[­£z˜Þž[^gM¨<©L­¬–z­b­ân¿;,ö‡Ý„ãÎ)Tr7§²·¢cRÑ–­h”ñµ¢3¼¾¢[¼/ÕhÓŠ†¥D@óÖfF*ºÁç4$qÛëï TJr{q +ÐŒ*< Õ!áØyQX˜˜Y=?ž—î®ÞtZ-´ ‚RÑku @¬°¬Õ(ã«Õ^ou‹÷OËf¤ ¹ÔÄpÃŽÈûÝöøœŒ$®“ñëô—·—ÓO³û·×ŸÞÝ_ýãþóíååôSÒÓÖQè›ÑœTFŒ`ͨm‹a”vÙ. ±Æ²~Û#f»‡åmÇ#ÛqÞ`{Ì;ÀöùÛqI\'ãóÅÍýÙÍÍÛ³ËËägÐÁJVàY¨ =‡,(Á²=ïAÝS½6m}u@a2aªÿgý€Õ‡åëcŒêç uó¨ƒù:Àe$qÑ:ø0=;ŸÞÞ¥?ýÁ3°äOM@e4qˈ¢-‰uXÏ M´•ýí{ @¬°¬õ(ã«õ^o}‹7o}›|€õI\Ôúó‰¤þ[}â¸àiTJšIR@eÔqC‰GâxWF„ý} ÀŠÀÃòE€1FE€ó†"ˆyA‹|Hà2’¸h¼½¼¾Kf~n$1JK<1•QÄ!\+]ÎC³@ïïíc漇åÇ#çqÞà|Ì;ÀùùçqIÜê'ÆÙìæÝå™»×ßߺN—yÎ-)¬ÂSáA š—Ëòk×{6[ÀL"ûõè> endobj +3056 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 641.2029 187.822 651.7332] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> +>> endobj +3057 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.4287 641.2029 284.16 651.7332] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> +>> endobj +3058 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [287.7667 641.2029 375.5365 651.7332] +/Subtype /Link +/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> +>> endobj +3059 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.1432 641.2029 461.364 651.7332] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> +>> endobj +3060 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [464.9707 641.2029 513.9963 651.7332] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> +>> endobj +3061 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 629.2477 123.0855 639.778] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> +>> endobj +3063 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 565.3112 177.3318 574.1579] +/Subtype /Link +/A << /S /GoTo /D (a00111) >> +>> endobj +3064 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 521.7174 176.7738 530.5641] +/Subtype /Link +/A << /S /GoTo /D (a00110) >> +>> endobj +3066 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 426.7436 202.5067 436.6713] +/Subtype /Link +/A << /S /GoTo /D (a00097) >> +>> endobj +3069 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 361.1235 309.3265 371.0511] +/Subtype /Link +/A << /S /GoTo /D (a00164_g5a5bfd7e9060903893481db90645187b) >> +>> endobj +3071 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 344.826 213.038 355.73] +/Subtype /Link +/A << /S /GoTo /D (a00164_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +3073 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 330.4811 255.0802 340.4088] +/Subtype /Link +/A << /S /GoTo /D (a00164_g31be289fd8ec3fe09b0088165d13976d) >> +>> endobj +3075 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 315.1599 302.4923 325.0876] +/Subtype /Link +/A << /S /GoTo /D (a00164_g8714af98a550f10dc814db92b08d1b0d) >> +>> endobj +3077 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 299.8388 290.1386 309.7664] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4357cec23abca29d2bb885803625a6a) >> +>> endobj +3079 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 284.5176 269.4366 294.4453] +/Subtype /Link +/A << /S /GoTo /D (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) >> +>> endobj +3081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 269.1964 275.7527 279.1241] +/Subtype /Link +/A << /S /GoTo /D (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) >> +>> endobj +3083 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 253.8753 230.8912 263.8029] +/Subtype /Link +/A << /S /GoTo /D (a00164_g40fb1fb2d990ce04ae9bbee275627c03) >> +>> endobj +3085 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 238.5541 217.6111 248.4818] +/Subtype /Link +/A << /S /GoTo /D (a00164_gda99954e0f6905091885934e86c278cc) >> +>> endobj +3087 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 223.2329 239.2498 233.1606] +/Subtype /Link +/A << /S /GoTo /D (a00164_gd895686859ae7d178d31be04eb0a1a97) >> +>> endobj +3089 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 207.9117 236.0418 217.8394] +/Subtype /Link +/A << /S /GoTo /D (a00164_g38af81a4c9884ce89803fc3e52383112) >> +>> endobj +3091 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 192.5906 176.5052 202.5182] +/Subtype /Link +/A << /S /GoTo /D (a00164_g3212e70c55244608ac16316888c354f0) >> +>> endobj +3093 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 177.2694 176.4952 187.1971] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +3095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 160.9719 190.8811 171.8759] +/Subtype /Link +/A << /S /GoTo /D (a00164_g71e1b022f7b7fa3a154f19372b239935) >> +>> endobj +3098 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 95.3518 210.2479 106.2557] +/Subtype /Link +/A << /S /GoTo /D (a00097) >> +>> endobj +3099 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.746 95.3518 288.0054 106.2557] +/Subtype /Link +/A << /S /GoTo /D (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) >> +>> endobj +3054 0 obj << +/D [3052 0 R /XYZ 90 757.9346 null] +>> endobj +1319 0 obj << +/D [3052 0 R /XYZ 90 739.9346 null] +>> endobj +170 0 obj << +/D [3052 0 R /XYZ 90 739.9346 null] +>> endobj +3055 0 obj << +/D [3052 0 R /XYZ 90 718.4222 null] +>> endobj +3062 0 obj << +/D [3052 0 R /XYZ 90 584.5736 null] +>> endobj +3065 0 obj << +/D [3052 0 R /XYZ 90 447.0871 null] +>> endobj +3067 0 obj << +/D [3052 0 R /XYZ 90 381.4669 null] +>> endobj +3068 0 obj << +/D [3052 0 R /XYZ 90 381.4669 null] +>> endobj +3070 0 obj << +/D [3052 0 R /XYZ 90 365.1085 null] +>> endobj +3072 0 obj << +/D [3052 0 R /XYZ 90 348.8111 null] +>> endobj +3074 0 obj << +/D [3052 0 R /XYZ 90 334.4662 null] +>> endobj +3076 0 obj << +/D [3052 0 R /XYZ 90 319.145 null] +>> endobj +3078 0 obj << +/D [3052 0 R /XYZ 90 303.8238 null] +>> endobj +3080 0 obj << +/D [3052 0 R /XYZ 90 288.5027 null] +>> endobj +3082 0 obj << +/D [3052 0 R /XYZ 90 273.1815 null] +>> endobj +3084 0 obj << +/D [3052 0 R /XYZ 90 257.8603 null] +>> endobj +3086 0 obj << +/D [3052 0 R /XYZ 90 242.5391 null] +>> endobj +3088 0 obj << +/D [3052 0 R /XYZ 90 227.218 null] +>> endobj +3090 0 obj << +/D [3052 0 R /XYZ 90 211.8968 null] +>> endobj +3092 0 obj << +/D [3052 0 R /XYZ 90 196.5756 null] +>> endobj +3094 0 obj << +/D [3052 0 R /XYZ 90 181.2544 null] +>> endobj +3096 0 obj << +/D [3052 0 R /XYZ 90 114.388 null] +>> endobj +3097 0 obj << +/D [3052 0 R /XYZ 90 114.388 null] +>> endobj +3051 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3107 0 obj << +/Length 2315 +/Filter /FlateDecode +>> +stream +xÚµ›Y¹ÇßçSèq¬¹¼ÉÞÇdmÇŒ\ò°»04RÏHˆŽ‰oœOŸbóÙÉ…eøa¤Ö¿«ª‹õãÙ&3 ÿȬÁ3%j—³ÕþÏ^àòûâ~~¿¿‰Z<üøŽ6³5’ÊÙâ¹³ ”ÐÙbýË£D”ÍßPÿ5—â±}²_V»m{¸Ì[|œq¬=!Â\}x»^]P‚Ib|þçá—ßðl Á}|Àˆ5ZÌ~‡/‘¦¡³ý§ÌÙ=üóáïÁŽý¡»aìÙaãGj„ þé(<¬²÷îzX]¶ÇÃy,d¬¹¼¨àV°4Òª× ÷ØÙåN³9ž/Ã] ½.¡²6A_zžÝÉ]†’Xñ|ƒªà˜A=ã¸QŒßW˜ÿýÖT/p0Ô×o”ƒ†îÚl—C‰¡¸râ«s]Ž—™þúê‡Éå¡j.m”™™ôòàÈ[žýBàxJn³Om?_ÏÛÃK¯¯{ÿváz¹ö²9fÆmí¾Ó.1k4¢¸¸KdÅ.6˜éá +~}—ø-ŽÛ©ïŠq»ÅÀîÈAU‚BÊ´nzA”jš–q…§Ó'ó± ×ô^VnúœÇ¨éó~CÓÇ~'†Wód&ûÃk§®{ÁM׆חÂØMkc¿…‘êëk;vn/4æùdU! +3 ÄŠôÚ¨¶dÌTåÒ%VçúA/ëæO—åöÐë?}øôÖ]2ù±=áóto9}”|¾XÍr?ÝWÂ|–juŸƒVšñ²20‘Á0y¿˜Øï€I‚«&æÀn +Œ–ûd°Ù&£ùtU! +!izÍTÉ m„©§Ê¹C¬Î0d“ÌDÉù¾¼PÍ£ú>s ªÒ”—æAVä%6˜á¥à×ó’øýv^Òà*x)„9°›òb–Ýã´0³í¥òÉ +ªB”J³9Öo¤ZZ„2ÕD*i‰Ô9Z¼l’–šïÌ +—ˆÉÒ:¢–7µ¼ÄŠ—•Y‰ æXÉû ¬Ä~ÓÝ´óæxnÑ*«Ò½02ÛiN_ +h`7¥âu$jÎÖJñ¢‚Ê`ÂÅY/!Õ<@wSËC¤Îñàe“®û'¿)óý¸Àq‚kÇÈH=þ*2QI*txÑÑ9Üqx1Ù†öóquÝCðËî’Ýf‹ßÙ6”ÁèÆ]ª¬%Dœ­/sb—éÞúçä×64IºW!=/î0Íl{Ñä +FÝAÒà×çSw‚FýQMOÐ@áNÐÌýωRø¦£½ó3êÎÏb©Ý±£öüÌtBýkd Hο}Óü±óogW¸Ã‰Î’‚Vå ÅÆ¿¾!°¿ž/þ Þ½ ºݵ¦•'ýºsÞ‹­×s{.¿I€ÆÞp'ˆðñ—¦0´;‘B~Óûú]÷¯áÂ$j îu|„IÖûöО–!>WŸü‡&ÙW÷…P÷ÿDÙOÛocéò=‡ö›±×Žw‚pšÝŸÿýúb« NùÏ#ùù?ªvÿyendstream +endobj +3106 0 obj << +/Type /Page +/Contents 3107 0 R +/Resources 3105 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3130 0 R +/Annots [ 3110 0 R 3111 0 R 3112 0 R 3113 0 R 3114 0 R 3115 0 R 3117 0 R 3118 0 R 3119 0 R 3121 0 R 3123 0 R 3124 0 R 3125 0 R 3126 0 R 3127 0 R ] +>> endobj +3110 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 704.9751 226.0986 715.5054] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> +>> endobj +3111 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.1106 704.9751 300.7979 715.5054] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3112 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 667.016 220.0116 677.5464] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> +>> endobj +3113 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 618.0981 215.05 628.6284] +/Subtype /Link +/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> +>> endobj +3114 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 569.1801 209.501 579.7104] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> +>> endobj +3115 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 520.2621 205.0776 530.7925] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> +>> endobj +3117 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 471.3442 192.9132 481.8745] +/Subtype /Link +/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> +>> endobj +3118 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.012 433.0115 229.8943 443.9154] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +3119 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.9163 433.0115 304.6036 443.9154] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3121 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 395.426 200.0962 405.9563] +/Subtype /Link +/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> +>> endobj +3123 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 357.0933 208.3951 367.9973] +/Subtype /Link +/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> +>> endobj +3124 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 344.5895 226.5766 355.4935] +/Subtype /Link +/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> +>> endobj +3125 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 307.0041 221.0375 317.5344] +/Subtype /Link +/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> +>> endobj +3126 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 269.045 224.913 279.5753] +/Subtype /Link +/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> +>> endobj +3127 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 230.7123 236.5493 241.6163] +/Subtype /Link +/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> +>> endobj +3108 0 obj << +/D [3106 0 R /XYZ 90 757.9346 null] +>> endobj +3109 0 obj << +/D [3106 0 R /XYZ 90 723.1038 null] +>> endobj +3116 0 obj << +/D [3106 0 R /XYZ 90 489.6163 null] +>> endobj +3120 0 obj << +/D [3106 0 R /XYZ 90 413.6981 null] +>> endobj +3122 0 obj << +/D [3106 0 R /XYZ 90 375.739 null] +>> endobj +3128 0 obj << +/D [3106 0 R /XYZ 90 194.2427 null] +>> endobj +3103 0 obj << +/D [3106 0 R /XYZ 90 167.7577 null] +>> endobj +3129 0 obj << +/D [3106 0 R /XYZ 90 167.7577 null] +>> endobj +3105 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3138 0 obj << +/Length 1587 +/Filter /FlateDecode +>> +stream +xÚÕYÛŽÛ6}÷WèÑ Ä,ï’ö­mÒ´R¤©ß’ ÐÚܵQ[ÚÊv“ü}‡7‰eI› Š 0EÍÎgÈI0ü#IŽ“T¤(g\&›ã'ÐýrAÜð +ÆW!à§õâ‡_hžä(—T&ë{cA$(¡ÉzûnIˆ¼YQx//¿½¦ÀK‚°m¼®¶—ƒ²íçÕærTå¹8ï«òæÃúÕâź!v~ &‰¦ý{ñîN¶àß«F,ÏDò 0"yN“ã‚Sæ‹?4vì€yahzœÂÔ2Â’“(#9Dea’¥ J!‚G"ËÆ,MRÆN17áxñ¹8>Ôé¶?C‚)J¥Ih´OÍ­wØŽéžúÁ ½ $8E)abÈCxØà˜vñ“ºÛö ´‰œ A +ÒQ'W jŠ>²¦éŸÙåP”Ûˆ=ˆ’¼Ï~= ?åGd·†]ß +8NE>†5A[ÓôH“˜7KS䜙Á·ê^ժܨ­ ÖÝûÛøü±x|܇Ã{,0ü'ÆZo}b³ÊeÎíÊ”ˆ2D½åƒñòŸ‚—Õ~Û7¼9T'O«­{œfq$¬KB!º<7?ƒKwÅæ/ýzº¼¿”³ÙÍÓyWœmk²¿z– +°uuÔ­ pÊv5>9tµõ;ÕØt]¿®×o<¬,UH[u ™6k{Nª†É‰¥ªíó®8™œÀ”A¹p‰ºS– /mhPJ‘¤.aëîL/—ÓÙ¥ÐÉà^˃ÖÁ~nƒðN š>h ®'uê;Â&@¨¿”½– ÉË$¼u]ðD*ãD̼1ê' ^ìá à5°¹‚7ŸVð&è#k3¯Ë>Cð&üˆìμÑ0´‚7N[û…‚ǦÏ +Æ×hé‹ãáþ‡'·¡eô~ÑÓX+z§l#ÜÓmEOXÑk±Â‹ž¢ÏZÊLÉW ñÔ ‹­³S ¥Å6‘bÙÓ>þÿÐ>ª E*Ƶ/D]×>Nr$‰î›¥}cÔOÖ¾ØÃAík`sµo4>­öMÐGÖfj_—}†öMøÙ«}£ahµoœ>¶6¢}ü{kŸÐ¾mq.vœƒ=YõÛìŠÚ26ËÎ*Íð¶ƒEÁ9©E¥ˆ§¢­¸JÜ:Ån…ôòÁp†¨H×ë)Ë&–…C¯Bx¼{û65ñ…È爜Q!=úÞbhP1m'Œq$8ìññA•CQ1ŠÑw°ðèc*¢pß¼zèîkp«¡^£ÛC7nÝãºêvþìÏÚØ&Ø´lÁ1RïaµÚ¨ý K[?¶#µƒ1øÍ ´ÙÚ¡ûuíпڡ!z›èãºnøÚ¡í¼u¯­P„sÔý¶vÀ™&wÔ7ÞG»K‚$£Ì±PÚaþÆ;hÛXj¥î³±Ô-K=hc©»âX®Íœ»0¸ ïw¡·¬Î¶Ãç<äf–{à°SÅVÕ.ŸE­†Ó锽*N®î«º·–ŠÍùRÚ¥rµ@ÃaF×Âñú€®—gÊõß®¤ÈïÕY]+Íd”´Ŭƒ%×£‚ãÏ­Èó¥ïm6 ô‹RGó‹9ïêôÌŽÔêQÁR‡àJ±t}n Òm¼ÀêÚ—þÕ8S€Ð5ØŒ›e¡{*¨9}ËàœíòâÝ_éswúPž 4xšç9]Ï3xÄ·.½ÑÕ­¨‹#D¬>]ÏøýHæû~t”½É¼G…õ®CBÍ©ÌGçÞ€âÉw–ÈãŒvH´9x¬ö ~V½Ø +u[¾&‘m(¥þcm–Oìž6D Êc7ˆ0q.Ä­GÅ´Ý0Úhg]Úµð?œwNÝî¿S ›A¥þ[{6±%ÔÈž`r“™º˜Qbs1áO¸˜Äþ ªd›{1N{1™ ¬Í¼˜tÙg\L&üˆìν˜Œ†¡½˜ŒÓÇÖ/& 1"“Ù7\LúŸu"<üÚ„Á="…ü¦/>æ“U¯ÖùN“LYfNá  „KÚ¸¢çöR•ª.š?Døóòkßx¥7îÅ=ê~ñ-e·Ô}Ü¢KwôÑ[Ýâ¯`>nÏ«Ï_bupAˆÒ¿ì†z“endstream +endobj +3137 0 obj << +/Type /Page +/Contents 3138 0 R +/Resources 3136 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3130 0 R +/Annots [ 3140 0 R 3141 0 R 3143 0 R 3144 0 R 3146 0 R 3147 0 R 3149 0 R 3150 0 R 3151 0 R ] +>> endobj +3140 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 718.6794 154.358 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3141 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 718.6794 222.4221 740.9309] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3143 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 561.9505 154.358 584.202] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3144 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 561.9505 222.4221 584.202] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3146 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 405.2217 154.358 427.4731] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3147 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 405.2217 222.4221 427.4731] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3149 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.2537 340.6391 333.0469 351.2293] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3150 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 124.499 154.358 146.7505] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3151 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 124.499 222.4221 146.7505] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3139 0 obj << +/D [3137 0 R /XYZ 90 757.9346 null] +>> endobj +3104 0 obj << +/D [3137 0 R /XYZ 231.9163 693.5209 null] +>> endobj +3142 0 obj << +/D [3137 0 R /XYZ 90 672.2941 null] +>> endobj +3101 0 obj << +/D [3137 0 R /XYZ 231.9163 536.792 null] +>> endobj +3145 0 obj << +/D [3137 0 R /XYZ 90 515.5652 null] +>> endobj +3100 0 obj << +/D [3137 0 R /XYZ 231.9163 380.0631 null] +>> endobj +3148 0 obj << +/D [3137 0 R /XYZ 90 358.8364 null] +>> endobj +3133 0 obj << +/D [3137 0 R /XYZ 231.9163 96.348 null] +>> endobj +3136 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3154 0 obj << +/Length 2597 +/Filter /FlateDecode +>> +stream +xÚ­Ù’ã¶ñ}¾BšªŒà¾%ñz³[Ž½q”òƒíÚâHœk%rLRïߧq‘/MŽš‡ÀFw£ïD6þÈ&Ã%Ê—›Ãåož`ùýñŸwð}üy÷Íw4Ûd(“Tnöƒ$HPB7ûã/[‰(»ßQ·?ßK±-Üäp.‹ª»ÿmÿqñFXH `à Qfõîݾ§ê™LCó÷»_~Û#0÷ñ#–i±y F$ËèærÇ) “óÝ?îþÞãq솹³ Â^s8 +S5œ Q$îwc8Ó)o ïß|Gx´Irà ñçûcæ€Ì +q@ê@^Š'žÏLÏE•_ +'µ_±Àÿº'x[—GˆEˆvŠ ©œ‡rÄxæ8ýñ¡ËËÊ!éN=¶{ý88\›ÆhÉNþºßr£cÞånÔvM‘_U#XQHRÎ,ŽE¢³” +Ì-­·yåæ/Œšâ÷kÑvnrÉ¿ºÁCáàAºÕSqô‹þc¨¼XÂA[4 !0´æžãíXÌ ­ã+llŠÇºñÈ«º‹©Eˆ[Ãx8A™N¢y ߕؾœ +sÅýXª›ò©¬ò³[~ÿnï–‡ã™mF‹®Ž~ëKÙÆæO3Œx&%•D˜3æ¬×|jž<ÌO‘÷ð»xƒ3æØR¦xSã{*:coÁÎb–˜`pÇ”¥‘CõP7™b3Œ ûÓì¨ôRz¼V‡®¬+'©ÒËÿÚZ›0ßëÆËß{Y= z1 +ÜQø‰™ù`¬h|f-`³V @k=Ð.†šÆ!€‹¤9Ó–‘ŸŠîÚÓ­Ú·câS¤%ëÔ{¨ò±À VH&l†þŸœžë²êŠÆ‡‚z-$¼BZ"cH2’­K+†Z‘HhE,·ïþÈ/ÏçbETk¤9Ê4X>¾áJ½ f8œh–¸:L˜“‡tvC>=Ô-òl†ü§$ûÆÔ•@”dcêËbð·ø˜àMÅ0 m” NE¶.†êù)6G¬óP“¶3a?~[®JWŒ¸¼mŸËÊ›|ÆÒôè¬Þ#² ÷>ýy¦:íþsÛå]ñö­C†f*ÀÄL˜¢$®5¤¯5®U[>U6ô _yŒ@øŠ†…Ò„@ +’ñIm±q¾69Õm7Ã,œ™HÁ<ЛI¾ QM7à4·ì-€ïbøi\˜`5´¯D~î&ôGXS5b`œ¯Ô”n"Æ$ +ÒTBø¹nf%#‘ÄJô’ô5UX¦f}½6¼)ÎPµ1°‡š¯­ü(•¢³³Ÿ‹à Õ¸ð;ÔUU_ Ù!ïmÏ—…C Ö‡ 7h¿¸ËÕÃÖا®­KÝqÚqE .Ewª³¾æ+­âJf5œÈÈýR¨9Uz$˜Û#iê?µmŸ‹CiØs¥§ +•¦JOi‘{_èyšË˜úCÃØ:©3>ìvƉì„fÛŸmùi–= õ‡3KñáÌüd +N3x(Â.RÁ2™ì‹¥Äy MK©² ‡úIku«þìáwñ†™²o‚7­?{Ö–ªPå"ÇRyuuƒ® Â|ÄÎ!?Ÿò×D˜ö0I™Ï\aʵÝi5 kÎ4`à»øìÌ‚÷ý,ù¾ÊÀ7MyOÅÖÙWëçTƒ%t«1¸~LÑsC5~o˜QÍoªÃ)´cÇsÑ,*3¤¤q6ÖºÁ¨QNGìôª±Ò‰• ½2¯_0âь†ñI#|fÖã×NB+`t-VêVíàwñ†™Úi‚7yW^Šc}]lɨԈkH)_ãR*@Ýà†* +©ÒV‘j”1m3.Íÿ~`ÁÆG3ˆã£ÝU_Ï~“m·Í®‡ ûºêò†2Ÿ1̇£Ï𔈘 ò†ìÍmU :=gŒ+•wþù|9öer§f#VÆ|€ºÁq+¢³”™ÈÀMÊ f¥/(û(cÖÆ÷7Ë™;l÷§t{©ïŸKèB„ŠZ{žoòù{, “`©¿1—ŒpŸŒÌZmZ:Ë™:#˜G•¤6ìd çºuVDØœñp•*ÕS8R¦z\7¡~o˜ Q¼£dfùZ²&sõ˜24w7¹Î˜2Dl¤Æ‰kÆx^ÊóÙ«¼ˆÍh±‹gB›ŠW¬wñ1ÔrÏÀ'”<–Ëjh‚;øU²ÃeÇ”îloރ¬¯„:±„¤÷¹}Î[w¿ãÜý³™‹[Ыmé—.×ð1?7E~üê&žHY¨6E[Ÿ£ZY‚&§tÝÃW_7Ïñ=W;ÖÞ)œ³¸IXìÊl<õrS0m?ømÁÁ¢‹S3½>/`5eëxƒùR¯ç"…,¯_ì]R²1I@ÕÎÞÁ†¾¢X¦)νmû%4!Êõ­GS˜–­ï5ò°jÉÛ1D«ækhaÚ—(úÍ9 Í´)4ùº“ÄP+N­äG—>ٻ⬭+š• ¯9VÜfÂIÒfönÓƒÅíBÚG­´^@5#Ä]Í•¤Ä$¥kî&3ÝMÂĶj™óK˜¶]ãt c[N„+`˜¥1ÛÜ»1ŒüÓDf.îêz)šò`í ¦>¹ÿùñFÒº‰õQØr¬;—Gaí}ÞvÙ,i ú%”?ùMR(Ðòw‚822DL®@ËúVÁ^r#<Æ`kz`ñeÆXÏ·Éz )Õ‰–†¥„ê>¸±%oG ƒ‡ñeôË©<œÒ%á¼ÃKWÕ¦´éÂ#— ¦s~<ÈU@cÊuvK®Øš\Xza“J#Î…¸A9@M)d+‡B?¥üªÛý•·Àø†&ì{*ºåhH@ÃÙBß7DÃj9RFã¾°žIö=4?_מæ˜YÓ옫Í0Þ'ÉŒëuIôP3¢H”jŠl%IJtRñ?¨Ò÷]v±îҺﱾ†:y¶•È›à5i‹á“åþ/ ýÅÍFÝL±9h 3”eø¦ÿE`kZ +`ö×ËZZ%:hiLtAK1щ–ÆÒƒ­Ê®œPð"3¤ÌÃíªkÅPË®E4AŠKùÊ7µ5Òÿñ›Ú”ÃÙº½{í›Úª|†7µä'Ø^ù¦–RÅ›Ú >&x_û¦¶*†áMmüÛÿåMpüß<ª±É£WÙÒ£èJ09ýjb¤ý¦¶§®®ÚД{øþùý÷o›ºÄou}ÂçÝ\_r®ë/×çoòr-ŸÃÝvY;]ÏDwTÏϦ7J°Œ8Eájöv +ƒš‰òúM•½cÓ°…0G‰2e~×ð3aNõ¾¨Š&ï‰ü- >šÔ~õBýü–²·ÔÛ ÅXúôe.ÉCnº~ðÉ*ÊTbßÖ|}*ª¹[—ùüòÐ9lendstream +endobj +3153 0 obj << +/Type /Page +/Contents 3154 0 R +/Resources 3152 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3130 0 R +/Annots [ 3157 0 R 3158 0 R 3159 0 R 3161 0 R 3162 0 R 3163 0 R 3164 0 R 3165 0 R 3166 0 R 3167 0 R 3168 0 R ] +>> endobj +3157 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [289.4951 672.8902 354.0124 683.7941] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +3158 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 591.1961 154.358 613.4475] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3159 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 591.1961 222.4221 613.4475] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3161 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.2858 514.7873 335.0789 525.6764] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3162 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.6716 461.1078 477.4029 471.6381] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> +>> endobj +3163 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.943 449.1526 404.7613 459.6829] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> +>> endobj +3164 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7094 431.5282 269.4792 442.0586] +/Subtype /Link +/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> +>> endobj +3165 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.0037 419.1995 171.2245 430.1034] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> +>> endobj +3166 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.1989 401.5751 513.9963 412.479] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> +>> endobj +3167 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 167.3556 154.358 189.6071] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3168 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 167.3556 222.4221 189.6071] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3155 0 obj << +/D [3153 0 R /XYZ 90 757.9346 null] +>> endobj +3156 0 obj << +/D [3153 0 R /XYZ 90 739.9346 null] +>> endobj +3131 0 obj << +/D [3153 0 R /XYZ 219.4825 549.7681 null] +>> endobj +3160 0 obj << +/D [3153 0 R /XYZ 90 534.2597 null] +>> endobj +3134 0 obj << +/D [3153 0 R /XYZ 231.9163 96.348 null] +>> endobj +3152 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F23 482 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3171 0 obj << +/Length 1552 +/Filter /FlateDecode +>> +stream +xÚµYKoÛ8¾ûWèè5Ë·¤Üv‘4ÛÁîv}k‹B±iG@,¥²¼iþýER¢–ÔM‚ÌÇp¾áÌp 0ü‘ ÆA(B3.ƒÍaƒ=,ß,ˆÝ^ÁþÊ'ø}½xÿÆAŒbIe°ÞU$A‚¬·_–„D+ +gðòôñ/ +¼$›Ám¾==(3¾Ê7§ƒÊʤLóìâÛúÓâz][¹“DÃþX|ù†ƒ-È÷i‹#<Á#Ç48,8enò°øgñwÍÇlT†®'›s? +ÓÐ\O"ÊEáÅŠ`Œ—›û¤Ð²¿ÿ@¸wHr-Œ†Ñg¾bÌ Q‹sˆ805$Oênó‚6¾ßçÇ2KVI_±Àÿ^¼ÌÓ-Œ‰eÃ<6« ¸ ˆ†!©þyW&if˜”÷–[›w¾ëloNE"˜ÉëµµÞ6)3:–…JH r¯Hˆ$å¼Â[WL÷1˜0°j0`.jVŽª€‹‰¥*Ú”IfæV +õ㤎¥Y>$ÏfõÎⲽښݻçp/ßéÅ°¶f×rú`¡vy¡ê; atšåZˆXìXZX8š Ã(9šß§{•uˆò"ݧYò`f7×k3h®ÄOÚÖŽÇ!ÙÚ£Oiyß}"LD(Š™d(!‚×[ÅÞÒ|ö|½¦_ùŒÃûþÔçÛvн*µW:oôEâ” N"Ú©óèjª AúÜ´ èbŹK­–v§lS…jfVåòtŸÐ6\1æàŒ-Í;ÛWP=”4Û=çÔ¨{ãH L¢0”"®åº°#ZùTýHÅðb£JÎϪ<Úq³ãeœ`DŒ’qôšjÞW7Á! +‰¶»#Óø¿<æiV*«²2‘®DDP(וOu^W"f(¤˜U²^ÿLjDQcÐÅq<ñŒj5 H8¨Îš¬õŒÐ¦'¤`ÒÝ„~jª)ø7 ÿΘHǽ.:¼1Jâ.úy58ú)9z|Ûjè…5ª_=ñ¸jª ø>7CªÈ@˜cÂ0’‘õ¢+ùšf©)Z]Ö³ÒÌ:|·S¨>áêÏÄLÉì‹ÞAŽÉ6êØ¡ÿ~„ZH]^ê„êàÃ$Š~%½Y%rHª|~|“Jäöãíµ]ª^T ®Í*4>Õù@Ã9EK1?(¢7A¹?Ej2”Yäe‘*(ëÅÄü€jªœ¦·69TÙ™Zýê1BuŒ‰5ÄÄrmØÔGšðÎnªÃcùl†éÎley›«3­ÞseM«¨2‰¸PyQVX´*à|0œ¶uSÀ ±ša<[m[Jm[J¹kK©°Êƒ%¯-¥®-¥~× «M[J¹kK陶GšÀ… Á†0 +6Ñ–:ú•` -íñÝ–2¨K(‹iG¤Î«¯©¦éq³m)ÃÔµ¥ %¯-¥¶-…Õª-­VLªõ_7 UÜ ‘÷䰫÷žÇXf$0`âÐhfô©ÎgFˆ¹ˆaÁçWC£èM5Ô‡L{5Yó¯§W6¹˜¤«rW£”®b-¶SJçÊ6N(Ý£QºP‚†sË‘1è_.GúÛÅ‘Í-GFõÓ”#ð=n3Ë‘6úŒrdBŽß¹åȨšrd¾ÏíUz]‚ÅÖ#úÍ¢¡ÿþDx8XŸa¸3‘B¾èÃ@õe#‚#„µbDq¨+~ˆórIkQô}nT¦Š¤nWœÖnÝà“Žƒ';!Ôið’²Kj¿PŒ¥í.¨þ¯°™ô?–¸^è*ÿù¼W½O$úÛÅ€–þ&/Âendstream +endobj +3170 0 obj << +/Type /Page +/Contents 3171 0 R +/Resources 3169 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3130 0 R +/Annots [ 3174 0 R 3175 0 R 3176 0 R 3178 0 R 3179 0 R 3181 0 R 3182 0 R 3183 0 R ] +>> endobj +3174 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.8972 671.9623 422.4145 682.8662] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +3175 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 579.3293 154.358 601.5807] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 579.3293 222.4221 601.5807] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 375.5628 154.358 397.8143] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 375.5628 222.4221 397.8143] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.7182 234.8498 372.2355 245.7538] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +3182 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 142.2168 154.358 164.4683] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3183 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 142.2168 222.4221 164.4683] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3172 0 obj << +/D [3170 0 R /XYZ 90 757.9346 null] +>> endobj +3173 0 obj << +/D [3170 0 R /XYZ 90 739.9346 null] +>> endobj +3132 0 obj << +/D [3170 0 R /XYZ 223.3579 533.4605 null] +>> endobj +3177 0 obj << +/D [3170 0 R /XYZ 90 513.0698 null] +>> endobj +3135 0 obj << +/D [3170 0 R /XYZ 246.6004 329.694 null] +>> endobj +3180 0 obj << +/D [3170 0 R /XYZ 90 308.3271 null] +>> endobj +3102 0 obj << +/D [3170 0 R /XYZ 222.8001 96.348 null] +>> endobj +3169 0 obj << +/Font << /F29 499 0 R /F14 636 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3186 0 obj << +/Length 675 +/Filter /FlateDecode +>> +stream +xÚ¥UMoœ0½ó+8‚T¦sl›¦T)M‘zH£Šouv›ôß×Æ@»ÍVª8ÀÌ<Ï›7Øcô‰yÐWÄE Šqéç•Gü;ã¾ðpG&ÍoRïõ{ª|JRé§ë>ƒD©Ÿ7ʈ +| ¥ôÊù¶Ôõ.¼M/}N B‹GTÖë§ëP”`-çOïæ–ø…)îÒ#ÀT"üc@¥¨_yœ²ÑØz_¼ÏSèÓ&ý‹8jÌøIP@FH ~…H‚¦,œÄ½r*¿ïÊJÍ~çü߈ #Ò|£•kxØŒÇt™r`\9ž·Ùv»Êòad\Áz_绲©­•»M¶sþ²sžÜ u1`Û¦qÚ¹¦²œ™7…vˆrí<2 >¤éÕªk='mžAû¤.ÒéÖh3ÿ¹uMÖõ?Ù(B%öŠúŽ¸v˜¾À‰ARÎ{Hº±‚,âI°µª}74r¥Ý»¬î·º2ŠÆ”«ßîݗׯiŠýVÎlX¿ït·ÎšÓïRÓXnÇDÁ$ö%'ÀßL#(š£7T¢€fr +,‘q¯üü1³Šº³%3 +1£ø"5• 7Ÿ}ÌzÚ»!t=+I 12q¬ÂùVœpÌ–8õ òƒ"sROôgB¢?Èfé_¹ß“ÕÅ{,€¢Z²ÿ½ #þTyŸ·a³,„RN…z¹ êýa6KïÎM„lLBÅ]ðZ¯u«ë|y(žÆRvog…GvÁ±¹‹€<>zSJ!ÿk$÷Jb– £ó"ÍŒeÉ8r‡"¬ª ]ë6›Nú8>—vøìéð&g”Qâ,JˆKHEдÃ4øx5 <ïØ»æñ÷®—í±÷Å‘þü%®endstream +endobj +3185 0 obj << +/Type /Page +/Contents 3186 0 R +/Resources 3184 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3130 0 R +/Annots [ 3189 0 R 3190 0 R ] +>> endobj +3189 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 637.9957 154.358 660.2472] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3190 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 637.9957 222.4221 660.2472] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3187 0 obj << +/D [3185 0 R /XYZ 90 757.9346 null] +>> endobj +3188 0 obj << +/D [3185 0 R /XYZ 90 739.9346 null] +>> endobj +3184 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3193 0 obj << +/Length 2082 +/Filter /FlateDecode +>> +stream +xÚ­Z]Û¶}÷¯0Ðèòò[bßÒ¦M7hšÜÆEÚb¡ØÚ]^{k{“l}‡IS¢4Tï-XKöÑœáœ#ŠÉæþØÜÐy¡ +b„ÔóõÃŒÎïàëW3æ~¾‚߯bÀ·«Ù~àfnˆÑ\ÏW·M͈âŒÏW›ßŒÓå‡kèâéú*º`„¶o›§]Ý¿<¬Ÿêý¹:oûå«×³ïWØ奄f–öÏÙoÐùò{=£D˜RÍ?à %Ì>˜I.üÉnö~öߧý¡¹`¨yŠ‰áö1IàîÈ¡½EÛ>M¸\^1JéâÃR«Eý±mΩ>.]|²ÿàÚÓbÄ(Õ‚R +J¸R,"Ì…zYŸ«í®Þ¸ÒÔ§õqûè DTqˆWêB™&ÎêÞ4”ûs”ä£l>ÍùöÔ~Ví‡ûíÙ·»íé¼];0œÖšï·.€;ÿqµz—P)µ 6m›(+ˆæR6‰^Ÿ—WBÒÅÚ^mÂ5íi“¶=x¬îêS{Xí¡$B˜Åï”òÿööxxp¿·ǺÚ\ö»çöô—%ü{û¦=qW>ŸÎõÃ×ð•æ.ªe:lŸ¶›@Ø~\JÓ$úPívî°fZØÜJº«öwO<“_‘’ƒå,ö‡­mNj{U*b8g£·c h훃QM¤(å%Ž%ûsÕçb®âJàŒ•ã…;ÆP­{¼Míf¸ 7}fûÓñÎa~‰sðø\I\›Ãýùü¸¹ZßmÉ}’H!ˆ*4^ e²PpÏQcªUÝÆtp§3Ut^B¢Z6‰BB SÎÌ&úaixÜ|ò·më9wWîÏõñ¶Z»{þŒïa®ØÌÝ~]­Û¼”2ÄmƒkÐÞ¢÷¡„‚0%r>ô°¼£€˜qÞàÃoƇæ)>ÄsHâv}¸ò!e%^ ‡ÒÞ‡b¢í“Kªœ êp!ê6\¥fÿŽÝ¨"‚‚¡2vó°¼Ý¢€˜ÝpÞ`·oÆnæ)vÃsHâ» XÍŽª¸Î4_Á˜IKñ;=Y¢EÉ3n °1»1ÆÆM%‹R2ý£ÃØîòLcIÉá¾*Ú.øeuvc£÷çãÓúüÉ”‹Áç´d†0ąacbØËe¼6Ãë Ûá=5­M k`.Ê3bX‡ÏåÄ †½þñfmG[ý\Œ†kŒÌTÁ£2è /JA+u+|mïÙý ÒššR5ªt @”°¬Ò(ãEé ¯WºÃûÕƵ4!—š¼`=òq±=>—Fצa'/o¾{u}óÝ‹Ÿ~êçÂ…U*É¥Wˆ€ÊdFkûhE÷ÕCýµëzÎG;ipg·OûµõˆuDB +˜6Níc4Ò7X(R›Tª›Y{¶©×»êhÂÍ$m´Ó‚Öý;?ÁšA¤ÎÙÝÃòvbvÇyƒÝcÞ vïO±;žFצñ~µ4bñ¢y²­¾¿ù°dœ.^\¯®~•xŸ ÂJÊðªT&(»}€—ÝtèP/G›±çøó,`²{X^vŒ1’ç ²Ç¼dïO‘O#‰; ûÛ_Wï~]%‚³& ÇëP™D8çDÂx¾›œèÝhmPð€`YÁQÆ‹à^/x‡7/x—|‚à™4’¸Í+®÷ooöéØ¥PDÑÒd +àQ9æ¢ Æ˜^èZ ‰ ã_®‘±K ÀDö°¼Èc$2ÎDŽy'ˆÜ!Ÿ"2žF׋|z´“ß~0±)Ki25ð¨¹áDJuÉé>Ô{s-‰*y9®sÀtö°¼Îc¤3ÎtŽy'èÜ!Ÿ¢3žF×ëü±jßôve†W2SÊqÛÙ0Ó=ny°Ï†‰¹1é¸Ì“ÙÃò2cŒ‘Ì8o9æ s‡|ŠÌxI\/óc}\×ûtl +–e¦ +•£70íÕ¥êÒƒÒjHiQÎ 9®tÀ”ö°¼Òc¤4ΔŽy'(Ý!Ÿ¢4žF7Rz{ؤB —™"xTŽÝ(RPÑc¡ë!¡a$¯¤ŸnÅLhË 1FBã¼Aè˜w‚Ðò)Bãi$qÃzWn]æJà@9jC +DÑ¥•o‡T†²–2Ö¾üŽiìPy‰ºHa”4‘NÐ7fž"/šC?ªw}Ø¥{š•±Ã/¬õ”a¶ƒ/»Ü3Ó/¢ZÙ…’:tw…×½ªz§ÈìvÁÇ7]ÄÄ–µÊxñD†×›¢ÃÞ܆—S‰20‚•Ôô’·‡ÇçÒIâvÒI_­€:…‘x-*CÎy ãsÊzPE×÷•ÛÂdçp ôÔ¯‰ÍPßüÓbìûÉ¡WÖ@B ½Î¸"f ËcŒ „óżŸ–œ.Ûô±,͘êq# ŸË"‰{ñMõø8¸þý“…ΔÁ£r ÀÔ½Yë–¼ãK1&»5Q> endobj +3197 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 582.769 174.5722 593.6729] +/Subtype /Link +/A << /S /GoTo /D (a00113) >> +>> endobj +3198 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 542.4621 174.0143 553.3661] +/Subtype /Link +/A << /S /GoTo /D (a00112) >> +>> endobj +3199 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.133 502.1553 158.5226 513.0592] +/Subtype /Link +/A << /S /GoTo /D (a00114) >> +>> endobj +3201 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 415.9868 197.5356 426.8907] +/Subtype /Link +/A << /S /GoTo /D (a00079) >> +>> endobj +3203 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 356.821 232.9533 367.3513] +/Subtype /Link +/A << /S /GoTo /D (a00165_g1dbc635a2924806f42d7e3273a6a69b5) >> +>> endobj +3205 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 317.1168 224.1764 327.0445] +/Subtype /Link +/A << /S /GoTo /D (a00165_g7d7920c1e51cc4eef80206ebd6fee3f4) >> +>> endobj +3207 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 303.4391 220.9585 313.3668] +/Subtype /Link +/A << /S /GoTo /D (a00165_g8a645f8831837320c4e0c704e871abcf) >> +>> endobj +3209 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 289.7614 176.5052 299.6891] +/Subtype /Link +/A << /S /GoTo /D (a00165_g3212e70c55244608ac16316888c354f0) >> +>> endobj +3211 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 275.1074 190.8811 286.0114] +/Subtype /Link +/A << /S /GoTo /D (a00165_g71e1b022f7b7fa3a154f19372b239935) >> +>> endobj +3213 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 261.4297 188.1217 272.3337] +/Subtype /Link +/A << /S /GoTo /D (a00165_ge3f8f7deae69854853b0c8ebb82c380d) >> +>> endobj +3215 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 247.752 198.0741 258.6559] +/Subtype /Link +/A << /S /GoTo /D (a00165_g79f9a50c2cccb967d38a2eeb45d2fd75) >> +>> endobj +3217 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 234.0743 194.2087 244.9782] +/Subtype /Link +/A << /S /GoTo /D (a00165_gf7dd2757d1e766f65b01ba7c91c660a0) >> +>> endobj +3219 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 221.3729 188.6793 231.3005] +/Subtype /Link +/A << /S /GoTo /D (a00165_g820fb27c50e7bb4ac6d9eae1b06630a5) >> +>> endobj +3221 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 207.6951 190.8912 217.6228] +/Subtype /Link +/A << /S /GoTo /D (a00165_g14e276fa8e765f774f4162619f1c8fc1) >> +>> endobj +3224 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.2447 147.1795 226.8757 158.0834] +/Subtype /Link +/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> +>> endobj +3226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 133.5018 190.1438 144.4057] +/Subtype /Link +/A << /S /GoTo /D (a00165_g648ddfb2dde2cc55034e4e0ea41cb6d1) >> +>> endobj +3227 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 119.8241 174.6619 130.728] +/Subtype /Link +/A << /S /GoTo /D (a00165_gc364305cee969a0be43c071722b136e6) >> +>> endobj +3194 0 obj << +/D [3192 0 R /XYZ 90 757.9346 null] +>> endobj +1320 0 obj << +/D [3192 0 R /XYZ 90 739.9346 null] +>> endobj +174 0 obj << +/D [3192 0 R /XYZ 90 739.9346 null] +>> endobj +3195 0 obj << +/D [3192 0 R /XYZ 90 719.1618 null] +>> endobj +3196 0 obj << +/D [3192 0 R /XYZ 90 602.4452 null] +>> endobj +3200 0 obj << +/D [3192 0 R /XYZ 90 435.663 null] +>> endobj +3202 0 obj << +/D [3192 0 R /XYZ 90 376.1236 null] +>> endobj +3204 0 obj << +/D [3192 0 R /XYZ 90 335.9601 null] +>> endobj +3206 0 obj << +/D [3192 0 R /XYZ 90 321.1019 null] +>> endobj +3208 0 obj << +/D [3192 0 R /XYZ 90 307.4242 null] +>> endobj +3210 0 obj << +/D [3192 0 R /XYZ 90 293.7464 null] +>> endobj +3212 0 obj << +/D [3192 0 R /XYZ 90 279.0925 null] +>> endobj +3214 0 obj << +/D [3192 0 R /XYZ 90 265.4148 null] +>> endobj +3216 0 obj << +/D [3192 0 R /XYZ 90 251.7371 null] +>> endobj +3218 0 obj << +/D [3192 0 R /XYZ 90 238.0594 null] +>> endobj +3220 0 obj << +/D [3192 0 R /XYZ 90 225.3579 null] +>> endobj +3222 0 obj << +/D [3192 0 R /XYZ 90 166.8557 null] +>> endobj +3223 0 obj << +/D [3192 0 R /XYZ 90 166.8557 null] +>> endobj +3225 0 obj << +/D [3192 0 R /XYZ 90 151.1646 null] +>> endobj +3191 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3232 0 obj << +/Length 986 +/Filter /FlateDecode +>> +stream +xÚ¥VÛnÛ8}×WØ ¨¸¼ˆºä­MÚ4AÛÍnìC[ŠDÇdÉkÉM³_¿C‘”eII , X¼ çÌœ‡¸~ÄM±ó¥,ŒÜbë`÷–¯b¶ØÆï2ç÷4uS”F4r³u¯!"ˆSBݬüæEˆ†~@9öþö#î‰{=iÅÞ'Øû©þ`ø#»uCœ Ì#Rç%jÕyŸ èÆ8Î"¢°ÿq¾ýÀn FÞ:±4áî#L0"iJÝ­Rf'•óÕùsУ7úK>r–$¥œSë%§ã£“ˆúÁ{Wâ;Æ´ÚÑ«¦8lEÝåljåÑ„/ β0kBÄèú­}Ç×ùV¼1”v{?¥ž™­u¡ AˆX¶KzØ^±>ÚO5èY)Š*ß÷^ i`Ž0Ib7 +9Ši/Òj…‚±Ô<’aÌ@ JHÚ›w§Òз¢ûöbŠO0E1£dÑ€™!ƒôÜîÑ‚cÆZ•)Šð>ò—¼LÀ µÀÀ84‰X’†§¸ÙÆäÀ¥þüô)Jd~_™Þ²~Ô¬õ·³g†P>K$sœDËbDØHì%¬˜2\¥å–$ˆ2äa­Ôö”/Ê%Ô.€—õÃÙ ™ÛshE©G²žH¶Å^î:=Vw³ϳJJˆ¾ÆêHì%V­˜òïÙˆ†ñ”ÒW°­Ôû”ÚÊm<Å~«ß5²†ëhèižK9³œÊävW U[3ïúâpƒP$6祒 +©·Í‹½B‰g—Lˆ`´nözK×(nXÏõÇÖ6êÚ’Ö:ä ' +È'žQ<²f«õÙ¼,-rïµÞÔ{•l;½ÔgØ€®\Ä*¥Í ÎÍê¬!äQv› —›®Û•«âA®[Uý¾¨ŸF”M²¼Dò…JÚ'%ŽOo„Ié#n¸hƒ†§kô + õÑÛÅÌËõá$þg¿‚d¤ixû.¡‘å˜ nY‹9¶ç½v7Š’¼’ÿŠ Ñ£öTrÕšpîMÈ ÇÉ9Ku9(oÏЮ£R×ÚMs¨ÌøÞœ*òª²ÅȆ¯}j;±5rMӇݢç$cì• @Åbvý%Öb/êÂúù1óIâýñå뛉W¹[©‹!j›»h©µ#ÊÍbÛ‰!”$âÑÿêúúÞ5#„ÑqëAÇÛÔ#”×¢ÐðXî-ƒŸíàV…ð`&„š/¾ ì‚b=£G&GÔsݘxnîŒ42‚÷Oöžüzz³ª®ZÒ~þµ»Ëendstream +endobj +3231 0 obj << +/Type /Page +/Contents 3232 0 R +/Resources 3230 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +>> endobj +3233 0 obj << +/D [3231 0 R /XYZ 90 757.9346 null] +>> endobj +3234 0 obj << +/D [3231 0 R /XYZ 90 739.9346 null] +>> endobj +3228 0 obj << +/D [3231 0 R /XYZ 90 723.1038 null] +>> endobj +3235 0 obj << +/D [3231 0 R /XYZ 90 723.1038 null] +>> endobj +3236 0 obj << +/D [3231 0 R /XYZ 90 539.9526 null] +>> endobj +3229 0 obj << +/D [3231 0 R /XYZ 90 515.6244 null] +>> endobj +3237 0 obj << +/D [3231 0 R /XYZ 90 515.6244 null] +>> endobj +3230 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3241 0 obj << +/Length 284 +/Filter /FlateDecode +>> +stream +xÚ¥‘MkÃ0 †ïþ>&‡x’Ûqc[Y`°±ÜJmã–A“°’°õßωÝhoý²¬?Bþ ·À2ÂÊ\ó]Àüõ’a g>žÍ®uB`J¸÷½1œéB S˜{Àµ2ÿša‚Xø”rÎP kd12”äsMÜ ·FO —®u§Mïê€Ë3Š£(STɤhaArA7è ö)©¤;çv/Ûóe'¿çƒ»Ù†BymFé«F|endstream +endobj +3240 0 obj << +/Type /Page +/Contents 3241 0 R +/Resources 3239 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +>> endobj +3242 0 obj << +/D [3240 0 R /XYZ 90 757.9346 null] +>> endobj +3239 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3245 0 obj << +/Length 1390 +/Filter /FlateDecode +>> +stream +xÚ¥YMo"G½ûWp4Rèô÷GŽ‰w£äm|ó®ÐÆëÑF0¬òóSÍL·f¦ÊÈòļ©÷¦Þë?1 |æŒcAi;[mïøì;|üçè/k©àuäÂÂ5[”·þþx÷ëgf’3k¥™=>ÇâVf¼š=®Ÿîÿx©öm}˜/¤á÷nþíñïîÍœw"ÞÀ¡®aÚK}¾áô×?X0Þ½y¨Úª{÷o{8­ÚÓa.ü}Ý_|]¶õ®­Úæu—Ë Í@¡ìË[Å´‘ö\Þ11_Îùýúeµ_-pg]VïÞ©ŸëŽf·ªßÊ +ŒIee`Az™ÊæÂu[5›zÝ ¬«C³Oòî>=æ~zøðn¦`. +ëy-JTê;(°ñÁžg>0ÎÔòŠ9îÜYÕ§ÿªí~S»f\2§¤@©5 ^è…øÉá{éK!PpÇœPfL¡*f\†E‰gØj Py¦…Ç.2Š¢T‹Ô¿tU»õ€Ýr&½fŸnAÂS:ußZð23Ê{¢ EQªEjI£…©ˆt°r»ð<Ô_9—»æœÜ®SýâØ4»~ɨн¾>w¯ñŽM­,6±z”fënõ¼­ðÏM½Y¯[{ŠòŽ)¡ôhB¬WÆÂg™V^¿Õ‰¼_¥4Ã¥—µQ(ãyi(ziÀ>¸µ¤º„»P·oÚ¤dÖ8ƒj“LC-Z›4Lè¸vm GiS’ùàî”îA@aˆ¶pØÁ 7{mæ[¹áJ ‚4›T®^ªÃ°š-ý%é´ NÐ_WôÝéuÍo É\ô¡mé0ÓFX{'7” F[QüøºÂÕeËJu§f¿<­÷ËÕënp$ ؃U¹È¨!?Dºà4Wêª;pPx½`Þ º3Ý„§:0¨{NíÈ“K8¤&Ÿ\ô(zk8sMTnŒÎMQðã¹ÁÕåÜ”êÚf[,vÓ°Ãå·dGË‹cÊy#ÀÕõ°wˆ3pžcâ¶і³š8[–&miQðã–âê²¥¥º“°Ë‘“Ì1Ë…Få½×RÍRòîB^Û¬~‡¦zØ|„@å-l¢M…™Â«(SŒ6µ(ˆµ8o¶«ä…}ëØÏ ?çÆÎfÝM—»®V æ[„“»­…E˸ҊÌ÷=žR=¨l«Õ²Z¯Ã×ÄX=Š>©¡·–kO9™`´“EAÌIœ7;Yò6»‘áÖAd½¢EØO ÔM¦lêáù‡Ÿ…ïÏø³»D.., ìä—’ #-) ~xÇ$Ô%Ü…º“_ŽŽþæTÝ»Ï@ˆ»àžT—pêŽõáç\˜ûúÐŒ|©wŒÃ~‰ª\dŧ¦ÑB]ò?éo#ß]åù7¦cR°˜$„ñö˜àêrLJuøÁŠÉ»ù`%ä%Ü…¼M]ëeœ™†ƒ¸Œ0ƒ›–Q»‡”)/ÙŸähJgÎðéý½`)I0:%ãí)ÁÕ唔ꈔ ònO ./§¤”×ìÇŽíxÈmq}‹Œ¢˜aPãÊ]1O$Ä8æÂÄNHÀ’`tBÆÛ‚«Ë )Õ AäÝž\^NH)oW·Ûêøcø+‚b28;–Qµ3ñŸ%þ’z""Z3¯ŽHÀ"’`tDÆÛ#‚«Ë)ÕAäÝ\^ŽH)o½;Žî"q†TÊâŽeEí4RËKꉈ(Á|˜øYð‘€E$Áèˆ Œ·GW—#Rª#"‚È»="¸¼‘RÞº~ž ~_6íòðzjG~È ±é\âæe¥"x0&ÎÎ¥Šñ´@ÅÔê¾þ?ñÿªNƒendstream +endobj +3244 0 obj << +/Type /Page +/Contents 3245 0 R +/Resources 3243 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +/Annots [ 3248 0 R 3249 0 R 3252 0 R 3253 0 R 3255 0 R 3257 0 R 3258 0 R 3260 0 R 3261 0 R 3263 0 R 3264 0 R 3266 0 R 3268 0 R 3270 0 R 3271 0 R 3273 0 R 3274 0 R 3276 0 R 3277 0 R 3279 0 R 3280 0 R 3282 0 R 3283 0 R 3285 0 R 3286 0 R ] +>> endobj +3248 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 468.5995 139.4144 491.5682] +/Subtype /Link +/A << /S /GoTo /D (a00048) >> +>> endobj +3249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.2799 468.5995 192.535 491.5682] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +3252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 384.1603 123.6537 393.9384] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +3253 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.1518 384.1603 133.8952 393.9384] +/Subtype /Link +/A << /S /GoTo /D (a00077_31471b5e27bda51832d0fa49bd6d9b54) >> +>> endobj +3255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 373.2662 153.8002 382.1128] +/Subtype /Link +/A << /S /GoTo /D (a00077_e0b137a3875ad12a99e5e3e0e177fd12) >> +>> endobj +3257 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 358.2574 172.9089 369.1614] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +3258 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 358.2574 202.2389 369.1614] +/Subtype /Link +/A << /S /GoTo /D (a00077_cfd36e02c7498d766ff802575e981612) >> +>> endobj +3260 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 347.3633 136.9336 356.2099] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +3261 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.4317 347.3633 160.455 356.2099] +/Subtype /Link +/A << /S /GoTo /D (a00077_e80af46ceef63eab3c786525370ae720) >> +>> endobj +3263 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 333.3308 138.5977 343.2585] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3264 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 333.3308 159.9074 343.2585] +/Subtype /Link +/A << /S /GoTo /D (a00077_e707c39412e09d3a47f0b3c5dad33725) >> +>> endobj +3266 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.9088 320.3794 206.1837 330.3071] +/Subtype /Link +/A << /S /GoTo /D (a00077_2391bb18db5f620e0e9fb848ae5ba5e9) >> +>> endobj +3268 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 307.428 162.6669 317.3556] +/Subtype /Link +/A << /S /GoTo /D (a00077_5361ef75bfbdb469b5cc31f0060a2670) >> +>> endobj +3270 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 294.0582 133.6164 304.4042] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3271 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 294.0582 168.0469 304.4042] +/Subtype /Link +/A << /S /GoTo /D (a00077_564bab93ef6a268a5de2fab885c1d32a) >> +>> endobj +3273 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 281.1068 138.5977 291.4528] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3274 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 281.1068 183.6978 291.4528] +/Subtype /Link +/A << /S /GoTo /D (a00077_7a520a57d7d0541524f34a7685635597) >> +>> endobj +3276 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 267.5974 138.5977 278.5014] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 267.5974 166.5427 278.5014] +/Subtype /Link +/A << /S /GoTo /D (a00077_1d2f2751b0865045486c9aa59d0d0971) >> +>> endobj +3279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 255.2039 138.5977 265.5499] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 255.2039 174.2934 265.5499] +/Subtype /Link +/A << /S /GoTo /D (a00077_20541305548441e5dcb2e1e7e6f300eb) >> +>> endobj +3282 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 242.2525 138.5977 252.5985] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 242.2525 172.6298 252.5985] +/Subtype /Link +/A << /S /GoTo /D (a00077_27df2817055bc099821d96eb60a40b34) >> +>> endobj +3285 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 229.301 138.5977 239.6471] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3286 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 229.301 197.4264 239.6471] +/Subtype /Link +/A << /S /GoTo /D (a00077_5e16ca335dfd7394527f602da879fca2) >> +>> endobj +3246 0 obj << +/D [3244 0 R /XYZ 90 757.9346 null] +>> endobj +178 0 obj << +/D [3244 0 R /XYZ 90 739.9346 null] +>> endobj +985 0 obj << +/D [3244 0 R /XYZ 90 553.9527 null] +>> endobj +182 0 obj << +/D [3244 0 R /XYZ 90 553.9527 null] +>> endobj +3247 0 obj << +/D [3244 0 R /XYZ 90 517.4245 null] +>> endobj +3250 0 obj << +/D [3244 0 R /XYZ 90 403.1102 null] +>> endobj +3251 0 obj << +/D [3244 0 R /XYZ 90 403.1102 null] +>> endobj +3254 0 obj << +/D [3244 0 R /XYZ 90 388.1454 null] +>> endobj +3256 0 obj << +/D [3244 0 R /XYZ 90 377.2512 null] +>> endobj +3259 0 obj << +/D [3244 0 R /XYZ 90 362.2425 null] +>> endobj +3262 0 obj << +/D [3244 0 R /XYZ 90 351.3484 null] +>> endobj +3265 0 obj << +/D [3244 0 R /XYZ 90 337.3159 null] +>> endobj +3267 0 obj << +/D [3244 0 R /XYZ 90 324.3645 null] +>> endobj +3269 0 obj << +/D [3244 0 R /XYZ 90 311.413 null] +>> endobj +3272 0 obj << +/D [3244 0 R /XYZ 90 298.0432 null] +>> endobj +3275 0 obj << +/D [3244 0 R /XYZ 90 285.0918 null] +>> endobj +3278 0 obj << +/D [3244 0 R /XYZ 90 271.5825 null] +>> endobj +3281 0 obj << +/D [3244 0 R /XYZ 90 259.1889 null] +>> endobj +3284 0 obj << +/D [3244 0 R /XYZ 90 246.2375 null] +>> endobj +3243 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3289 0 obj << +/Length 833 +/Filter /FlateDecode +>> +stream +xÚ¥VÉnÛ0½ë+t”zʮʱȂ(Ð&¾9A ØtbT–]/Hò÷%µE¶d©@¡ƒ(q8ïÍ<92÷`³PK 1*œ­¾¸ß7–Óc7?n|›_¯)cˆ©p²È=(IHád>ÄhLBHŒßº¡d+—É>)F÷ûía¶?lGh"[N®g‡•ÍöÉ~¹ÎF“ÛàjR3)‰J®ÐóøLY8w„o<62|s 0Ž)\‚xõ‘÷Á¯ÚO1‘/èŠW"ï¸?TEL.ºXÆÈ‹^mš®ŸÞFÈ¢õ6?í\(¶n1¾³ [Äͬ³@ˆ¥Ì\ν25` qi÷É2µó2cv7Û.7]ù2*í’¯Uw´•Ñ¸iÕ–ØÄÀw¾ ÆQ笮ޓÕ&µ»‹SddšöB ˆ +7ÌçüŸíK9u× ˆLƒF.»òÃÚ®6ós=Ƶ0kQu—9Å{“T Q8õå|)tJ²y Ú}š¤ó‰(͇HœzíJÃë)â +4ÕŸ‡Új€CÛ›'ÔÅ!*'äŠÙ[éÒ>0FÙ2ßÇEÂÊRI—YY@\ïõ¢xûi9× +ÎTà¶{QUŸGÑõÒ¦ó]Ç#Å5?{26 º6¥Áøôãqˆd»d|¹KÞ‹˜— .wRÅL©Av•Ý»Ín=ûÝ¢Ç  ˆû鈘éaz‚ƒä +«cj-ZB‚"ì§5–¥ÑÉmwæœSsPFÆCbVfÃb6¶O•Êj·–©‰;{M¶m•HAæ÷¼•ýƒ–_Ï`™mûç±è°‘Œü•vJHˆÝ±8ˆÊjˆ†ALécSd]•«˜»ƒDØ ƒ>±+³a±ûb÷ãÖb7qûÅ>Âý±û´üzY²²-R’kú#¯¬†p¥…Äq§¢S]w¯ Ð +s>QIõ_=b¾CŒ[‚œš‘r=7ž.'·Ð·ƒÏöÆfvë:¾²9«î²Õàv„2:”Hå›]¿ ²?&ÆÊ{./ªõ¶øh7ÒÏUÏüþñb[ÝŸoc;²ô²ŠÙendstream +endobj +3288 0 obj << +/Type /Page +/Contents 3289 0 R +/Resources 3287 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +/Annots [ 3292 0 R 3293 0 R 3296 0 R 3297 0 R 3299 0 R 3301 0 R ] +>> endobj +3292 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 668.6407 162.0093 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00036) >> +>> endobj +3293 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.8747 668.6407 237.7248 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00037) >> +>> endobj +3296 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 583.4842 139.1456 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +3297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.6437 583.4842 146.6175 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00078_a9825b5977b2d4dec66e6bd09e6ae6ea) >> +>> endobj +3299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 570.5328 179.9123 581.4367] +/Subtype /Link +/A << /S /GoTo /D (a00078_4b1b1436b50ed7638aece35f41421196) >> +>> endobj +3301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 558.1393 157.1179 568.4853] +/Subtype /Link +/A << /S /GoTo /D (a00078_4da86e9feb5e5835eb15163c2cb61116) >> +>> endobj +3290 0 obj << +/D [3288 0 R /XYZ 90 757.9346 null] +>> endobj +986 0 obj << +/D [3288 0 R /XYZ 90 739.9346 null] +>> endobj +186 0 obj << +/D [3288 0 R /XYZ 90 739.9346 null] +>> endobj +3291 0 obj << +/D [3288 0 R /XYZ 90 717.8172 null] +>> endobj +3294 0 obj << +/D [3288 0 R /XYZ 90 602.4342 null] +>> endobj +3295 0 obj << +/D [3288 0 R /XYZ 90 602.4342 null] +>> endobj +3298 0 obj << +/D [3288 0 R /XYZ 90 587.4693 null] +>> endobj +3300 0 obj << +/D [3288 0 R /XYZ 90 574.5178 null] +>> endobj +3287 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3305 0 obj << +/Length 594 +/Filter /FlateDecode +>> +stream +xÚ¥TËnÛ0¼ë+t”b¹|‰Ì1pÔ@6ñ- U¦m²œÊ2Úü}I‘R˜È–Q:ˆáìì¹cóA¬pœñ )ÊD\ì"oÌòm~;5ûi¸^F_nˆŠR‚ˆx¹î N€ÄËÕC’!:K Çɶm_VÏŦ|.òªrk÷ms,Z7¾ÓkÝÌ@&º.´]R'@øìi¹ˆ¾. ^"§¬‚ßÑÃŽWFê"ˆ*Éã?f‚(Eâ]Äí'UtýxÜFwàT¦èéT!³Bú\‰I= RŒÿ7W“ c¤8ï˜M™-1‘3Ï=×m^Vzå˜æúP4åK[îkÏC3,•«Í\?bLê²CwÇs/¨*kíF»ÿ~íþöD¥ S“Ú¢3ª)C }=æy›»ƒ7¥®V‡N +H2ÂÏ^¶àó,£’½ñظd|kÛrr:q@]Šk.ÂB¼[ì냯g±ÍW!`Á9fläYf‚u:1¦#‚Û«ýQ§Ýj6s*îñ—x­‚:ßé‘™!cè´7”1öĘ#©à’uÙ¾7º)÷&ƒæAï†Ç»>ÖEÿ°B1Ä\ùLö^ÌY‹ø´¬«•uV39ˆLL׃{PÊͳÌe§`Øh0·C|ª™vVKs( ›¥0͑ʾWfäØÄnu­›¼íÛXß¾÷ƒÅ xrô þ¯½"¾CŒ…­g„'ûÆMŽß~x4òÀ_¯¾Wîÿ¾nô¨–¶Ó÷Ò‚úüQàendstream +endobj +3304 0 obj << +/Type /Page +/Contents 3305 0 R +/Resources 3303 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +/Annots [ 3310 0 R 3312 0 R ] +>> endobj +3310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.5401 617.7467 188.1115 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00079_9a84c69ec5a4705ccb1ca99fcd120add) >> +>> endobj +3312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.7662 602.7379 245.9639 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00079_1513a9e88921750d2a611b518f6fc207) >> +>> endobj +3306 0 obj << +/D [3304 0 R /XYZ 90 757.9346 null] +>> endobj +987 0 obj << +/D [3304 0 R /XYZ 90 739.9346 null] +>> endobj +190 0 obj << +/D [3304 0 R /XYZ 90 739.9346 null] +>> endobj +3307 0 obj << +/D [3304 0 R /XYZ 90 716.7484 null] +>> endobj +3308 0 obj << +/D [3304 0 R /XYZ 90 634.6393 null] +>> endobj +3309 0 obj << +/D [3304 0 R /XYZ 90 634.6393 null] +>> endobj +3311 0 obj << +/D [3304 0 R /XYZ 90 621.7317 null] +>> endobj +3303 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3315 0 obj << +/Length 1204 +/Filter /FlateDecode +>> +stream +xÚ¥XÛnÛF}×WðQzÐfï—<®ƒ(Ð&zsŒ@‘(›¨M©…6ß!¹K-µÔŽÀD‰‡sÎÌ™½pYAáŽFâ„ÔÅæmF‹gøùóŒùÛK¸¿ŒŸV³÷ÜŽ8Íu±Úu4#Š3^¬¶sÆõbÉ¥Tl~þýO¸TtÎí/îÖͺ¿úÚÏ›æ|\0;/ýÍýæüVÖͺ©öõâiõ0ûm5(ñB•Ð¬ÕñÏìñ‰[ü0£D8«Šá %Ì9^¼Í$áËëìëì¯!N£{`*_ÅÄtÂLø…‡Œ9Àô "KF)¿4Íaûý ”q’ýõ—rWöÙÖ›²Í®ˈSª •n£r;„%̾+›uõZn}ÊÓæXB• ŽˆühôZ]æ®üF)¯«Ý=¾ö‚^«ÚË”¬ÿÜïúÏö‰W¯Ë‰¼Šˆ´¾sï«òu{š°P3K¬äêf¯Å€¾ôqnŒj"…•—8-ï7ÎÕ5£m)•È3(ŒÜwTë1ï¹>UÏupeó²>&*Œ ”Úkí­ã³Ç|‰õ<¦'‰Ûêiª·2•à$¡ÂauèAKÆÁ\–±‡*bÃÜñ(ÜœK¸k:(¸…±H±Šgiƒ‘´Ãi¿ù;Ñ&,aÒeµ-Â*)ÑãrœªdfcJ£´3ÞÎ8Àîë¨ûþܤ=ʈÐ2Ÿ°õß òfƒ(á4Ò! m‘8à/÷¢.àFêiÅ8'Z•Õ¶P+WÐK–YÁ¨ü§Üš«`¨Ž¹oçð˜Š$n×/Ý:3¡ÂQb$H¨Gá]c@‰……éšÃ»& +˜™õÞ¡bÞÉy–A%¹½â½íJÀc +’¸­‚ª†Öø±àt~Þ¥ý3Õ©@@aü†åÌUå}šXÛ•6°ˆhsÛås9Àp—sŒ‘ËyÞÁå˜7ïòˆ÷=.ç$q»Ì»MX½~+§<†±jü +coç)¯êþȧ=†U…BÔÛG€œÇ†{œcŒ<ÎóǼyG¼ïñ8¯ ‰ÛͯݫB²àĶ»±lêÚƒð¹U2 G w$ +˜s$Ï;8óö/P»Ówÿ’4¾!F{%!³øy<&&‰{€‰K‰tÎæËà<ÝP+3±ås'Àpw¢€9wò¼ƒ;1oUOl…àM™}E{Û‘€Ç$q[0&`‹M³ù¼•Ⴥ)Âö~P¸—p9/²¤ƒi˜¹>ÜC.Ö-4‡ø¾EZ.N(ì6ÇÊnÛàˆÆë¨ñÞqâ¥@Ì™lu¬ÇàŽQN¸Á_8 ÷, +˜3-Ï;¸ófЈö=(/ ‰{ñdjÁrÂy\§©ì¡³š´Žn±q4ÀPSâ€SÞ`ʈw|ŠszÙ›©Ž5Ö‡±ŒÌ1ŽÇc‚’¸ÝàÞŸ'úÄŸ\j¬µ”¬é¤E$0­ô/£v>ÃZ(˜àñ9©&ÎÛf'8<ؙ“IÓwàç².°éñåg’„‹‡S`‰?6æþ“~äâ#÷gÈœRÝ_í\Í÷ÇþKzØüãg8WþïçsÚóíQoUéTÝ·endstream +endobj +3314 0 obj << +/Type /Page +/Contents 3315 0 R +/Resources 3313 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3238 0 R +/Annots [ 3320 0 R 3322 0 R 3323 0 R 3325 0 R 3326 0 R 3328 0 R 3330 0 R 3332 0 R 3334 0 R 3336 0 R 3338 0 R 3340 0 R 3342 0 R ] +>> endobj +3320 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.012 615.6894 195.0353 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00080_c39694ece9526b84012f90f2bb00af9f) >> +>> endobj +3322 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 602.7379 139.1456 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +3323 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7605 602.7379 172.3606 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00080_9dd8edeece221c853a4c4516bf1b01c2) >> +>> endobj +3325 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 589.7865 123.6537 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +3326 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.8576 589.7865 191.7375 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00080_e261f08e1556287d241764fb2e99fc26) >> +>> endobj +3328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 576.8351 169.103 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00080_4c6f843219271d25766ee5969e435d1a) >> +>> endobj +3330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 564.4415 169.85 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00080_447eb700ea7a185e0f155934995d49e5) >> +>> endobj +3332 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 552.9895 153.8002 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00080_94fcc9f5c47f419040d849ce58beae35) >> +>> endobj +3334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.7715 537.9808 181.4961 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00080_5e274a8f8b5fb2b3999c54fe27c76e46) >> +>> endobj +3336 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 527.0866 141.0881 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00080_468c04fff28e784f93ebc3f0849211dd) >> +>> endobj +3338 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 512.0779 176.216 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00080_78f82878f3fd0e7401c7d7d3b3fefbef) >> +>> endobj +3340 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 499.1265 163.2246 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00080_16a3a3056f44b7245ce085b937a269dd) >> +>> endobj +3342 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 486.175 198.9209 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00080_6df929b448ea98bc44d41f5e96237bda) >> +>> endobj +3316 0 obj << +/D [3314 0 R /XYZ 90 757.9346 null] +>> endobj +988 0 obj << +/D [3314 0 R /XYZ 90 739.9346 null] +>> endobj +194 0 obj << +/D [3314 0 R /XYZ 90 739.9346 null] +>> endobj +3317 0 obj << +/D [3314 0 R /XYZ 90 716.7484 null] +>> endobj +3318 0 obj << +/D [3314 0 R /XYZ 90 634.6393 null] +>> endobj +3319 0 obj << +/D [3314 0 R /XYZ 90 634.6393 null] +>> endobj +3321 0 obj << +/D [3314 0 R /XYZ 90 619.6744 null] +>> endobj +3324 0 obj << +/D [3314 0 R /XYZ 90 606.723 null] +>> endobj +3327 0 obj << +/D [3314 0 R /XYZ 90 593.7716 null] +>> endobj +3329 0 obj << +/D [3314 0 R /XYZ 90 580.8201 null] +>> endobj +3331 0 obj << +/D [3314 0 R /XYZ 90 568.4266 null] +>> endobj +3333 0 obj << +/D [3314 0 R /XYZ 90 556.9745 null] +>> endobj +3335 0 obj << +/D [3314 0 R /XYZ 90 541.9658 null] +>> endobj +3337 0 obj << +/D [3314 0 R /XYZ 90 531.0717 null] +>> endobj +3339 0 obj << +/D [3314 0 R /XYZ 90 516.063 null] +>> endobj +3341 0 obj << +/D [3314 0 R /XYZ 90 503.1115 null] +>> endobj +3313 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3345 0 obj << +/Length 714 +/Filter /FlateDecode +>> +stream +xÚ¥VÁrÛ ½ë+t´¦» äØq“if:Ó&¾%™ŽccGS[je¹múõE)IJE3,àñöí>c0?ŒÄψb©ˆ—»♾ŠÐ-OÍúÔ¼ŸGï.©ŠQ‚Šx¾nN‘ÆóÕÝ$#<™R“Þ=~}Ü–Ëo{;q[W‡em¿oôZW ʉ.–ÚL L³ Ò,y˜_G潧3MøÑÝÄ+£ó:”äñ/3‚JÑx¥”uƒmt}éyìB»áTšÙé<1%f†v‰R“wæå‰oJÔdgi‘(Î[ZSà†•Êž– #žéz‘oõÊ2Íô~Yåßë¼,ólhh­ÊÒÌô=-òÝn_8AÛ¼Ðö Á9U®í³e«_ÜKR˜'rF5K JWŒÙ¢^Ø}—¹Þ®ö'l(‰L)?{Ì|€-¿Ÿ‚ )“é O÷žR~ ¡)'gã{T(®9 +„x÷PìóMÑ9³*«z #ã$“™<’Ñ,U‡¹ñuø o#hŸÿÑ + ÍT*„CM‘{qÄ àD* ùãPa{^èÆÜ Ú›ã}“7¾†±fTÍ1k£¦8솾0ÂCp gKzÖ® €)ð¥‡ñ Gœ Äí¬ywù´¨ìubòÀŠfnY°âØ@\J `*Ä·¬Ã‡dx[™å¡a.<Žb¼>™…mËŒ +iný€m,l›G8fÛxÜÞ6?îÏ„šW"_°ŽHUÀ:&?8j]‹Ið6 +Ì»54ÎAòñ +e4åÐÜ–pÒ^0ñQðì¿z‘Ö~i¶ c~¯!LoÁd×j 1-‘=ŽWºÐբîEÿÔ}\'È͵ç^uÚ½î”]P°# + ì×:¡|RVvpøøÙ¡‰>>»n£üý¼ÑÅq-›F©“æÕç/ø8endstream +endobj +3344 0 obj << +/Type /Page +/Contents 3345 0 R +/Resources 3343 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3357 0 R +/Annots [ 3350 0 R 3352 0 R 3354 0 R 3356 0 R ] +>> endobj +3350 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 615.6894 192.2756 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00081_b42c7af6114fde5d21206a2e18a7d3ee) >> +>> endobj +3352 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 602.7379 194.4975 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00081_164124d48fe85bc98d9a300382a5245d) >> +>> endobj +3354 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 591.8438 165.1479 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00081_5595902fd42d874e35a70206fad8f6d0) >> +>> endobj +3356 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 578.8924 163.3048 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00081_b5801722740492e69bcc73687476009f) >> +>> endobj +3346 0 obj << +/D [3344 0 R /XYZ 90 757.9346 null] +>> endobj +989 0 obj << +/D [3344 0 R /XYZ 90 739.9346 null] +>> endobj +198 0 obj << +/D [3344 0 R /XYZ 90 739.9346 null] +>> endobj +3347 0 obj << +/D [3344 0 R /XYZ 90 717.8172 null] +>> endobj +3348 0 obj << +/D [3344 0 R /XYZ 90 634.6393 null] +>> endobj +3349 0 obj << +/D [3344 0 R /XYZ 90 634.6393 null] +>> endobj +3351 0 obj << +/D [3344 0 R /XYZ 90 619.6744 null] +>> endobj +3353 0 obj << +/D [3344 0 R /XYZ 90 606.723 null] +>> endobj +3355 0 obj << +/D [3344 0 R /XYZ 90 595.8288 null] +>> endobj +3343 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3360 0 obj << +/Length 1383 +/Filter /FlateDecode +>> +stream +xÚ¥XMÛ6½ûWèÅ{Ëá—È è¡Ø$èÚdoI8¶vW¨Wv$¹Iúë3”H-eÉdÚÅV¶žgÞÌ{Q„Œâd†f…,ˆáBeÛÇÍîñë×+p·s¼Ÿ‡€ßnW?¿b&3Ä(¦²Û»>‚"°ìv÷n L_åL ëÓï⥤k t¸¸Þt›áêmל¶Ý©¹½.ÝÍÃöôXÖݦ«õÕ‡Û›ÕËÛ‘‰#*¹ËãóêÝšíðÍŠn´Ì¾àJÀ–=®ãþÃ~õvõ×g¸Ñÿ`©^ |¹`¿a¾b† (†‚ ¢®r ”®íaûwXÞpý¦¼+‡:ëmië€*è ¶˜Ù„²èãýTÕÛýiçRrRôÀ_b¤ºp€žyX$€hÁÁá~u°J FʾJ,‰cŸ(6… ú©Z®Þë²ÛTûrçä+ÛmS½xŸi[h sûàDoÊcS¶£êýw‡»á¿³Ê±9t‡¾µ@×eGlt mï <|Ùöj4§ÆªÖ%ð ›Ï§2ÄŽÐ/U÷0\Õ‡áÿ©E5]çÿTmõiïpå¾´Þmɹqµ$»—IC S\/Ú΃ò5_kÚJy‘)ÊÓWþòëæñ¸/Ûç‰AgÍ,ˆÑ ð²¿g¿iîÝ­7? h,àr‰`¨òˆa–âC¹ßò/V‘C³ß ŽœPµ¤ˆ3Í=(Eá<–e0x&/\&‰4Bö·®Ë÷”²ºz²ßƹf_ÕN\ jêLû¯¼[ediÑéây¯ªr¿k†œÄj@ü¥i–PDp-žâؼï“s{௘äÑŒ½=xÚ8 U*ÉÎã&ìŽÝŒcDÉBF¹1"0VšŠ BC’›Ç¥¸qF´Ñ&Í­Hsã’pmÒ}ó¸)7k¼‚J!˜CÜJ…aЭ /úMA4Š‘ðÛKú- 8_ä•Êë4É»=Ôí‚`š†ÂNGDqø…Y\Ká¤?ÎH|f +P‰Ò=jž'tWj¢8ãg-ÇÃ’€ +þÕ{|ªòY\Ëâ»c×ÌH‰)Ùs£¸ìFÃ0u–vcðÙÓ/ÁnôlÈnÑ08cíWŒ]>¢æy§†Áé@õYW– #‘šgy/Wîñ©Êgq-ƒ¦Ü,¦ ¸Ë Û´¸cr ´c”¶> endobj +3363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 589.168 162.5673 610.0795] +/Subtype /Link +/A << /S /GoTo /D (a00037) >> +>> endobj +3366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 504.6641 123.6537 515.568] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +3367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.1518 504.6641 133.8952 515.568] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +3368 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.3933 504.6641 167.3794 515.568] +/Subtype /Link +/A << /S /GoTo /D (a00082_17aacf7c5e2046c1f3ab50faa1b2f7eb) >> +>> endobj +3370 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.4319 491.7126 157.1379 502.6166] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3371 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.108 491.7126 196.4302 502.6166] +/Subtype /Link +/A << /S /GoTo /D (a00082_31f25efccba9fd043047133d0d0ba5ab) >> +>> endobj +3373 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 478.7612 133.6164 489.6651] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.5865 478.7612 171.7929 489.6651] +/Subtype /Link +/A << /S /GoTo /D (a00082_b973f2e16c2883a8a0164d716cce5a31) >> +>> endobj +3376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 465.8098 167.1604 476.7137] +/Subtype /Link +/A << /S /GoTo /D (a00082_c3d1bfbb1abde31973c015de97ce2f84) >> +>> endobj +3378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 453.8346 138.5977 463.7623] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 453.8346 171.5239 463.7623] +/Subtype /Link +/A << /S /GoTo /D (a00082_19b82696bd84a803250cbf9812f2f125) >> +>> endobj +3381 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 440.8832 138.5977 450.8108] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3382 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 440.8832 170.4081 450.8108] +/Subtype /Link +/A << /S /GoTo /D (a00082_a408ca8630154ebd039f37a828399f7b) >> +>> endobj +3384 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 426.9555 157.2078 437.8594] +/Subtype /Link +/A << /S /GoTo /D (a00083) >> +>> endobj +3385 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.706 426.9555 172.7794 437.8594] +/Subtype /Link +/A << /S /GoTo /D (a00082_d6bd03239291629676e4c0286ebb650f) >> +>> endobj +3387 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.3868 414.004 195.9519 424.908] +/Subtype /Link +/A << /S /GoTo /D (a00082_a6bfaf327ce839ba70accd71014398d0) >> +>> endobj +3389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.012 401.0526 192.2657 411.9565] +/Subtype /Link +/A << /S /GoTo /D (a00082_fda184638130452f3570966acc5b97f9) >> +>> endobj +3361 0 obj << +/D [3359 0 R /XYZ 90 757.9346 null] +>> endobj +990 0 obj << +/D [3359 0 R /XYZ 90 739.9346 null] +>> endobj +202 0 obj << +/D [3359 0 R /XYZ 90 739.9346 null] +>> endobj +3362 0 obj << +/D [3359 0 R /XYZ 90 685.9318 null] +>> endobj +3364 0 obj << +/D [3359 0 R /XYZ 90 523.614 null] +>> endobj +3365 0 obj << +/D [3359 0 R /XYZ 90 523.614 null] +>> endobj +3369 0 obj << +/D [3359 0 R /XYZ 90 508.6491 null] +>> endobj +3372 0 obj << +/D [3359 0 R /XYZ 90 495.6977 null] +>> endobj +3375 0 obj << +/D [3359 0 R /XYZ 90 482.7463 null] +>> endobj +3377 0 obj << +/D [3359 0 R /XYZ 90 469.7948 null] +>> endobj +3380 0 obj << +/D [3359 0 R /XYZ 90 457.8196 null] +>> endobj +3383 0 obj << +/D [3359 0 R /XYZ 90 444.8682 null] +>> endobj +3386 0 obj << +/D [3359 0 R /XYZ 90 430.9405 null] +>> endobj +3388 0 obj << +/D [3359 0 R /XYZ 90 417.9891 null] +>> endobj +3358 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3392 0 obj << +/Length 609 +/Filter /FlateDecode +>> +stream +xÚ¥UMoÚ@½ûWø¶3³ß9V4Q‘*µ ·$Š,Ä*1Ôµù÷]{×ÄÁ€UU¼oß¼73»` +þ‡©…TKÍ,*¿&®üòM‚q{ä÷GmÀçiòéšlj™U¤Òé²fPÈ$!¥ÓÅý@3=‘„Áv·™ÿ|z öË°tWûyÆ·néŠ!šËçÎ/i¥Ôɧ“äËô !*”\a%àWrÿéÂ+$À¸52ýí'ÀÐZJ_A¼™¬“»äÇ'lÔN•ÈO;EÁü +5VÉ;×-§ðV½¿@ŒÌJYû$W¼dÄ #õØ•³líiìvó"Û–Ù&<¼UŠŠ¦RkÍØ=PžÕèúø, +Zg¹ #+ÃweW'Ö®U@öÂÎ(æ‚¡‰©ÏÊY8t¹õbw¢ˆ + 3‚äÙ6kBòÛÞ܈wž*î‘<Ž…P¥Rò‹³ÆWÂ^µR¬âÖmKúê[PªW]ƒû nožÊŽ:NLàå|Pݸ(Úq¹dˆ`Ž²À;q1iHÅ=ï¼Á÷9ïðV +¶eÑ 9S{Œ«!ù^à Ý’‹}ÍQý½òN×-Fê zèVÐ}¾ËVys}w/›¢ÛZ2m´ù¨á|axšcÖJÍÚ-»áe ´¾˜1#éo½\œBJªÿz¦ëâÄ_ö3¬ü³ËMó +#C¡UíéÆ官•MŠ›§î[3˜ Qú2„ RüÂñ+‚0#FË!ÉÁ¦“ý×ïÍ"ðù->Û?o+—§²úi¤µò󸢛 endstream +endobj +3391 0 obj << +/Type /Page +/Contents 3392 0 R +/Resources 3390 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3357 0 R +/Annots [ 3397 0 R 3398 0 R 3400 0 R ] +>> endobj +3397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 615.6894 133.6164 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3398 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.5865 615.6894 154.6474 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00083_5e8637b1514d03eb3eb12dc9a502e27e) >> +>> endobj +3400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 602.7379 190.0639 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00083_20fae11b540a561c622a0d74cb4b9f97) >> +>> endobj +3393 0 obj << +/D [3391 0 R /XYZ 90 757.9346 null] +>> endobj +991 0 obj << +/D [3391 0 R /XYZ 90 739.9346 null] +>> endobj +206 0 obj << +/D [3391 0 R /XYZ 90 739.9346 null] +>> endobj +3394 0 obj << +/D [3391 0 R /XYZ 90 716.7484 null] +>> endobj +3395 0 obj << +/D [3391 0 R /XYZ 90 634.6393 null] +>> endobj +3396 0 obj << +/D [3391 0 R /XYZ 90 634.6393 null] +>> endobj +3399 0 obj << +/D [3391 0 R /XYZ 90 619.6744 null] +>> endobj +3390 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3403 0 obj << +/Length 619 +/Filter /FlateDecode +>> +stream +xÚ¥UKoÛ0 ¾ûWø謑z«Ç¡¬À€­Í­-ÏQ€óXê`í¿mÉ©[»ÉaðÁ”H‘©¦@¦R£ sBê´\'.hû&Á¨ÎIŸ÷ ¾N“/×Ü¥Ž9Íu:·42Å‘§ÓÙC†&9—RavøöƒD2ÂeQAº¯÷‡²>ì'h3•Ûò°ö›º¨WÛÍäiz›\MH"P%468þ$OÎðmL8«Ò¿´†ÎñtH.ºE•Ü'?~‚¢=0–¯B1ž0JF;¼Ë˜SLHØ0;ɲ]ÝÏ-Èw~îC’›Ò7IoÈœR­7*pãŒÛ£7†Ñߥ¯‹Uåg±<þ¹Ü¯vcűŠZ“jC•6z<µÎ(ï[ ïÓ: È— šÕÕK±ÞUþùâcdÎŒàx2´d΢$±Õ5;ûETÝõ"fP¨1„¢‡ðhw4k Ζå®dË@aé¦ôi€ùÑê\è·&4k‚¦¹ì|pâ© …»ô|³jo­½Æ"£Zm"ï• ÿí<ü›UÔíj¶dŸÐFHF÷hóÖX×+_ÍžGÚGYÍ´0âÓ>ïŒU]3)¬|óÓÄ}ä\ 9ÑðY‰“[Nˆóœ ¾s õYtÝ;tUù« £n³ +N£ãL:0çÑ NSÏ‚‹f° ©êh¾ {ú¦d4¢Q¥˜´ÎŒYEG­ôÊ––Žþþ¬ÐDs@‰ N›©HÝ€Òè6±¿ñû¢îÆVÇûïp;A•âyüÃ<>@i>á*ÛîÃbøžü~힎—×…ÌÅfšwÐzUúŠh¡endstream +endobj +3402 0 obj << +/Type /Page +/Contents 3403 0 R +/Resources 3401 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3357 0 R +/Annots [ 3406 0 R 3409 0 R 3410 0 R ] +>> endobj +3406 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 667.9234 139.9724 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +3409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 584.4605 130.8466 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> +>> endobj +3410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.3447 584.4605 140.5301 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00084_c3fa0fa86689e3e7c039a16c16861dbe) >> +>> endobj +3404 0 obj << +/D [3402 0 R /XYZ 90 757.9346 null] +>> endobj +992 0 obj << +/D [3402 0 R /XYZ 90 739.9346 null] +>> endobj +210 0 obj << +/D [3402 0 R /XYZ 90 739.9346 null] +>> endobj +3405 0 obj << +/D [3402 0 R /XYZ 90 716.7484 null] +>> endobj +3407 0 obj << +/D [3402 0 R /XYZ 90 602.4342 null] +>> endobj +3408 0 obj << +/D [3402 0 R /XYZ 90 602.4342 null] +>> endobj +3401 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3413 0 obj << +/Length 1159 +/Filter /FlateDecode +>> +stream +xÚ­˜MoÛ8†ïþ::@Ååð[9.Ò`ÝÖ·¶(\[I\ø#kËhúïw(’ +mÚ¤ƒ>X²^Ï<äK)BEñUC+-5i¸PÕl5¢Õ=þüqþqÏëXðçdôÇÖT iSÕä® €H¬šÌ¿ŒQ{U3IÇ»U÷ø}×M»ÖÝî¶ûYç®?µwíö +̸]Ïìc-˜‡«o“ÛÑûÉßãI®Àfÿoôå­æˆy;¢„7FV¿ð†hV­F‚ñp³}ý;Äqú?œj¥~º™ þÂB;6[GÍJ_ÒNlœ‹ +¤‘²ŠÝkƒ23D%àãÞ´Ýt±lç.ÒM»›mÝb³>î$# £+¥P­N71ˆêX•ºiB)ÇX†ÊA÷T«Çe»»>Î ”ÍdS ÒxÙ?³¿lïý£O PM4pyŠG„ƒnYćv¹ÜÔ¿®€Ž7Ûåœ<$¨vŒê]Ì ®µ¬Ð;ʋʦ1 ÆPV2-ÈʦE_¿AÉÓ ÖÆt{P§v(š(ìß,Þ¥;A mñ‚î-]¶ë´pb47Y¾Z{‘wUžw•û¬K®YÙÕ(àë]ÍÓ ®ÆtW3x/w57¸ãíÚuwÆVŽ36 hmíEÅÉ*I]|›dE[〯¶µ@tty[sx/¶µ€txø.rütÚZM¨¢* Yk/*[kχXñ¥b•­¾ÞÚ<Ý`mLW°6ƒ÷rkóxƒµ1ÎØùc·Mmmˆ`ø˜¬µÕ°\ŸÙ9Qd%õ«ZûÁ[0œÇ'Œ +Ç®þí¶ Ûu»Å—`ÌIþ·vDïý 0ÿM¯¿fÔÝ1J•»º»br¼Ùº›ý_ÿx5ñ¿ýYêæé÷}:Eì)p@‹úçõÖendstream +endobj +3412 0 obj << +/Type /Page +/Contents 3413 0 R +/Resources 3411 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3357 0 R +/Annots [ 3416 0 R 3417 0 R 3418 0 R 3421 0 R 3422 0 R 3424 0 R 3426 0 R 3428 0 R 3430 0 R 3432 0 R 3433 0 R 3435 0 R 3436 0 R 3438 0 R 3439 0 R 3441 0 R 3442 0 R ] +>> endobj +3416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 667.9234 162.5673 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00037) >> +>> endobj +3417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.5561 667.9234 193.8396 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00038) >> +>> endobj +3418 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.7051 667.9234 242.5466 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00039) >> +>> endobj +3421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 584.4605 133.6164 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 584.4605 154.3681 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00085_0bb4f34164e7207c2db26b77f23ccfff) >> +>> endobj +3424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 572.5901 150.7619 581.4367] +/Subtype /Link +/A << /S /GoTo /D (a00085_3592a1f5ae100db2ed9c0810b41c7bc7) >> +>> endobj +3426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 559.6386 162.3783 568.4853] +/Subtype /Link +/A << /S /GoTo /D (a00085_668cab7d54ff0a2fc2a2179ca06b0798) >> +>> endobj +3428 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 544.6299 171.2348 555.5339] +/Subtype /Link +/A << /S /GoTo /D (a00085_503c2994a4e52300516e2b820f0fc65b) >> +>> endobj +3430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 531.6785 159.6186 542.5824] +/Subtype /Link +/A << /S /GoTo /D (a00085_04833004cec509a41c502429df308e35) >> +>> endobj +3432 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 518.7271 138.5977 529.631] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 518.7271 169.87 529.631] +/Subtype /Link +/A << /S /GoTo /D (a00085_a312da7b5f6441140721ec7e55f345a8) >> +>> endobj +3435 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 506.7519 138.5977 516.6796] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 506.7519 169.3121 516.6796] +/Subtype /Link +/A << /S /GoTo /D (a00085_68204df6bde3e3c27271ebde10579a57) >> +>> endobj +3438 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 493.8005 138.5977 503.7281] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3439 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 493.8005 168.0569 503.7281] +/Subtype /Link +/A << /S /GoTo /D (a00085_0560495c60c68d62617ff1f3d0c424a4) >> +>> endobj +3441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 479.8728 138.5977 490.7767] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 479.8728 170.418 490.7767] +/Subtype /Link +/A << /S /GoTo /D (a00085_5ed2615cec9e633d90ac5968771976eb) >> +>> endobj +3414 0 obj << +/D [3412 0 R /XYZ 90 757.9346 null] +>> endobj +993 0 obj << +/D [3412 0 R /XYZ 90 739.9346 null] +>> endobj +214 0 obj << +/D [3412 0 R /XYZ 90 739.9346 null] +>> endobj +3415 0 obj << +/D [3412 0 R /XYZ 90 716.7484 null] +>> endobj +3419 0 obj << +/D [3412 0 R /XYZ 90 602.4342 null] +>> endobj +3420 0 obj << +/D [3412 0 R /XYZ 90 602.4342 null] +>> endobj +3423 0 obj << +/D [3412 0 R /XYZ 90 588.4455 null] +>> endobj +3425 0 obj << +/D [3412 0 R /XYZ 90 576.5751 null] +>> endobj +3427 0 obj << +/D [3412 0 R /XYZ 90 563.6237 null] +>> endobj +3429 0 obj << +/D [3412 0 R /XYZ 90 548.615 null] +>> endobj +3431 0 obj << +/D [3412 0 R /XYZ 90 535.6635 null] +>> endobj +3434 0 obj << +/D [3412 0 R /XYZ 90 522.7121 null] +>> endobj +3437 0 obj << +/D [3412 0 R /XYZ 90 510.7369 null] +>> endobj +3440 0 obj << +/D [3412 0 R /XYZ 90 497.7855 null] +>> endobj +3411 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3445 0 obj << +/Length 978 +/Filter /FlateDecode +>> +stream +xÚ¥WMs9½ó+æU‹Vß>î§ârØݘ=9.Á¡ +Æ^j“Ÿ’Æ RR)hFOݯûuk$Raø‘ÊàJ … ã²Zl¸z†×ïÄOa~þ˜ ~¿¡¦2ÈH*«ÙêhA$(¡Õlù0$ŒŽÆ”sA†‡÷ÃPà!AØ ®çíÜîÛÝaÑv#¢‡µŸ|Y¶uÓÎÛõK3zœÝ&³Ž‰'*˜$–ǃ‡G\-ðí#f´¨þ‡Œˆ1´Ú8eáa3¸üÓÙqÇ}ñ +Âú&Á"¦åVˆ@tcWõ~±[¿öeJ „‰V•Tv%ûã  qŒJÅÕaÌÀ–f3¢Ž´&_çÛ×M½¿:÷L0EŠQ’uÍ‘Ñ„Ãð8gßìžýÔLj Á +)ÂDC1ìpÌRôB EB‘¤¸`ùìt¨’óÄšuþ›“hÞ,ï’!‰Ù¹÷ËIøÄnœ„/ £¡5-$! JÎkÖ9²N­ŒÁ…æÕ®€®ëOÓf}¬^—+ß!›uãûF÷ÿ²rÿvÅÆÏu¡ MÄ8‚âvMô¶åܬëÍrß³±-‘dŠ]Üc@_ JÄ™æov¬ßO”Š´AlwC½d=v¨’_Ø“ –òÔïâË|çÒ]«Ø¿°#]¶…=ë3r—‹3àK4»–UzŸöFš1SÈO@•CW0ÊÅ©ã‡Ùän:™]?ýù×ôæiú÷ÓÉýc_Y(è*-Ì岈¹²°rYäó{Yñ€/1HìZŸG«´ì’”éBðUr-à‹IøYÒO5·‚ßM¦½’Ci)Ë/Jr’XYòœÇHò¼ßNòØo^ò¿?"yžAb7’üµMy¤£B6~éAcBa{'Y <”.îÏUåÍ\ïñ…•/A‘µN¸ˆÚA?µ©nê“5Š¸ÁªL h¬KÔ,¦Ö¶{8¡§û¶FZ1c7VSjI3"KjXYÎÈà¯ë™g× ³Ë+ša÷ó’æÙušÆìÜm%iPøx*¢³ôÆÒƒÆÜž@u¯¦)Ô/]ÛŽ…¡a a,¾ªH¸†AMAlŒÂB{CƒS(|-\hïê¦ÞAtþÖŽ›ÂàvDÄðàõÿøŠ²+꯬céF«×{Hﶟ¿…kì×oÏur-³7Ë@-ÊÒwÒÁL—endstream +endobj +3444 0 obj << +/Type /Page +/Contents 3445 0 R +/Resources 3443 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3357 0 R +/Annots [ 3448 0 R 3449 0 R 3452 0 R 3453 0 R 3454 0 R 3455 0 R 3456 0 R 3457 0 R 3458 0 R ] +>> endobj +3448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 668.6407 142.7416 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00044) >> +>> endobj +3449 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6071 668.6407 199.1894 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00045) >> +>> endobj +3452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 584.0421 161.8301 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00086_cca775e46d4405b7775b328f7694f7e7) >> +>> endobj +3453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 571.0907 148.62 581.4367] +/Subtype /Link +/A << /S /GoTo /D (a00143_g54a466311575a727830a92a6c3621cb2) >> +>> endobj +3454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 557.5814 159.6884 568.4853] +/Subtype /Link +/A << /S /GoTo /D (a00143_g5eced097547fd3fac4ba2a255493d921) >> +>> endobj +3455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 545.6062 133.6164 555.5339] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 545.6062 169.87 555.5339] +/Subtype /Link +/A << /S /GoTo /D (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) >> +>> endobj +3457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 532.6548 133.6164 542.5824] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 532.6548 154.3681 542.5824] +/Subtype /Link +/A << /S /GoTo /D (a00143_g41bf109b6a45328d5744c0a76563fb6c) >> +>> endobj +3446 0 obj << +/D [3444 0 R /XYZ 90 757.9346 null] +>> endobj +994 0 obj << +/D [3444 0 R /XYZ 90 739.9346 null] +>> endobj +218 0 obj << +/D [3444 0 R /XYZ 90 739.9346 null] +>> endobj +3447 0 obj << +/D [3444 0 R /XYZ 90 717.8172 null] +>> endobj +3450 0 obj << +/D [3444 0 R /XYZ 90 602.4342 null] +>> endobj +3451 0 obj << +/D [3444 0 R /XYZ 90 602.4342 null] +>> endobj +3443 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3461 0 obj << +/Length 1040 +/Filter /FlateDecode +>> +stream +xÚWmoÛ6þî_!`_`âx|g0 ضX€[ëoM(2 “åL–—öß÷(Rš")V0)òáÝsÏŽ$ÿ ±4ÑRË…JòÊ&8ýaq9Åõtøm³úé=³‰%V1•lv­D2`Éfûy­ ÀUÊ$]7ÅÁÕaø©©ÏyÆݧÁ¬]•;œ²ŒŠ5p~ões»z·é}Gj’+ðžÿY}þB“-R¼]Q­‘É3>Pֲ䰌wåêÓê¯ÞNXh7ÌE(χ‚à ëbd²†”¾1F -ªh¨*ó¥n þPTyyÞF$À)9ÑÖ`-ðç[šhat´|È~Æb‡ˆû%Â0X)Û01$ŽBQT… f.é¾qMV”nâ¼q§¼.žšâXEƒ|¥ÑBkç×aYH¹&~‹&Š Ñ‚6ûâ„8PëS«ç¹ö5zÝMŸO­sœÙë0µuy™ÕEõ³°<ðƒEfѲ ë]Îpx8Ÿš€~ˆ‹'ׄÁsÑìÇ%É•!J2™(&‰Ñ2¾3~©~Œ˜ƒÚêñépC(°¡PS»}.ï‘ЕÿaLG#\i3¢3*ðµ@B`ÁKÆõKeŽÚQ«<«ÂÄCÌÏ ³3’P¬¡DZJ˜âf–\J‡¨i“1–Pê©QFؖٻ¯Ùá©t§ë±c@æ .zÄ8¼œA øz—s‡âõ¸æ)n÷ùSN&eÜ`/Q— ¦=jÉõÄšwýãÄ©àø¢k1rúzä~ÉýÄ®wï®@®C‚ÒCVTåñø”úW*Íê'’É1ň¤°P,=jÒÔÚ¬"Li"°µ¾Q¾è|dõ¢Çs3¯žWDK+.+Ò£HM­EÚ†œUÛIga”(x{±ôøS»žÇ³{ÈËÂUÍôUJøº,CZr?±æ݇s(åº3‚ýµ’í⻣”UE{Ĺâ_• #-Âïq~ýŽÒO»=™;sé˳ö&k²°ñ}áÊíiæR$±Õ@ük÷µ!`®S)"¸ÿÙñ~ï“Ó>Š»˜ä—=ö¨%¿x¼XªÔK¿yyÌÿ¾÷"Ý7ÿÊÁ@Žü¿Þ±:ü“‰]ÏäÔdõ”‚QDj¥D OZ+A¾ša1 +/}—3ÓÃ334x!3 ~»Ì¼ðû¦Ì¼ôÿ†Ì,0™ØõLŠªqõ¿WL®³rÂÄZ¢(^n•hQبð> æ`™€ +×£ÿýµÑæÙààlx—QxFû~>&ð>-t¸`}p•«³¦»Qw]ænpëŽs|é5ã׌†'F© +£Wé?HοÿÑ$¾Åkûñë·GWÅôŸBµ>ß±œ ¨endstream +endobj +3460 0 obj << +/Type /Page +/Contents 3461 0 R +/Resources 3459 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3474 0 R +/Annots [ 3464 0 R 3465 0 R 3466 0 R 3467 0 R 3468 0 R 3471 0 R 3473 0 R ] +>> endobj +3464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.6562 622.7225 413.364 633.6264] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +3465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 587.1107 139.9724 610.0795] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +3466 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.9612 587.1107 263.4979 610.0795] +/Subtype /Link +/A << /S /GoTo /D (a00042) >> +>> endobj +3467 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.4867 587.1107 399.7556 610.0795] +/Subtype /Link +/A << /S /GoTo /D (a00043) >> +>> endobj +3468 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.6211 587.1107 467.8198 610.0795] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3471 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.4252 505.6403 187.573 515.568] +/Subtype /Link +/A << /S /GoTo /D (a00087_e8eb428c05bc1dee022246a3063d277c) >> +>> endobj +3473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.4252 492.6889 200.6041 502.6166] +/Subtype /Link +/A << /S /GoTo /D (a00087_fe557d333c06cf65f52023f45f5b0a3a) >> +>> endobj +3462 0 obj << +/D [3460 0 R /XYZ 90 757.9346 null] +>> endobj +995 0 obj << +/D [3460 0 R /XYZ 90 739.9346 null] +>> endobj +222 0 obj << +/D [3460 0 R /XYZ 90 739.9346 null] +>> endobj +3463 0 obj << +/D [3460 0 R /XYZ 90 687.0765 null] +>> endobj +3469 0 obj << +/D [3460 0 R /XYZ 90 523.614 null] +>> endobj +3470 0 obj << +/D [3460 0 R /XYZ 90 523.614 null] +>> endobj +3472 0 obj << +/D [3460 0 R /XYZ 90 509.6254 null] +>> endobj +3459 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3477 0 obj << +/Length 2106 +/Filter /FlateDecode +>> +stream +xÚ½Z]oã6}÷¯0º/PqùM±( +´mÑAØæmf0Pl%V–\IÎ$ûë÷RüˆÛd g‹<„®Î¥Î%h‘%†?²Ôx©„Bšq¹\oxy§]×A6üt½øû/T/5Ò’ÊåõíA$(¡ËëÍÇaü*£œ ²Úÿö/h +¼"ÛÆ»b(lë¡Û¯‡}wEòUé:Ûõ~[6C1Tmsõùúýâ׉#*˜$†ÇŸ‹Ÿñr„ß/0b:˯p€Ñš.· N™?¨,þâØŽñ‚cù +ÂŽ'L8‚3ÔgLa”MX!B¯2‚1^í«Ý—uÛ4ÓmûCy[Ú\›uirƒ r2Š0Ì4G˜;óoU³®÷‡$d‚ )C#ðû#±RUÍ=QXètt3¡òÕum7W" ö mÜ->aLËzc/®{r¸w½S>Ð_xbCëbŽÏ +JÎ%“éA2@¥šÝ(-ÉV]Yl²¶©ŸÌ!_Ý<ÙÓEãþïvuµ.uf$ch˜®ç‹Ê+"VërçfÌÿÁ¢¹ Ôƒ"ݵ!Asðõ¾í-h·ïvm_¾ÑÚÎn³l{°ze:&gKhÂpšÀPµftLsÒ—õ»r]k³Ì ù \¢;ô-d‹éH´v]»¶j†²ëBì™ñÁ›†MSÓù“挹á2§kÅØá~Lq¼©8€“³ÔÂs3¨»}ç'…ÊÕ¶½74¾"iwºÿÆßã-;Û¶y­íw¥élªçÙ¢psk]5.4!‚Íg’00Û©›éð|Š{^¥~© ßþÈZ$Ìz U~rÑœŽÍ¦Öœ?Ç1÷ýD©8œ¿à**XôŽ霘%!1·A¥L²ó¸;3·U»b³é¾ ,¥@yŠ%E¢¦YÊ1"t’¥ÇÍXv–âA­Î}pù8Ö9pNA‡³5†¥AƵFû³]x™MÉGš°ÒbX±—æWªQa~‰I3µ*û~®àP7¶{ÛÊÅ’âyŽ¨æ*žK€0XÓÉiÈ ‡b$¡åKjyðb-'Øy܌ݞÈ#"f0Ý`£ôF«4=ŽÖ”$éyÜŒ^½k»CzDEÀeÇèAÍ€ûÓô\ K !r’°‡Í$\·ë¢~aÔLß΀¦¾¶ÝìÁÍ“—q;êÚ¬„ÕiAƒç!o£f.K^jö°´š'/Wsœ]Pó”]BÍzç«9N/¨yJ¯;®f¸¡Æèe‚Â,¦‚šÉ+ÕL1Ê%g)5{Ø)5¿œqÿê6Z‚¿‰À™–Hå,e=,)ðiÀ‹ž`çq3vûü˜¾)˜Cpl1v¯Õ73òÂy’ÇÍØuë‡/ÍãQO$¸äQ‚Y@¥n n3Eæ·þÈ?Ÿ’Ë ’RËוÌ)™›•L_þ¹÷5l%ì·7ÞÏ÷Þ¤u½¥y“|„w~|m +µ¶.«Æ"O[¦0Rpð65cö–r²8–®™IÀËk&Î.ÔÌ”]¼f"ìί™8»P3Sv}³9^3ôEi”`P©[Kð f?evëXÍpH^‰W–Ì38V1u~ÁîE .úÁ_Ö ~q¯´ýéò` "ÏñLêtyx×Ò<å™,]“€——Gœ]()»¸gŠÑ;Û3%èyÜŒ^]î!3$e|ì2Õ†9;Ó11ÌÍqÊ1˜¡ø{ÙÜ ÷'^V7a 刢wv²7ÛqU»ïë§g}ŸÔ3Õ1JÞÆ"Q¥Í)‹`I=O^¬ç;›±‹ë9Fïl='èy܌޶ïõ ÎG3%—ñ<ÉóÞg©äç"egÌPüyßY]úIv[> endobj +3480 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [107.8759 622.1864 146.9492 633.0904] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +3483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 511.2147 166.8215 522.1186] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +3484 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 511.2147 198.084 522.1186] +/Subtype /Link +/A << /S /GoTo /D (a00088_79510aa86d3fa0a0fc6cfc49b1da7279) >> +>> endobj +3486 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 472.02 138.5977 482.924] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3487 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 472.02 159.9075 482.924] +/Subtype /Link +/A << /S /GoTo /D (a00088_0cd09beee671e7e9efb0b4aced10249e) >> +>> endobj +3489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 432.8253 138.5977 443.7293] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 432.8253 160.4555 443.7293] +/Subtype /Link +/A << /S /GoTo /D (a00088_1df6aa054ef2fa634ac4c6f418228285) >> +>> endobj +3492 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 394.1886 133.6164 404.5346] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 394.1886 166.5427 404.5346] +/Subtype /Link +/A << /S /GoTo /D (a00088_70297b3e6d4eaae7bd828cb50bd1efe3) >> +>> endobj +3495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 354.9939 133.6164 365.34] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3496 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 354.9939 167.6585 365.34] +/Subtype /Link +/A << /S /GoTo /D (a00088_8f6b08a5ba2a8d75ca7279e2056aa8c6) >> +>> endobj +3498 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 316.2176 138.5977 326.1453] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 316.2176 153.2625 326.1453] +/Subtype /Link +/A << /S /GoTo /D (a00088_0ef3ae2764714bf90620075c374c262e) >> +>> endobj +3501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 277.0229 138.5977 286.9506] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 277.0229 156.5899 286.9506] +/Subtype /Link +/A << /S /GoTo /D (a00088_3347ef1b6e8581402445d1a0280c7a14) >> +>> endobj +3504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 237.8283 138.5977 247.7559] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 237.8283 179.8421 247.7559] +/Subtype /Link +/A << /S /GoTo /D (a00088_db7a3fadb68df5fdd37e8b91a2c751ea) >> +>> endobj +3507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 198.6336 133.6164 208.5613] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 198.6336 144.4057 208.5613] +/Subtype /Link +/A << /S /GoTo /D (a00088_ef661afb3aa82f0437d2ed8d3c20be76) >> +>> endobj +3510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 159.4389 133.6164 169.3666] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 159.4389 144.9637 169.3666] +/Subtype /Link +/A << /S /GoTo /D (a00088_eb9fcbd3c9b0a795dcd63f33c323d65c) >> +>> endobj +3513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 120.2443 133.6164 130.1719] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 120.2443 147.1754 130.1719] +/Subtype /Link +/A << /S /GoTo /D (a00088_e3aa9cc25e45b663e6aabc54c013019e) >> +>> endobj +3478 0 obj << +/D [3476 0 R /XYZ 90 757.9346 null] +>> endobj +714 0 obj << +/D [3476 0 R /XYZ 90 739.9346 null] +>> endobj +226 0 obj << +/D [3476 0 R /XYZ 90 739.9346 null] +>> endobj +3479 0 obj << +/D [3476 0 R /XYZ 90 685.4723 null] +>> endobj +3481 0 obj << +/D [3476 0 R /XYZ 90 530.3348 null] +>> endobj +3482 0 obj << +/D [3476 0 R /XYZ 90 530.3348 null] +>> endobj +3485 0 obj << +/D [3476 0 R /XYZ 90 491.2835 null] +>> endobj +3488 0 obj << +/D [3476 0 R /XYZ 90 452.0888 null] +>> endobj +3491 0 obj << +/D [3476 0 R /XYZ 90 412.8942 null] +>> endobj +3494 0 obj << +/D [3476 0 R /XYZ 90 373.6995 null] +>> endobj +3497 0 obj << +/D [3476 0 R /XYZ 90 334.5049 null] +>> endobj +3500 0 obj << +/D [3476 0 R /XYZ 90 295.3102 null] +>> endobj +3503 0 obj << +/D [3476 0 R /XYZ 90 256.1155 null] +>> endobj +3506 0 obj << +/D [3476 0 R /XYZ 90 216.9208 null] +>> endobj +3509 0 obj << +/D [3476 0 R /XYZ 90 177.7262 null] +>> endobj +3512 0 obj << +/D [3476 0 R /XYZ 90 138.5315 null] +>> endobj +3475 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3517 0 obj << +/Length 824 +/Filter /FlateDecode +>> +stream +xÚ­—KoÚ@€ïþ>šÛ™}oŽ}ET©M¸%QDˆ¡HÁ¤Ø¨É¿ïàõºæµ¥âÀ®wX3ú¯1ú`ê 5Ê0'¤N'‹Ò]¾L°YÒú°ðq”|øÊ]ê˜Ó\§£i½ƒF¦8òtôt›†|0ä +²õüåa², +?»©VëIåÇ×ù4_ Ðfy1Éé’Q2jp?ºJ¾ŒÚÛ7tJhÜÜüwr{éQ^%À„³*ýC`èO‰ä"Lž“›äg»_¨p(ÉÍ2Aø”ŽVSΆÿ+‚èA3)¬LCÔ¦wœïe„@ë\‰´³Ýîí$s دm®¬fÍÒu +‘Aë>´ÖE[Û‡jMp¦9` 3éÀô£ ÅÁö¡…°.Z5y)«q•ßˆñ¬Ü£´’ ­xŒrh ã 8PîRvcöbÈXM±n[T©%T-kTºG¨MÔuôé‡÷¹öÃqñä5ÿ!›•lßO’vlø3§P”ö¡jÓchÖ«hwÃw;ÚCâ¶è¢–ÆèÎÖ´‡.ÄmÑUó5±]<¥JTQ¼¡$±Œ“çøI#mho#LÔP—¶aµ¢¿/Wa²¼¢®«ÈÑr1/Ëù²iÍ>DÌŽ™JåÖŠq”öUñWg\ Ùçjëwµ³áAWå©®š^ºÖÕ.]ÜÕÝù®ÆéZW»tŪzÝW• Õ £tC)˜sVž×Jµ0L “=½´ Û2µX/IÇz¼œÆì-ýâtÙDWa‹çqÙœ4Ê| ©/ò¢½PTGû1Õ. þO?FÁ$øæs<„õ;ÞÙðýý8N×:Þ¥Ûèèñü0~ñèÆ;Øôe=ÕxGÿ-y/kˆÛb Œ»„T`ry”êd©»3OÊY&µÂíÛ°-í øy>WmWöø$üQ]•¥³1h~’® +ÉmepʉZéw²ké-ý„Ú^÷UAÓ³NØðª@=G]§~™ùŠrlL!ïïapµI~ÝLÂKÂüŒè¦ ¸ÊB#XkfÈšÀÇ7ÿýyùú6Ë‹ÝŠ*úï´N}þÕ7Ä!endstream +endobj +3516 0 obj << +/Type /Page +/Contents 3517 0 R +/Resources 3515 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3474 0 R +/Annots [ 3520 0 R 3521 0 R 3523 0 R 3524 0 R 3526 0 R 3527 0 R 3529 0 R 3530 0 R ] +>> endobj +3520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 726.8189 133.6164 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3521 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 726.8189 185.3615 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00088_a5f58074435cdc180f17de69651beebd) >> +>> endobj +3523 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 688.9408 133.6164 698.8685] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3524 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 688.9408 157.1377 698.8685] +/Subtype /Link +/A << /S /GoTo /D (a00088_2d9732cf5752d30bd11cb25dc7d0c8d3) >> +>> endobj +3526 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 650.0865 133.6164 660.0142] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 650.0865 152.1567 660.0142] +/Subtype /Link +/A << /S /GoTo /D (a00088_4289c59840b128f2f6526e9da2711d47) >> +>> endobj +3529 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 610.256 191.1698 621.1599] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +3530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.6679 610.256 226.3075 621.1599] +/Subtype /Link +/A << /S /GoTo /D (a00088_97f9e1fda815bfb8b1f4577c355ade20) >> +>> endobj +3518 0 obj << +/D [3516 0 R /XYZ 90 757.9346 null] +>> endobj +3519 0 obj << +/D [3516 0 R /XYZ 90 739.9346 null] +>> endobj +3522 0 obj << +/D [3516 0 R /XYZ 90 707.0579 null] +>> endobj +3525 0 obj << +/D [3516 0 R /XYZ 90 668.2036 null] +>> endobj +3528 0 obj << +/D [3516 0 R /XYZ 90 629.3493 null] +>> endobj +3515 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3533 0 obj << +/Length 646 +/Filter /FlateDecode +>> +stream +xÚ¥UMoÛ0 ½ûWØÅ9X%õe©vú°µ¹µAáÆJk u:ÇÆÖ?Ê–S'õšÃC$‘||¢hŒ~[ˆ3•1+¤Ž—ÏÄt|a0§dOÇ_çÑÉ·±eVsÏW‚F¦8òx^Ü&(ô,åR*LÚo?h© Aýâ,oò~uÓÔí²iëšÄãfÙ>»ªÉ›rSÍó«è|¾cˆ*¡ÑóøÝ. .ˆðULX£âß´†Öòø9’\ ›utýÜáô†.`J¯B1-%£>(æT€¬œ1³ iË—{×<ÝçEQeöëk·r½Þjé¼>Ö£JR©¹O¬²÷SY-×m<GžJ°ÌÒ9~žÀÊX&Mˆ{š€!Æd6x} 0¤™UªÓšZdRH§B24#É ƒè3×äåÚáÝvY—/Þ8è i±Ã¹v/µÛجúÿÐ'Ò¤e(àyóäêÊ…/²Ûn™Oã1cšú®>sw¼*ß`óµ.«Ðn¨$ßOécÖÁÚÕŒM•ökñÖÒ¥[Û‰ÆUÚ2àBþó…ú† AÓù†ãóÞq®s!PWâÃŒ’Yƒ¾w:›?©ƒézÄ ©ã-h}”Ýà·Ç®5÷Í;v‚Ó ~ÈŽ3i!;ÎN(†æ(»Áo]÷>Ù)Î Êk—åUŠ  w³—÷V/¦æ2”Ùäü‚D­ô¼®Å …ÐŒGš¦&Œg+8úé6Pñd/]åê¼ö𾋫ª¤  O ᔋSÆ=Ðýj5ã*Ù„¡øþ»ðð:|þ¼>ºwÃßOå‰*ýZendstream +endobj +3532 0 obj << +/Type /Page +/Contents 3533 0 R +/Resources 3531 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3474 0 R +/Annots [ 3538 0 R 3539 0 R ] +>> endobj +3538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 566.4282 133.6164 576.7743] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 566.4282 153.8105 576.7743] +/Subtype /Link +/A << /S /GoTo /D (a00089_aacd5fa1806e0f0dd0bc96dd36507ad8) >> +>> endobj +3534 0 obj << +/D [3532 0 R /XYZ 90 757.9346 null] +>> endobj +996 0 obj << +/D [3532 0 R /XYZ 90 739.9346 null] +>> endobj +230 0 obj << +/D [3532 0 R /XYZ 90 739.9346 null] +>> endobj +3535 0 obj << +/D [3532 0 R /XYZ 90 685.9318 null] +>> endobj +3536 0 obj << +/D [3532 0 R /XYZ 90 584.8203 null] +>> endobj +3537 0 obj << +/D [3532 0 R /XYZ 90 584.8203 null] +>> endobj +3531 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3542 0 obj << +/Length 729 +/Filter /FlateDecode +>> +stream +xÚ¥VËnÛ0¼ë+ô"Ärùƒ¢‡ÂIÐÚÄ·$T‹¶8²+Ëhó÷]I”C?"%0|HÎîÎìP&!¤øƒÐÐPKM *œ>4œãôun9ÆõØ|›Ÿ¯˜ 1Š©p2k2( ’ 'Ù}¤ ˆQÌ$¶ùúÉV‹§EV¶wU¹Víû­ÙrId‹©Å)ŤŽ€ëÑãä&¸œì8‚’+¨ëÿ îi˜!Ñ›€nþÅ%` ŸÁx7XwÁ¯]žv¡ 8¥S?-ÁÖ)e(\ûBÒ)Ey˜Wy ijº®ÔMÚOy1]n3‡ð’mÔÑ¿œÈ¥‰‰v€šUZ®Éb0ÕW— +å1R6rc‰Ú%6† ‰'›€>¶Uš/mÖ*ÛÍ´Ì×U¾*\B~ ³n¦&ÏdaÛ¨Ëja˺n-lša»¤ŒH£ŽM¢‰ÛJY‘75š€Ô.óÂ%T¼}®fí³ŽXÚ×=Ùô„œ’L÷¥ŽÓ*mîr»Ì6'ö¦T†PÆÅ›h÷”ß Šžˆ×> endobj +3547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 565.8703 168.4754 576.7743] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +3548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 565.8703 187.0156 576.7743] +/Subtype /Link +/A << /S /GoTo /D (a00090_b684c17bf48c8e3b3fcf97b06b4c6ee1) >> +>> endobj +3550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 552.9189 168.4754 563.8228] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +3551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 552.9189 182.5823 563.8228] +/Subtype /Link +/A << /S /GoTo /D (a00090_1abbbe7bc5d7d033c727691528b85b8d) >> +>> endobj +3553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 539.9675 138.5977 550.8714] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 539.9675 158.2438 550.8714] +/Subtype /Link +/A << /S /GoTo /D (a00090_c9273cc1fcdaeeddc523ca9f34977e06) >> +>> endobj +3543 0 obj << +/D [3541 0 R /XYZ 90 757.9346 null] +>> endobj +997 0 obj << +/D [3541 0 R /XYZ 90 739.9346 null] +>> endobj +234 0 obj << +/D [3541 0 R /XYZ 90 739.9346 null] +>> endobj +3544 0 obj << +/D [3541 0 R /XYZ 90 685.9318 null] +>> endobj +3545 0 obj << +/D [3541 0 R /XYZ 90 584.8203 null] +>> endobj +3546 0 obj << +/D [3541 0 R /XYZ 90 584.8203 null] +>> endobj +3549 0 obj << +/D [3541 0 R /XYZ 90 569.8554 null] +>> endobj +3552 0 obj << +/D [3541 0 R /XYZ 90 556.904 null] +>> endobj +3540 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3557 0 obj << +/Length 1344 +/Filter /FlateDecode +>> +stream +xÚ­™_sâ6Åßù~$Vuõ_ûØIw§™éL»›·lf‡‚“xJ€Ó6ß¾2–„ˆí«õÐჯ~Ò9X2‚‚º–Zjb¹PÅòuF‹g÷õ§øÓ¥;_¦‚Ÿïg?}d¶°Ä*¦Šû§SD2`ÅýêaÜÜ”L ó㯿»CIç@hwp»hÝÑ—f\6Çý ˜yåOn—Ç×jÓ,šz»¹y¼¿›ýrI<¨ä +ZŽï³‡GZ¬ðÝŒn,þq(kYñ:Œ‡ëٗٱNwâtÁP%ðრîzÌÜè®Ãš€¼)R:?Ö»oõòuçÞ^Vû´£Ýñçê©êz¼YVm»Ò@¬”§Òn´ÛÊÌœKðÅo«fQ¯«•¬ê°Ü×»0T®OLië´À¶«s[}¥”mê“útù­ë}p#ÓmŸº÷öšµ?ëzF^È2Œ³Ãëj½: ø¨À#˜ \*èÆ?íPE7â\§m÷+cò}[@Û±”mQkœé´;×~³ö§>'\à`©RYº » ;šoMŽ3¢”Ža©ÎÓq— &Ktt¿¬{pB·ç-n–ô¢˜Ë ŽRIŒ…œ¡^•÷ó\îz;Q´èf‚†›9Ž6ÝK-Z™ 5ÛCßIE4×X);‰·QŒÚ(­p«2>FYÖÈ´àÕNfè‚î‚õ£›lf†.è.èÖÕfè‡ÉŒ°(\U¹f…%ZËwƒòÀnÛR»ëŒ›™FÓ‘°tY>H‹ÓÓÓÅt¤tx:ºééÀéb:RºzW¯zt’LànEU®]É P—íŽÄCiB¹ÒãñHX<‚,¤ÅéñÀébCttÍÛ®êOõÎG¥ð±+•e§¡á:ûÜeyK“‚×[ŠÓEKS:ÜR„nº¥8]´4¥«—ÛU5´|SÆ*¯]¾DyO•[¼³ìCV”å=M +^ï)N=Méð›9†7ùfžÁ º ¼vWhdgP7â(c Ô«òÖJJ„Î>my™ùkƒò±6)†Y›Òe¬Eð¦[‹ãEkS¼?áÂæ Æö~óqÔuU²ì³V”åM +^ï(NMé2Ž"xÓÅñ¢£)Þ¡ú¾é?@»Ÿ'çB£x¥ö¢’«ö>-­§Ž”TWmdŸ¢aÜ%næJ7ª±§d>œ¹ Û=kížøݼqêÛ§jSíMØFûÁ¿…ƒ»ó£ÿÌ¿ÓŒ`~ŸQªº£Óÿ‹[¿ÑÝßíÿó-lìÿûöÜßÊh÷ÚZ2Jÿ¸™·(endstream +endobj +3556 0 obj << +/Type /Page +/Contents 3557 0 R +/Resources 3555 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3474 0 R +/Annots [ 3562 0 R 3563 0 R 3565 0 R 3566 0 R 3568 0 R 3569 0 R 3571 0 R 3572 0 R 3574 0 R 3575 0 R 3577 0 R 3578 0 R 3580 0 R 3581 0 R 3583 0 R 3584 0 R 3586 0 R 3587 0 R 3589 0 R 3590 0 R 3592 0 R 3593 0 R 3595 0 R 3596 0 R 3598 0 R 3599 0 R 3601 0 R 3602 0 R 3604 0 R 3605 0 R ] +>> endobj +3562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 616.6656 133.6164 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 616.6656 148.8392 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00091_7d472d8b3c41618d39c93c4ca92fb3f4) >> +>> endobj +3565 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 603.7142 133.6164 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 603.7142 147.7332 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00091_a3f2d9cb20290019b2743e8df31a2f8b) >> +>> endobj +3568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 590.3444 133.6164 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 590.3444 148.2812 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00091_b15853725b233d526b291db0347d4ecd) >> +>> endobj +3571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 576.8351 133.6164 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 576.8351 151.6087 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00091_308463cc7b3d45d2dbcdcedd4cde9bb9) >> +>> endobj +3574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 563.8836 133.6164 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3575 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 563.8836 166.2933 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00091_4619e69ec86a47f6abe945b39ec7f63a) >> +>> endobj +3577 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 551.9085 133.6164 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 551.9085 144.4155 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00091_55be3d5413ce49c5c4f5576def12d7ec) >> +>> endobj +3580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 537.9808 133.6164 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 537.9808 157.138 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00091_55e7764a9f6ed05aaa98076b9f6770a5) >> +>> endobj +3583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 525.0293 138.5977 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 525.0293 179.8327 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00091_babb9c2be394477af97f79507bcb4c86) >> +>> endobj +3586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 512.0779 138.5977 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 512.0779 178.1589 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00091_0ec6a6cbcbfd191d393738c16d54e5e1) >> +>> endobj +3589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 499.1265 138.5977 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 499.1265 182.5922 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00091_e27f4949613fe3c1de5a839af01d99dd) >> +>> endobj +3592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 486.175 133.6164 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 486.175 153.2625 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00091_fa0fe6ca88f692d22af70ff007411252) >> +>> endobj +3595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 474.1999 133.6164 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 474.1999 157.6859 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00091_266ea23d75c83f15b915ce54100e51c5) >> +>> endobj +3598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 460.2722 138.5977 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 460.2722 192.0068 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00091_805f8fd5533a6d4b6793e0645005da4c) >> +>> endobj +3601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 448.297 138.5977 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 448.297 148.8392 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00091_a6d51f3fa5da9b7f9cd37ae69600c04a) >> +>> endobj +3604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 434.3693 138.5977 445.2732] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 434.3693 164.331 445.2732] +/Subtype /Link +/A << /S /GoTo /D (a00091_967def494c68cfc8a08d5a6c4dbbc25d) >> +>> endobj +3558 0 obj << +/D [3556 0 R /XYZ 90 757.9346 null] +>> endobj +998 0 obj << +/D [3556 0 R /XYZ 90 739.9346 null] +>> endobj +238 0 obj << +/D [3556 0 R /XYZ 90 739.9346 null] +>> endobj +3559 0 obj << +/D [3556 0 R /XYZ 90 716.7484 null] +>> endobj +3560 0 obj << +/D [3556 0 R /XYZ 90 634.6393 null] +>> endobj +3561 0 obj << +/D [3556 0 R /XYZ 90 634.6393 null] +>> endobj +3564 0 obj << +/D [3556 0 R /XYZ 90 620.6507 null] +>> endobj +3567 0 obj << +/D [3556 0 R /XYZ 90 607.6992 null] +>> endobj +3570 0 obj << +/D [3556 0 R /XYZ 90 594.3295 null] +>> endobj +3573 0 obj << +/D [3556 0 R /XYZ 90 580.8201 null] +>> endobj +3576 0 obj << +/D [3556 0 R /XYZ 90 567.8687 null] +>> endobj +3579 0 obj << +/D [3556 0 R /XYZ 90 555.8935 null] +>> endobj +3582 0 obj << +/D [3556 0 R /XYZ 90 541.9658 null] +>> endobj +3585 0 obj << +/D [3556 0 R /XYZ 90 529.0144 null] +>> endobj +3588 0 obj << +/D [3556 0 R /XYZ 90 516.063 null] +>> endobj +3591 0 obj << +/D [3556 0 R /XYZ 90 503.1115 null] +>> endobj +3594 0 obj << +/D [3556 0 R /XYZ 90 490.1601 null] +>> endobj +3597 0 obj << +/D [3556 0 R /XYZ 90 478.1849 null] +>> endobj +3600 0 obj << +/D [3556 0 R /XYZ 90 464.2572 null] +>> endobj +3603 0 obj << +/D [3556 0 R /XYZ 90 452.2821 null] +>> endobj +3555 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3608 0 obj << +/Length 526 +/Filter /FlateDecode +>> +stream +xÚ¥TMOã0½çWø˜êñ·9® +ˆJ+íBo€PhÜ6RIÙj—¿vì”P*±ÊÁö|<¿7ž ð DKM-Š,ž2 +o¾Ì0¹'Þ?|Ÿgß.˜%–ZÅ™/{…T2dd^Ý暢*&LB¾«ŸW¯ÖÛö¡¬ª6šoºv·èâþÚ-][ É]³pÞÄ™T9r[ÜÏgÙù|Ï#Ñ”\a`ñ;»½Ryº³ (·F’?þ­eä)Œ‡Mv“ýÚãDGŸpL­D~\. +ê-lÐ˼|=–‹_ÐëEFt¤VÊÝ—;€3ó†N1áO]WÖWE¨©{Y´õsWo›ÄG¯pgq¦î€5uݧ—‰Ñ¦n\Ü ×í2®!cãöO9¤RætM?`ÏE“j3-»2æ_ÔnS½yU…†Áä‡Í7ˆ¯1–‰ ¨àF¼á„{w!„²Jþé‚Zã[¢/XÚUr]x¡o Jd7ĽcÚÄuëØ!‡,•¦B[ü”%£Â‚>ÍR&Öœd9Ľcy”ÑTiÎO¼Z +šHáwVØcQà  ’ú¿¦¹oãSÐ_7šV姓›aX‘¢Ðªué×–Ý0BÃ,ü6³e¾Kdi…3ÆÏÄH¿·eÁd¾MC¾»ú™¢i +||MsºýûºrÍa-ïf 6ªÏ?f¾? endstream +endobj +3607 0 obj << +/Type /Page +/Contents 3608 0 R +/Resources 3606 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3613 0 R 3614 0 R ] +>> endobj +3613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 615.6894 168.4754 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +3614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 615.6894 188.6695 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00092_4dc3294d67d705f7248ef57e4259424f) >> +>> endobj +3609 0 obj << +/D [3607 0 R /XYZ 90 757.9346 null] +>> endobj +999 0 obj << +/D [3607 0 R /XYZ 90 739.9346 null] +>> endobj +242 0 obj << +/D [3607 0 R /XYZ 90 739.9346 null] +>> endobj +3610 0 obj << +/D [3607 0 R /XYZ 90 716.7484 null] +>> endobj +3611 0 obj << +/D [3607 0 R /XYZ 90 634.6393 null] +>> endobj +3612 0 obj << +/D [3607 0 R /XYZ 90 634.6393 null] +>> endobj +3606 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3618 0 obj << +/Length 1936 +/Filter /FlateDecode +>> +stream +xÚ½Z]oÛ6}÷¯0°˜X~Šd1 Ø’µHYã>µEáØŠ-̱3¤ †ý÷]Z$CEÅÔk‘‡Èñ½¼‡<‡——7"C ?d¨ñP +‰4ãùpv;ÀÃüùõ€Ø¯3ø> ~ ^¼¢z¨‘Îi>œÜGÈ ”ÐádþaD8g”sAF‡‹KxxD®ΧûiõtµßfûÃvLÔ¨°_nf‡Ûb½ŸîËÍzüiòfðÛÄ#±@ˉÁñ×àÃ'<œà7Œ˜Vbø>`D´¦ÃÛ§Ì}X ®øqª/Žmó„µO˜p¡nÆ@V–ˆÈqF0Æ£Cy÷yøwá«çwÅMQMv=+Ìä`Ôf0÷œrvœÁyñcº.ó­â[¿U¹¶@e´zÚXÆge¿=’ƒÚÖ»EWU(¿q^•Åj¾kÙ"WÀ;‘û84¨d²Cpd+þ8Ž‰û‘Rñ4ÁàEkøô·Gà½úpÀNÓ8Ïë8vÁVú§d¥r €DŽ¤ÊíÖ6_mÖæ]ÅÙg¡C ”ƸvCU›üó¾ cn°×€ÔW‚"®±Ù= %†l'ûA:»Èùvs×@§”É*Š.óV͸‡qAžŠ=üøÀq?Ü^Cž« ~¾s1ÚÜݹ½x7)ý9&xT¸d鶎ßñn·¯¦&sÂ^EÝÄ3Š”„ôœL|à#Þ™%_r*ñqžø䶘Ý7‰‡¤¥¨Š¢Ë¼U3nñÃŽ&¼oÇLŽŠYQÞCâ±`B§8ĈwfÉÄ×€œJ|¤'>¹ƒÊ©I|Ž„ÊU]æ­šqÛ‰çZ"L°ìdþˆå1Ε@Xˆô:D÷f©Œ×œÈxHgWy¿\ÛmŸ†‹JÅ—y«fäÎ%CPñugùV¦©~(ê•Õ—ÊÂÕ{N ÷F $_Yml¸e1»Ð«b½Ø/#R{ á"ýTbRqfÉR©9U*q^*!Èå5¬U‹X(†Ë£"Š0óVÍØbáî^ßI*• +~´ò(Ëêéúa_Œ‰ˆe&5×›dy1y8³dyÔ€œ*8H/äªSæbác3oÕŒÝ!*¯“ßY «Í—d}9’?㤠búpfÉú¨9Uq^!È›ítÑzÔ@ÅÈ̼U3t‡<@OÌ,ÔiòØ•¦Óâ †GV&EU™ÖUr³5j˜š1¦ µëSqÂÓÏ•Ð!" o–*Œ:…ÑÒÙÕ@Ζ mÚH)¸Ä0fÞª½]LJÄÅÿ~´8ÌŒ–E5Æîp[ýÕLÏ P•$]ä ÌTº.‡˜.œY².j@NÕE¤×Eòn»ÙoZŠÀQFfÞª»C‚!aZžß%c¬‹Òt­rÎÞ^Ž #{¾¼?·RZ»ŠurV ––(lÛó­?˜Á¿M…QD¤Q‡£V³þ#ÉÚg¡C›ÂžŽk—ÍΑiw3LžÄJE2Wæ!GšcÖÖ Ú‘œBÂQ.Xmã›[hÎ+„aÓõfa³ÜÜ”v|µk®y‹…P¤ŽÎ*ÕILTOÕ›õvPßÑAíÁá:¨5iT¸"iRHj + ")Ì›¥¦°:SXHgWí ÆÐÔFÜöôEóžÓA=f¶ÌÖ}8Qa¢å,ÙÀ!Ƭ3Kf¶äTfã =³!Èh‹4†.h‘6âv0Ë)Ô7ä9=Ò¯¡–™Fì3š ¡CŒZg–Lm È©ÔÆAzjCÑ&h ]ÐmÄí –À)%±Jh‚~ ¥Ø´XÅ3òpà£Ô™%SZr*¥qžÒäþá®h½_@j„FfÞªºUs!Áy¤ÍÙÉ¥­¡4´MîÖž„™ï:ôƒ¤§$Ê´dK.C‡H1èÍŽÅàì¶y BV#˜?EðdíaIµyÛâyå P¢§tVÇbÐ3’P.ÅÕ;$‰å`÷‹1„QDIgqíÊAoÖ[†>£ìÁáÊÁŽ´rPŒ¨€9¤¦¡Ð!’†¼Yjª91 õ€tv5Ñr0†.(q;rV®-4½4WL{æŒyÿJçˆñô.Å£y„Qk”ÊgáD6£ðœU/ZþuãÊôcí)·’mø„¼”ŸôŠÚ1·(p!Á­˜ê!¤Qiú+7CB"æm4iþ#«ƒòµiáO÷NîgoÝÃsîÖîµ$û¿¤ì%µ¯çÁ´rÛ SáÿçÖ|ïúÁ½²÷÷âh¼¬gÞ¢sЂUúÚšã^endstream +endobj +3617 0 obj << +/Type /Page +/Contents 3618 0 R +/Resources 3616 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3623 0 R 3624 0 R 3625 0 R 3626 0 R 3627 0 R 3628 0 R 3629 0 R 3630 0 R 3631 0 R 3632 0 R 3633 0 R 3634 0 R 3635 0 R 3636 0 R 3637 0 R 3638 0 R 3639 0 R 3640 0 R 3641 0 R 3643 0 R 3644 0 R 3645 0 R 3646 0 R 3647 0 R 3648 0 R 3649 0 R 3650 0 R 3651 0 R 3653 0 R 3654 0 R 3655 0 R 3656 0 R ] +>> endobj +3623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 552.2037 169.0429 566.1514] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 552.2037 189.795 566.1514] +/Subtype /Link +/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> +>> endobj +3625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 528.2933 169.0429 542.241] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3626 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 528.2933 188.6791 542.241] +/Subtype /Link +/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> +>> endobj +3627 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 504.383 169.0429 518.3307] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 504.383 187.5831 518.3307] +/Subtype /Link +/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> +>> endobj +3629 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 480.4727 169.0429 494.4204] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 480.4727 195.3241 494.4204] +/Subtype /Link +/A << /S /GoTo /D (a00093_b93e351c3abba0c700b26b7b07e9527d) >> +>> endobj +3631 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 456.5623 169.0429 470.51] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3632 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 456.5623 204.7288 470.51] +/Subtype /Link +/A << /S /GoTo /D (a00093_0c816f34c0187f2154c91a18d3ad87c8) >> +>> endobj +3633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 432.652 169.0429 446.5997] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 432.652 202.517 446.5997] +/Subtype /Link +/A << /S /GoTo /D (a00093_6157452bdc9921f44b2e22e4b5969258) >> +>> endobj +3635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 408.7417 169.0429 422.6894] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3636 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 408.7417 198.6317 422.6894] +/Subtype /Link +/A << /S /GoTo /D (a00093_8082509468b2ac80ed7746aa1a5bc4f7) >> +>> endobj +3637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 384.8313 169.0429 398.779] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 384.8313 196.8783 398.779] +/Subtype /Link +/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> +>> endobj +3639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 360.921 169.0429 374.8687] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 360.921 203.6229 374.8687] +/Subtype /Link +/A << /S /GoTo /D (a00093_b4622e2599ff3a592db09219b2641682) >> +>> endobj +3641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.183 337.0107 130.9264 350.9584] +/Subtype /Link +/A << /S /GoTo /D (a00093_1deb2899508216804823498a69378118) >> +>> endobj +3643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 274.1638 169.0429 288.1115] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 274.1638 189.795 288.1115] +/Subtype /Link +/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> +>> endobj +3645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 250.2534 169.0429 264.2011] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 250.2534 188.6791 264.2011] +/Subtype /Link +/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> +>> endobj +3647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 226.3431 169.0429 240.2908] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 226.3431 187.5831 240.2908] +/Subtype /Link +/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> +>> endobj +3649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 202.4328 169.0429 216.3805] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3650 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 202.4328 199.7475 216.3805] +/Subtype /Link +/A << /S /GoTo /D (a00093_8da121d6e50992ec55778f9b2141552d) >> +>> endobj +3651 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.183 178.5224 143.1005 192.4701] +/Subtype /Link +/A << /S /GoTo /D (a00093_3983b45977630418d3038231aa8b68ed) >> +>> endobj +3653 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 115.6755 169.0429 129.6232] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3654 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 115.6755 189.795 129.6232] +/Subtype /Link +/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> +>> endobj +3655 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 91.7652 169.0429 105.7129] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3656 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 91.7652 188.6791 105.7129] +/Subtype /Link +/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> +>> endobj +3619 0 obj << +/D [3617 0 R /XYZ 90 757.9346 null] +>> endobj +1000 0 obj << +/D [3617 0 R /XYZ 90 739.9346 null] +>> endobj +246 0 obj << +/D [3617 0 R /XYZ 90 739.9346 null] +>> endobj +3620 0 obj << +/D [3617 0 R /XYZ 90 685.8208 null] +>> endobj +3621 0 obj << +/D [3617 0 R /XYZ 90 584.5797 null] +>> endobj +3622 0 obj << +/D [3617 0 R /XYZ 90 584.5797 null] +>> endobj +3642 0 obj << +/D [3617 0 R /XYZ 90 306.6831 null] +>> endobj +3652 0 obj << +/D [3617 0 R /XYZ 90 148.1949 null] +>> endobj +3616 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3669 0 obj << +/Length 1396 +/Filter /FlateDecode +>> +stream +xÚ­™]oÛ6†ïý+tiÇïÞmíV,Ê-ñ.†¶(YqŒÆv&ÉIƒaÿ}G¦ÄP–D3ñà QÒKñߣ£#š$~$18QB!øL²Í'+8ü~BšÓ)œO}ÁóÉ÷?S“d$•ÉüæpI „&óåÇ©BDÍR*ðt¿¾ÿRV‹ª´»WU±Ï*Û¾ÌoòbFô4ßf9R +Ó)ádöy~1ùiîÆoð“¤ýïÉÇÏ8YæÅ#f´Ha#b M6NY»s7¹šüá®cO: Ý¥ là6ön“0Ž4#&Q*{¯ö›k¸Ã-ín춘15ͳõC¾´æo·2Ÿq<]mòmU¢ã;%®/ KÑ©-h}ªX5šKÙéS¿ƒµ‡ùܽëÖàΚ/UD‚ŽKyÒ1Š¸Á +š' ïÔiÈV×,a¢ztZ"¡A¢Kª?X",‰uõÀò;¥áˆ`)¢íô;ìt²X;» gÚy²Õu ³Û¯3‚§yQô@ZSdLª?ú°©RSDêG{ÌÔA+í‘Çuuk[ »¹^4s6#bz›g3Š§_Ëý&`½ªs‘Í\qÖ{BÖ·²hë; çZ†tÖû‹,d=£œS§ê>b½Ðˆrlþ_ë˜1<}û«ÝÙÚ«B¦àQ-⓹ß!­,:: ç†@Ò…€Y”¹ÃÈFáR§ê;â=4ÃòÔ:¯ä‡uï5}y5·OX`«-ó +vÈ‹ò>¥ˆ)Áã÷:„œoeÑÎw@Îu> éœ÷!‹ÃDÛ¬ûŒF"L­¤?îˆõb…bvÂúª¨‰Û˜ªW–iÂhÄ¥ˆOî~‡€¿NëoäLO@¶ºdù´]»ûc@Š)’ *¯`êTý¡‡-ui‡Íxf_3.¦»ûûÖØ«¿>4™}¹Ïm£ÚµÛ¦qsˆÑÇæ ¿Ûnó¬Zï¶íaÑ4‹»õâúî ĆâHŸõý¡ØheѱÑ976Â.6|Hˆ¡Äoê ­T/uªþÈ#¡!)ÆŒ'þçH¸Ù5§²»]ÙÊý®¨ÊïšÈ(Ö«ºdYÙºe½]uJ‚ú¡¸ £‰nd¨€ #!ì—â¿ý`âTÕ¦ +Œ$ç§_>õ; Ëñuë᫬÷|ÖÓÆGÇÏ'|Î" !‘6¦ó÷à–)CŠÃx†i@”Ü"„•ÌÐÊjÄçü A½.«u6}›¡HiÉÃ4 h |tyŠ ˆŸ±Oø0äLó¤UÕ¨Ÿ(}´ÆvïrÇhÖÆJ‚pd0<Ï>Dé-§ü3šŠ¸VH×s›ŠüTäd±©¨ rf*:Ùê:Cï(¢5‚ó:H—:UÜáDÄ•[¹ŒGýùîEÅ— F5ñ‹ +~‡«­,ÚÕȹ®†!«>d‘g}W‚o¤Kª?‚"L8‹_ù{©«#,L|Iéw¹ÚÊ¢]퀜ëjÒ¹êCWþBtÞÊ_oÜW©Fóˆ…¿—ºI$"\¿ ózBn¶²h7; 纆tnú !Foá¯7úˆ§˜CÕÂÆóï •¯Zø;³øc†"Ê´ˆ.þüâÏÉA²(þ 8¢Œõ• m‹?Wü1) n7§Š?'«Ÿ 9]ü1…«ÆqÅÕ îV;D +yÖ?K‡RC¨ÿ™DF1ÝþAF l•Ç÷ù6/nÙa·µÛßÚÆEfûf‡Ðf‹ßPö†b»G1–ÍwÌŒBÑD÷þ—f j„×Ovûn÷íi•og´^oѼùù“Àzendstream +endobj +3668 0 obj << +/Type /Page +/Contents 3669 0 R +/Resources 3667 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3671 0 R 3672 0 R 3673 0 R 3674 0 R 3675 0 R 3676 0 R 3677 0 R 3678 0 R 3679 0 R 3680 0 R 3681 0 R 3682 0 R 3683 0 R 3684 0 R 3685 0 R 3687 0 R 3688 0 R 3689 0 R 3690 0 R 3691 0 R 3692 0 R 3693 0 R 3694 0 R 3695 0 R ] +>> endobj +3671 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 713.4339 169.0429 727.3816] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3672 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 713.4339 187.5831 727.3816] +/Subtype /Link +/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> +>> endobj +3673 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 689.5236 169.0429 703.4713] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3674 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 689.5236 196.8783 703.4713] +/Subtype /Link +/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> +>> endobj +3675 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 665.6133 169.0429 679.561] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3676 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 665.6133 196.3204 679.561] +/Subtype /Link +/A << /S /GoTo /D (a00093_7a58d95f7f7827789ff52500e3d16c34) >> +>> endobj +3677 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 641.7029 169.0429 655.6506] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 641.7029 181.4959 655.6506] +/Subtype /Link +/A << /S /GoTo /D (a00093_b6e9a75167bdddd561373bc5b6ef501c) >> +>> endobj +3679 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 617.7926 169.0429 631.7403] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 617.7926 197.3963 631.7403] +/Subtype /Link +/A << /S /GoTo /D (a00093_3ad48284f7a91f78bb24096aad89056e) >> +>> endobj +3681 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 593.8823 169.0429 607.83] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3682 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 593.8823 203.633 607.83] +/Subtype /Link +/A << /S /GoTo /D (a00093_494ea6767a8a8fab7abe96b799d6c3b3) >> +>> endobj +3683 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 569.9719 169.0429 583.9196] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3684 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 569.9719 195.3339 583.9196] +/Subtype /Link +/A << /S /GoTo /D (a00093_e9205a565ea3c911a785fc4e87c91a58) >> +>> endobj +3685 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.183 546.0616 135.3497 560.0093] +/Subtype /Link +/A << /S /GoTo /D (a00093_e292b8977f6b81265bf14e1676face3e) >> +>> endobj +3687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 483.297 169.0429 497.2446] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3688 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 483.297 189.795 497.2446] +/Subtype /Link +/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> +>> endobj +3689 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 459.3866 169.0429 473.3343] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 459.3866 188.6791 473.3343] +/Subtype /Link +/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> +>> endobj +3691 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 435.4763 169.0429 449.424] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3692 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 435.4763 187.5831 449.424] +/Subtype /Link +/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> +>> endobj +3693 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.873 411.5659 169.0429 425.5136] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +3694 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.541 411.5659 196.8783 425.5136] +/Subtype /Link +/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> +>> endobj +3695 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.183 387.6556 138.1195 401.6033] +/Subtype /Link +/A << /S /GoTo /D (a00093_4f39f0fe6a820d260fe6cddf9ccaa832) >> +>> endobj +3670 0 obj << +/D [3668 0 R /XYZ 90 757.9346 null] +>> endobj +3686 0 obj << +/D [3668 0 R /XYZ 90 515.7752 null] +>> endobj +3667 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3703 0 obj << +/Length 1646 +/Filter /FlateDecode +>> +stream +xÚ­š_oÛ6Åßý)üè<ˆãåöqèZ¬À€­Í[ž­$FÛµåuýö£l‘¡béÞ +4²uÄûÏ‘DZ„)ÿ`êùÔj˼TfºxžðécøúýºÝUØ_å‚_o'¿¼~ê™7ÂLoN-`Z€˜Þ.ïf ÄM%”Ò0;þþgØÔ|ŒŸ7ÞΛùyëS³?.šãþܬîvnÇçzÓÌ›ÕvssûaòÛm"é@µ4Ðr|›ÜÝóé2˜p&½ÓÓïágམ>O”ñÃzòiòWjç¼ãtÀÐùjÃ' Š…oDœÿ¶Ç¬»½áÄØA–*pvñbð»U½^l4ᤜz4o¹àÜýù¹7LI§^Úië~B¿®¼íK-ÑŠŠy<çç}í7ûÇn×ÇŒ ‚ÿžCÒE]îè¾4tR0#8 t‚)Ï-M'5àŽ¤‹ºÝ?Oë 8eÛý7Kw¢ +DÈ ŽrÍœÊÐNEûùÒÜõv¢hÉÍ 7s­ÜK-Y™¡5ÛÃ¥“†Yi1°JŸ%jÔFíƒ@zCø˜d¤‘yƒW;IÐE]õ£+6“ ‹ºÝºÞ ]˜Â)ÂUIE•UžY«_uʸ¸mkŽsáÉ4šŽL€¥#Êèt ËÓÓ¥tätx:ºòtàt)9Ýj·Z^ÐiÎ …»•TT]-p ýº#ñ0–qiìx<2(£ãT,N—â‘Óáñ@èÊãÓ¥xät«]È ={8Ô—”F3á-NY%U?ìµÎ¾ª?­wÁ½Ñ˜d,&QFÇ©Xœ.Å$§Ãc‚ЕǧK1Ééšf`ð'™w]¥;=jPÀ@JO9e´£Yƒ×;ŠÓ%Gs:ÜQ„®ÜQœ.9šÓíöÛf{ù`0 X¯2ˆÐk&¦N(ÊÓ(£=ͼÞSœ.yšÓÁ ™j™á P¼Ÿ5Uqƽ/êzx«Ýâéëáø|AhÃüLœ°rˆ¾V!Üò%5Q‹*ÚÕ—æ®7EKžfh„¥ãl厢lÉÐŒí°_¬vóåri¨eЉðUIDTÃ6£¥ìUy.sÁ„õã?æ,QFg©Xœ.¥#§#âà•çÇKÉñ–õ¡‰ˆ¦½ö¸iIEUwíCþuç §D9Ϥp0š’\€¤$ÉÈ”`‹SBÐE]O †Wœ/êzxá>²ÛîøaH®n˜=kȇ‚²†IKÎÜ’Œ65kðzSqºdjNG˜Šà•›Šã%Ss¼öÒtÕ +ð¬\'¢}5a/È©V’Ѿf ^ï+N—|ÍéÐ9FW<0'袮Gw¨¿mæŽI-ŠW%UØp攂~á;5x3ל)+Ýx>2–(£óT,ÏN—ò‘Óáù@èÊóÓ¥|ätóÅ×á|øÓ] ³+©¨Â˜<ÝoòÂ#ù÷C-rÿÈX>¢ŒÎR±<8]ÊGN‡ç¡+ÏN—ò‘Ó5 ô'=Ϭà·Ív"úÙ Ó–Çu*ÚÙ—æ®7EK¾fh¸­ãh客hÉÔ¼×8—óÇË·vZ2v[eN +ÚHf€œ·u²Ÿx™ž”ÿ‹—Yc˜™9î&BWn'N—üÌé¾o^Ê„‰•1 +…«’Š*«U¶Û~ÕáéšôŽƒL×rŽ$#ÃU,Au=:|dáì ¼¨ëá…[øÈïxN2¡½#<ëDäU/fÈ)[’ÑÆf ^o,N—ŒÍéЫ£+¾ê º¨ëÓ–u=î†îãíK °Š"ª²ÖÌ8ùª_F®ü0S´F¿¬ÏX@¢ŒR±< 8] +HN‡¡+N—’ÓmwͲ]w1jSL)®pÃ’Š*mLôKî-0Pvð§Cš£ÍUë,O)sáàA¾Ž2ž¦S)Âí’ʈÒ¾¯7õ~ÞÄeŽq½âqãà èÙ±û¢ûËßùFtkLçÝJÆÓ`yÛ-ļ\Œú÷¸îôß—KmÚ¥ ½ô•“âÊendstream +endobj +3702 0 obj << +/Type /Page +/Contents 3703 0 R +/Resources 3701 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3708 0 R 3709 0 R 3711 0 R 3712 0 R 3714 0 R 3715 0 R 3717 0 R 3718 0 R 3720 0 R 3721 0 R 3723 0 R 3724 0 R 3726 0 R 3727 0 R 3729 0 R 3730 0 R 3732 0 R 3733 0 R 3735 0 R 3736 0 R 3738 0 R 3739 0 R 3741 0 R 3742 0 R 3744 0 R 3745 0 R 3747 0 R 3748 0 R 3750 0 R 3751 0 R 3753 0 R 3754 0 R 3756 0 R 3757 0 R 3759 0 R 3760 0 R 3762 0 R 3763 0 R 3765 0 R 3766 0 R ] +>> endobj +3708 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 616.6656 133.6164 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 616.6656 148.8392 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00094_e1e60d56ea87dfa09230e25ca5ecf2fc) >> +>> endobj +3711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 603.7142 133.6164 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3712 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 603.7142 147.7332 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00094_8cf0ca17b115ff2e3071b3fabcc43b53) >> +>> endobj +3714 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 590.3444 133.6164 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3715 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 590.3444 148.2812 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00094_e57281f5bef284bc9545834ef8ed4a96) >> +>> endobj +3717 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 576.8351 133.6164 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3718 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 576.8351 151.6087 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00094_7a59f0dad059786238d8ab604630e7f3) >> +>> endobj +3720 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 563.8836 133.6164 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3721 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 563.8836 166.2933 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00094_85d7f35662f7be20cd84e789a290dd4b) >> +>> endobj +3723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 551.9085 133.6164 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3724 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 551.9085 144.4155 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00094_0f27e16ddcf7199d514968204966f559) >> +>> endobj +3726 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 537.9808 133.6164 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3727 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 537.9808 157.138 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00094_e45b31a0a277dd5325ad2a332358b21b) >> +>> endobj +3729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 525.0293 138.5977 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3730 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 525.0293 179.8327 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00094_af7a8a5310ad945de38f5b3ac755ae7d) >> +>> endobj +3732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 512.0779 138.5977 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 512.0779 178.1589 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00094_c8f124419a231f38bb6cdf5041757a27) >> +>> endobj +3735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 499.1265 138.5977 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 499.1265 182.5922 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00094_8d4e08d051b35b1c710c3be5b8bbfa05) >> +>> endobj +3738 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 486.175 138.5977 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3739 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 486.175 168.7542 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00094_a81fff4836049cb3c018304d77337554) >> +>> endobj +3741 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 473.2236 138.5977 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3742 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 473.2236 173.1875 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00094_025ffa46b799fa6952719c499a3ae17c) >> +>> endobj +3744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 460.2722 133.6164 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3745 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 460.2722 159.3497 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00094_2541fae506eb111ff1be2372e0919839) >> +>> endobj +3747 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 447.8787 133.6164 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3748 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 447.8787 159.8977 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00094_71721395f1c7c42b8bcc111b339bea7c) >> +>> endobj +3750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 434.3693 133.6164 445.2732] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3751 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 434.3693 170.7167 445.2732] +/Subtype /Link +/A << /S /GoTo /D (a00094_6af8a59d0ab8967aacea749d6e59ac90) >> +>> endobj +3753 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 421.4179 133.6164 432.3218] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3754 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 421.4179 154.9262 432.3218] +/Subtype /Link +/A << /S /GoTo /D (a00094_619d9755a5d4aaabdb2e5e6ea4c1e0bf) >> +>> endobj +3756 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 409.0244 133.6164 419.3704] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3757 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 409.0244 153.2627 419.3704] +/Subtype /Link +/A << /S /GoTo /D (a00094_7f0ab3fe3bcf1e3ed9f5950cb4474ec1) >> +>> endobj +3759 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 395.515 138.5977 406.419] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3760 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 395.515 184.256 406.419] +/Subtype /Link +/A << /S /GoTo /D (a00094_f4a1d8cfbe270393a2de02b0c743e474) >> +>> endobj +3762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 382.5636 133.6164 393.4675] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 382.5636 154.1892 393.4675] +/Subtype /Link +/A << /S /GoTo /D (a00094_dc7001682017599549f57771f4cd1b9a) >> +>> endobj +3765 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 369.6122 133.6164 380.5161] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 369.6122 165.4367 380.5161] +/Subtype /Link +/A << /S /GoTo /D (a00094_dde3cf9a57445814d01b3c67da08afdb) >> +>> endobj +3704 0 obj << +/D [3702 0 R /XYZ 90 757.9346 null] +>> endobj +1001 0 obj << +/D [3702 0 R /XYZ 90 739.9346 null] +>> endobj +250 0 obj << +/D [3702 0 R /XYZ 90 739.9346 null] +>> endobj +3705 0 obj << +/D [3702 0 R /XYZ 90 716.7484 null] +>> endobj +3706 0 obj << +/D [3702 0 R /XYZ 90 634.6393 null] +>> endobj +3707 0 obj << +/D [3702 0 R /XYZ 90 634.6393 null] +>> endobj +3710 0 obj << +/D [3702 0 R /XYZ 90 620.6507 null] +>> endobj +3713 0 obj << +/D [3702 0 R /XYZ 90 607.6992 null] +>> endobj +3716 0 obj << +/D [3702 0 R /XYZ 90 594.3295 null] +>> endobj +3719 0 obj << +/D [3702 0 R /XYZ 90 580.8201 null] +>> endobj +3722 0 obj << +/D [3702 0 R /XYZ 90 567.8687 null] +>> endobj +3725 0 obj << +/D [3702 0 R /XYZ 90 555.8935 null] +>> endobj +3728 0 obj << +/D [3702 0 R /XYZ 90 541.9658 null] +>> endobj +3731 0 obj << +/D [3702 0 R /XYZ 90 529.0144 null] +>> endobj +3734 0 obj << +/D [3702 0 R /XYZ 90 516.063 null] +>> endobj +3737 0 obj << +/D [3702 0 R /XYZ 90 503.1115 null] +>> endobj +3740 0 obj << +/D [3702 0 R /XYZ 90 490.1601 null] +>> endobj +3743 0 obj << +/D [3702 0 R /XYZ 90 477.2087 null] +>> endobj +3746 0 obj << +/D [3702 0 R /XYZ 90 464.2572 null] +>> endobj +3749 0 obj << +/D [3702 0 R /XYZ 90 451.8637 null] +>> endobj +3752 0 obj << +/D [3702 0 R /XYZ 90 438.3544 null] +>> endobj +3755 0 obj << +/D [3702 0 R /XYZ 90 425.4029 null] +>> endobj +3758 0 obj << +/D [3702 0 R /XYZ 90 413.0094 null] +>> endobj +3761 0 obj << +/D [3702 0 R /XYZ 90 399.5001 null] +>> endobj +3764 0 obj << +/D [3702 0 R /XYZ 90 386.5486 null] +>> endobj +3701 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3769 0 obj << +/Length 1274 +/Filter /FlateDecode +>> +stream +xÚµ˜]oÛ6†ïý+ìÆfŽ‡ß †] i‹°¥ÞU[®Ì$ÂdÙ³å~üûJ”"YŠX/|aJzuøêá'$Xšh©‰åB%évF“¼ýfáñŸ/»‚_W³Ÿ^3›XbSÉ꾊 €H,YmÞÍ5»X2Iç§lwÚìïÒ]QÔwÞ–‡SZÖå[wï 0sW¤ÎߌÍAðŇÕÍìÕªµJ®ÀøgöîM6èôfF ·F&Ÿñ‚b­–%Û™`¼¹Ègog¶qêÕ c‰Jà㙂 x‡5©2Ì\w3J/KóÃÀªÓ„ØÆÌW,u÷‡¬HóÓ&(:Jɉ¶©„?ÄÒD £ƒm‘Ç‘0˜„1ÚÕ/! æ +ÄJY庴@6YrAÀtR&’¾vå:ËݦNòÚÓC¶/³]âñ³}CZ¨âܺýÁ]Q®+}`w_ÿ¯=¿ýQþº߸.õ/sHŒ$M&ŠjÌÌ°ÑO܈–]Õhc ¥caªFp^~õe½Ýçîxu^3PF4g0Yµ Ö€ÀbõÌß9<„G·ƒ€!4p9æ°Û˜­®•y‹›ÇtŸÖŸ»g$VM\¶ªXÕƒh¾ê×+6ƒÚ%†‹óÚŸo‚Fó1ˆë} S»üÓBÉ9IN<ÐÈót3Q¬öóX¾ò +JÿC&‰´BVÏ®Ý{JY‘=ѾcCž®.Úï þܵƒ)y$c=•ö»èõº =èuæòÍqd<•hMÏŽø]Á~ +‡#žâøzß3&‡ßb’OÖXuï8[ªTÔ]£ë¹ót¶_o6‡»rȨ$&æ’Qã.•!¤ºlt=—‡Úâ]M¨ÑfúÙª­ zÀÜvECБ\ÀY ç=Š™é§)OÒ»¸R¢²‰3Å'ieÞæê1@Ù Ñ•i®çîxì\6ÊúñvW†ë½ó3"Àœ ™© kqÒÇáz20ì@ £ˆô=dèVºðÅ@GÜ5ºž»¨’¹&Š‚˜´W‘¬ãö%Ôâij×èzöòýî0´'‘,Àuâ”=$—0–]ȱÐ@”Ÿ­§9ne=Žó]ºÎ˜ÞwU*NÛiUΨ]¸òóîðw}ññkCó®Â{E'-e„ø>H í6†t#‹#Ý ør¤§ÝµHwÝEž°w9ÒÓöZ¤»öãH["$Ò:eçÂü®áB¤9.-T= ÃíÿI5\ŠQø>TSCp¦S1ªYœêNÀ—S=í®¥ºëîdÆ fD1l²)wß +5—€š¨»F×sW–ùÀœàD€nº%W„É ‘ö¯YîwØzj›´²zñ|¿>åß2Ûºe¹[æÙ'·ù,–pƒ¬i\Ź„8˜\ã˜À€ÙÊ¢`vþ×ýb œŽºkÀì¹kÎ,Öûý÷ánSËü·öú­˜ZéÏ¢Vƒ¬ç´qxî1ƒëb˜´‡–â¢ÈKI•ƒS#µ‘õÆ_tœgiçp£ö?Í«À]ë#ø<¯L{ºùè|C±AqS£_t^VQoðè,ªp~S¾ZÓ‡vo\á˜e8j2ÿ½)ÜøôOE³Ù ÿôŠñ+6¾ŒRU—îLú ¨„6“T8tÚ}ùúàŠó6õ‡yµNûü ‹Šøendstream +endobj +3768 0 obj << +/Type /Page +/Contents 3769 0 R +/Resources 3767 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3772 0 R 3773 0 R 3776 0 R 3777 0 R 3779 0 R 3780 0 R 3782 0 R 3783 0 R 3785 0 R 3786 0 R 3788 0 R 3789 0 R ] +>> endobj +3772 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 604.7351 139.9724 627.7038] +/Subtype /Link +/A << /S /GoTo /D (a00049) >> +>> endobj +3773 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.8378 604.7351 192.4453 627.7038] +/Subtype /Link +/A << /S /GoTo /D (a00046) >> +>> endobj +3776 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 522.2884 166.8215 533.1924] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +3777 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 522.2884 198.084 533.1924] +/Subtype /Link +/A << /S /GoTo /D (a00095_8a661a2d544100b82d0d14a1985083d5) >> +>> endobj +3779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 483.4341 138.5977 494.3381] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3780 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 483.4341 159.9075 494.3381] +/Subtype /Link +/A << /S /GoTo /D (a00095_981392e295db4d024eea95805c51c371) >> +>> endobj +3782 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 444.5798 138.5977 455.4838] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 444.5798 160.4555 455.4838] +/Subtype /Link +/A << /S /GoTo /D (a00095_280a0c2a93544e597f92bbacf36ee1dc) >> +>> endobj +3785 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 406.7018 133.6164 416.6295] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 406.7018 144.4155 416.6295] +/Subtype /Link +/A << /S /GoTo /D (a00095_4da1d7815516cd2b5bda3a66fdf05198) >> +>> endobj +3788 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 366.8712 193.9395 377.7752] +/Subtype /Link +/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> +>> endobj +3789 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.4377 366.8712 229.0773 377.7752] +/Subtype /Link +/A << /S /GoTo /D (a00095_c8afa29e0aa5e789d6929b366d98ba56) >> +>> endobj +3770 0 obj << +/D [3768 0 R /XYZ 90 757.9346 null] +>> endobj +1002 0 obj << +/D [3768 0 R /XYZ 90 739.9346 null] +>> endobj +254 0 obj << +/D [3768 0 R /XYZ 90 739.9346 null] +>> endobj +3771 0 obj << +/D [3768 0 R /XYZ 90 685.9318 null] +>> endobj +3774 0 obj << +/D [3768 0 R /XYZ 90 541.2384 null] +>> endobj +3775 0 obj << +/D [3768 0 R /XYZ 90 541.2384 null] +>> endobj +3778 0 obj << +/D [3768 0 R /XYZ 90 502.5274 null] +>> endobj +3781 0 obj << +/D [3768 0 R /XYZ 90 463.6732 null] +>> endobj +3784 0 obj << +/D [3768 0 R /XYZ 90 424.8189 null] +>> endobj +3787 0 obj << +/D [3768 0 R /XYZ 90 385.9646 null] +>> endobj +3767 0 obj << +/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3792 0 obj << +/Length 1294 +/Filter /FlateDecode +>> +stream +xÚ­™_oÛ6Åßý)ôè<ˆãåöqÈZ¬À€­Í[®¥$ÂÛ³åmýö£,’¡b鲂‡l]þÈs$Q&ÔýƒÂÒBKM,ªX¿,hñä¾þ°ß\ºö2ü|·øé=³…%V1UÜ=ž+( ’+îªû%qS2!$,O¿þî%]¡ýÁíª]õGŸÛÃiÝž7`–µoÜ­O/õ¶]µÍn{óp÷qñË]$ñ ’+è8þZÜ?ТrÀ”pkdñû@ XËŠ—…`<|Ø,>/þˆuú†ó cã•ÀÇ ‚¸oX1s ûkÂÜè€Rº<5û¯§jïþ®é8ûãOõcÝx»®»ö•X)Ï•Ýdw…™y­LÀ×¾­ÛU³©+?Wõq}höa¦\!žxÒÕéxm_ç¶þB)Û6gõùô•'Ú4[?ù ”÷h÷ØÿíÎÙøV70òL&¹ `üd¼ü¾©7ÕqÄF†ÁädÞRA?ýéØ€*"¸¯uº~¿0&ßö´›KÉѱÆyNû¶î›Ã“oú”póßR¥²tA7 ;™¯ígD1 +(#ÂR§ã’P“¥ ºÝßÏ› 8¡»v‹›%½¨æòˆ£Tc!g¨Wåý|-w½(Zt3AÃÍœF›ï%Š­LÐÚÝñÒIE4×X){‰·QLÚ(­p«2>FYÖÈ´àÕNfè‚n@‡z‰ÑÍ63CtºM½»0™…+£*×­°DkùfRîÙÃÈm[jwžqO¦Ét$,A–OÒãütàt1)ž„n~:pº˜Ž”®Ù7Õ¤D¸[Q•ëWr”ð߉x(M(Wz:‰‹Gåãô8?8]ŒGJ‡Ç¡›œ.Æ#¥kön!ÇäòñX_R*I˜Õ8eU¹þ]«6úMÿ1‘‚PãÜ›ŒI"Àbdù˜ =Î Nc’Òá1Aèæǧ‹1IéÚvdñlj‹O])½(¿j@€s›s4ÈòŽ&¯w§‹Ž¦t¸£Ý|GqºèhJ·?ìÚÝåƒA Q¼RyQvA/™qï|Lä< ²¼§IÁë=Å颧)Ý Ô˜©š( +ÅûQS%Ô2ÈâݯٯŸÿ<ž^.µ{?ã +',å¯Up·|ž{Q ª¼«¯å®7E‹ž&hK§Ùæ;Š²EC¶ãaÝìWUu¸4TèÎDøÊ(Êôì–mJr>èyâ¹LaÚNÿ˜ +°hY>HóÃÓÅt¤t™x xóóãÅ€¤xU}l'"b€H+-nZTåz7ÝCþí䌧DK830™’T€¤$ʲ)Ázœ’ ]Ð èð”`x³S’Á ºž»ìw‡‘¾[’Kƒ¦{Mö¡ ´"\gßÜ¢,ojRðzSqºhjJ—1Á›o*ŽMMñºKÔUÍXÀ'°4^”÷U¹%<˾jEYÞפàõ¾âtÑ×”.ã+‚7ßW/ú:À«öc?é¹k•e(_w±žEyW%%Bg_·¼Ìü€«Aù¿¸šÃ\Mé2®"xó]Åñ¢«¼jjmn¡ÌJ±´^TrÝÝ«ÕèOvÔQ€’ꪭÏs<Œ;Ž«¦[›ŠØóX Þí7v»œÚ½$º›Ìy|êm}Xµaç1l!þ>Þ€\žü`þ/}Çø;æ·¥ª?:ÿ$µó{£—ûÃß¾‡­à¿?]^*Ýîl@Kfé?w4[áendstream +endobj +3791 0 obj << +/Type /Page +/Contents 3792 0 R +/Resources 3790 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3615 0 R +/Annots [ 3797 0 R 3798 0 R 3800 0 R 3801 0 R 3803 0 R 3804 0 R 3806 0 R 3807 0 R 3809 0 R 3810 0 R 3812 0 R 3813 0 R 3815 0 R 3816 0 R 3818 0 R 3819 0 R 3821 0 R 3822 0 R 3824 0 R 3825 0 R 3827 0 R 3828 0 R 3830 0 R 3831 0 R 3833 0 R 3834 0 R 3836 0 R 3837 0 R ] +>> endobj +3797 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 616.6656 133.6164 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 616.6656 148.8392 626.5933] +/Subtype /Link +/A << /S /GoTo /D (a00096_f1684ad96b8acf54154688df3883b801) >> +>> endobj +3800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 603.7142 133.6164 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 603.7142 147.7332 613.6419] +/Subtype /Link +/A << /S /GoTo /D (a00096_ed119a030ebd3bf7c30a12071c27d441) >> +>> endobj +3803 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 590.3444 133.6164 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3804 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 590.3444 148.2812 600.6904] +/Subtype /Link +/A << /S /GoTo /D (a00096_47140aa52cb9e6a2de38fdfc5da08df1) >> +>> endobj +3806 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 576.8351 133.6164 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3807 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 576.8351 151.6087 587.739] +/Subtype /Link +/A << /S /GoTo /D (a00096_569382bc53aa64c227e57efe88fe13ac) >> +>> endobj +3809 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 563.8836 133.6164 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3810 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 563.8836 166.2933 574.7876] +/Subtype /Link +/A << /S /GoTo /D (a00096_8587178a29882482be20c2822b402b96) >> +>> endobj +3812 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 551.9085 133.6164 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3813 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 551.9085 144.4155 561.8361] +/Subtype /Link +/A << /S /GoTo /D (a00096_6f8c65cfc8242197bcc3cb5b4735b16f) >> +>> endobj +3815 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 537.9808 133.6164 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3816 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 537.9808 157.138 548.8847] +/Subtype /Link +/A << /S /GoTo /D (a00096_51bbbe3099c10ef26119ddc2aa51e35e) >> +>> endobj +3818 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 525.0293 138.5977 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3819 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 525.0293 179.8327 535.9333] +/Subtype /Link +/A << /S /GoTo /D (a00096_f20186ef441ef5b600e8544a0f2d8d81) >> +>> endobj +3821 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 512.0779 138.5977 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3822 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 512.0779 178.1589 522.9818] +/Subtype /Link +/A << /S /GoTo /D (a00096_a80e8d0fc768525fa3bfb3d4e4cf260d) >> +>> endobj +3824 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 499.1265 138.5977 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3825 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 499.1265 182.5922 510.0304] +/Subtype /Link +/A << /S /GoTo /D (a00096_be2c98748e180c1747823cd2fb8ecf0e) >> +>> endobj +3827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 486.175 138.5977 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3828 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 486.175 168.7542 497.079] +/Subtype /Link +/A << /S /GoTo /D (a00096_b20096ae4953caaa42f6bb2373c4494c) >> +>> endobj +3830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 473.2236 138.5977 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3831 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 473.2236 173.1875 484.1275] +/Subtype /Link +/A << /S /GoTo /D (a00096_e82f68cb91d8688a619d55d2a8572979) >> +>> endobj +3833 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 460.2722 138.5977 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3834 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 460.2722 168.2065 471.1761] +/Subtype /Link +/A << /S /GoTo /D (a00096_c92d2f194f096e84791f95d7e8f0ba92) >> +>> endobj +3836 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 447.3207 138.5977 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3837 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 447.3207 187.0258 458.2247] +/Subtype /Link +/A << /S /GoTo /D (a00096_858f970feb7462871c814953697a8ad7) >> +>> endobj +3793 0 obj << +/D [3791 0 R /XYZ 90 757.9346 null] +>> endobj +1003 0 obj << +/D [3791 0 R /XYZ 90 739.9346 null] +>> endobj +258 0 obj << +/D [3791 0 R /XYZ 90 739.9346 null] +>> endobj +3794 0 obj << +/D [3791 0 R /XYZ 90 716.7484 null] +>> endobj +3795 0 obj << +/D [3791 0 R /XYZ 90 634.6393 null] +>> endobj +3796 0 obj << +/D [3791 0 R /XYZ 90 634.6393 null] +>> endobj +3799 0 obj << +/D [3791 0 R /XYZ 90 620.6507 null] +>> endobj +3802 0 obj << +/D [3791 0 R /XYZ 90 607.6992 null] +>> endobj +3805 0 obj << +/D [3791 0 R /XYZ 90 594.3295 null] +>> endobj +3808 0 obj << +/D [3791 0 R /XYZ 90 580.8201 null] +>> endobj +3811 0 obj << +/D [3791 0 R /XYZ 90 567.8687 null] +>> endobj +3814 0 obj << +/D [3791 0 R /XYZ 90 555.8935 null] +>> endobj +3817 0 obj << +/D [3791 0 R /XYZ 90 541.9658 null] +>> endobj +3820 0 obj << +/D [3791 0 R /XYZ 90 529.0144 null] +>> endobj +3823 0 obj << +/D [3791 0 R /XYZ 90 516.063 null] +>> endobj +3826 0 obj << +/D [3791 0 R /XYZ 90 503.1115 null] +>> endobj +3829 0 obj << +/D [3791 0 R /XYZ 90 490.1601 null] +>> endobj +3832 0 obj << +/D [3791 0 R /XYZ 90 477.2087 null] +>> endobj +3835 0 obj << +/D [3791 0 R /XYZ 90 464.2572 null] +>> endobj +3790 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3840 0 obj << +/Length 1300 +/Filter /FlateDecode +>> +stream +xÚ­YÉnÛH½ë+x”QOï‹o“Øb8ÎŒ£ (†¡H´-@[$ +‰ÿ~ŠKÓM‘ª–àâòXïu¿ªb“d …KMŒ2Ä ©“É¢G“'8ü¡ÇªÓ8??¯¸KqšëdøXDÐŒ(Îx2œŽú†pv6àŠö¥?&óYºÌ¶Ù8K˃_²Ín’•Ûwécº9c¶Ÿ.'ùié,ï3©Îî‡×½Ëa­¢©„f¹†Ÿ½Ñ=M¦ öºG‰pV%¿`‡æO=É…ß™÷¾ôþ©ã”'Š ºÆª˜è,“Žp?Zƒ7á`¥'†XÆfÄ)UĆ©ÎCsû›øèi6žÍÓiê"ÝN6³u6[-÷çÊ*B™5‰6ŒP£»GêAƒÕ¶Ö:B©€XV*˜)d]þ/Öót{¾ÏÌ('Fp†RKâ,“°YœËlžªSw@F 1L¨.…"PXãjX.±¶‚LZ"• F‘ù©Q1úV´œþÒ¤ñrÚb7 +Luû쇧Áãc:Zq›Óð¼/„CjI®> 5*Bߎ–Ó“œÆ |%lË$ºH¿SÊ—³"ƒËÙªªd>[Vµ£Tù¿z,ÿó+æé^k!Ïä@) I ÅËRºgãò«Y:Ÿn;Œ²šhaÄÁ.ºQ)¬|“ó~ç\µË$¯q%PÆ¢LD¼L 39ªuTÇ5ÔíìCÖR'8Ñœ2T'ÒQW'aŒÚ¨:k¨Ëf h—­òÕ„I¦p»t0íæ §Fm!7#žzXÜÓ àÛ=ÅÕÕž†êpOu§{Š««= Õ•wÆ®–l˜Eå tŠ{ª)܆¤ŠyZÂäžzäÿâi ó4T‡{Š¨;ÝS\]íi¨î9ËÖКÅø©¥Q+¢”Æg\%(n¬„{½öß +·õ5ÜÛ]E¥Õ¦ÒvLw™jˆ¦LbÚŽõTRBg1mj[¯6ÙÆk0iUß5GX 7g+˜Žyéaq3ƒ€íÕœGÅxk£BÞÉó¸}€’Üîñ"Vác +Zq‹ +[m;ü€gEc#÷¨/´`-Y“v$é}×B {ÖR~ØÜ€™ëaqs1ÆÀ\œ·67äÅÍmðc.® ·y¹ªÝ×UÆt‘±{TŒY:«rÕd}»|÷þæãåíðáýçÛ«‡Oýûðõîææò¶ÓvjóGSsØö€ÙîaqÛÆÓ;4®®NŽP]¤G#òNoÒ¸¼ºK‡òžÒl“þÜ¥Ûlµ“ØqsŽÏâ d/PÑŽ-"ÎDŸ~jXÔÝ0à›Ý¨ó¸†:Ü]LÞÉîFäy\CÞ«»óô±­ÓI"˜q¨N°·BÅíÍßððèƒP ‹ÛDzv„·6.äE{v“÷ˆžQЊ뗼ÏéxšnŠ·-oQÙ꜊)§)wM#N;ïÍÒ@*‰ø0Ÿ=,î3ÂxzãêêlÕEÊ‘wzãòê2å5S¥£QsèÏ°¸Æ­c¬ÅëXÂx´KW¨¸»¯á°"FIk×R¼„CÒc*¥ßšÓ/f‹4{Y·+×@¿tûöÇíAb£a©%Tƒx$xWÙX¥KÓ¹„§ž£õ›¾{©aá&xø¦_íCXÿY£‘ëü.ÓÍ8óŸü;ÚO~ãúŒ©þ®Úa¼ú§ç\œsZîA‡ÒåÖãWýÕ¦ÜÙ}ü»B“ +øã¥ú¦±úýò”¶¾gäe:æç?ìê›Ãendstream +endobj +3839 0 obj << +/Type /Page +/Contents 3840 0 R +/Resources 3838 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3875 0 R +/Annots [ 3843 0 R 3844 0 R 3847 0 R 3848 0 R 3850 0 R 3851 0 R 3853 0 R 3854 0 R 3856 0 R 3857 0 R 3859 0 R 3861 0 R 3863 0 R 3864 0 R 3866 0 R 3867 0 R 3869 0 R 3871 0 R 3872 0 R 3874 0 R ] +>> endobj +3843 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.7172 668.6407 154.358 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00040) >> +>> endobj +3844 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.2234 668.6407 222.4221 690.8921] +/Subtype /Link +/A << /S /GoTo /D (a00041) >> +>> endobj +3847 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 584.4605 133.6164 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3848 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 584.4605 157.1377 594.3882] +/Subtype /Link +/A << /S /GoTo /D (a00097_5960d82e7aca2986b8509a0d87d6cbc8) >> +>> endobj +3850 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 571.509 133.6164 581.4367] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3851 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 571.509 154.3681 581.4367] +/Subtype /Link +/A << /S /GoTo /D (a00097_8ae6395641b7752dce47881e20cee970) >> +>> endobj +3853 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 557.5814 133.6164 568.4853] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +3854 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 557.5814 166.5525 568.4853] +/Subtype /Link +/A << /S /GoTo /D (a00097_6925d46b2819adb474a5f0036f02dd7d) >> +>> endobj +3856 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 544.6299 138.5977 555.5339] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3857 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 544.6299 157.138 555.5339] +/Subtype /Link +/A << /S /GoTo /D (a00097_7092781c50dcad50f473888585c85b83) >> +>> endobj +3859 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 532.2364 152.1466 542.5824] +/Subtype /Link +/A << /S /GoTo /D (a00097_a6487b9c1c773b32656065d0e19bf142) >> +>> endobj +3861 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 519.285 148.2711 529.631] +/Subtype /Link +/A << /S /GoTo /D (a00097_e87913860c6b05c6e6b060639b950098) >> +>> endobj +3863 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 505.7756 138.5977 516.6796] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3864 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 505.7756 193.1026 516.6796] +/Subtype /Link +/A << /S /GoTo /D (a00097_134ec55c3d5abaebfed4ff8edfedf1ea) >> +>> endobj +3866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 492.8242 138.5977 503.7281] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 492.8242 195.3141 503.7281] +/Subtype /Link +/A << /S /GoTo /D (a00097_5a3116623c6a7da7c82db6c301ae0da3) >> +>> endobj +3869 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 479.8728 192.5346 490.7767] +/Subtype /Link +/A << /S /GoTo /D (a00097_606d2729bf411ade69044828403a72af) >> +>> endobj +3871 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 466.9213 138.5977 477.8253] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3872 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 466.9213 209.1522 477.8253] +/Subtype /Link +/A << /S /GoTo /D (a00097_2fca02673894f222b01ad2d3a4d7dd79) >> +>> endobj +3874 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 453.9699 175.3891 464.8738] +/Subtype /Link +/A << /S /GoTo /D (a00097_fb60f42593d305ea36d9b4303722696e) >> +>> endobj +3841 0 obj << +/D [3839 0 R /XYZ 90 757.9346 null] +>> endobj +1004 0 obj << +/D [3839 0 R /XYZ 90 739.9346 null] +>> endobj +262 0 obj << +/D [3839 0 R /XYZ 90 739.9346 null] +>> endobj +3842 0 obj << +/D [3839 0 R /XYZ 90 717.8172 null] +>> endobj +3845 0 obj << +/D [3839 0 R /XYZ 90 602.4342 null] +>> endobj +3846 0 obj << +/D [3839 0 R /XYZ 90 602.4342 null] +>> endobj +3849 0 obj << +/D [3839 0 R /XYZ 90 588.4455 null] +>> endobj +3852 0 obj << +/D [3839 0 R /XYZ 90 575.4941 null] +>> endobj +3855 0 obj << +/D [3839 0 R /XYZ 90 561.5664 null] +>> endobj +3858 0 obj << +/D [3839 0 R /XYZ 90 548.615 null] +>> endobj +3860 0 obj << +/D [3839 0 R /XYZ 90 536.2215 null] +>> endobj +3862 0 obj << +/D [3839 0 R /XYZ 90 523.27 null] +>> endobj +3865 0 obj << +/D [3839 0 R /XYZ 90 509.7607 null] +>> endobj +3868 0 obj << +/D [3839 0 R /XYZ 90 496.8093 null] +>> endobj +3870 0 obj << +/D [3839 0 R /XYZ 90 483.8578 null] +>> endobj +3873 0 obj << +/D [3839 0 R /XYZ 90 470.9064 null] +>> endobj +3838 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3878 0 obj << +/Length 293 +/Filter /FlateDecode +>> +stream +xÚ¥QMkÃ0 ½ûWø˜âYr,Û=ŽmeÁFs+=¤IZKÂBÂÖ?ç«ÚÛðAO~’xz.ýî$7Ú§bâyÅ$?ûï-ƒ™Ž<­ Söð‚Ž;ቧ§qÐÈÓb@La„q¬!è_ß=Ô2!'ð”uÙ„v]Ûç]߆`ƒr&›¼¯ÊºËºÏ¦ižӫ’Y¨VƒŽo¶?H^xÁ “B9«ùO¤çW,Fµ$_lÇ>®s&bl¸·ï@GdIkîH¿96ÿÒ0ºj} (µ6•„3ʦ*ô1!7࣡ÑÙmY—mÖ•Åd—÷hŒo HBÐA?'€s”TœýG)iB§uдSr{¨ãe¹Éïå\Þ\CƒºJ[¹ôðm€µendstream +endobj +3877 0 obj << +/Type /Page +/Contents 3878 0 R +/Resources 3876 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3875 0 R +>> endobj +3879 0 obj << +/D [3877 0 R /XYZ 90 757.9346 null] +>> endobj +3876 0 obj << +/Font << /F29 499 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3882 0 obj << +/Length 836 +/Filter /FlateDecode +>> +stream +xÚVMo›@½çW ôblöû£ª¢¦MSµ½T‘oM!Lb à¦?¿³,`ÌRùÀÚûæ½·3;ƒI€áCƒ%2ŒË Ù]àà~þzAºmNu¢Wi‘¤G=‚Œ½5ÈPM{½Añ6mb ÚtÎÓ:©²ýÈ7 PZ£ŽÆ–æ¦pAiHÄêo¼Û÷~Ê'÷Ü–!«W÷¥)ÝóµÊš7äŽgI›®ºCeÍÖ­öUÙ”u™¼Øó§M¬±‹/ë¡ÜZ L´ +8ÓHIÉg¯DŠÆ¨þZO¨ ˜—ÀHQâÊsZ¯Í¶¬ÞOµ ¦H1J΋¨õq~ VH&Žl­ü&ÞuÕ9. yíªCÈ(ZRÄ™°=a£>xV•BÚ(9±ê¶_‚~õcd»˜±-Ƕ=fk Ûë,©QN½Pè> endobj +3885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 437.3806 250.6249 458.582] +/Subtype/Link/A<> +>> endobj +3886 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 410.0836 212.6587 418.9302] +/Subtype /Link +/A << /S /GoTo /D (a00171) >> +>> endobj +3888 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 298.6746 202.2283 309.205] +/Subtype /Link +/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> +>> endobj +3889 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 285.3496 217.7102 296.2535] +/Subtype /Link +/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> +>> endobj +3883 0 obj << +/D [3881 0 R /XYZ 90 757.9346 null] +>> endobj +266 0 obj << +/D [3881 0 R /XYZ 90 739.9346 null] +>> endobj +1064 0 obj << +/D [3881 0 R /XYZ 90 553.9527 null] +>> endobj +270 0 obj << +/D [3881 0 R /XYZ 90 553.9527 null] +>> endobj +3884 0 obj << +/D [3881 0 R /XYZ 90 517.4245 null] +>> endobj +3887 0 obj << +/D [3881 0 R /XYZ 90 317.251 null] +>> endobj +3880 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3893 0 obj << +/Length 1119 +/Filter /FlateDecode +>> +stream +xÚ¥WßoÛ6~÷_!´/öƒYÞñ‡Ä`–-K׬²Ö{jŠ@“•X¨cy–Ü´ÿýŽ©È’, ü Êúxßǻ㑧†¡ +™RÉÓŒô÷Û¸ÏKú¾l~^ÍÞ\£ 3u°z¨,h` +ƒÕúÓd´X¢AÎïni¨ø¯×Ù6­GWyr|Jwe\fùnñyu3ûuÕÐ:UJh°¤ÿÌ>}æÁšÔÝÌ8&RÁ3½pÆ`ð4“(üËvöqögc§þPMZœ1¼:ŒþA¿<¤Õ†õê"†‹%pÎçñ~_¼Ù¤Ûm¾|^Ÿç‡íºûÎ6ÝeHÒâyºKR»ìš˜Qªâ#[:Œ>Žñ*-c2´vL‹äí½ûÈŽhEÅš±‹0µ™ßÒxM¼ÕÄ;ÎÑËyÈÝŸñ®~¦ PóoñÓÞ#ò‡ú¹É¨æÏõK™×ÏçCV:\kòË6Kª°••ÎûC^æEž|±JË‚u)Æ! +-"Æ ƒaó eÕOÌÈ0ÎÙRœq©TåˆË…ÕZnòÃE—8²P Œ“7¨öv€‡,¡^¬UôëøɅ︫½°-êð´fkdR(JÞjÖ=©aÈ"êŽÔúó—À~oÉö3dë¶ìže+ &Ù?YR°"íjAi˜ÆH»­AõùOÞ·fùÈð%(o©TP>XäUjÓ{—UÛ¢rt¶;Iû®'UÄY 4p¦¸pêí§Ã£Ã|h‡ßã—í áïÙµêúå¡ëL@†ÈeGN×™5!¢oÍŠ`ΙúÄ™èMBH^•²‚¾ÎvÉö¸¦-®©þ¼:fû|_²Í+kÁ–˜+†°{»Ít Æ Éh ×Åé*.ã:FËÃ1)u,N“åÙ³ª Ú”šöU$_ìXþ;DÕ/¶ÓelPS¼t ®õ)oQ­¶Ç, |"ê0ŸÏHŸÒгÛdä}“‘÷Èý-Né¡ÒãÎhPBNÂOq’‘d +Û{v0àÒ^-dzoFÞÀ&>Êøð ^ðÞ×k·Ò¹Ô,Ä:äçcîñS2zv­Œ¿ÞÝÞ_ÞÞþrùþýPýá¢q/4¨ z$/(ïwSŽ. I¼Ý +*KÎÂIÁ¸>î’ú~10\2m"8Ÿ0-ÀXÂxØtÂŒ1¶fœ·I˜6ï×’“²u¿F@u¸Gj„ÃO©èÙØiîh{ã1ãiPR £ó¨ã;®¸w +a „J}¾iF M&À(ãKLðú8áL€Sîÿ*zv‡ £ûU/úÚ{ñ¨7Ô„ä‚ +†(LG?2$çd´Òÿ«£¬2(¢) °}¼iêél%éi¢m½«ümºKt²ºÞÍßMÿðƒÛvÝ  {ò èZgä\»¦Ívb¾që÷Ø÷ö·ïi¯·¶MþÉs‡ðendstream +endobj +3892 0 obj << +/Type /Page +/Contents 3893 0 R +/Resources 3891 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3875 0 R +/Annots [ 3896 0 R 3897 0 R 3899 0 R 3901 0 R 3903 0 R 3904 0 R ] +>> endobj +3896 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +3897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 213.2166 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00172) >> +>> endobj +3899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 516.2256 211.8219 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00078) >> +>> endobj +3901 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 458.3971 213.038 469.3011] +/Subtype /Link +/A << /S /GoTo /D (a00163_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +3903 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 401.545 217.7102 412.4489] +/Subtype /Link +/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> +>> endobj +3904 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 388.9671 202.2283 399.4975] +/Subtype /Link +/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> +>> endobj +3894 0 obj << +/D [3892 0 R /XYZ 90 757.9346 null] +>> endobj +1065 0 obj << +/D [3892 0 R /XYZ 90 739.9346 null] +>> endobj +274 0 obj << +/D [3892 0 R /XYZ 90 739.9346 null] +>> endobj +3895 0 obj << +/D [3892 0 R /XYZ 90 716.7484 null] +>> endobj +3898 0 obj << +/D [3892 0 R /XYZ 90 534.1992 null] +>> endobj +3900 0 obj << +/D [3892 0 R /XYZ 90 477.3471 null] +>> endobj +3902 0 obj << +/D [3892 0 R /XYZ 90 420.4949 null] +>> endobj +3891 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3908 0 obj << +/Length 2681 +/Filter /FlateDecode +>> +stream +xÚ½[]o7}÷¯ÚéÁ,?‡d°(Ö[+Y§‰œÊvv¦0T[ŽØ’«&ù÷½”†#rȹœ"‹E"Ygî9¼ç^’3¢Ø€Â?6°t •&VÈjpótDáϯŽXýñ1|~þuyôÃKn–ØŠWƒË»]„ŠÅ\Þþ:4DŒŽ¹¢ÃÙóóú‡Õˆ™á|½|ü3x9ÒtHnö¨—óý«éün¾Ç,nÜŸ¤ÕI;úíòõÑø²ÑTKV¢bNÑG¿þF· ýõ%Â5ø o(aÖòÁÓ‘ä¿y<º8ú¥‰³ÿ`wAn䊉üЙ$ðîÇÎ!::£ô[ÇÞ31b•Ú1 ‚êÆ\3VsÎ73t»t:_߬ž7ËEGfA.‰Tzætr±¿ê~¹Þì_-fOµ¦ÍrÿÿÙ»ÚÏÛÛÕ|½Þ¿YíÃÔt+5$m—Œ"”=¨„%Js–ͱ‡¨´ÄŒ%” +ˆ¥\i±Ó~2ÛÍýrõ¢ÍÍ('Z@4”¼AeØÃœ1ª‰fB¢íèogOuÆ·‹O#F‡óÇõ>ãŒWWœH¡ ÒvWý#‘ª51VW-©û? ü«ŸÙþŠŒì*”Dvf ûŸ· Ô’›åS[d:ËXæ4ü˜)Ìcf|H-'+½ƒ^Þ?Ô÷Rî»åáéùqþ4_lêÏfµÿÛjvÍÂ4©¸”ûf™; ‹‡]kíu,"mmktiÅÍ@Y õ[gÒ}²úXC¦a9zøq€ÏTc;ª“V믔›ZÚ2Œ JëXF»<¨@ÞŽåÈImgX|ÇÖÇ 3øýÃâæq{ ŽT0o}·WMî¿‹³-rØíÃslM{O ¢­‰z¯¥:[Âü³¬7«‡ÅGrŸ‰$¡—8õÀs34Ì'œqc’h^Wp]5óufƒŽÓ±þ¸•7ä&¦ +æ#qáÎU:!ÂUf!”±A•xa´´ªbÞïoë‘&䲂tÀŠ“w7‚Ç—d$qŒÉÕ›7é$+7Z†ïQ%^­ˆÖ¦Åû*úçˆÓáòá¶. ΄å\Ö‰™IÒjØ£Ív»X;‹&`Eãaå¢Áƒ¢Áy›¢ y{MDÞ§hpI\'ãíɯ§ãËéÙø"Y™"BÙBTžÃÌe¤µ1½ÉÙ ;OJ+ÖmsÀlö°²Íc`3ÎÛØòö°9"ïc3.#‰[ow¯_¾9I:|ÅÀð‹wç“‹q⸻DÀäŽ&¤A”p;.Z ¡_L¶·¥ 0˜nÓfº‡•MÇÓqÞÆô·‡éyÓqIÜÔôów?ŸŽ¯/.GVÀ-clxy•6½ †4 OOƒ*èâzŠXý’ŸÞá6¯rõÒY++—Æ”ÎÛ”@ÈÛ£"ò>%€ËHâv–ÀÙäýxšé~ØÙ2* ž–UÐÃmE`¯Ü²ƒ~¡Ù))`“Ði}À¬÷°²õc`=ÎÛXòö°>"ïc=.#‰[êþÉ©ûóÉô´-QP‘ÏOƒ*>•ÂÆ ²íA¹d¼»VV®Œ1¨œ·©·G Dä}j—‘ÄMkàÄÝà_]þû|ZOÿgïÓI@WÄFiÌ?©QU\["Ý~"þËŒÿÂ2BݱËÿ€øßÀŠþ£Œÿ ¼Þÿˆ·ìLÞÃÿ‚Œ$nêÿåÔ½¸šü”˜.)QZZ<# ª …ÃZO+¥b)à:ϹîžÕ)£»]˜ëVvc \Çy×CÞ®Gä}\Çe$q3›ýd’çÜùbžŠUÐÀùîñ¥‰5€Ý,gw%IUéîç>!³ÛÃÊvcŒÝ8ocwÈÛÃݸŒ$nÛn~ s{§ÝX*»Q »C wuB1"uÕýÄ&`v{XÙnŒ1°çmìy{Ø‘÷±—‘ÄMíO§×oO.~NL¯(Š*jxòvœëp%­Á“Ò  +jx›6ئÇjÀx‘3Þ}ùCy÷“š€ïaeã1ÆÀxœ·1>äía|DÞÇx\F×ɈžË¯¯&Wãüέ2 ÏGƒ*Ù-ånà Éu:·†hH_§á!1¼ G†x½áoÙ𘼇áIÜŒá“ñ·©€ÕYVx2TA§ +Öð0µNEn“Ó>Qœv0·=¬ì6Ƹó6n‡¼=ÜŽÈû¸ËHâf܆ÛÙäUú¬¹6Ì\þ·UÂ9%ÚØ–ÜM8לnº½„Ìp+Ž1†ã¼á!oÃ#ò>†ã2’¸ÃOsû6jˆÊâÙhPœQbx;¹åÛmÜ­wÛ0»=¬l7ÆØó6v‡¼=ìŽÈûØËHâf솛ÛÂOÓDšJá)iP-îËw«5µäž®r©ÜÙ2d˜çVöc <ÇyÏCÞžGä}<Çe$qŒéøâü͈Q:|=žäÏPJ$ãÏFƒ*Èà‚C6„ŠeÈü™,Yc£3Y/·‹wŠ/w&Ëqs'½º*$ø)*ÖFw(œÔWGHEŠˆ!–1w—†‡$´£%^ÏžŸof‰ ·Z¬€S ·°°S?<ŽåNRåœÖîô±ê¾q˜×V6c ÜÆy»CÞ²ßwÃqIÜÀò?¶óÕ×ôjã«X! Uâ7& èç8ûàúÍýl•;€ÇÝ—µúoÀsg‡s¥ã΃³Š¬6FÄ'¤3®îÁÇ!z7EˆÝôÃá–PmÍ!¨SðËv¾Çgœš×õæÍýlA ûëÃå»åÊãæퟠ/w¯~÷Aç‹:Ør»!#—†-8>r?pA˜eÝ¿™PnÓK»êVî² `›qg°;\èßc%uM/†ê¶¬ºÞ¤¨IE™Då7¨”8ªf&)¡–³VZhú ŠIMT%Y‹Ù ÔøÒГ¸Áð¸\~Ú>§;} —X‹§ AÀLOhEU;ÿÏî-¥5¼ç  ±ÀÃœ‚7È}?B:Ã&w?q84²ÿ!BÓã³ÕÊýšaöµnæ»ýÿŸËÏ‹8Àº»Ë¡¡”°âoty÷±[á¾WÛܣŠ=„ûæÇ¥yX( opD[ÐßmÖ|{G Áº;"íÑÜø ÛQƒÖþ8߬ç+ÿ[™Ì}WMÇàÜ=–Z·2PÜÔiF@}ö‰0…ð¬Rú›~4¸+f—0!«Á®E»¯ îBNó«ùb¾šmüÏóü²üÖ¿xí2¹­ß0^ÿO_pñ‚Óý;NiU/æ#®†~AßúŸ21R¯ÛýtùåëÇù¢÷‹ÆL~þ™`B&endstream +endobj +3907 0 obj << +/Type /Page +/Contents 3908 0 R +/Resources 3906 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3875 0 R +/Annots [ 3911 0 R 3912 0 R 3914 0 R 3915 0 R 3917 0 R 3919 0 R 3921 0 R 3923 0 R 3925 0 R 3927 0 R 3929 0 R 3931 0 R 3933 0 R 3935 0 R 3937 0 R 3939 0 R 3941 0 R 3943 0 R 3945 0 R 3947 0 R 3948 0 R 3950 0 R 3951 0 R 3952 0 R 3953 0 R 3954 0 R 3955 0 R ] +>> endobj +3911 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.1863 274.5352 659.3878] +/Subtype/Link/A<> +>> endobj +3912 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 592.9052 189.974 601.7519] +/Subtype /Link +/A << /S /GoTo /D (a00173) >> +>> endobj +3914 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 480.609 174.2837 491.1394] +/Subtype /Link +/A << /S /GoTo /D (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) >> +>> endobj +3915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 468.0205 216.3555 477.9481] +/Subtype /Link +/A << /S /GoTo /D (a00160_gecf13b8dc783db2202ca5c34fe117fc3) >> +>> endobj +3917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 454.8292 258.0292 464.7569] +/Subtype /Link +/A << /S /GoTo /D (a00102_96eb4534b574ece96ed36806039f73d3) >> +>> endobj +3919 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 441.638 288.6444 451.5657] +/Subtype /Link +/A << /S /GoTo /D (a00102_4350350ce0d4595876743d4c0a720bcc) >> +>> endobj +3921 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 428.4468 295.1 438.3745] +/Subtype /Link +/A << /S /GoTo /D (a00102_e7250008b68d1909d54040515eef8ebb) >> +>> endobj +3923 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 415.2556 305.9495 425.1832] +/Subtype /Link +/A << /S /GoTo /D (a00102_6a327c0ffd40f69fbcd5f01f12e5745c) >> +>> endobj +3925 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 402.0643 277.9346 411.992] +/Subtype /Link +/A << /S /GoTo /D (a00102_dd685a0f8b5e76a2687cc0f306813bfb) >> +>> endobj +3927 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 388.8731 241.5711 398.8008] +/Subtype /Link +/A << /S /GoTo /D (a00102_2e52037249bb98d7bbecf42e275beb07) >> +>> endobj +3929 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 375.6819 222.0444 385.6096] +/Subtype /Link +/A << /S /GoTo /D (a00102_72d99b1623afa14bd58c667b748c2ddc) >> +>> endobj +3931 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 362.4907 222.0444 372.4183] +/Subtype /Link +/A << /S /GoTo /D (a00102_c72f8777ccc45ae274449ea7a9f3de04) >> +>> endobj +3933 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 349.2994 261.3467 359.2271] +/Subtype /Link +/A << /S /GoTo /D (a00102_9f6c329c04baba17fe0f5b2a6597d713) >> +>> endobj +3935 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 336.1082 260.231 346.0359] +/Subtype /Link +/A << /S /GoTo /D (a00102_6aaa9da3d0f8d4c0799516d46d939942) >> +>> endobj +3937 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 322.917 261.546 332.8447] +/Subtype /Link +/A << /S /GoTo /D (a00102_8ee5e2c8e517d6e4f2198057f81e93c6) >> +>> endobj +3939 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 309.7258 222.0643 319.6534] +/Subtype /Link +/A << /S /GoTo /D (a00102_ee60b8757bacab269b0ccd7c240bf01d) >> +>> endobj +3941 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 296.5345 204.3509 306.4622] +/Subtype /Link +/A << /S /GoTo /D (a00102_bf4401501f1389872141a78b63f325a3) >> +>> endobj +3943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 283.3433 219.2947 293.271] +/Subtype /Link +/A << /S /GoTo /D (a00102_55735650f879293d9b7b5fda6753d147) >> +>> endobj +3945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 270.1521 209.3322 280.0797] +/Subtype /Link +/A << /S /GoTo /D (a00102_876c82c946543cd70c141e41417138e0) >> +>> endobj +3947 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 256.9608 214.4828 266.8885] +/Subtype /Link +/A << /S /GoTo /D (a00102_7bf0c086c7c41c12cc63324327932d91) >> +>> endobj +3948 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 243.7696 231.4091 253.6973] +/Subtype /Link +/A << /S /GoTo /D (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) >> +>> endobj +3950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 185.0539 194.0092 195.9579] +/Subtype /Link +/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> +>> endobj +3951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 171.8627 187.9223 182.7667] +/Subtype /Link +/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> +>> endobj +3952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 132.5288 138.5977 143.4328] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3953 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 132.5288 205.5661 143.4328] +/Subtype /Link +/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> +>> endobj +3954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 93.195 138.5977 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 93.195 214.2533 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> +>> endobj +3909 0 obj << +/D [3907 0 R /XYZ 90 757.9346 null] +>> endobj +1066 0 obj << +/D [3907 0 R /XYZ 90 739.9346 null] +>> endobj +278 0 obj << +/D [3907 0 R /XYZ 90 739.9346 null] +>> endobj +3910 0 obj << +/D [3907 0 R /XYZ 90 716.6405 null] +>> endobj +3913 0 obj << +/D [3907 0 R /XYZ 90 499.4252 null] +>> endobj +3916 0 obj << +/D [3907 0 R /XYZ 90 472.0055 null] +>> endobj +3918 0 obj << +/D [3907 0 R /XYZ 90 458.8143 null] +>> endobj +3920 0 obj << +/D [3907 0 R /XYZ 90 445.6231 null] +>> endobj +3922 0 obj << +/D [3907 0 R /XYZ 90 432.4318 null] +>> endobj +3924 0 obj << +/D [3907 0 R /XYZ 90 419.2406 null] +>> endobj +3926 0 obj << +/D [3907 0 R /XYZ 90 406.0494 null] +>> endobj +3928 0 obj << +/D [3907 0 R /XYZ 90 392.8582 null] +>> endobj +3930 0 obj << +/D [3907 0 R /XYZ 90 379.6669 null] +>> endobj +3932 0 obj << +/D [3907 0 R /XYZ 90 366.4757 null] +>> endobj +3934 0 obj << +/D [3907 0 R /XYZ 90 353.2845 null] +>> endobj +3936 0 obj << +/D [3907 0 R /XYZ 90 340.0933 null] +>> endobj +3938 0 obj << +/D [3907 0 R /XYZ 90 326.902 null] +>> endobj +3940 0 obj << +/D [3907 0 R /XYZ 90 313.7108 null] +>> endobj +3942 0 obj << +/D [3907 0 R /XYZ 90 300.5196 null] +>> endobj +3944 0 obj << +/D [3907 0 R /XYZ 90 287.3283 null] +>> endobj +3946 0 obj << +/D [3907 0 R /XYZ 90 274.1371 null] +>> endobj +3949 0 obj << +/D [3907 0 R /XYZ 90 204.2437 null] +>> endobj +3906 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3959 0 obj << +/Length 737 +/Filter /FlateDecode +>> +stream +xÚ­VMOã0½çWøØðÎŒ¿Žûi?é *m(‘J#Ò–ýõ;nì*mJSiW9ĉŸ=ož=ÏFü È@8ãd¦´“§ÄŒŸ'ºO¸ÿ¤ ø8J>œQ&2™Y²bô°žÁ¢4„$FÓëžPFÊ ê‹Ü40@ M㬘çMës9©ŸòÅj¼*ÊÅðvt™|mÂVFYôAŸ“ë[Sfw™€TYjÄ+€Ä,#ñ”hRñcž\%?7ó4ëû’Ó`dªRqB®I§ê€œDK,qòŽ6j)·Ú«Ü .KEDyI¾ß¯ÆÅ¢É{õ˜ÔU5d‘Xƒù[øU.nhV7Ó Ô·«¦±Ì«—¼"â@î*Ù9äø¨ðp*!$™4ï/Oîqá7þQ6ïz=”¡ç¹Î«"_¾k 6e4iú_¬ÁZ' œê±† ¬×Ú°†ž¸Ñ¶âöZÃvì#¬¡‡EgÞ–5‹¢S¼)ø¬Cì!¢úÂó:¡ÛŸ­! +qpë’d•>rë·Ð‡¶~„y&¬Àx^üÉwĦ¼H}‡œÕ(hsÔN6Îo{›íÓX6´ÆýÓ%c]¬¹B¥ÚW$Ëç?_.XE> endobj +3961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 703.2821 182.941 713.8125] +/Subtype /Link +/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> +>> endobj +3962 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.7567 703.2821 211.444 713.8125] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 664.4278 178.5273 674.9582] +/Subtype /Link +/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> +>> endobj +3960 0 obj << +/D [3958 0 R /XYZ 90 757.9346 null] +>> endobj +3957 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3966 0 obj << +/Length 2209 +/Filter /FlateDecode +>> +stream +xÚ¥Y[¯ÛÆ~ׯ⩨Ö{'éE]Ÿ:ˆ›§ÉÉSÐuDX‡RDÒ'FÑÿÞ™½PË‹H†ÄË·3³³³ßÌ,Ù’Â-ºŒTD!õ2{^Ðå<þnÁÜë ¼ß„€¿?,^¿çÉ2!‰æzù°34#Š3¾|Øþ²Š‰\o¸¢«ôtª^Ÿ×,^åÕñð9¸\GtEöõ¾8äöêÇ|—[L™á#q¹bŠ­{ø°øÇCk“3Y ÍТß¿üF—[0ý‘Äjù7”°$áËç…äÂß?-þÓʱ/Ì€±™+&ƧÎ$'Üσ+¢`êŒÒ¯;LØjb$QÊh‚e@E/st@K„V-ÌgÔz fôðîþµÆVÁÒ¨ã«c–5犬7*–«‡}neú쮎;û_ï­a¼c8[=7Um¯>æöý9GOEUçg;¶z)ê½½rSà«Ô ƒÍ~*N[]x½­79¨Î»³Kõó÷÷oïïß½ýá»ÚÛ`S’v„‰6—F7‡m,FeŸdii/ªúxÎí%ê… Ý]; Jk™åe@o»A!?ËDK>³ñ[ü&0ÜxC¹f‚Åéb¾X4CJéZÑÛô-jN7ÔP”Câéè®ês“Õw†¬qnÉݳ˜SáâËɹC,pÒ¸SÐ äî*àn4­Ñÿ(x›ïÞX•ø`Ÿ_ÞØ+tT±øÁµ|¬]!Xn/€fzeùëÁ‹v´ïYÊœr¨? ÐÊ>²ÛǘŸûDbqÛM+£¡)\©x)µ&•Ñlh9ü&0Z}¹.´ 5CKAaŠ¡Õ±bZ5§ŠØ8æ=ÝA)‡iØA:[»]ˆÝñp8"ͽ´þ7|ôGŠ|íœz8€Û!'änöv„wuá[R€‹Ãñøéj%)!hH áįW”!ÚGP¸›¬fªô€Óú|,¶67îëú´Åpļð+U_Á?ûÖÇeB¤–¶’yñ_”.«vxRо¬6¬c¨Ù“`+‡zááƒÿš̵d¥MüèÆô˜] Ó“›²ÃdûôlsAF%X¡#cóòOæ$ÒTð|›Öé©>ëB$&:áêëÅÚþÄI1áJëŽÔÿÍÀ÷Å„/GhhØA +Ɖb1¿Úô†€±6AC¥Ë‹³¥8WÃöÛ6è &5¶¨9½Ð|&üÕÑÛúÆ’Û`¾LSH)ºgÂõ:ÙÁçléKõɲKñƒ¦–ØPÏ8D0 +À˜qÌD:Y×`¡­vmè'šS ]¡Ttuû*Ãx3 a$‚Ìyãúèö¼æÒíÀÆæŠ)vœy5Â\PÂ$®2D˜`ˆ6Ë“/ 1£×3DGï+W% {h ƒÒ°§ü:7xüœ¹¾»øùî’9Ô  d >í‰5c ®@Ò5Á¶ñažî ÌÑ ´­±öÞõgc‘ÂÌÁ‡J®FJ˜ˆ”6)“/‘2£×GJGïç5þƒ©¯|‘0¦zº¯ŠÇÏY1;¾J[A°M›vƒÍéOQTô¼`jAç ¬ÇVÒ_Ääu~S«îaó«>¥1Xõi½íª‡zçW½£û–UŸ¶b 7XõT±CKâˆÈÐ]ã'l4§=Æ3{xÛõ=¬¹/h_¿g2¤ì "w® L*F½`F1Œ²<ëùó€ß¤„‚6Inõf‹Ÿ™ÏPî¥/è› 1S†S¥X*îúE'D+Õâ ÿø³ñâ”n·ç±­ås9“ +•&·%þ=Qøµ0´áPËÇ4ÃÐÿäúÜöï^öE†µÉ¾[Ýù3D É8õMoUÛs¾pˆ‰è«%ŽÙ Ýã£áDý<9vJ\'UÆg‹’6O:À)Ò™ÖÛ’N¨wžt:ºo!i+rÒJx7ä¨ +$´­ÓNð¨9õ±Ä¯C}çëŒq]¤°*¹Ñ?kA_îuž`”HEÓSoQCÅ]ž€°M†qwOl˪ÊÏî@~’.à_P}+]è)ºð0CíwÛµŒqDûAöM};ØTíqš{ó{“Ÿ‹¼ºÊ ‰&BÆ7W„S:Ú«Qp.ÓJÕ×rÃ.1 a‚‡ÝÔâtçîc84í2ÒÆ]ßåeŽ§Ž)=©þË_|@·5î†q÷Oßpñ†S{ÒÎcx”è½f¿8 šÐî)õÝñ/Où £ÅOùÞ´À?ÿ 8Yendstream +endobj +3965 0 obj << +/Type /Page +/Contents 3966 0 R +/Resources 3964 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 3969 0 R 3970 0 R 3972 0 R 3973 0 R 3974 0 R 3975 0 R 3977 0 R 3979 0 R 3980 0 R 3981 0 R 3982 0 R 3983 0 R ] +>> endobj +3969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 639.4127 274.5352 660.6142] +/Subtype/Link/A<> +>> endobj +3970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 612.7666 190.532 621.6133] +/Subtype /Link +/A << /S /GoTo /D (a00174) >> +>> endobj +3972 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.3051 493.1311 359.3784 504.0351] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +3973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.4596 463.5516 356.3884 474.4555] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +3974 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.2897 309.3651 239.3189 320.2691] +/Subtype /Link +/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> +>> endobj +3975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.7197 294.8746 372.0849 304.7798] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +3977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 226.9876 237.9445 237.8916] +/Subtype /Link +/A << /S /GoTo /D (a00160_g3d768e989e308144190ae1a5ddfa9726) >> +>> endobj +3979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 170.3828 194.0092 181.2867] +/Subtype /Link +/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> +>> endobj +3980 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 157.5616 188.4803 168.4655] +/Subtype /Link +/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> +>> endobj +3981 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [243.4737 157.5616 268.161 168.4655] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3982 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 119.3412 182.941 129.8716] +/Subtype /Link +/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> +>> endobj +3983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.7567 119.3412 211.444 129.8716] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3967 0 obj << +/D [3965 0 R /XYZ 90 757.9346 null] +>> endobj +1067 0 obj << +/D [3965 0 R /XYZ 90 739.9346 null] +>> endobj +282 0 obj << +/D [3965 0 R /XYZ 90 739.9346 null] +>> endobj +3968 0 obj << +/D [3965 0 R /XYZ 90 716.7484 null] +>> endobj +3971 0 obj << +/D [3965 0 R /XYZ 90 553.0164 null] +>> endobj +3976 0 obj << +/D [3965 0 R /XYZ 90 245.8074 null] +>> endobj +3978 0 obj << +/D [3965 0 R /XYZ 90 189.2026 null] +>> endobj +3964 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3988 0 obj << +/Length 969 +/Filter /FlateDecode +>> +stream +xÚ½WMoÛF½óWð(´Ý™ýâæX¤ b´I“è–mÓ²™l(Ò®ûë3üXzIZK ø±O3oçq¸súAlyl”aVH_ÝE<ÞÑí×ôËZßø€ß·Ño¯ÐÆ–Y:ÞÞ´40…€ñöúÓ +®7hQ˜Uýæo:U|Œw'¯ö‡¬;{Y\ÕwY^¥Õ¾Èן·ÑÛ!mÏJ MÒoѧÏ<¾&vgÂ&*~  ÎÀZŒï"‰Â]¢Ñû!N·Ðþá¹âšå š®”“Õ#Õjð©xá\3);T£À?ˆjZpZG%b/Ü4d6"Ü­5wÊ]¿ôÁ#@@®õ5ó©Õ ¿T3nÂ0ÍA†¸mÐ,+Ýó²JθE ¹˜%•ô|µ„qÒÓE;øBÑÓ¨Mú2;‡û/»¬:fåýÔ*+§tCe‚8L˜‚bF3Q@ñû5òU±¿¦s˜·‡a 16ôgŽ‰Ÿ~þ$zìÆ·4¢¡e«eçÆ&CȆƻË*Ýç«ÛÞ‰WuY®É­dÆÃc«Èé™á®î®{˾ýØ42’„°b'+á’qm!\J_ ³Šúè”) MÃ&`‹.ô>#pZÊë6ÊëóÜe„P“ܧ;Þá—XÌâz=¿Ï÷s»›æÍ +° ‚C-¥OÈðf"þ™ý®f`„9¯á}t ãXÃä )öÿg“®ï:»i©“µV A&?§“2ÔB.u²ƒ-w²ð‡Ê»¡ß}vá‘¢çÍ”Yâç‡ÊX–ÐTç=c¬,”>‹ë™ìP_ëg…^€J[–`@-@jF®¹šJ øÕmÚN³‰fØ4"y€´šDmDö˜<½Ë‚^¥§%ÀÊ3½ê¡C^u°†ÁŸ$dçN’³=¦Ýá¶8V ½îj6ÁR`4ÕÓ~z7Ýñk^<äãÇÓ.GÍD#ðOq9})HÞ ¿ËlÙå^Àм +çüëç]žW£ÜçÌ«0‹Y\ÏJßê¬|œ1I4ÕG[° +µ”?±L‚6õ¥“”M˜Ô +Îs’8i€5 Þ×YGzòϱpþI«„Ô?¶Û±öê¦('>{ +ñ°?º³K”>{ûÕÕI—©„Þ£\ãY.S@–Tɳ[3NÚƒVú‡¶‡­WéûE€@sKdDÒ¨+þ(Ûs:ÝŠû:˳2­Üg±Óë/wrѼŒêþ°?ò(^`¿FÎu¯òÕÊ)=ß0_>ºíò»l¶QV4Þ5O¥ï{ðg>endstream +endobj +3987 0 obj << +/Type /Page +/Contents 3988 0 R +/Resources 3986 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 3990 0 R 3991 0 R 3992 0 R 3993 0 R 3994 0 R 3995 0 R ] +>> endobj +3990 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 726.8189 138.5977 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3991 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 726.8189 214.2533 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> +>> endobj +3992 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 688.3382 178.5273 698.8685] +/Subtype /Link +/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> +>> endobj +3993 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 649.1103 138.5977 660.0142] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +3994 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5678 649.1103 205.5661 660.0142] +/Subtype /Link +/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> +>> endobj +3995 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 610.256 187.9223 621.1599] +/Subtype /Link +/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> +>> endobj +3989 0 obj << +/D [3987 0 R /XYZ 90 757.9346 null] +>> endobj +3986 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3998 0 obj << +/Length 1782 +/Filter /FlateDecode +>> +stream +xÚ­ZkÓFýž_aÁ—Dj†y?P…Új ‚ +µ…ýÇ›uIœ4ºüûÞ±=Îø5ãU+$Ö±ï9sÏëñ$$Áð$'J(d—Iº›ád§_ÍH}y ×—>à—ÛÙ³—Ô$Ier{WF Jhr»þ0×H,–Tàùêp8=;í·ò?”Vg_æÛ¬:z—ÝeÇÑó¬HËSŽ‰`‹O·of¿Þ6j‰‚Ibü=ûð 'kúf†3Z$ÿÀŒˆ14ÙÍ8eîÃvö~ög§ºPÞ04RAØðP Gp†º±Rºò†J0~ìXa€Ud‚ŒedH³ Lu‘:öMv^A ué&;¥ÇüpÎ÷E‡yfØ0V®©Â¼{ûGu[¶ bþ°Úœ¢Üî²â¼²¡P7éZ L´J$ÓÌSæ@KÕ¯mÆ b Œ0¢”öóD\Î÷ûãó.7Á)FI˜¼A °û)!X!E˜¸F+é׫]ÐKñuA CÛS•PB¼»%Eœ (œò®{R•BÚ(Ù‘Z]þš¸£ß<ÙîŽÙÒ—Ý‹l¬@öOkP jQºßuõPÅ`¢hN]ƒêkh ¾Íjx1PwK¢]H +SjÂ"o²Ó"/‹µªºú¯=¿ÍzÙ1Iu" F³Z½½tÜÔ˜w~ 8üÒ¿a zq­ºz¦v5hŽ$Œ¤£¡[|cîE³Ì¨Î ï÷Ò¸ˆD!I9/‘Oó"Ý^Ö0g%t‚'¥äû'öv;Õ+$C.Oçc^lN½;cNûôë4è%ªèÏ$Á2º5“:)€yÊ¡r*@¥ÝDâ03(vÀCíºƒËô&Æô(êdvxÆp)à!fØècÐ µ BókKø‘RÑoo¶ÑCO 26¨/<ž –²Íût]´GÎ%RT‘ùøsø˜Œ^\+ãõûß?Û~Ó†^N€CŘ¡Qc: Àx5d² H(eÆMö!“,nrˆÑ39ÌÛ˜ìóN0¹E>Åä°Œ^\grz2™ ŠñZ‹µé ,^YÌ ô#ÉÇ-ö!‹,nqˆÑ³8ÌÛXìóN°¸E>Åâ°Œ^\gñ!;æû^‰aVþ<’‡Š±fvü@³!£©DR‰qŸ¯×C6ר¸Ë:Ïä iã±G:ÁbŸyŠÃA ݨÎ_ÚŸÁvmxxäa…‰Nn³âF‡|%°R lü}Ô„œu°¸µ!FÏÛ0oc®Ï;ÁÝù{Ã2zqÁlÜààø¯‡‰‹}bðxè…žcŒ”¢dÜcòØÁâ‡=üÇ>ï[äS<ËèÅuóqƒã¿z&n<ö‰Ác>à1Óõ:}Ìcð¸E=2^=Žð:[¼qÛä<ŽÈèÅu‹QÃão<Ž;[Äà±|ÑÒ5ºõžõòR¤ö¥è=‹1 \zü¹íBeá`ñ²1zeæmÊÂçý¶ x¾ÏûË"Ȇ!Dt¸Ç«Âác*zqÝNÆçÕ᮶ý—-­æDF²àP1~ƒ‘`”u²v™€c2ä:¢Æ¾¹î`q×CŒžëaÞÆuŸ7îz‹{Šëa½¸ëé¾°}is9ö;“‘HÛÝîp&*¦ÁÄ´¡Àùô~u¬wi¸¿yH¡I0·K"ÙÀ¾!ŒKÃ]f{¿?‹Õ.û¡Ú$ôÓÜ ¯ú†S2!¸Ûp:eÇov<;U¨Ý$&‡ŠµR5P<xé£ËŒ œh ·ï-1jàªÑ× å–ü!KskYú½þš¤Þ½îÕ[©ÙÑ]­÷ý]nìИ|j(‚’¥aùµzb "ãïÉT Ô‘ÙÀ¢3Ò˜‘^7#[¼—â”oŠò;Êç®"»I®iGÄøÔ¬á15ݨÍÄRý¸å4!òó¹'A¤$‹ÌÏ#VÄ:¨ÛÄ0ômV„:/•QX†Lë¼>:ÐyXÙy3×K]ËÍ–»U¾廬!*Œùº)Ljá誶Ż©0ÔMüM7õy£ë›6÷„õMDE/nÓFó"?µr!ŒŠ¤À¡bäð¾=³›úø’ +p5¸i‚[ûBþ§ß+”e£á¨ÿźDF1í~ŽP‹°š_eEv\Ý/Üw®oÝÁ»v¸Ô­ÿâç”=§¸úD1–ÕÑÝ‚Šù¾^…\^×K‚jà—zõr³ø¾ÉŠnzì)òó/$ÎfÑendstream +endobj +3997 0 obj << +/Type /Page +/Contents 3998 0 R +/Resources 3996 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 4001 0 R 4002 0 R 4004 0 R 4005 0 R 4006 0 R 4007 0 R 4008 0 R 4009 0 R 4010 0 R 4012 0 R 4013 0 R 4014 0 R 4015 0 R 4016 0 R ] +>> endobj +4001 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 274.5352 657.906] +/Subtype/Link/A<> +>> endobj +4002 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 185.6501 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00175) >> +>> endobj +4004 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 463.3525 176.5052 473.2801] +/Subtype /Link +/A << /S /GoTo /D (a00161_g3212e70c55244608ac16316888c354f0) >> +>> endobj +4005 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 450.401 176.4952 460.3287] +/Subtype /Link +/A << /S /GoTo /D (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +4006 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 436.4733 194.2087 447.3773] +/Subtype /Link +/A << /S /GoTo /D (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) >> +>> endobj +4007 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 424.4982 173.7357 434.4258] +/Subtype /Link +/A << /S /GoTo /D (a00161_g34b924954ba5707d536df28d71a80d39) >> +>> endobj +4008 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 411.5467 173.7357 421.4744] +/Subtype /Link +/A << /S /GoTo /D (a00161_g9e97c58fe35f750ad192774be9408ac8) >> +>> endobj +4009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 398.5953 173.7357 408.523] +/Subtype /Link +/A << /S /GoTo /D (a00161_g28cf9765e4b57451af559ab988ad7160) >> +>> endobj +4010 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 385.6439 173.7357 395.5715] +/Subtype /Link +/A << /S /GoTo /D (a00161_g17ccd786400fd08b941e11046df1668f) >> +>> endobj +4012 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 327.8154 189.0379 338.7194] +/Subtype /Link +/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> +>> endobj +4013 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 314.864 197.8948 325.7679] +/Subtype /Link +/A << /S /GoTo /D (a00161_g37e3103b9591790d484a450525739661) >> +>> endobj +4014 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4857 276.0097 216.0979 286.9136] +/Subtype /Link +/A << /S /GoTo /D (a00161_gf0349a8481565e80f55a751e2b408d6d) >> +>> endobj +4015 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.0722 276.0097 470.7595 286.9136] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4016 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 237.1554 173.556 248.0593] +/Subtype /Link +/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> +>> endobj +3999 0 obj << +/D [3997 0 R /XYZ 90 757.9346 null] +>> endobj +1068 0 obj << +/D [3997 0 R /XYZ 90 739.9346 null] +>> endobj +286 0 obj << +/D [3997 0 R /XYZ 90 739.9346 null] +>> endobj +4000 0 obj << +/D [3997 0 R /XYZ 90 716.7484 null] +>> endobj +4003 0 obj << +/D [3997 0 R /XYZ 90 481.3261 null] +>> endobj +4011 0 obj << +/D [3997 0 R /XYZ 90 346.7654 null] +>> endobj +3996 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4020 0 obj << +/Length 2158 +/Filter /FlateDecode +>> +stream +xÚ­YëÛÆÿ®¿‚H¾HEµÞwI:EQ7çq’öj«Ÿâà@S¼k‰TDÒŽQäÏÌ>¨åC¤‹œ–ËÙùÍÌÎk—, ðÇ‚„‘ŒH"Bd§ ž`úÛ³¯·ð~ëü}·zö O‚„$Š«`÷¨9(F$g<ØíZ3n¶<á"Z·ßÝÃPÒ5#Ô ¾)Ž¹ÝUY{ÊË&mŠªÜü¼{µz¹ë`­TR(† ¿¬~ú™{îÕŠ‘Ä2ø”°$áÁirᎫ7«u|Ì ½`J9ÉÄ´v,$0Ãz´Œv1Q›-£”®Óó¹~VŸš³þGC_çùeÃâu^f9*h83’H©9ƒe‘1;΄YÞwy“£½5U^g—âì |„gdƒâ&†Í›wÖè‡<݃zü–R~ÌÉÐα$”ÅQ BNb8e%G´õ©Æ~'„R¼dH"¥B-Í‹ €·Í¡º<b3ÊI$8›ï¨&Ð}+0‘ˆ yå¦á÷éÉÚ°-ßo]çÇÚØ1oµâ$|E¯úËHÔ("q©¨æõûÀ¾÷Äv+&ÄV¾Ø#Î(@ +bÿmƒ´$«NCyx$ 6âdÞtÕX†žòcn(Ã_'\mËbÇ\BÜlò]ŽîUÚAµµ‹Òw»‘9eL„âq hG±_]ž,ÍkßýÖ_0á#¾(Ρ àÕœ±¡ CïsTKÈ#nˆL¬ ý ß&Ž#P* ~Y”Ù±ÝCæPý_´Å¹:7äðÅ´!‰¨¹K›ÔûMsi³¦59§žH©2 Iˆ›v+ÑûS!¦ JâðÊñßr.Ç¡y âi±£ZÂ…lœP¥ú¸µÖv„,pPo»–£_’aÄ×¹ÖC %lìâ1' ,XÀQM ÷ö7QHpRÙ´Êåú|.²ôsõ9Ï + ¸Ì?ê%V…:ˆ¾ƒP쨖°¡Õ¥úŒvmS¯µ º¬6†äã'½™žQaðélÍ‹.晫¶èíw0Ú=DxÔˆð‹Œ÷ùãs‰‡üúÆŒÐPMv~À÷ò¡1ói¹¿´{Ÿ`àQ&ûík[å]ÖÖµãûZ›)>ZüÜõ º îû]ĤkAÇ&e„ ê©ä|ѵ,ýÖ_0åZC¾Öµt=»–„úVOŠ‘kYª%l‰½`{;8‡²$½Ðî6â±:+Ls;ûë|ôkŠùÚõx³CMÈí.Ì +gêÂN›¤ƒcU½¿yp‘„s—d¾â·>µë…áðQf‹\G€j}¨Š½iˆMsÞ£;b]xK%ÅWð˾r~™P…ÒôRàÿEi[©^žtÈ«së:‘Äï+<\›ðpâ¿z´*d=Ð6~°k4õ”\-SŽ&«Ú²™¢ÉéEOsAFC \'4IæOú ®0Myó{èÏÍå+ë"pŽ„®ê³5gNËUÄà‘Ђù\›ÒÀ& g‹[N¤¡qË +©‘Є±›-«O0Ó²vd‹-ë,âµe]Àu-k÷K›ÇÝb¨H‰~»kuôKbŒø{‡áÁ’qBC(j³Vè¨à9XA +>°¾nš½øëïBD˜â䢢$™M+ŽxëSk)$  õ'„FI|eÚË™¦ÛÑ.Å~ÉÝk÷gèR[¾º{®úPµÇ½K  _¯Ž]6"‚“Ù + +Ê•ùu}j—±?@Z“›æÓHÄç“.³Æ½ +1ùÞ A3û¶@†ŒF9Ê…òÈæÈÇuÉe>á‘ ÏD!_aÈuéÄ—8 ÃYýa/ÁpA„C3*Ù¢ˆŽ®'ãrbÅ6BI–,ì•¢$Œ!^ÀbàCý[¦™h‹¶Œ–ª‹×u9Ý1¤ˆ®yqqåúJ<ØèàûŒÎRàE¢ +<5æúJK=¯õçìqûÿ¶'À°¥tD ¸‘ BPÑv'mÌ5·Ó …ˆXÊ3ݾ{ÔÓWLAášV{i8yQ…u‹&üvÕ÷ f’VG¶˜´f¯Ik×%­îrÕïƒFÕ_cÄ×}xxùúõÃ?¿W}°W$Ù¼:ªxŽÍ´’QžÞr2&Q1?ÏÉ|ê™ìÒ‘!ôËËeÊue?…”íéû,rÍuñTêÛ3w,²—ªeUnó>ˆÚýõžeR'N±>'ÿ—Íh 9Zð%_wd˾î1œóõyÜÎ×}ÜY_‡•á|Ö×5ý’#¾¯¿yù»‘§SATõnÖÕø˜›9°KÚT_ ù:ËìàñRì°nßý'ÏûtªŸð$ "±íE^îÿw&n¾¹ó—[ÆšùÄçUF Á™üæKAE¦¤úC_^µëÆ°„‰Þ÷BÇ}›«XˆY(h¼oó2Ç» [§]±ÿÑ ^aÁjíãö—>çâ9·Ÿ˜9¥Ê¶ëx±á¢vü-ÚÝ™ÝU¿~zÊG…?OXéwl¸/Xendstream +endobj +4019 0 obj << +/Type /Page +/Contents 4020 0 R +/Resources 4018 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 4023 0 R 4024 0 R 4026 0 R 4028 0 R 4029 0 R 4030 0 R 4031 0 R 4032 0 R 4033 0 R 4035 0 R 4036 0 R ] +>> endobj +4023 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 641.4254 274.5352 662.6268] +/Subtype/Link/A<> +>> endobj +4024 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 614.7347 186.2081 625.6386] +/Subtype /Link +/A << /S /GoTo /D (a00176) >> +>> endobj +4026 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 541.2703 183.1495 551.0484] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +4028 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.3051 441.6787 359.3784 452.5826] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4029 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.4596 412.0991 356.3884 423.0031] +/Subtype /Link +/A << /S /GoTo /D (a00140) >> +>> endobj +4030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 261.938 213.038 272.842] +/Subtype /Link +/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> +>> endobj +4031 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 224.1492 190.8907 235.0531] +/Subtype /Link +/A << /S /GoTo /D (a00085) >> +>> endobj +4032 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.3888 224.1492 268.6482 235.0531] +/Subtype /Link +/A << /S /GoTo /D (a00153_g69646a81a922033c5281445a71f8ffed) >> +>> endobj +4033 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.7197 210.0611 372.0849 219.9664] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4035 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 143.9152 217.4713 153.8429] +/Subtype /Link +/A << /S /GoTo /D (a00161_g029256bc17a12e1e86781887e11c0c7d) >> +>> endobj +4036 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.6302 105.1501 204.6385 116.0541] +/Subtype /Link +/A << /S /GoTo /D (a00161_gcff75c8c930abd6ff168e85373a4eb92) >> +>> endobj +4021 0 obj << +/D [4019 0 R /XYZ 90 757.9346 null] +>> endobj +1069 0 obj << +/D [4019 0 R /XYZ 90 739.9346 null] +>> endobj +290 0 obj << +/D [4019 0 R /XYZ 90 739.9346 null] +>> endobj +4022 0 obj << +/D [4019 0 R /XYZ 90 716.7484 null] +>> endobj +4025 0 obj << +/D [4019 0 R /XYZ 90 559.6875 null] +>> endobj +4027 0 obj << +/D [4019 0 R /XYZ 90 501.564 null] +>> endobj +4034 0 obj << +/D [4019 0 R /XYZ 90 161.3562 null] +>> endobj +4018 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4040 0 obj << +/Length 690 +/Filter /FlateDecode +>> +stream +xÚ¥VËnÛ0¼ë+x´f¸¤HŠ9ö‘  +´©oiP(¶l µåT²›æï»IU¶d1@aÀâc¸3»Ë% „áˆaDKMˆYì"FÖ8|›žáü¬ x7®n¸!†Å™¯ +¨äÀÉ|ù0I¨šÎ¸d“ôù¹ºªv‡çænìèM¾Ílë>[eå’IV,š!ÉÔ¤œ>Îï¢óVƒ“(…‚ZÁ¯èá‘‘%J½‹&‘ä;Œ‚1œì¢˜ ßÙFߢ¯­;Ñ,òT‚v€)¹÷•£ëÚºzs,‡|_TC’™¦‚éËAý7o‰D'¦ÀE·Vj¶ïœ÷b q)FéZP€bj˜R'¤¿§œMöù²G, O‰ë™rí ÷] pnµ–PïžË}‘õ4hÜks1꼘 Àµ98“ìXTùºÈ–vÏ.6ii[YYîK@?%š‚âDN…]Q™±ØYÜh“Œ$¨MÅ6ÜrL›¤5Yk{Ÿn·Oé¢NÏO«håv£í6éÁ¶òÊiÇÞ—Mæp©ûf³]šoÝZ,K‰3Õ.¯ªÖ¢·Ó¤çéEÏ1–1‹aÜuç9p¬.ˆ/Ö‰R %J VJ×àH©x}­œð‹å”û ÕPѳÛÖK^ä‡~½p*¥ÑxTˆ\KŠõqzòaªL©’’JârÊ;€±”{X8åcŒ”ó¶)ïò†S~Âý–”«èÙmSŽ÷m]â=%IB±U +â7 ob.΢κÆó5Öƒ †öAIõ_·{³s\‚woo…·µHüåíDÔšo³"+Óƒ?ý)÷Ù7îê3îè:ÀÝ—]sqÍ™íqÆÜ[g5år²wWÃñÓ‡¦øôj¿ö^×xòž…§~z Äç/m¬‘endstream +endobj +4039 0 obj << +/Type /Page +/Contents 4040 0 R +/Resources 4038 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 4043 0 R 4044 0 R 4045 0 R ] +>> endobj +4043 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 704.1539 179.6335 715.0578] +/Subtype /Link +/A << /S /GoTo /D (a00161_gb1fc692a2700b7a51517724364683f67) >> +>> endobj +4044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 665.2996 173.556 676.2035] +/Subtype /Link +/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> +>> endobj +4045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 652.3482 189.0379 663.2521] +/Subtype /Link +/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> +>> endobj +4041 0 obj << +/D [4039 0 R /XYZ 90 757.9346 null] +>> endobj +4042 0 obj << +/D [4039 0 R /XYZ 90 723.1038 null] +>> endobj +4038 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4048 0 obj << +/Length 1254 +/Filter /FlateDecode +>> +stream +xÚ­X]oÛ6}÷¯ÒûÁ /¿ Å6¤éšµX–ú­- +UVb!¶ìYö¶î×ïRe}Y2°Á¦­Ã{/Ï%)B@ñ¥–šX.Tm&4xÆ¿ßN |<Ççó:àçÅäúŽÙÀ«˜ +OyD2`Ábùi +RÍæÌ2®§ÇwØ”t +„»d­ÛmtÜÄé!<$Ûtöeq?y³¨hKU’+p¤L>}¡ÁÕÝO(áÖÈà/üA XË‚ÍD0î¬''¿WqŠy‡¾ÁIàý£Aðæ‡Çp´º!z6Jé4Üí²ëC¼NãÃò:[Åë5‰Úƒ|ŒŸâý Ì4N£Ø ²ˆÄJ™GÇìºàÌTÑ ”ñoãCˆ–eºâ,Ú';Ÿ,ŒÃksàÂ8ɶó1Ù켄BY;ÁF +FŠB-å½éñ yÕ5€±„RŽ±$%TH™Køi†ÜÇÃj»¿iseDsÃ䪇½>t šhàò-§_†›2qÇôet¯³"qµÞŠÁ%š$ïõCGªÖÄX­ZR‹Ç/oýZ“í{ôÈVuÙÈN@ˆ²Ì’(#YÜÖ„%Š5œ¶ +Õåo ¼Íñ¿îñ֤ɰ$Ñy¦”¥InÈ<ÑIùíþ_wÔƒ4„c”@%’òR½{´.1õé÷øy½CÏôwâ:u¾Û"ŒÀ±JÛÑvžGQw¢9jR¦°>Ùsë#‚ÆT +‘#_%i´>.±N–ûU¡yuåú»‚. ¼ í:Xr¢­i8¸ÅŽõ!pÖ +@vØ'é3YõDèHF=ðußr…Ui1Ý×.® ¬n†8ëYÇ%"(gw—: ¯¼V¨§8Žð3c²»¬¸…ky±Bñâ`©RMÞWËr¤r¡ˆfZäçííñc2:qóõý—7ïß}xœ :ýíÃâ³T0F {8jDíEI!›®›{×Mœ#TÛMÍ©%Œ[Q"®úý¦{©júíî˜Fnáéó›pgIÙY¿Õ~«`£~d<ùm„×û­ÁûçŒÑé6Yv¸1@¶¸ÏÛÍãÇTtâV«é×ûîþÈpï3’cׂà¦{*©Ï¶¡;xf³šÀRQT5Öôžé(Àó::W"i`P‰¹<”Q\VOA’wn» ×É?åÑê°<ø«ÿB÷Á7îg §Çò°ò›Þ0~ÃÊ{F©*ZO3†9Ý?º@ß¾û럿¿?Ç‹w#ã¥Õ²ô/…9 8endstream +endobj +4047 0 obj << +/Type /Page +/Contents 4048 0 R +/Resources 4046 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 3984 0 R +/Annots [ 4051 0 R 4052 0 R 4054 0 R 4056 0 R 4057 0 R 4058 0 R ] +>> endobj +4051 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4052 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 185.0921 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00177) >> +>> endobj +4054 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 516.2256 223.1601 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00162_gaa60ca995565b799bb958c806e933665) >> +>> endobj +4056 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 458.7707 172.998 469.3011] +/Subtype /Link +/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> +>> endobj +4057 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 419.9164 176.8634 430.4468] +/Subtype /Link +/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> +>> endobj +4058 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 380.6885 180.1912 391.5925] +/Subtype /Link +/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> +>> endobj +4049 0 obj << +/D [4047 0 R /XYZ 90 757.9346 null] +>> endobj +1070 0 obj << +/D [4047 0 R /XYZ 90 739.9346 null] +>> endobj +294 0 obj << +/D [4047 0 R /XYZ 90 739.9346 null] +>> endobj +4050 0 obj << +/D [4047 0 R /XYZ 90 716.7484 null] +>> endobj +4053 0 obj << +/D [4047 0 R /XYZ 90 534.1992 null] +>> endobj +4055 0 obj << +/D [4047 0 R /XYZ 90 477.3471 null] +>> endobj +4046 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4062 0 obj << +/Length 1385 +/Filter /FlateDecode +>> +stream +xÚ­Y[oÛ6~÷¯Ð£ Ì ï—`¶!KÑ zÉ[[ ®­ÄBlÙµåeݯߡ$ÊÔŤ}(e}:çãÑ÷‘G I0ü#‰Á‰ +Æe²ÜNpò?¿™úöîÏ}Àï÷“«[jƒŒ¤2¹(#H‚%4¹_}šj¤gs*ðt±ß¯Št“§Åêê¸N7´®îÜf›´}HÒÃŒèiš/íO\33%B;ÜßMþ¸oxÔ4“IJø6ùô'+ {7Áˆ-’g¸ÀˆC“í„Sæ.6““÷MœêFùÀÐlaÃÓ%Á/ÔÍ—Âô•7]‚ñKæ “¬¢d„(£C¹mpª›èˆÔñoÒbVU¤›ô¸åø3Æt“¢nåµ@˜h•H¦6˜ ÖÍæ>ª/mÆ b Œ0¢äöÛ ’ŸŠõîpÝÍM0EŠQNÞ ²û5!X!E˜8G+Ó¯Ûº¢§üiFð4Ý«Šâ=-)âL€zʧ~îQU +i£d‡juû)q£?=Úî‰Úҧ݋l ,€ö¯ÇlyDÇ´Ë…rƒ$Õ2\¶ÕÏßšx?šÍÿË€èæD¸¼ +z°È›Ô*+ÏJ¥–…Îr_q½J +DI$ÁH`V³··5æƒÿú~î?0ðú{q-;çÓ. Í‘¬K¢«<‡Š¥îE³©ÑÿçÆ…d¥*ÿÞžò¥­ßq`]‚Á„\\¾}À+$[ós›ð3¥¢ïF»0‚T,/,©KÙÎûÏŒâé.[õrC5 !¢“û²(>Æ¢·Åßh¶os +KÑ‘8T,»â–èní±À®0&ý÷ ½T‚…x^Gžûè’‰À‰&’—L`ÓÁÊèsPËä­uíb“ýWoÅÚßCÐEbà~;y˜XÍ‹PÐ>—Õ :QFê˜z,®^/`H½á¼zý¼qõ¶rQo˜E/îY½Çbq¯@ZÂÛ Á¡b鬨BéNñGÊ—ƒ´€Õo”|}t@¾ ¬ìzÊ (·~],-ͧyš¯.j™khÁ ÿ)ó‹RæPWéŒH¹†‰¸”dXÊ>, åVÞ¨”Û¹GH9¢×_ˆ÷§)hð¹‰Á¡bé5AR‹Nz+ååzq¨ÛAîwEö]Ã6k f LI×2.wÛí"[BbdŒ–#-á¡C–p0KâÝaÆÅt·LÇú#­g‹šçeGØæõ:–` +a­YÌŒŽ°„CF,áÁB–ðóÆ-ÑÊ=Æa½¸gK|; õ&QÂd¤Ë®$4œvjs„áÞ`V€p„s6Ò +:d³ÙßÛþH[áM'Z¼Î^ÀŒF”ñˆî+3qÝ7È°î}X@÷­¼QÝ·sÐ}„E/îY÷»S1´À÷è•FªàP±üZ")¥éTÿ5”ïö‚cq õÌ…˜Ì !üȘ4ä(¦Ûm±7Õ j[Éò¢½¡ðÓcí¯Ýå&ì9ËW»ç™âÓ‹¾cð5ÅXûSëå¾1Uí^!ã9XÜx^ÀñÂyãùyãÆkåc¼0‹^ܳñö‡Ýv?`<° ýp*–_ÃXónõ_ÓxÕ4‚6áÜô©‘FñÐ!«8Ø°YöUWf ü*†a qÕþ¸»h*Á]Ô 6 ÊHd5»¹—¶Óða­ca‰Œ‚º>Q‡­(—õy“æéaQ¸ƒnwjø—Ü͈˜žê Bëÿñ5e×WWcYf*[qŸÞ¾«Ñ¨~ý^Ÿýîþýþ˜æÝŠÚ¿8j^}þá}sÄendstream +endobj +4061 0 obj << +/Type /Page +/Contents 4062 0 R +/Resources 4060 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4074 0 R +/Annots [ 4065 0 R 4066 0 R 4068 0 R 4069 0 R 4070 0 R 4071 0 R 4072 0 R 4073 0 R ] +>> endobj +4065 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4066 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 185.6501 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00178) >> +>> endobj +4068 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 550.8716 172.998 561.402] +/Subtype /Link +/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> +>> endobj +4069 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 512.0173 176.8634 522.5477] +/Subtype /Link +/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> +>> endobj +4070 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 472.7894 180.1912 483.6934] +/Subtype /Link +/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> +>> endobj +4071 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 433.9352 175.2098 444.8391] +/Subtype /Link +/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> +>> endobj +4072 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 395.0809 185.1725 405.9848] +/Subtype /Link +/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> +>> endobj +4073 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 356.2266 188.49 367.1305] +/Subtype /Link +/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> +>> endobj +4063 0 obj << +/D [4061 0 R /XYZ 90 757.9346 null] +>> endobj +1071 0 obj << +/D [4061 0 R /XYZ 90 739.9346 null] +>> endobj +298 0 obj << +/D [4061 0 R /XYZ 90 739.9346 null] +>> endobj +4064 0 obj << +/D [4061 0 R /XYZ 90 716.7484 null] +>> endobj +4067 0 obj << +/D [4061 0 R /XYZ 90 569.448 null] +>> endobj +4060 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4078 0 obj << +/Length 2227 +/Filter /FlateDecode +>> +stream +xÚ­[]oÛÆ}ׯÚ ¨·ûý\7mœ"i·‰€ûÐ*3±PYVõÑ´ÿ¾³$—^r—³®áQæᜳsf–K/Íæ~ØÜѹQ†8!õ|s?£óOðëïg¬=}ç¯bÀ·«Ù×/¹›;â4×óÕÇ:‚fDqÆç«Û_LÙåw\˜ÅåÕOp¨è‚Ú¼ÜîªæèÅÃær_íÏëóöa¿ümõzv½êh[UJhæIÿœýòß‚º×3J„³jþ¾PÂœãóû™ä"|ÙÍÞÏ~îâ4'ê rƒSLäGÇ$ßð0<£5Íè,qË+F)]¬‡Ó×çj·¯Î·á“l†Ã|W}¬ŽKfÕ~Sùa6ñqJÕñ!¿><·]|ÂZ†Õy nÛ„U§Íq{é‚8"rÁ‡ñ¢]æý]µÛ5תã_K¦ C©¦Ú*B™5s-!ƒÒä« €®bTZ +ÖJÄRœ0Êm-åùD\ÎwÇgCnÀ#8ÃÉ;T†=N£†&Ôc´šþv}ß&ð²ÿcÉè¢Úš2]­9‘BA¹ÔWý'‘j ±bö¥6§ÿ˜‡£"ÙኌlËN"{kýßÓvs"§j¨…KG4·O[‡Jù{O£yþo25vÅTÉ¡9¡<òEõ+¥|¿­ ³Nô¶ýô¿ß%êa~ ¢Ì5ãDiÚª÷§ŽŸZÌ»Øþ€¿Š/ÈØŸÄõês(Ãq˜¤ÈÖ^@•È“hžœ´IÔ½$Ò’Ȧ”5ôËí~³»Ü¬¡¡ó¿¸läî ¹ïì(rÀ0¾!8õ¾ºÿ}òäç’‚´‰” ÆÙ^ †-*¡pÀé|Üî?‘»L$ MÁi~“›9!“7I! LO<®Çꔹ©HíëVßêb@n†Ñ0IXùÇþʹJg6?§Ãt‚2v¨/Ü…³=Þ/oÛ‘&äRà wXÀ—d$q½ŒWïo>ìwé|©ˆ¢ÖP%f˜#sƒпé:g²’D ÅÆMŽ˜ÉV6cŒLÆy;“cÞ &÷ȧ˜ŒËHâ“7ÇœÉÒ¹Âø[P‰×[lÝ`ø`ñmÎbɈ¶°Òµ8`XÙbŒ1²çí,Žy'XÜ#Ÿb1.#‰[/WK'`µÆ[¬®?¼½y÷ãó7ÉÒƒ h<ª „sM·¢/„æ çÖ¯Ÿá3<ÀʆcŒ‘á8ogxÌ;ÁðùÃqI܌ᯞ/%]|—®“ ‘\»BBª¤ÄÁ1Ì}%,ç8SÄXjǘãVvcŒÇy;ÇcÞ Ž÷ȧ8ŽËHâfÿß«7iƒS¸#k]ÈF‡*ÈàÔª|ñÄ2xÎnX[îä¸Ý³;ÀÊvcŒ‘Ý8ogwÌ;Áîù»qIÜœÝþá÷æí*±œQ"¥Å@!œ°ƒ|ˆŒáÂ:bÍx{G绪è6F÷h6N¼ŽIËV÷˜'8kFÍøüâ&ô¡²x¨ fz%u?õ2g°ÑUäY+`XÙcŒ12çí\Žy'ØÜ#Ÿâ3.#‰›u:ÓÍ0å +¡žUáÛÞòa6TÎn-ˆ3ÈSW Àì°²Ýcd7ÎÛÙóN°»G>Ån\F7c÷wonÞ_§³7'ÜÿíMG‡*èàØëëÐ9¿#”#`1ó;ÀÊ~cŒ‘ß8oçwÌ;Áïù¿qI\/cuýæíõjl%Î!eÔÉB":TAŸ”U}\e[[À*Î _1³:ÀÊVcŒ‘Õ8oguÌ;Áêù«qIÜÈêìtsŽ YèPzÎ<½dŸ«Ü3—àŠ0Ž9$/c3w°ã-GL¨¢ÇÝ£Å8ip8&-Ücžà/®aµçn®ßú–èø;Îí›]º~ι’ù-0Þ`{;`//ûßÍí€qɉР+©‡€D€•+cŒJçíj"æýkÉéâa›ì0ȆƒùrÀ=^_R‘Ä­w1ý^é‡?/Ûsº?"}ŸêBªÄ`†J>È=Uts·>¶{¨²w7€BaÚGd6õaD® +˜t]à_«`X¹ÿo¿´3~6à«]EѹR-ë¡@ÙRãìcPÏþ³OaýæÀù®}}¦Ù‡•k©¡%PI­"ÿ—)ÅÆow~òUÞÜBáX¹ð£€Xáã¼]áǼåÂïqO)|\E÷±ðLJûCZúŒuP|xªÄoáØÊaöŸ¢ôÃË +Í0°`ž˜´QÓ F# ÐÁ¼†ŸŽÛ}Ûëæãp\Jµ¨Ü4ÆC®AšÃÏÛýíÃ祑‹Ñ†ñ›¬šZý$ ô$ZÁ=o˜Vl˜8 Ò0ÞÐ0=ÞbÃô¹'4LAE÷±a.çÃ%Ó0p7Þ#4 Uâ·šh­Ý ûOÙ0§ó‘}ÕTÞHLá ´;üĘmAéü+~|b Fh¬,ß‚ÍKJOÓ~ðn”OÓ~ðˆgisóÃÚ/ÀÊíÄÚçíÚ/æ-·_{Jûá*’¸Ñ»€¶ûÌRÍR"(Õ…,T‰ßrbãƒìCû…Läª\eàºU#wËÚõ€¹`e×1ÆÈuœ·s=æ-»Þãžâ:®"‰»¾>6ëÝ.·7f,—…DTI‚³„Á”7lôM^ +ñ™Vúÿz¾._½ñ|u©‰3ÂÖ³5÷¯ÿÂ̤xåßWûê¸>‡wÐþ?†ƒ×þÍòKû…ñö“>ãâo_ùçÐ/ÍÑÇ%‡µÌ±ù’þoÀïÿ„ÿ øûŸOUò?þeýL–þÙ-Jõendstream +endobj +4077 0 obj << +/Type /Page +/Contents 4078 0 R +/Resources 4076 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4074 0 R +/Annots [ 4081 0 R 4082 0 R 4084 0 R 4085 0 R 4086 0 R 4087 0 R 4088 0 R 4089 0 R 4090 0 R 4091 0 R 4092 0 R 4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R ] +>> endobj +4081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.7618 250.6249 659.9632] +/Subtype/Link/A<> +>> endobj +4082 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 611.4648 193.391 620.3114] +/Subtype /Link +/A << /S /GoTo /D (a00179) >> +>> endobj +4084 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 465.4097 176.5052 475.3374] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3212e70c55244608ac16316888c354f0) >> +>> endobj +4085 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 452.4583 176.4952 462.386] +/Subtype /Link +/A << /S /GoTo /D (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +4086 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 439.5069 224.8339 449.4346] +/Subtype /Link +/A << /S /GoTo /D (a00162_ge429c985be88ed048f382511c9ff00de) >> +>> endobj +4087 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 426.5554 198.4231 436.4831] +/Subtype /Link +/A << /S /GoTo /D (a00162_g19709735f29dafeabb91e0882231f9f1) >> +>> endobj +4088 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 413.604 206.5625 423.5317] +/Subtype /Link +/A << /S /GoTo /D (a00162_g7e904ab59f7ee134cf3218a8219e7e29) >> +>> endobj +4089 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 400.6526 211.4442 410.5803] +/Subtype /Link +/A << /S /GoTo /D (a00162_g5025948dd998f65a13a375a37aa5edf5) >> +>> endobj +4090 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 387.7011 196.052 397.6288] +/Subtype /Link +/A << /S /GoTo /D (a00162_gbfc1d8d15852318927cda30e1bc0470a) >> +>> endobj +4091 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 374.7497 209.3322 384.6774] +/Subtype /Link +/A << /S /GoTo /D (a00162_gaaaaf66ea67900c36d01136d5bad1168) >> +>> endobj +4092 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 361.7983 213.2175 371.726] +/Subtype /Link +/A << /S /GoTo /D (a00162_g57aca709a33690cd4fb73fe199fa1bdd) >> +>> endobj +4093 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 348.8469 207.0906 358.7745] +/Subtype /Link +/A << /S /GoTo /D (a00162_g8b600918f84783490fd791ce773175ab) >> +>> endobj +4094 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 335.8954 215.23 345.8231] +/Subtype /Link +/A << /S /GoTo /D (a00162_g6b2d00412304e2d95e7b853cce5858b0) >> +>> endobj +4095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 322.944 220.1117 332.8717] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3318dec654781e9d6d8ec873636660c6) >> +>> endobj +4096 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 309.9926 204.7195 319.9202] +/Subtype /Link +/A << /S /GoTo /D (a00162_gf784a76fe619452eddf87e6376a4bf9d) >> +>> endobj +4097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 297.0411 217.9996 306.9688] +/Subtype /Link +/A << /S /GoTo /D (a00162_g3a4852e2372e34e1c0142d1147fbe027) >> +>> endobj +4099 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 239.2127 175.2098 250.1166] +/Subtype /Link +/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> +>> endobj +4100 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 200.3584 188.49 211.2623] +/Subtype /Link +/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> +>> endobj +4101 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 161.5041 185.1725 172.408] +/Subtype /Link +/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> +>> endobj +4102 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 123.0234 181.2968 133.5537] +/Subtype /Link +/A << /S /GoTo /D (a00162_g82ff99d50221f7c17df57dc6092ffc97) >> +>> endobj +4103 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 109.6984 196.7787 120.6023] +/Subtype /Link +/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> +>> endobj +4079 0 obj << +/D [4077 0 R /XYZ 90 757.9346 null] +>> endobj +1072 0 obj << +/D [4077 0 R /XYZ 90 739.9346 null] +>> endobj +302 0 obj << +/D [4077 0 R /XYZ 90 739.9346 null] +>> endobj +4080 0 obj << +/D [4077 0 R /XYZ 90 716.7484 null] +>> endobj +4083 0 obj << +/D [4077 0 R /XYZ 90 483.3834 null] +>> endobj +4098 0 obj << +/D [4077 0 R /XYZ 90 258.1626 null] +>> endobj +4076 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4107 0 obj << +/Length 1235 +/Filter /FlateDecode +>> +stream +xÚ¥X[sÚF}çWh’x`³÷‹§Ó©ìŒ]Bݘ<%†‚l3Á@A¤õ¿ï·ÒJ¬´båi‡t9û³ßùö&’`ø‘ÄàD … ã2Y<÷pò?ôˆ{=„÷Cðë´÷îššÄ #©L¦yI „&Óå—¾F†Tàþ|·;¼ËÒõ&Í–å?z*Þ]¯Öiqõ)}H÷¢ûéfa1ÆqŸ3ø6½í]M+)N©`’X!õ¾|ÃÉßö0bF‹äo¸ÁˆC“秬¼Y÷î{TqŠyƒ¶ ÂÚ{L8‚'´ì2… (¿ÇãÿÖeègA@"'€¤ÛøTŸq£4›C¤ej”ûÕ.[m7.ó¼±q¬lSĹJ×ë¢Ý!ÝÿÑBôQ3ÙZ L´J$b®Úk£ }TX Ú ŒÄúAu.år"ŽÙÓvÑä RŒ’8y…ja÷S@°BŠ0qŠ–Ó/çÏ.ÇÍ÷Áýt}(Hˆ×ZRÄ™€‚É[ýHU +i1ëR‹×ß“òê7OvÙ¢E¶ôe‘­€9Èþå°ZÐ!mj¡Ü IµŒ§­B…üµŽ‡Ñ,ÿÏ-56„±êBRžP9J¿bL7«¼0óD¯Ü¿}¾Ô¡ƒ(‰$ ‰zûjÿè0Ÿ|ûKüÐoÐbת;̦ CaRÕѬ½ÕED³äÈ%QÖ’ˆËDA69Ï¡oW›Åú¸„iCÂÈs\í¶» =½93g0Ž`<c}4ÏæEÂï³ýq‘‹ çÐ2­ +¦Öœœ]|@Û“0H4?űü_)áȶ“ §(c…êâ…Ù`)뼇¼·33°r0Ý`>_^%¾KC×+¯Ù!›ga¥Ã|¨ ãI(Q-j¶[ÿ0¬4þÀk5šk‚(#æ¬Ñ> btë4:Êx2ºƒ·4ºÆûvézs‰U¤A~Þëß%#ˆkeL¯Æ“«éhöþ÷Éõl|3¹_M‚©YÁj«$šŽ +Õ¡ƒ*jgQ×Áq›áR#ª1?o¸ˆ^º 1z†Çy+Ã}ÞW^#áqAÜÀðÉçÖóûÐq˜¸Ÿ¹vǪCìf¦®ƒÈ6Ã…@ŒFøé}Ìn‡êv;Bç™%­¼öH_aµÏü§£šQ­†Ï7w³Ë»»÷—ãqà.,ç˜íŠsSè¿`´žôrãÄb[ö–å~H¨kX[ö§Åû/»t™>´­pìA°™Óg ÄD*¤‚u–H”ñT#¼e‘Ôx³¢Ÿa(D•h0Gj¤€wIhFí^è ìä¸Kœ/ VpI1¬ T˜.•®&ö³l±³å”+eá|Åç͸]ªEEsSÂ$‡¹Ê[ÞëãfaO­%ɉ]ÎÔù’ô±’,aÝ%côJ2Î[•¤Ïûc@q»Z†ûO@"Ü‘ý§Ãw©âž™>ê…)Ò”w$¢DuI€R Š‘†Xà2pMÚ¾æ³ÇT ñ‰ò}èÉ‹GC¨_§»,÷‡œN·ÒMº‡áá>­”×åÅ­ý`rt7„º|AÙuŸ¼`üÉâêa@E»/nŽ7wðÏ÷ùaûÏËcºi¦Ç~…jÉÏ¿¿ Auendstream +endobj +4106 0 obj << +/Type /Page +/Contents 4107 0 R +/Resources 4105 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4074 0 R +/Annots [ 4110 0 R 4111 0 R 4113 0 R 4115 0 R 4116 0 R 4117 0 R 4119 0 R 4120 0 R 4122 0 R ] +>> endobj +4110 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.7618 250.6249 659.9632] +/Subtype/Link/A<> +>> endobj +4111 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 611.4648 193.9489 620.3114] +/Subtype /Link +/A << /S /GoTo /D (a00180) >> +>> endobj +4113 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 535.9072 190.8904 545.8349] +/Subtype /Link +/A << /S /GoTo /D (a00086) >> +>> endobj +4115 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 479.055 271.1301 488.9827] +/Subtype /Link +/A << /S /GoTo /D (a00162_g26440a35353cb457747a4cea372c62e9) >> +>> endobj +4116 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 466.1036 280.5446 476.0313] +/Subtype /Link +/A << /S /GoTo /D (a00162_g30fe27cba3c14ae7f9a7f118144af43a) >> +>> endobj +4117 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 452.1759 213.038 463.0799] +/Subtype /Link +/A << /S /GoTo /D (a00162_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +4119 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 395.3237 198.6315 406.2277] +/Subtype /Link +/A << /S /GoTo /D (a00086) >> +>> endobj +4120 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.1296 395.3237 276.389 406.2277] +/Subtype /Link +/A << /S /GoTo /D (a00162_g4647b76d0ef50a5305505041f5775a37) >> +>> endobj +4122 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 338.4716 196.7787 349.3755] +/Subtype /Link +/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> +>> endobj +4108 0 obj << +/D [4106 0 R /XYZ 90 757.9346 null] +>> endobj +1073 0 obj << +/D [4106 0 R /XYZ 90 739.9346 null] +>> endobj +306 0 obj << +/D [4106 0 R /XYZ 90 739.9346 null] +>> endobj +4109 0 obj << +/D [4106 0 R /XYZ 90 716.7484 null] +>> endobj +4112 0 obj << +/D [4106 0 R /XYZ 90 553.8809 null] +>> endobj +4114 0 obj << +/D [4106 0 R /XYZ 90 497.0287 null] +>> endobj +4118 0 obj << +/D [4106 0 R /XYZ 90 411.9902 null] +>> endobj +4121 0 obj << +/D [4106 0 R /XYZ 90 357.4215 null] +>> endobj +4105 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4126 0 obj << +/Length 2234 +/Filter /FlateDecode +>> +stream +xÚµZÛ’Û6}Ÿ¯P%/Òà ¸_\[©u2r2ŽíÙQv’”K–h*ºLtIìýúmˆdƒU±k†’ûôéAlDáeˆR›+:ú_ÿpŪŸ¯á÷ëðÝìê›ÜqšëÑìý9‚fDqÆG³å/c¦éäš;.Ìøtû/8TtÌ-^¬ÖEyt³[œ6Åö8?®vÛÉo³—WÓYM[©RB3OúÇÕ/¿ÑÑÔ½¼¢D8«FÁJ˜s|´¹’\„뫇«×qÊÎ't N1Ñ=:& |ÃÃð8ŒÖ”£³„±É5£”ŽçOO‡oþ*Þ-Ö+Çåˆ,Úc½/Þû ³ãb»(üXKFœRgH²çàöBBÍMqœC¤e•¶â°Ø¯žBÒ ˆ¼ðq¼tWƹÝ<­‹K’ÏvïËÿÇÇJܳYåR%¿m†U„2kFZ€.-;30×(-ë¥")p‹9vù|Ô§ããnÿ¬ÍÌ('Fp†R× ”;N £†&Të̽œoª¼ž¶¿OëC™WÆ¢“5'R(¨¥óYÿHtC¬3º©³üõ÷Q8ú)ÒNH5ëXs;®gŸƒæ.A.H%‹Ý¦-†cš´”hŒ;‰å|ÛQx×̆€ú–‰zSüJ)ß®.å·ªþûï×E’He‰ÐÜŽ4£ª¤š“üOûæ>ö>à¯ã:ÌOâzuqǶ“H%4ä¢)¤Å€ÊЧÑ<=©ò¨yd!$3DsYæñëÕv±>-¡c5Ì_VOäñ+ºïø(z€ëÕ»Ûô’Að}qØ­ÿÌÉH[I bœm´R+Ч¦’p8îWÛä±#’„æà4¿íšWarp`¼‰IHÂL£*‹CÇeGjE E.†1 k–Ñ0SXy‰ã å\¥s›ŸðaNAkTŽÊÆQ­›¼_/«‘&äRà k‘÷÷YÀçd$q½ŒÿN¿ûþÕíôÍìíìöõôîçYÒm +ŠÞ +‡ç¢FeDp¥‰2²• ¸–vÙ­àâ¡í·;`vXÞnŒ1²ç­íŽyØÝ b7.#‰Û´ûa6q.ð0ŸgÓæÇŸ^ݾ™¶• +ʈtšáiªQ}‚ +â¬6M}u ±‚±þ:ˆXX¾0ƨpÞºbÞuÐ R¸Œ$.Z?NŸßLï’Y–‡Lr‰§¦Fe4qLj¢)‰uYÏ5,²¤ì·>`ÖXÞzŒ1²ç­­yXß b=.#‰‹Z3‘4|*h¶DJšIRʨã†Â½]Kï*3…‚uBoD¬,_cT8o]1ï€"h)\F-‚ï_Ý=LÓÛIŒÒOLÊ(âpçÄe[‘èr®%”#ÿåwÌ÷ +•·¡‹\GIkÓ#ÒžÇÌC,G5´£z ~'áÅ«ç¾Åxûæ.½ºss±Shçç‚aU3]va-,ᶤÏ߀\ò£Œ‹3¼ÁãoÞä&ù—32’¸‰Ïw?%.3M4“ÏDÊHà ®÷T©¦„® ¹0 +V¦ÿÖ-`VXÞjŒ1²ç­­ŽyXÝ b5.#‰›XýúÎoÕýgz“8.,‘*Äq\F7q|zïîîSÇ¡RiÉÞÎ7-CaùË8ž®•ÑÁ9‡E2s-›†ö Ôˆå\ì™õL€õöL”œ/Ü/”«…ù,ýÂ, –çöz*Û-Q8¤YpÒÐ+1éßo•†²‚klGmöÉãîpìîA7°4Õ \Ô",ILË›-‹¸G1fX‹Äh¤EjXo‹Ôyù² ´ TXûyÄ¿À•ß¯aù‰b=‚óÖM󞶇Շmxîð¸Û»nƒŒ5¶%£¿!>'(‰Ûl‰§-~ÏDå2@~¿ãF¥h%dp? 3Ü ì‡õC€õöÃ9)ç£íió®Øé¾à’p&?O[À7&÷,¡†åÛ" +ˆµÎ[·EÌ* á†Û4ǘjq÷÷BÀçT$q›½°Ú®Ò¾tÌÏú.“‡€Ê)pÒ_ZyÚ N!í°^¸`‘N¨@ç;wÿ†ä|½ú_Ñ*ò:=åÇÍnyZ¦Æ¤ëiÖ»÷N! L+ý·^¦>—¸…S˜àñû½š8#ìù}XÊ2ÿÞtâ÷C±-öóc˜€Ã‹ ¯ÃÁK?žSõñê?}ÆÅ3^½5Î)ÕåÑû Wã]5'¤¯—¿û^.ÿøéC‘¼Vîß÷îÈÒÿD0 çendstream +endobj +4125 0 obj << +/Type /Page +/Contents 4126 0 R +/Resources 4124 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4074 0 R +/Annots [ 4129 0 R 4130 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R ] +>> endobj +4129 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7782 274.5352 657.9796] +/Subtype/Link/A<> +>> endobj +4130 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.5548 205.0073 618.4014] +/Subtype /Link +/A << /S /GoTo /D (a00181) >> +>> endobj +4132 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 463.5277 255.0802 473.4554] +/Subtype /Link +/A << /S /GoTo /D (a00164_g31be289fd8ec3fe09b0088165d13976d) >> +>> endobj +4133 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 450.591 302.4923 460.5187] +/Subtype /Link +/A << /S /GoTo /D (a00164_g8714af98a550f10dc814db92b08d1b0d) >> +>> endobj +4134 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 437.6543 290.1386 447.582] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4357cec23abca29d2bb885803625a6a) >> +>> endobj +4135 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 424.7176 269.4366 434.6453] +/Subtype /Link +/A << /S /GoTo /D (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) >> +>> endobj +4136 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 411.7809 275.7527 421.7086] +/Subtype /Link +/A << /S /GoTo /D (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) >> +>> endobj +4137 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 398.8442 230.8912 408.7719] +/Subtype /Link +/A << /S /GoTo /D (a00164_g40fb1fb2d990ce04ae9bbee275627c03) >> +>> endobj +4138 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 385.9075 217.6111 395.8352] +/Subtype /Link +/A << /S /GoTo /D (a00164_gda99954e0f6905091885934e86c278cc) >> +>> endobj +4139 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 372.9708 239.2498 382.8985] +/Subtype /Link +/A << /S /GoTo /D (a00164_gd895686859ae7d178d31be04eb0a1a97) >> +>> endobj +4140 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 360.0341 236.0418 369.9618] +/Subtype /Link +/A << /S /GoTo /D (a00164_g38af81a4c9884ce89803fc3e52383112) >> +>> endobj +4141 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 347.0974 176.5052 357.0251] +/Subtype /Link +/A << /S /GoTo /D (a00164_g3212e70c55244608ac16316888c354f0) >> +>> endobj +4142 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 334.1607 176.4952 344.0884] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) >> +>> endobj +4143 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 320.2477 190.8811 331.1517] +/Subtype /Link +/A << /S /GoTo /D (a00164_g71e1b022f7b7fa3a154f19372b239935) >> +>> endobj +4145 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 263.4235 226.5766 274.3275] +/Subtype /Link +/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> +>> endobj +4146 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 224.9723 221.0375 235.5026] +/Subtype /Link +/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> +>> endobj +4147 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 186.1475 224.913 196.6778] +/Subtype /Link +/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> +>> endobj +4148 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 146.949 236.5493 157.853] +/Subtype /Link +/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> +>> endobj +4149 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 108.4978 192.9132 119.0281] +/Subtype /Link +/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> +>> endobj +4127 0 obj << +/D [4125 0 R /XYZ 90 757.9346 null] +>> endobj +1074 0 obj << +/D [4125 0 R /XYZ 90 739.9346 null] +>> endobj +310 0 obj << +/D [4125 0 R /XYZ 90 739.9346 null] +>> endobj +4128 0 obj << +/D [4125 0 R /XYZ 90 716.7484 null] +>> endobj +4131 0 obj << +/D [4125 0 R /XYZ 90 481.4867 null] +>> endobj +4144 0 obj << +/D [4125 0 R /XYZ 90 282.3587 null] +>> endobj +4124 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4153 0 obj << +/Length 834 +/Filter /FlateDecode +>> +stream +xÚ­VMOÛ@½ûWø˜HÍ2;ëýâØh‘ª¶Ô7ŠPHLˆlêhÿ}ÇÞµãb#å±÷yæíÛ™Ùá!ЇB-5³"Ráâ>€pE¯Ïî—g´>kÞÇÁÑ)ÚÐ2«P…ñméAq&‘c//'†q>¡„Éüáa{ôœÜ,6ë$Ýí-¶pë§ëM⬋ä6ɧÜL’tQ¼â(`Ÿ^ÅçÁI\Óñl¥P¼ ó;¸¼‚pI¬Ï`Â>Ó0n-†÷A„¢zØ?‚ïµ·P~ðÒ¦#ÌÎP»m6@=0׌+¤dVòè°Š„†Š¢¡"Å"a¢°†ZþD”] 8ÐW(EØtØgU¡ÆâòˆYPª÷iŠ0ÉÖË^lAhÎe'v±”¯<æ¢É¢Â±èù-XÔ s½ØdÛ¤GÆZÆGT(!#Á({IƒŽô ¡’lÞ?wîV#9âÁ³&ºd"!4ÄDE¥ hiÕš½Ó‚ɇróeìî¼±xÌó©ÐT/»Í_÷*{HRg}Šão–¥i²Ø­³”â¯,§‚ÕúMr\iª~¥ÄHŽ×°Ño:Èñ‘¸UŽ·â>¦Ûõ*M–^©»yÞc¡0]‡³½Âñéùmgû*Ùu© f(1õ¨@#áQp&ŒÑc |¯D8:¥3n|PœºÐÄA8PË+Ilè+‡¹Ë¶»w½= "GõZ9küØ~z~Ëãåêº'£ÁèhXÇ5XP>CóPŠ¸YN[oåTGΘR_!§Øcp“ u!ŠÎQ¼® 5Ñ]¨†¾Öíe>Ðf|›Ê<ÒýQf;c›äOtÏ{/¾òæÛ_θÍòÖgn×Î~Ü®ÓU§žÄθOvwÙòp‡“ÈP‰èm:œ°LФ3Òà> endobj +4155 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 714.241 200.0962 724.7714] +/Subtype /Link +/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> +>> endobj +4156 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.012 675.0131 229.8943 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +4157 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.9163 675.0131 304.6036 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4158 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 636.1588 208.3951 647.0628] +/Subtype /Link +/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> +>> endobj +4154 0 obj << +/D [4152 0 R /XYZ 90 757.9346 null] +>> endobj +4151 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4161 0 obj << +/Length 2081 +/Filter /FlateDecode +>> +stream +xÚ­Z[5~ϯÁK"×÷K…¥hYJiƒ@´J3³Ý¨ÙdÉ¥ÐÏñŒíx.±¨öa'3ŸÏw|ÎùìãIHáJ(d—Åên‚‹wpûÛ qçð|¾YL<£¦0ÈH*‹ÅMmA$(¡Å¢ümJ$Í©¡LMOÏ_Á¥ÀS‚psñl½©š«'»Õé®Ú—Çõn;ûcñbòthW‚IbIÿœüö.JðîÅ#f´(þ‚chq7á”ù›É›ÉOÁNó 049AØðìGp‡úéQ˜­jf§éŒñtyxðWõvµYÃ<ÎWè¶;××ÕMµŸ=­¶«Êε!!ÈQ“@-‡„ézDÍ“ê¸K¥ [uXí×÷>h`ˆE¹°vÀu-Mmç»jYq=ðwŒ©÷çfçnoÝï —*7‡nF´@˜hUHl\˜ÁxzÐôv¹²ÕýÞ½´p’öo.–Gw„<¸0¿%¹Ùϸ˜îî:o9B™º»Ò?¸­¶Ý!e8öÜ.ÅÛÊÃö3¦¦ÕªZ¨Jt1J lèÁt:J.H„!Ì„¸¸(Q#aC`,³(XvQŠ &¥ ¯_”Z¼ÙE©Í=bQÊxѳÛ^”V»í¶Z«²ß^Aí‘\0*ã4TH`a:I€5É$¥)ª ¢\°qšŠÑ MØ€¦$5%™×ܯ5ÿƒ¦,ö¬©[5·cMÙ¦ìƒFS1Ö‰«†ÕqÔÜI °Nbgˆ§?îÂk +¹ïÉ"i7‡jÿÁ¾l%dzQ˜T€0mwõI„ ==, 9]:T^–gs)U&Iƒ(#Ò¼&câ1’LºÐµÚäq}W•»SkϱݥSQ ´ ”H$8ï„~¬è´4N‹gpJŠ5 DFb%2ê•÷k%Âÿ D‹=+±ÆVÍíX‰vD£Dk㦃t:¬A‘á3¨¬g´¹pºªŸ6jµp›Ç!]Bn/«Ïn‹öÛ•O¡>K-ËùXV±Á„3¼^-Þ¬ÛÜ#4˜ñ¢g·sÜ»ÛmŠXÃ6Æu:•q‚Ú²0¢›‚‘:$vÿÒtd££J °ÑhróÿMkãæòo±-d× ¹¸Å ô¦JôIn@ûŽŽß6‰Ý6%7ŸF¸°*3jxN¸–nd0%Ü4onÌ›n‹{ŒpÓ^ôìvúÙÍî0¤[Øíñ5‰€Êø@!BÑNÆÊö:†ÉÈý3F§dëa²Õ­^>9Ùj×ËꨗÕbz3#Ó³ráF#ÝnguhguhgkÓî–Ӯš7Ú=C…ÓÜ ÚÕMÓ; Øó)³Éóe=ÚT3ùIôhWg®s¯í=*«ÆÈ\BŒiR¯Å˜4+Åñ%¦]èZmëp½]÷¿4†H“Ž€eè G«vr´?X!ˆðá/…0˜'²yôŸVSŒ†!$> +›B"£˜®ß*Qh{<ïŠõüÛj[í—a3òÝþâÅŒˆéÉ}°?³©ÿ㇔=¤î÷CcévÞùº]°ÿC#¿Ó=Ùýýñ]Õû‘ýåÏ@”þ É9¿endstream +endobj +4160 0 obj << +/Type /Page +/Contents 4161 0 R +/Resources 4159 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4074 0 R +/Annots [ 4164 0 R 4165 0 R 4167 0 R 4169 0 R 4170 0 R 4172 0 R 4173 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R ] +>> endobj +4164 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.5601 274.5352 659.7615] +/Subtype/Link/A<> +>> endobj +4165 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 611.1369 205.5653 619.9836] +/Subtype /Link +/A << /S /GoTo /D (a00182) >> +>> endobj +4167 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 517.644 202.5067 527.5717] +/Subtype /Link +/A << /S /GoTo /D (a00097) >> +>> endobj +4169 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 460.4808 309.3265 470.4085] +/Subtype /Link +/A << /S /GoTo /D (a00164_g5a5bfd7e9060903893481db90645187b) >> +>> endobj +4170 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 446.4691 213.038 457.373] +/Subtype /Link +/A << /S /GoTo /D (a00164_ge28f6cb60e86088d8886d0f804b4f37c) >> +>> endobj +4172 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 389.3059 210.2479 400.2098] +/Subtype /Link +/A << /S /GoTo /D (a00097) >> +>> endobj +4173 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.746 389.3059 288.0054 400.2098] +/Subtype /Link +/A << /S /GoTo /D (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) >> +>> endobj +4175 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 332.5162 226.0986 343.0466] +/Subtype /Link +/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> +>> endobj +4176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.1106 332.5162 300.7979 343.0466] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4177 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 293.4938 220.0116 304.0242] +/Subtype /Link +/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> +>> endobj +4178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 243.5125 215.05 254.0429] +/Subtype /Link +/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> +>> endobj +4179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 193.5312 209.501 204.0615] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> +>> endobj +4180 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 143.5499 205.0776 154.0802] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> +>> endobj +4181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 93.5686 192.9132 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> +>> endobj +4162 0 obj << +/D [4160 0 R /XYZ 90 757.9346 null] +>> endobj +1075 0 obj << +/D [4160 0 R /XYZ 90 739.9346 null] +>> endobj +314 0 obj << +/D [4160 0 R /XYZ 90 739.9346 null] +>> endobj +4163 0 obj << +/D [4160 0 R /XYZ 90 716.7106 null] +>> endobj +4166 0 obj << +/D [4160 0 R /XYZ 90 535.7017 null] +>> endobj +4168 0 obj << +/D [4160 0 R /XYZ 90 478.5385 null] +>> endobj +4171 0 obj << +/D [4160 0 R /XYZ 90 406.0564 null] +>> endobj +4174 0 obj << +/D [4160 0 R /XYZ 90 351.1766 null] +>> endobj +4159 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4185 0 obj << +/Length 1318 +/Filter /FlateDecode +>> +stream +xÚµYMoã6½ûWè Ãá·öØ6I h»õm»X8¶bµ¥Ô–w›þúŽ,Š¡$‹T± r%>Í ßðF4$ÿ Ii¢¥&)*Yì&4YáíÛ ØéKœ¿ô?Î&W7,MR’*¦’ÙÓÉ‚"°d¶üta°é%“ôbþü|¸ú–=.¶›,/_Gd]Ïßl¶Y=ú˜=eû)˜‹,_T·p ŠO?Ïî'×3ŽVrU0O>}¦É£¾ŸPÂS#“oxA ¤)KvÁxs±ü1ùÝÙ©'Nœ[´ ’n’K¦ëez ¨& ÒÄÍK’&W¢b p’êÔ$ ª¢ê.ß”›ùv󯥡\Û£ª¾ÜË#Rò‚ti¼k@ûÀ!ªI%Èá„SE¨/áÜK8à¬àF$V­åOÆd?8|ŠIžøÏhQ1¿ HJ•jû=æ‡Í*Ï–5S‹õ|ß‹BsB©éFQMíWó±Å’ÅÇâéÙ­âq©û²ÊÊn(ŒbªMâ£EÜ3„£;i ’6$\Ý€ð¨²Î5:©”× –U¤ØàS5f]Êzk0”¤ÀÔX:>¶žžÝSzA}éÑÈ)'ŠjæÑ¡"Žy5ë'¥òû\ìqé­=Õ¡SP¢ +9N'Å°m†‚!«€Öã +ŽT«bøõ9Ëmu¶ÿ™Í~³ -ò<[”›ÂΔ…Eº¢TÙþ+–kkÅ*o~ø«<ûÖcõªëññ°ÉWZw{=³U.+×År°Â)Ü y“ +‡™#Œj©p­p¾Á@…‹øm*\Ëï×)£ÅfÙóÍ ¸È¶ïáºÖàcQôì¶ëÚb[²^0iJ  qÎ(¶ÈA‡z¬j AýHF˜âb¤~H"( ·é> ”ðÏxÈ£—ò°_—sßïÀ;›XÅU÷Ú +N0ìs…é7¼-|,ÌžÝöÆØmðõôòœõ;:I¤¡"L–CE¢¨Z?ª¡“£±ÅR"¤ùµâ£Cůš‡Çr¾É;ÕïáîáÚÞªø©ËßÓp‰ì–Å弴¡¬1óÝ`”&%"5úH1(\‘"Ú8XT0¾Á€`"~Á´ü~¿`ÚÁL$̞ݶ`ê¶/ŸïÎH†*€…ér¨H ?k$‡´“¦‘š‘ +ðóqšñÑÍ8Ø f> endobj +4187 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.012 702.9085 229.8943 713.8125] +/Subtype /Link +/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> +>> endobj +4188 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.9163 702.9085 304.6036 713.8125] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4189 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 664.4278 200.0962 674.9582] +/Subtype /Link +/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> +>> endobj +4190 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 625.1999 208.3951 636.1039] +/Subtype /Link +/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> +>> endobj +4191 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 612.2485 226.5766 623.1524] +/Subtype /Link +/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> +>> endobj +4192 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 573.7678 221.0375 584.2981] +/Subtype /Link +/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> +>> endobj +4193 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0186 534.9135 224.913 545.4438] +/Subtype /Link +/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> +>> endobj +4194 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 495.6856 236.5493 506.5895] +/Subtype /Link +/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> +>> endobj +4186 0 obj << +/D [4184 0 R /XYZ 90 757.9346 null] +>> endobj +4183 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4198 0 obj << +/Length 923 +/Filter /FlateDecode +>> +stream +xÚµVßoÛ6~×_!t/öƒ™;þ Å6d)–aÀÚØC[ Š,ÛBlÙ“äuýïw”DG–ØxÃ0ˆ)é»ï¾;‡1ÐÆâD%Ì +©ãlA¼¡×o"ì?/èûbøaÝÜs5×ñrÝ2hdŠ#—«3Ôr¾à–‹dvúéWZ*˜!ƒnq_ìònuwÈNû¼lÒ¦8”óOˇèÇåÙm¯J ÎéчO¯HÝCLX£âÏô ­åñ>’\ø‡]ô>z{æé>´¡àŠpt(½á>»§ò©ÝÎ]Ýeq`­9“BQeµVßN¤& 36Ñ#©Ýç§Ø¯~ÈöÙz({Âì¤$û»ºÈjVçc-\Z¦¹Ñ/§íŒšú¿|Êæü¿à•§ätŽ©ò.ÿÀË¢­Ú¾àº_÷~7QÊ0A,±F` +D¯Þ}ª6=æÝpû=~14lÿ„שÜqW¨FBÆiô¨+î§lÎ=ëÓ¨/Òˆžʧ”-ô›¢Ìv§uMáÕ©8²í+gî~!à±>dOh³MÆ¿€¶yûG":øº¾F>=wJ°Äš‹s7ÊjIµÖêfUØ6@$‘)°Ç½&Ý€ÿŸ¸ª(7autÈ9$#u÷ɳTÁ µY!µÛ®ÏߟÊÌ­:pŸJŒøú-?„:¦¦¦gä3sø‘s5íÔî£öø¢Ç3êš_ºŠ-h}é·­¡ß©äÖ}ÄÆ0.ÁŽD|½sxü59Þ 9“¾Á3‰•/ç⌺âœsj[ Õä倂l›V}%É ªá+‰z¬´jʯA_·eº§­04!C™#¢C­ôšÕÚ"4d‚‚gM³—0N©àdèÆ2/Å)~“—y•6~.òË/~ñàfSÿ€¼ÿ…[.ny?”rÝ­Ös®f‡~0šN¯_üìú×—M>):7N²ô7<‰”!endstream +endobj +4197 0 obj << +/Type /Page +/Contents 4198 0 R +/Resources 4196 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4195 0 R +/Annots [ 4201 0 R 4202 0 R 4204 0 R ] +>> endobj +4201 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4202 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 202.2478 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00183) >> +>> endobj +4204 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.2447 427.1275 226.8757 438.0314] +/Subtype /Link +/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> +>> endobj +4199 0 obj << +/D [4197 0 R /XYZ 90 757.9346 null] +>> endobj +1076 0 obj << +/D [4197 0 R /XYZ 90 739.9346 null] +>> endobj +318 0 obj << +/D [4197 0 R /XYZ 90 739.9346 null] +>> endobj +4200 0 obj << +/D [4197 0 R /XYZ 90 716.7484 null] +>> endobj +4203 0 obj << +/D [4197 0 R /XYZ 90 446.0774 null] +>> endobj +4196 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4208 0 obj << +/Length 1107 +/Filter /FlateDecode +>> +stream +xÚ¥W]oÛ6}÷¯Ú˜™Ëo2†uõ’5k®5°‡¶Y‰8vfÉëúï{)‘²,ÊÖ€¢@*J‡÷œûi’&€ÿhb!ÑRË…J²§$øúzDýç)~Ÿ¶¿ÍGWÌ&–XÅT2¿¯,(J$£,™/> ¡b2eÆéósqñ5¿+òÝ„Âø_÷'ß],Ëòy1ÍVdYã®Vë¼~úß;¬ç›Ì½«Ù˜*9ù2¿ý>odyÕ’+êDý3úô’ª¿áÖÈä+.€PkYò4Œ‡ÅzôqôWc§þPmès^RÞï=ß°à>Ãhè¶÷àÇÝGŸk2J¬”&Ãq1s #ÔÓÍò2EK‹ÚÔ,/²Ýê¹\m7ÞoåÌÙq.ØÚÎ߃Òîê(¥J”êוúyµ)óݽs$ͼæež.ô3[礛-# P£Å  ¼7Ö4m£âj3–p´%€²Òÿj‚äûr¹Ý]v¹)0¢9£çÉT{;n4є˃µŠ~‘>ù¨ï7Uš×EuJ[»#‚K¬¸j×Ï‘T­‰±Zu¤ÖŸ“ðôgKvØÑ#[µeG–€eÿZ¬²‚yW –(fÔù°5¨˜ÿÈñØšãÿ¥§0§T“ ûëÁ!g¹«¬Íªªf_ˆíŠ‹") áh%QˆîÕ»O»ùÐNÀOÛzÒÙuêÚ Ý #PbÀÊŽnj€>¶æ艣: +# &©Æx +QA_®6Ùz¿ÀÎU80^<Ûì‘,_8n$ÔPÞ­|ôО¡Äq ?gi™ÖÉùXîöY¹¯'ZÑ3Ã%5D'yÚ€¾nTØPFì8þÏŒÉx +¸©‰­w–±A ñâÔµ Ô1oQy1s‹?SÜt˜O—bÀiˆì6¥x‹¥x›¥ëu¤Å*ÜcÅ@ªGÁQÞ1A¨dí.íÍ´p' ìd¦Û€3™n`ƒ™>ËxÈôoÈôïË…÷4"Šh¦i‡üt²~HFd×Éøc>?»}}ýæöõ«·o£ÑÃ]¦"-ÝÑP +bkU@Â&}Êò'…r70ö«ûý&sA4Î’&ÏOS ŽÆbO²jð´®$JH JT¢ +žŒ@[s0Ú©„‘:VV¯y¶NwîÄ“º—ä¤V.‰ZüO­-ô‰ÞÁi.”ä•—Ô×;\¢­<Ý;mÀ™Þi`ƒ½s–ñÐ;¼¡wŽx› Õ$¡+ÂÂØŽˆÓ=ðCr"»Gr¢öa’mÅùX4¨rÆðà vr€í“-±ö꣢8Ú€¥‚Ç\ð@à=‡%Œ¯¡á8éú°¯ÕÜý„â=A÷ÞïÍáýJýÐ-ª*Bƒ[(gízWx+Â_(Iò"œÖë|“ïÒ2ÜUB'¾ 7®÷~A™ÿ.¿dP¯€òÝ> endobj +4211 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4212 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 202.8057 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00184) >> +>> endobj +4214 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 515.2493 197.5356 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00079) >> +>> endobj +4216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 458.7707 232.9533 469.3011] +/Subtype /Link +/A << /S /GoTo /D (a00165_g1dbc635a2924806f42d7e3273a6a69b5) >> +>> endobj +4218 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.2447 375.6421 226.8757 386.546] +/Subtype /Link +/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> +>> endobj +4209 0 obj << +/D [4207 0 R /XYZ 90 757.9346 null] +>> endobj +1077 0 obj << +/D [4207 0 R /XYZ 90 739.9346 null] +>> endobj +322 0 obj << +/D [4207 0 R /XYZ 90 739.9346 null] +>> endobj +4210 0 obj << +/D [4207 0 R /XYZ 90 716.7484 null] +>> endobj +4213 0 obj << +/D [4207 0 R /XYZ 90 534.1992 null] +>> endobj +4215 0 obj << +/D [4207 0 R /XYZ 90 477.3471 null] +>> endobj +4217 0 obj << +/D [4207 0 R /XYZ 90 394.592 null] +>> endobj +4206 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4222 0 obj << +/Length 1627 +/Filter /FlateDecode +>> +stream +xÚ¥™YÛ6…ßý+„äÅ~0ÃEÜ‚"hŠ,˜mÒÄA’ ÐØš!ë%3é¯ï¥$Ê”H“*ŠÙ>ºçè~µdþ‘LãLr‰4ËE¶¼àì¾~=!íÏsø}î +~[Lž¼¢:ÓH *²ÅU]AÄ)¡ÙbõyJ„˜Í©¦LNï`“ã)A¸ÙxU­ËfëÅÝòx[nÅ¡ºÛ̾.ÞL^.:Û6g‚Ó¿'Ÿ¿âléÞL0bZñì>`D´¦Ùí$§Ì~XO>Lþêê4?Ô;„Ž>:’#ø†Úãp´²9:…ŸÍ ÆxZl·û'÷åå¾ÜÍžþ0ÿ•»'7‡Ãv…–Ãã}_^š–›eiŽ·1"Hs^A£U'#DZ«å¡€J«¶uå~¹«¶¶qPˆ9Íĺlö„¨“CÌçS4l»â%3‘C7sV4wUþ°PaÌ §ˆ`ªê0Ïgâx¸¹Û=zƒIFIܼSÜÝ&,‘$ŒŸªÕö«â¶máqó½æµÞ7-$ÄÙ[P”3C§Þë/ª”Hi¨ÙÚüü=³[¿;±íØÂíU6 +ˆýë¾ZîѾf¡¹F‚*o[§òý{îW3þÏ£lN¸-IáD…ñ`”/Ê/ÓMUͺÑUû×|¿öÒ®ƒ*™ qÛôæ§Ýu«yïâ·ú¹»C¿Wפ³gæ0ŒhÉõ0ÄpäYUÊÚ«f¬QÛBö\ÛŠDB+ó¼V>®6Ëõq³†€ÿѱڢ›Gfosb7B67”æg¥ó«ýQ/¯«ñ9æûîÚ\' ü33$µêyƒ®ÁyÃhkº TÊáL¢Ø +Ÿ…f\˜M4  sËÌiÔÄå>pUÊóÚž½Vº‚д$`fQù©Ž1üB)÷§Cs-€9(êØ©R¾pAÓXˆ¾ïãU{¤žy.¤’ ÌÏŸ–VŸŠáÕ51>,fšÁ¥2]¼üöiF(ž>¿X\üùÚ›í(N˜Ä»Ò©q íHH¬úqp;“pÑåYìŽ †ÝÊÒØcŽö¸o‡Ýõ½g>{<†W7€ýíÇÅ» 8iÉDûÑ©A(… ;‡I „„€Ã-æšîbÀ­, <æèûvÀ]ßÀ{æc€ÇcxuMŒ‹o¿mÖþÍG+h€U¥œáJk=h~ÀE2\ àFQŸ‡ìb­, 9æè@Žûv]ß{æc Çcxu-äý¶Xú1à@©\'z`U)sM“œ÷Íñ ÍÞðüS‚Ÿåì +"œ;Y’sÔñÄ9ák9÷|Óœûæ#8'bxu-çËbsíc–ˆPž'Z`U)o‚ˆ7`ÍÙ î¼)ŽP>ýƒÜªÒŒ#vâ¨iGØ1ØuÃ7šaXÕÒÝ–»e¹9x)4\:¥Tñã·¢„·Öðˆ¤xÏèò]Itôü[*WãkeiÀ1G‡pÜ·CìúŽ`Ü39ëë`®îV>e†(¡y¢ V•r7Oº˜ ÜtÍá¡ G±\A ´•¥AÇÐqß´ë;tÏ| èx ¯nwU^û›Ðt-Tª­(e­1"’ɾ5P¾ +Q†œŒGž¨\AŒ²•¥)ÇÊqߎ²ë;‚rÏ| åx ¯®¥¼¼[û¯Óë»* wUñXUÊÜÜ{)>è~`Å™—,­¼÷’åÕq³4o C/Y(ɵ:?Õ»‚ÈØèdɱu<„¯=ß3Š§w•?ÃB74!|à}~hX}*…W·{õù­Øn—ÅzõËÞx¬*@$˜¢ƒöcŽm+`;tÿF¥@<—äü¼.½Ë’Y~µÑœ.ý LR…4endstream +endobj +4221 0 obj << +/Type /Page +/Contents 4222 0 R +/Resources 4220 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4195 0 R +/Annots [ 4225 0 R 4226 0 R 4228 0 R 4229 0 R 4230 0 R 4231 0 R 4232 0 R 4233 0 R 4234 0 R 4235 0 R 4236 0 R 4238 0 R 4239 0 R ] +>> endobj +4225 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.7618 250.6249 659.9632] +/Subtype/Link/A<> +>> endobj +4226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 186.7561 620.3114] +/Subtype /Link +/A << /S /GoTo /D (a00185) >> +>> endobj +4228 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 447.7854 224.1764 457.713] +/Subtype /Link +/A << /S /GoTo /D (a00165_g7d7920c1e51cc4eef80206ebd6fee3f4) >> +>> endobj +4229 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 434.8339 220.9585 444.7616] +/Subtype /Link +/A << /S /GoTo /D (a00165_g8a645f8831837320c4e0c704e871abcf) >> +>> endobj +4230 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 421.8825 176.5052 431.8102] +/Subtype /Link +/A << /S /GoTo /D (a00165_g3212e70c55244608ac16316888c354f0) >> +>> endobj +4231 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 407.9548 190.8811 418.8588] +/Subtype /Link +/A << /S /GoTo /D (a00165_g71e1b022f7b7fa3a154f19372b239935) >> +>> endobj +4232 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 395.0034 188.1217 405.9073] +/Subtype /Link +/A << /S /GoTo /D (a00165_ge3f8f7deae69854853b0c8ebb82c380d) >> +>> endobj +4233 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 382.052 198.0741 392.9559] +/Subtype /Link +/A << /S /GoTo /D (a00165_g79f9a50c2cccb967d38a2eeb45d2fd75) >> +>> endobj +4234 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 369.1005 194.2087 380.0045] +/Subtype /Link +/A << /S /GoTo /D (a00165_gf7dd2757d1e766f65b01ba7c91c660a0) >> +>> endobj +4235 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 357.1253 188.6793 367.053] +/Subtype /Link +/A << /S /GoTo /D (a00165_g820fb27c50e7bb4ac6d9eae1b06630a5) >> +>> endobj +4236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 344.1739 190.8912 354.1016] +/Subtype /Link +/A << /S /GoTo /D (a00165_g14e276fa8e765f774f4162619f1c8fc1) >> +>> endobj +4238 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 286.3455 190.1438 297.2494] +/Subtype /Link +/A << /S /GoTo /D (a00165_g648ddfb2dde2cc55034e4e0ea41cb6d1) >> +>> endobj +4239 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 273.3941 174.6619 284.298] +/Subtype /Link +/A << /S /GoTo /D (a00165_gc364305cee969a0be43c071722b136e6) >> +>> endobj +4223 0 obj << +/D [4221 0 R /XYZ 90 757.9346 null] +>> endobj +1078 0 obj << +/D [4221 0 R /XYZ 90 739.9346 null] +>> endobj +326 0 obj << +/D [4221 0 R /XYZ 90 739.9346 null] +>> endobj +4224 0 obj << +/D [4221 0 R /XYZ 90 716.7484 null] +>> endobj +4227 0 obj << +/D [4221 0 R /XYZ 90 465.759 null] +>> endobj +4237 0 obj << +/D [4221 0 R /XYZ 90 305.2954 null] +>> endobj +4220 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4243 0 obj << +/Length 1440 +/Filter /FlateDecode +>> +stream +xÚ­XÛŽÛ6}÷Wé‹ Ô ‡w.Š  6 ²ÅmºoIPxmy-¬/[ÙÎ&ýú%Q–DYtÐÀÖåèœápx4"$Xšh©‰åB%ó͈&xùݪÛS¼?m^ß^¾e6±Ä*¦’»eÁ €H,¹[|j2e’Ž×ÙýËMº¹Ÿ:&óòÚÛl–GÒešOÀŒÓíÜ]ÒÆÀ”ž|¾»½¹«C¨"”\ àŸÑÇÏ4Y`¤7#J¸52yÆJÀZ–lF‚q²ý5ú³æ)oô Tï)‚W˜*ÑëæHÒï*Ž¯$b¥,ˆ1ÉŽ—™1Šú:=ÌiQR]§ûyž=²Ý¶"â¹p<.\[òܦ›]þ­|ð~½›?–‡³5Ï +Šâ<ßÙ6Ý“nê$ŒN7„ZÊ{çAÓ&*,c ¥¹$%THYøÛå‡Õ.¿êjeDsÃâ5ªG½™ šhàòÄVÈ/f›*­Çíãè8]ïË´4žVŒ.±|Š§~ BÕš«U'Ôòöcâ~o„íŸè [5Ø]3 û×}6ß“}Ú… K3j8m5*Ôo GȳNlR­¦£kÊ·§ß B è¦á¼uòK¬)‰¢.³Î&zÀ:kXñ1Q~U]lœË|"äx·iá;˜Ý2¤¹Ð]±ã5¼;îóæZÁ##X£Öj)Q®AíËÿIÝ£bòÛ°»bw¬öž?Ä]…Óæ&æ®w×á»ëÖîÚÔ¯°@zšM)ð¨­;ØløXomË< ¿ðpU[`,2|Š‰æÚ+ÛIûyÏÄ0.´º4 5>GÈm7aB‹á4Ô¨P¾Ón¢9Ze' xæÏ¥… ¼¹ÛaÑÐy‘>òA+f¿I­¹ÐŠè!+ö°rÛaö#ÌxÿTðäøK¶;î×ßgÎÖV”m+çÝÙã#Ùycþ,8v[ÊöOJ­_£"ú!Û°?£yiKíEþÌ…3óþŠ•Jªÿµ?\¸<68kna*׶¿ý Ü:wãz—nÓk¬šh¿Ãuën\u«`Õ?½büŠÑòŒQZí•/' ë//OŽïÿ¨Ð¤ÞWõu½ûúí!Ýv3ê6¯}hüüAµ0^endstream +endobj +4242 0 obj << +/Type /Page +/Contents 4243 0 R +/Resources 4241 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4195 0 R +/Annots [ 4246 0 R 4247 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R ] +>> endobj +4246 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4247 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 190.781 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00187) >> +>> endobj +4249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 515.6229 179.0853 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> +>> endobj +4250 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.5282 515.6229 265.4205 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4251 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.8984 500.6286 338.7573 510.5338] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 476.7686 192.6345 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> +>> endobj +4253 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.0774 476.7686 278.9697 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4254 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.8358 461.7743 391.6946 471.6795] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 437.5407 180.9085 448.4446] +/Subtype /Link +/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> +>> endobj +4256 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.3513 437.5407 267.2437 448.4446] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4257 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.2067 422.92 431.0655 432.8252] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4244 0 obj << +/D [4242 0 R /XYZ 90 757.9346 null] +>> endobj +1079 0 obj << +/D [4242 0 R /XYZ 90 739.9346 null] +>> endobj +330 0 obj << +/D [4242 0 R /XYZ 90 739.9346 null] +>> endobj +4245 0 obj << +/D [4242 0 R /XYZ 90 719.4886 null] +>> endobj +4248 0 obj << +/D [4242 0 R /XYZ 90 534.1992 null] +>> endobj +4241 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4261 0 obj << +/Length 1733 +/Filter /FlateDecode +>> +stream +xÚ­YÛŽÔ8}﯈ÄK·´m|¿ Õjˆ½À¼B=ݦ5}aûË~ý–“8íÄŽÕ¢y˜¤sR§\U>.ǤÀðG +ƒ %2ŒËb¹àâ3üübBšÇsx>÷O®'ŸSSd$•ÅõmeA$(¡Åõêý”H=›SC™šž_þ—O ÂõÅóõ¦¬¯®öËó¶Ü§õ~7ûxýjò캥m¼LKú×äýG\¬À»WŒ˜Ñ¢ø7ch±pÊÜÍfònògk§~P½œ ,>:ÂüBÝð(ŒVÕ£Óˆ¨Ùœ`Œ§›õÍÃm¹½™qžB¦×4ÐT*´ 2…”ö °U… |$?Õ3üHá–4×äÁƒ#¥_3¤¹Ãù÷©p°|¤½Hó¶5àóŽ(‚ù˜*H»ØÕAXZž E‹ÊøZKVBP¤1d¤N†B¯> U'–¯“£W'iÞ¶N|ÞuÒ!S'i7»®Nb- QTf†ïP9ÞÀš«Ýb[ºœ7€»ß·±"°/í ´Ü°ÐÐŽc‘üÔ๮ü¸ÐàŸä•°YÁÊè‹Ñz¹Zn‡ìõšmOÓ²l{»ÅÓ{4è'‡ÔFGúé¡ã+*‡žKcYyøü¼[ÚV4¶ 2 ».žè›|@b¦´°ìLI2^fJ†×Í”ïWãýzvN€&Dô¸SƒÏyØm;§5tÿálÝ„6™4 µ†žZÕ ¼UÇhóH±F‚r>6->ãGh7Ó›£®Ð¹rFs[ø–WWÏ`J]Ó¼­ºú¼Ë;(H³)lȺ¼Éf³Âç<ì¶rq{(ÃÍ¡‚W ¥™á;TŽ\SÄ1ì2ºaÖLb¿ç*96->ãGh7ÛnJD¹âé0´¨¾×nj¤˜&ý0ŒÐÌf»šX™=ÓQ¤·§Œ~9RRLíXÝ=ø–bâVï}?BŒø/ÍΚˆé×õþ|Üü7q6Q[¶ÝP «³Ãg¢ÚÍé3gÐmIOJËߢ2ü¡µ¤>S ÒA¥Ï”X1§1ÿ0"‘Bþ¯éJä¡÷`¤ûýBÚ®E×^´gÏŠÀUÄxQîÊZ“mw°öÆ]¼²%rnnmþãG”=¢ÍÉ;ÅX6U8£P„‡ú&<¢¿ùîèÿþþ¹ Žæ홹sÍ‹Ò¿Ì3î»endstream +endobj +4260 0 obj << +/Type /Page +/Contents 4261 0 R +/Resources 4259 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4195 0 R +/Annots [ 4264 0 R 4265 0 R 4267 0 R 4269 0 R 4270 0 R 4271 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R ] +>> endobj +4264 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4265 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 191.339 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00188) >> +>> endobj +4267 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 551.4743 196.4299 561.402] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4269 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 494.0195 227.9818 504.5498] +/Subtype /Link +/A << /S /GoTo /D (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) >> +>> endobj +4270 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 481.068 223.0005 491.5984] +/Subtype /Link +/A << /S /GoTo /D (a00159_g720ac440c7b24bdd07c53ba146e36fb2) >> +>> endobj +4271 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 468.1166 178.1689 478.6469] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4273 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 385.3616 179.0853 395.8919] +/Subtype /Link +/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> +>> endobj +4274 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.5282 385.3616 265.4205 395.8919] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4275 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.8984 370.3672 338.7573 380.2725] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4276 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 346.5073 192.6345 357.0376] +/Subtype /Link +/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> +>> endobj +4277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.0774 346.5073 278.9697 357.0376] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4278 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.8358 331.5129 391.6946 341.4182] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 307.2794 180.9085 318.1833] +/Subtype /Link +/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> +>> endobj +4280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.3513 307.2794 267.2437 318.1833] +/Subtype /Link +/A << /S /GoTo /D (a00081) >> +>> endobj +4281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.2067 292.6586 431.0655 302.5639] +/Subtype /Link +/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> +>> endobj +4262 0 obj << +/D [4260 0 R /XYZ 90 757.9346 null] +>> endobj +1080 0 obj << +/D [4260 0 R /XYZ 90 739.9346 null] +>> endobj +334 0 obj << +/D [4260 0 R /XYZ 90 739.9346 null] +>> endobj +4263 0 obj << +/D [4260 0 R /XYZ 90 719.4886 null] +>> endobj +4266 0 obj << +/D [4260 0 R /XYZ 90 569.448 null] +>> endobj +4268 0 obj << +/D [4260 0 R /XYZ 90 512.5958 null] +>> endobj +4272 0 obj << +/D [4260 0 R /XYZ 90 403.9379 null] +>> endobj +4259 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4285 0 obj << +/Length 1524 +/Filter /FlateDecode +>> +stream +xÚ¥XmoÛ6þî_!t@a3Ñ¢²lËK‘.-¶ÖÝ—¶TI¶…Ê’'ÉÍŠaÿ}¤HÊ´(KÁ†EŸ»ã=w<yPü!/„^@Ÿyñn½˜~1Czy)Ö—¶À/«ÙÅ-½„ 3oµn#ì­’÷s_,1…óC¶¿Èãe”$U}JólÕÂm–§jô&]§ÕñyZÄrʧ Í W/g7«Îm&% I+þœ½ÿ½D˜ûr 9õÅ ( ±·›ù˜˜—|övö{‡£Ú CÞRD†ÝE>3Øø‹…ûí.‚ð?ø+œTè„”¶èâ¸%8æGt€4þuÚD)QP×iWÙ¾ÉÊB+*GÚ*œ»Ý>OwiÑD­| P®Õ3/ã(Wø,š¬8´BµšúÕF£ÙØlµ7Ïî[7ÕK¤Ÿ_˜Î£üÖÏÔÄ:šC•ž*ÝÄ1è™S‰v:v‡âóÁ¹<¼6vY»>¡‚¨í®ïSƒð0`=SÕògÏŒ~µÌ6;Ìf¶Ù²4 fÿTgq ê´o öCÀ0gãÇÖI¹úOwѤþè½DÔ@bQ¤äj› ŸÏ³ßE"´Ô“kšïrªÇ÷vg­–4ïå”àóH­Ôû4Î?’ÛÖÐ&ˆœxqu¥fô#.w{‘Á•Öå2›…w2]»" y–›Äâ¾J,ñ´ ,–>ÂÚ_¹vÌ1¹!ÏK)ûØÔ٦ȊzÝ—YѤ•^|Ìš­©´–ò¢€¥µ^oÖ^ˤUBn_I‡Ý”âÔ+Ôzµª&‹yT©,¸ÒõGú +º ˆ«ï·nˆÎK!B8ß•Ò?9ÊŠuYíÚ }+ ž×©^j­”ƒöäå )ãCG'íqHÁõ(ã‚\œMæR·cioqsÉE–m›fyq!«ß¦8€²Ú\”Ež©0³–Óª¤.£zùGk°mvyßlqB"?Äujv/í:©SÉé .B$. ë4ŠŠÏºš·Ï$“Œú’%‡ƒ®aëR‡ñ„ØPÀ¾Š,N¦ŽË}jÅ] OÓµÇU®ÓVOv¼¿²â¨?w*¢Q!qFjJµƒÖž<¤°ÿÎ?õøA=^¿»¿¢# DŒœ§€%0F#6M1Æõv°õ>'ÊŸBq3\M77oß½ºqjô÷9?ƒNjB¹‹vJ‚`‹9d>?lK`,ØFl:Øc­`ëí‚më}B°O”?%Øãf8¸:ØooÒD}4qFjJ³ƒ6¾ÿ6W%…zøðÐ^VêU4r¢MúÎ~¹]*‚}D]9ž??Ùñ0ãÇ­èqå6xŽr²½GÄ?O9K`ŒrFlšrc-Êëí(gë}åN”?…rãf8¸šr7¯¯‡n˜>qFjJ³ƒæ§ ´Ý¬?ÿºO“t=Ô‚ŽbŸå‡-0ÂNl’£ü˜Ðkøq¢·Q~v?ŽÀy™%ú«ß·vS H@ÌW¿ q?ü}Pö¬=O(#?e·ƒ«Zڇƥ“øê)›ˆ’åCÒdðë +£ìýœ×’‹-ˆ`ûw Â@pNÿZ'L-QëÔ‹´H«¨éÿ¢õÊ ^Ê/΃~AX?á%&—ª7 !Ó_@ò“È|î~ÓÒ@ ~úªì)ÿúºI‹þYÊßiÖùü R,߈endstream +endobj +4284 0 obj << +/Type /Page +/Contents 4285 0 R +/Resources 4283 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4298 0 R +/Annots [ 4288 0 R 4289 0 R 4290 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4297 0 R ] +>> endobj +4288 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4289 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [294.3312 566.4382 625.0908 576.7194] +/Subtype/Link/A<> +>> endobj +4290 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 532.6241 218.2873 541.4707] +/Subtype /Link +/A << /S /GoTo /D (a00190) >> +>> endobj +4292 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 474.0882 185.352 484.6185] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> +>> endobj +4293 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 461.1368 205.845 471.6671] +/Subtype /Link +/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> +>> endobj +4294 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 448.1853 183.1503 458.7157] +/Subtype /Link +/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> +>> endobj +4295 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 435.2339 185.91 445.7642] +/Subtype /Link +/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> +>> endobj +4297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.7556 378.0081 190.6918 388.9121] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) >> +>> endobj +4286 0 obj << +/D [4284 0 R /XYZ 90 757.9346 null] +>> endobj +1081 0 obj << +/D [4284 0 R /XYZ 90 739.9346 null] +>> endobj +338 0 obj << +/D [4284 0 R /XYZ 90 739.9346 null] +>> endobj +4287 0 obj << +/D [4284 0 R /XYZ 90 716.7484 null] +>> endobj +4291 0 obj << +/D [4284 0 R /XYZ 90 492.6645 null] +>> endobj +4296 0 obj << +/D [4284 0 R /XYZ 90 394.6746 null] +>> endobj +4283 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4302 0 obj << +/Length 1578 +/Filter /FlateDecode +>> +stream +xÚ¥X[oÛ6~÷¯0°‡ÙfxÕ%݆mIÖ¦[‹­ñ°‡¶0Y¶µØV¦ËÜ`Øß¡HÊ´(K†"•D~ßá9i’1†dâ±/|2îãÝ×ÐüzDt÷ úg¶ÁóÑÕO4‡(ô¨7ž¯j A Ï—'ÄÇÓ )ó'Õý¯ð*ð„ ¬^~J·‰z»Íâj—ì˨L³ýôóüíènÞÐj¯óˆ$ýkôñ3/Á»·#ŒXˆñ>0"aHÇ»§Ì|lG£ßÕQèšœ ¬{v„#h¡fzfë«Ù@3Œñ¤JŸ¯¶ñ¬8¤e¼A›ö?$«$Ÿ’`’ìãDNP! +Q#Cd%0 ŽÈˆhìÛ¤Œi©c•qž>›H³ q¤¿¡Â¹ß=o“cdk€l¥žÛ,Ž¶ê5Îöeº¯j£B5=F…a4Õä>aáè6@–ø¨µ@ Lì±á³Î˜£™måª*Æ °F˜ QOí‡)ÐWå&˯ÛÜSä3JúÉ«v;¤ûÈ'LÑjúe´Ó ©öOS‚'ɶP !ÄíQÄ™åÕ£¾q\õ}„¾×rUu?ÍÛÏ–ÛfD‡Ûží¶ƒ,ˆÀíï‹4.P‘´}¡ËL™æIÅIµ%S"&_äI\¹ÞDêsUíc³>åŠlÖ9L«È L›$¯AÙ$ÝéR¿k?yƒñõT€gªó1[¾L=1AÓÃ"dœA›£×1@š®ÒŒ[IÙFqiš#ý懃£q£<9Qúz4%¯<ÿ¬vÏêm™æI\n_ÔWº7ÊYs²eš§UJf5϶¦ÚäU\V¹1*ªX—ÚH·¤«Óú”åêyØ@í,]IY f&>èsK~à9á•mYžguk#²I¢)Å“¿S9?i±Ê³z{HwfØ|€¯éÉ«l³<5퓳„>„KõÝ\wì¶-L,r·Ý²a£É0lÊòùúêêp8 x“FùZç Dm¿DY¾FÕÓ•.zÜ^û˜!ØóC]õ>a†õº·© ¬rXìʦX—u\®ŽÁ@›r·mÏ–sŽ8‡Zq:çV‘j¬:fËZ³e!bA¨ä{ ÁtŸwËT?eûÖ)™DˆAé:¢ÔÞÈ®|­m>Ø{Ž±ŸÙ:öWzg0Úµ63&à\rêH»v«zMÒ£®ƒ ¬~ƒÉ8‚ÍœÚLŠµò€ÊÓ\xöŒitíÇl©?âÔƒúëžä‘ +6ß^ÆÆjˆ‚!ö¼SÞ¯–z¦9÷O}Ò"?/ c?䆃+ÝX,~¹Y<ü1¿¿y³x³X8ò€ÜøÔó"ÁµÕ r +ÂÏgÈ a£b(CÆl8C`_†úy› Ù¼dè„ü’ õ»áàJ7 ?÷ïïçŽ×…"`¬†¨4U.¬O=¾Uüªk‰ +y¬'ÿÇþ¾ôk«áì÷ÐYÉï%mro‘^z›ù’Ì÷úÐFÕyÿp÷ðû»;·dsð è}cÔÏì`u¥½9ÕYÿèSœµºÎœ3äôü­€mÐ'c6¬ˆ>FKý¼&lÞ DqB~‰*úÝppµ.î:ÊEDp2c5Äì  –ØHîßß-¯ÚÂ0ú`~Jz^–AŸ>ŒÙ°>ú-}ôó6ú°y/ÐÇ ù%úèwÃÁÕú¸{Ûµ]„„0VCÌZ‡>þí<ö…†Á>õͧ>Ÿ¼<'ËdÕuðc>CþÜgõ÷ˆÄX j¤î(‘~R£›´T3TÑ©àÇûzo®ÊŠM–—n¡`zäÔ¡³²iÌû]sPÕ/„…KOÂaôǃi£«¯ÅºÏ~ø‰'üÿu[§:€!Àiß÷y(ôAP05Fa ¼rõ <}Uµ^ÃÎ<*Û—’ïÌË[y+SéBõ_SvMõ…3ÅØSo+ùÓÝÜ ¸7Ó/æ^úËË:qn¤åU±qÍŠÒt>endstream +endobj +4301 0 obj << +/Type /Page +/Contents 4302 0 R +/Resources 4300 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4298 0 R +/Annots [ 4305 0 R 4306 0 R 4307 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4315 0 R ] +>> endobj +4305 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [89.0037 554.483 445.4449 564.3808] +/Subtype/Link/A<> +>> endobj +4307 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 538.2933 203.3535 547.1399] +/Subtype /Link +/A << /S /GoTo /D (a00191) >> +>> endobj +4309 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 480.3601 235.723 490.2877] +/Subtype /Link +/A << /S /GoTo /D (a00155_g44311ecc30759ca38b4069182247bdae) >> +>> endobj +4310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 466.806 185.352 477.3363] +/Subtype /Link +/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> +>> endobj +4311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 453.8545 205.845 464.3849] +/Subtype /Link +/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> +>> endobj +4312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 440.9031 183.1503 451.4334] +/Subtype /Link +/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> +>> endobj +4313 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 427.9517 185.91 438.482] +/Subtype /Link +/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> +>> endobj +4315 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.1599 370.7259 224.0961 381.6298] +/Subtype /Link +/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> +>> endobj +4303 0 obj << +/D [4301 0 R /XYZ 90 757.9346 null] +>> endobj +1082 0 obj << +/D [4301 0 R /XYZ 90 739.9346 null] +>> endobj +342 0 obj << +/D [4301 0 R /XYZ 90 739.9346 null] +>> endobj +4304 0 obj << +/D [4301 0 R /XYZ 90 716.7484 null] +>> endobj +4308 0 obj << +/D [4301 0 R /XYZ 90 498.3337 null] +>> endobj +4314 0 obj << +/D [4301 0 R /XYZ 90 387.3924 null] +>> endobj +4300 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4319 0 obj << +/Length 637 +/Filter /FlateDecode +>> +stream +xÚ¥UKoÓ@¾ûW¬ÊÅ>x»3ë}E*­( AÉ­ô§±ê8%NÔöß³kï&nl +Ê!ûøæ›o;ÂìˆaD E Ï$ÉW#·öø"Úû´x?NÏÑCDI¦‹–AH¦óëXSdIŠ‚Å»òþ´Êé²Û—UÑ­®ŠE±I@ÇE»#ÈAAr3½Œ>L÷ν6Á%8׿¢ëFæVãeÄ(7Z»aŒA²Š2äaSEߣo{žî¢5 Q2jO0‰6fÕû× md%P#DKiëQ()xÒ³b;³LóŽê¬hòMy¿-×µ'â½ü;'Ôt<Ÿ×ù¬êìòu½-ëÝÌ6ô8»ZPZ™Y¿™/¥}Ô°´¡ŒqË%CÝ*y—¸Ø.כɱo‹¡Š#¼ì|ñÞÏ0Epq`kÝÏg+Ÿ¿]}—‹‹ªéòг–H3.l‡´V¯R•¢ÚXÎçR»ë;VŸz²ƒÅˆlÙ—=`vfVöÛ¦ÌÚÇZ03T¢–/§múøÍù3Òb)ˆ@‰ö=Ú~pȳâcX—m_¶‰.ý¿;¯êAhÊ- ‘€THæÕ»«Í­Ç\õËðiß`¤ü^§®}“ƒZrÊP©#ÇmPó;`s~©Ï_¿Ò©Œ l³¬E¾*ë¼ÚÍí¼öÉŸTyÚ<”Û|I—'c“þXqf]ò¿†d;éµ5ŽýG.íÐã:Ì@84ÊEQ›Ù6 ©Ð_Ââ2ïüÐÿ³ òIø@ c²[-ñzã¿¿z4õÀŸOþ%¯Ÿn‹ú8=n‚äç7ño‚¢endstream +endobj +4318 0 obj << +/Type /Page +/Contents 4319 0 R +/Resources 4317 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4298 0 R +/Annots [ 4322 0 R 4323 0 R ] +>> endobj +4322 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.7618 250.6249 659.9632] +/Subtype/Link/A<> +>> endobj +4323 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 611.4648 174.0239 620.3114] +/Subtype /Link +/A << /S /GoTo /D (a00192) >> +>> endobj +4320 0 obj << +/D [4318 0 R /XYZ 90 757.9346 null] +>> endobj +1083 0 obj << +/D [4318 0 R /XYZ 90 739.9346 null] +>> endobj +346 0 obj << +/D [4318 0 R /XYZ 90 739.9346 null] +>> endobj +4321 0 obj << +/D [4318 0 R /XYZ 90 716.7484 null] +>> endobj +4317 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4327 0 obj << +/Length 2258 +/Filter /FlateDecode +>> +stream +xÚ­Z]sÛ¸}ׯÐì¾H3ß™N§IìdœÝ&[[}ÚÝÉ(mkV–\‰jšþú^$Àv=~0%žsqsñ!’)†?25xª„B†q9]?Mðô¾~?!ÍíÜ_„€7ËÉ神d$•Óå}Å ”ÐéróËŒ(:_PC™šo~†KgáúâÝvWÔWW‡õù©Ø—«r{ØÏ[~˜\/½l•`’XÑN~ù O7݇ FÌh1ý +0"ÆÐéÓ„Sæ>ì&w“¿{žúFõ@_ãaý­#Á7Ô5BkUÝ:(™/ÆxvÞ>ÿð|:¬GÝÆÝ÷ÅqNô¬Ø¯ Û¸š• #DÅ +Yµ¤L*ÏŠïUQ®€iÓä©8­Ûg—% bAò-Ä*”¬x~>ʃ iNð¬(k†ÝöËquüVx,V­ºþcº+P7ùZ L´šJ¦æo_êh¢âÁ¡ ˜—Àpyåë9ˆŸËÇÃñUW›`Š£$-îQ=êavVH&.l•üfõÔäö¼¯3µ;Õ¹%$xZRÄ™€T=õç(T¥6øv¨õíߧîêÇ l÷DOØ2 ;b¶¬ ì¿ž¶ë:ÝX(7HR-Óió¨X¿Õð˜Íêÿ¥gø-ˆp”T!IèUa‡Ö~[ Ú*ÓÛ}8ä¢T +ÐL%Áó:x{ãøÐ nÃÞwèÅÞÓ÷N—skWÞŽR¥DK¾;ä&-Úa²¢¨É[Øà ãؤòÚßo÷ëÝy5DBøêËá¹DßYëôËú°×ShG”Q÷̪\Õ=qWÏëò\W©SOª’0bpZ}Þ“Í/F£b†–ñdû=(­q ºúX(lF6ÝÃsòÖa‹sX'&Óv Œj—«iô [™ÔHÂƹ5D'ÜêaVý®\›½}é–VíÜ,ë5ÃjÓÞ–5~¿?ï×v%1lp[Fùÿ`ðá5*ãIIiÎá–·x@˜òxZ×›<Ôáò–ø›§Ãˆx/F¿»þxO¬¶˜¤“àQõ˜mØê ®äØö{|.‚ˆ71¡KÄ Îô¿Gå„#¶`BßÀö9¸Üûd%÷JcøÈJ S•ÀÁªJPì7—p†m {JűxÛÂfH5wʶ–·m@˜²mZ×Û6ÔaÛ–øۦÈxÛ¶ý|·¼Ç/CXÃÆ1™ÊD³ ZF:‡ìŒÍÇg#èò[×rØ8¤›îP9áˆ-°î©<¦¼JíÑ +VbœWCt«Ööj3Ûîϻݢ,ŽOÛýªtÇýævÿ0'b6èf +›n͵|7S)‘V:·Ìö°¬›C„›3ºÎÍ-ݼ›Ûâ#Üœ #⽸ùýõÇëÛ×sBÈliÏP?ÝöÏËŠAgٱʋGeŠÙÍ­ìPllJ<>A—wÐÜ c¨Ƥ›îQá˜-0÷C±/Ž«òî±WÕÑöCÒô‚ C„iú2½ƒÙøÞÛÀ¬›Áá—‰º¾úº-{—ßÍ—®\œ|áØo½í6Å©^¦(P…Œ–¹“}Ë…€0UÒº¾(„º#ŠBK|LQH‡ñ^ŠÂÛŸ>Ý]ÇKd˜44ÊÈÇlÃKs¤–zl<>A—7±/PÃ3Mw¨œpÄ–Û‹Û]¦läivˆNÜÁ¬úÛÝáôÇÍ(¦K®_ĹÕ&|™¡×¹–unH˜pnF×9·¥›wn[|„s3aD¼çÞ^¿¾zc{êïzŒí[É\xT&ˆ˜mx}Î`£³ààYýkbqéR0ÎÓív¨œnÄ–3/QغŽ3oˆN˜×ìú­?»ÌÊç}¹Ýu×Üq=¬'îÝË3Û“›´w»AoÉQÔ¼Œ·ŒLUÎÛ–÷v@˜òvZ×{;Ôáí–øo§ÃˆxÛÞ®×èѧaSY2•‰!f´6L`Lp66 Ÿ Ë›p7F¨LËPN¶Ë,Í×I‹3(3f¤ÅtÊâ6hñçÆ߇ÖÄ}z.Ö[;jÝ^|mî«zý¾.íBv{Ãf‡î§š¼Œ× AŒ`óºƒå½¦¼žÖõ^uGx½%>Æëé0"ދׯìÐmË ›½þé:þMŒjÄ)é¤xT&š˜mxB'H1=6žÓï²&,ݧ±Ê´Û¡rº[nB71>r:¿`No@­wcvÅþÁí«Ý»0~"¿Ô€òqÕü8öuuò wûÛ˜uû¿¶‡ói÷-|ÛfµA}o)“úWŠžDbÈ‘õqÁÿýsU 4> endobj +4330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.6594 250.6249 657.8608] +/Subtype/Link/A<> +>> endobj +4331 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.2769 190.0737 618.1808] +/Subtype /Link +/A << /S /GoTo /D (a00194) >> +>> endobj +4333 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 515.1065 181.8351 526.0104] +/Subtype /Link +/A << /S /GoTo /D (a00083) >> +>> endobj +4334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 502.1362 163.7728 513.0401] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4336 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 419.2928 204.7292 430.1968] +/Subtype /Link +/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> +>> endobj +4337 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.0542 419.2928 231.2894 430.1968] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4338 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 380.401 215.2497 391.3049] +/Subtype /Link +/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> +>> endobj +4339 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.5747 380.401 241.8099 391.3049] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4340 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 341.5091 210.8263 352.413] +/Subtype /Link +/A << /S /GoTo /D (a00158_g70d236d1cf34b4e21836edda60247b70) >> +>> endobj +4341 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.1513 341.5091 237.3865 352.413] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4342 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 302.6172 234.079 313.5211] +/Subtype /Link +/A << /S /GoTo /D (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) >> +>> endobj +4343 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.404 302.6172 260.6392 313.5211] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4344 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 263.7253 274.846 274.6292] +/Subtype /Link +/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> +>> endobj +4345 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.171 263.7253 301.4062 274.6292] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4346 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 224.8334 216.3655 235.7373] +/Subtype /Link +/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> +>> endobj +4347 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.6905 224.8334 242.9257 235.7373] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4348 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 185.9415 231.2097 196.8454] +/Subtype /Link +/A << /S /GoTo /D (a00158_gd895ab98c54d9966ff554aa873151751) >> +>> endobj +4349 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.5347 185.9415 257.7699 196.8454] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4350 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 147.0496 225.0331 157.9535] +/Subtype /Link +/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> +>> endobj +4351 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.3581 147.0496 251.5933 157.9535] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4352 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 108.1577 229.4168 119.0617] +/Subtype /Link +/A << /S /GoTo /D (a00158_g4ab2de595d36e9e55dd61f6ecd139162) >> +>> endobj +4353 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.7417 108.1577 255.9769 119.0617] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4328 0 obj << +/D [4326 0 R /XYZ 90 757.9346 null] +>> endobj +1084 0 obj << +/D [4326 0 R /XYZ 90 739.9346 null] +>> endobj +350 0 obj << +/D [4326 0 R /XYZ 90 739.9346 null] +>> endobj +4329 0 obj << +/D [4326 0 R /XYZ 90 716.74 null] +>> endobj +4332 0 obj << +/D [4326 0 R /XYZ 90 534.0752 null] +>> endobj +4335 0 obj << +/D [4326 0 R /XYZ 90 438.2616 null] +>> endobj +4325 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4357 0 obj << +/Length 1660 +/Filter /FlateDecode +>> +stream +xÚµZk7ýž_1U¥6‘ã÷ƒo”Ý¥K)PHE¥‚Viv–XšÍø÷½ÎØÎdœñµ[!‘ÇœÜs|ÇçØΆUþ±ÊÑÊ(CœºZ|Ñê=¼ýdÄÂå)\Ÿ¶?ÎFθ«qšëjvµ« QœñjvùÇØÎ&S®èønùéÁ§Ûõâ¹nÞ8[ÞÔͳWõU½™0;®W ÿ–ц™“w³§£ÓYâò”Ð̳ÿ5úã­.AæÓ%ÂYU}†”0çxõq$¹ˆ/nF¯G¿¦:Í…ÝŽRRE¬°iÆÕe`fÓ9qŠÉþ¶rÚj›hµQM¤°²J0ß¼·œ«n…Oq%ªvÁ\UDa¼LGµ>äýö²~K)_Õ¹ÔÄpÃ:äþÒæ}À¼jˈxLFV×ËxùúÅãŸ/N?Ÿuu‚(Êu¹ …°çÕvͧŠæ¼ŽXN?áQݺ^ÁÎ-™!ÕÜ"C(Œ8«†Îòy×LtC9¡F#¦ài½cW´²À®åî¶sWÝõì§_–Û&¶×! >m&R×Û5tdÂéøÄÑq½ý~"éø¶Ù^o&ÂŒëù%éƒvŒ0f̽[ @-c'jìvÁ‚±Þhì^Ü؇äŒÈÈêîýøًקÇí-aV +%Ë­H(DC^­×Þ V(XÏv!áQݺýöÖŽ(§42ôˆÂˆ³j˜½C8çb˜½Û肽̳?¾Yß[Ï‹î˜Õeó¤ö—þÿhPœp-äýDƒpDÀFI†€Âƒa_®” EÒ -Ò©Ðf +E ݪ­µþùI¾äJÂuÅÑ'P™9«Õ¿Î¢iëÞ`Ë|€côª…Ež«+:‚Ön-4¸$BÛ °—  <õI½¸™7>ìX¹ŽV__ ɇmq&ˆ¤ŽÝÅ)%R5[‰’ÇØ€m}B".oÁJ6oóðùù£—edu÷V~úæÄßÀGÆØx6qžf6`ÄÀA¬Ø“B´dµz½/¡J©¡ÍHxT@·n¿ý›åÈÀ# +#Ϊa  ¬"Š 3,ÚèB$Ønp]+ïì» †‡©ÉÔøsóâr¾ p=6Ÿo6˿똫!)ÑÊH¢”´÷J3ˆöfÛPˆCc ]°oŒ^<ÉÄ"#«»7÷êÑùìâ·ç³ógÇNÒSìGB!Bòj¥“€¥L mE£ +ºuûCÀPB¥DF@m·–gý¡ñÍb½º\n—ëU1@·VNL„º”æÕ¼™8>žÇíýÝj»¼9°w’#$Âvs·ËŒ~›CìJÕýØœsbd³u(Ù<Âp›· +–l^æM6oómn½¸‹.·;“—Et«óøì§W§ò-¾’„IËÊÝH(DH^­×äÊ©•Ú‰„Gtëö›ÜR˜™ …gբϵíøÞ’ã—³ìÞø>}çÿ;Ö0)øè¡ KxDw^··a°!¦u¹a …gÕÚ[£g{°ÜSxÌ7™0£|…ὉxLbVw×›mÆoQ”"3)¡0Ö¬ZlL˜M~zÀŒšzÕÎvD9ØÛMƒ.©æ¹ŸnûŽrW%È•_7›äš +0­5ÍçÎîV ÿÉÛ#ÿ‘ +¦Šd¦7¢Û€BD'Ñ%FPoa1§X„Æ€ÆÔEܺ;¦/²Û iXÉ™,ÊãD:jpyvŽ3T^ÄÈÛÙôÂoÖoêU&ÓB­±åû–P˜çˆ2Ù݃©x û€EÖ$Î Q\ð{ÀG<¢#¯[8ÊA$Ã&§Ü€„ʉ"æ#áJ«n¨8z„Yã k[ÀcCÏêÖ6»mª¡GFœUë;Åú”€™êý)Ñ”R"Âð”(1î7roò›wq=ßäö‡Ã«ä¶ÃÛoñˆÇdu÷‡$‡ÃùîXžÙ)†u!€0 f&”L®ý~OmEÂ#:òºý3]:"`,?‚rڎű¦wgøÅ»Ët\<æ¶Ç †Á8Ž‡D¡ÓJÿ§_Sì ;OÁoÿ(Dç¿p ? + "¼Ð'õªÞÌ·Ýïq~‰OžúÝ]xÁxx¤¹xÈió +6mºyvå'åzŽç/šàŸ_›Ç“õ—¯ïóõI1q¬?ÿ*òa!endstream +endobj +4356 0 obj << +/Type /Page +/Contents 4357 0 R +/Resources 4355 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4298 0 R +/Annots [ 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R ] +>> endobj +4359 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 713.8674 207.4989 724.7714] +/Subtype /Link +/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> +>> endobj +4360 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.8238 713.8674 234.059 724.7714] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 675.0131 244.0317 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> +>> endobj +4362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.3566 675.0131 270.5918 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 636.1588 205.2872 647.0628] +/Subtype /Link +/A << /S /GoTo /D (a00158_g4a264bb64ae706d53f572b1d9e4037a2) >> +>> endobj +4364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.6122 636.1588 231.8474 647.0628] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 597.3045 232.7343 608.2085] +/Subtype /Link +/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> +>> endobj +4366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.0593 597.3045 259.2945 608.2085] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 558.4502 244.4801 569.3542] +/Subtype /Link +/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> +>> endobj +4368 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.805 558.4502 271.0402 569.3542] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4369 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.8747 519.5959 255.1444 530.4999] +/Subtype /Link +/A << /S /GoTo /D (a00158_ga87ff36af81990e6ffe20d76d5e4606f) >> +>> endobj +4370 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.4694 519.5959 281.7046 530.4999] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4371 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.9613 519.5959 458.1965 530.4999] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4372 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.7532 519.5959 484.4966 530.4999] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 450.7886 138.5977 461.6925] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 450.7886 198.084 461.6925] +/Subtype /Link +/A << /S /GoTo /D (a00158_g3178402dd725776415bf9745e7bf92ba) >> +>> endobj +4376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.5269 450.7886 251.7621 461.6925] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4377 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.2416 450.7886 282.4768 461.6925] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.5466 437.8372 196.7092 448.7411] +/Subtype /Link +/A << /S /GoTo /D (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) >> +>> endobj +4379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.1521 437.8372 250.3873 448.7411] +/Subtype /Link +/A << /S /GoTo /D (a00082) >> +>> endobj +4358 0 obj << +/D [4356 0 R /XYZ 90 757.9346 null] +>> endobj +4373 0 obj << +/D [4356 0 R /XYZ 90 469.7385 null] +>> endobj +4355 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4382 0 obj << +/Length 1695 +/Filter /FlateDecode +>> +stream +xÚ­Y]ÓF}ϯ°à%‘ša¾?PUº „Ò…T<BnâÝÈ&ÛÄ¥¿¾×ãŒ=öŒKÑ>$ÙŸsçνg®c’`ø#‰Á‰ +Æe²º›àäþý|Bê¯çðýÜ<]N=£&1ÈH*“åuÉ ”Ðd¹~?%ŠÏæÔP¦¦§Åkx+ð” \½y¶ÙfÕ»‹ýêt—íò4ßìw³Ë—“Ëe#[G%˜$…è_“÷q²†è^N0bF‹ä |ÀˆC“» §Ì~ØNÞN~oxª/Ê ú'ë_áþCíò(¬VU«ÓˆÒÙœ`Œ§§Íý£ûÝvWö&»Î3¢§Ùn•+«( 2B””RFáüL‰HMz‘å)0­ë$eÇÕasoSDÌÉ<ðP„¤äy}Øçûüö¥ëcuùæî~›5IFÝ,k0Ñ*‘Ä‚ôæÈ‚æ.ʯmÆ ¸8ƒˆ0+#z2ƒ Nùíþð¸«M0EŠQoP=ên&VH&Îl¥ü:½«óxÚ}ž<ͶÇ*„8WKŠ8P)åU?z¡*…´Q²jõõçľûÕ Û^ѶtÃö˜‹RûçãfuDǬ åIªe8m Ê×o-Üg+ôê)µ9–²€òzƒ/²Óݦ,Ъäê×âÿ[/|"4b@“Sps]…_|u¸©1oÜý·ø¹{AÏþ{¼Etesz› õ©…ìDЭ;‹Šézl….ªènõ\[F¢ ‘œ—ȇ›Ýj{ZƒqHèýÛº}0à#*UµCižVi~›N«üTÙͱÇFˆLÍÝô5–„ÞÐüÌSè Tø WQ袠bƒŠé‚,e[÷X®ÖSfN +¦;ÊÃEeñ±<Þª¨<}®Õ\EVnQ=ª­½†MáJÀ™PµØ¢è®t»ùgè ä\#ÉŒÜaØáÝá ây‡#ºv‡[ºו£øÎÁ%Rê¿->¼É Ãã-Òå§ÅÕbéM ži"°¨˜´ÇVf ìëJ8T•½x‹FÐå¨pó„Y·EÅT=¶zÝį8…Œaœad LŽlOáU๋.ÕN4¨K^ªÃ0‡•ÑgÒV—Õ3\m¯÷‡Ój¬šÁ@ £ ’b„Yû@ é ûM€)ƒ”Tª>hWÛôžÏÙtWˆk÷öÝæD4ƒîàîÐÀ¢îT<»CD׺CK7îmñî Ãã­ÝaùâÍå“ o:à ÆUFÂ9hPqŸÍúÃ.½Ë>¥å¡s 5cpPlߨštÑÆi`çÂœ1uŠsýÍ]Ä(GBŽ¸R ÷ˆÃµuQm±“¯ÅkÛ! ÕvX·©mWwDm·ÄÇÔv8 ·®í§—ÏWþŨ0¤À¢bÚÛàÑgÂZ™Ñ«·øh]Þþ£bŽ4Ó:¼îQõÙbG5QeF}.:ÐÁ Ìéà¢/«vÍoë7Ç<=äc;ÚÞþ7ë.Ï/ÕËõi·rnío›ÝMÿ_ü‚jŒÅú»ø•I©hÄ/XÔ/\€_Dt­_´tã~Ñá‘0<ÞÚ/.¯.úe ¥I€EÅ”=¶áAvš +>zí Ë;<(k%coQ1U-êp“‰)igpÈ+jTØ*2;Žþ£Ÿ2‰°½ƒî ‰¨˜$ŠÈŸn÷«êÀ:Î/é&ï—‰4ˆ¢-Â,¢E-"¨x¶ˆˆ®µˆ–nÜ"Úâ#,"†Ç[[Ä»¡xúd±üôÇÕrñÊ;d)Cƒ‰“Ñ "QølCvA©¬îDGæ¡ÁG#èò ŒC Y·EÅT=¶Bõ‡ªÞWûݺ¼G Ù¤xœ Çu ‹H³}8ƒRøܹ‹-Û±|w‚‰`Û‰¹žê§ùá”7ƒFB8FKõ]f7$F°Øï£ ,Þða¨áúMûº#¾%>¦áÃax¼^ÿ{±xué7ž€ +¥"œŒ‰Âgnx¼-´{‰Žª·9‡Z]"˜UudÅÓôØ:­ìrxe`#»ÜA‡ºÜÂÆuù—Ûæqé·v¹åãæþ¢>0æ})ÇUR›Ø7?f.¢¸!ŒºóˆDF1]ä nQ)ž(«âÁ¯ªÌðy¶ËinG›ßì›—ÅúOõBëWü˜²Ç´~žË’õÝՌ u¨MÔ{ðþçWûØýï¯7™÷Kañ$܆ædé_º¶Þnendstream +endobj +4381 0 obj << +/Type /Page +/Contents 4382 0 R +/Resources 4380 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4298 0 R +/Annots [ 4385 0 R 4386 0 R 4388 0 R 4390 0 R 4391 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R ] +>> endobj +4385 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 630.2193 250.6249 651.4207] +/Subtype/Link/A<> +>> endobj +4386 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 596.8117 174.5819 607.7156] +/Subtype /Link +/A << /S /GoTo /D (a00195) >> +>> endobj +4388 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 512.3371 148.2809 522.1152] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4390 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 445.4868 184.2462 456.3907] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> +>> endobj +4391 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.5712 445.4868 195.3146 456.3907] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 350.0315 204.7293 360.9354] +/Subtype /Link +/A << /S /GoTo /D (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) >> +>> endobj +4394 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 305.7728 194.7667 316.6767] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> +>> endobj +4395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.0917 305.7728 205.835 316.6767] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 261.5141 184.8042 272.418] +/Subtype /Link +/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> +>> endobj +4397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.1292 261.5141 195.8725 272.418] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 166.0587 223.997 176.9627] +/Subtype /Link +/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> +>> endobj +4400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.322 166.0587 235.0654 176.9627] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4401 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 121.8 226.2087 132.704] +/Subtype /Link +/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> +>> endobj +4402 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.5337 121.8 237.2771 132.704] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4383 0 obj << +/D [4381 0 R /XYZ 90 757.9346 null] +>> endobj +1085 0 obj << +/D [4381 0 R /XYZ 90 739.9346 null] +>> endobj +354 0 obj << +/D [4381 0 R /XYZ 90 739.9346 null] +>> endobj +4384 0 obj << +/D [4381 0 R /XYZ 90 715.5325 null] +>> endobj +4387 0 obj << +/D [4381 0 R /XYZ 90 533.9892 null] +>> endobj +4389 0 obj << +/D [4381 0 R /XYZ 90 467.1389 null] +>> endobj +4392 0 obj << +/D [4381 0 R /XYZ 90 371.6836 null] +>> endobj +4398 0 obj << +/D [4381 0 R /XYZ 90 187.7108 null] +>> endobj +4380 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4406 0 obj << +/Length 1720 +/Filter /FlateDecode +>> +stream +xÚ­Z[o9}çW í H×÷±û–š¦j£nBÕ­Ú*ba’ %¥DmÿýÚÌØxÆ3þÜ‹ò'ßù.>Ǟț2ÔxXˆiÆåpq?ÀÃ[óöÙ€ÔŸ˜ÏOBÀ³ÙàÉ ª‡iIåpvsˆ ”Ðálùq¤¥ã*ðèqõðäaîªW/Vë²úë²¼)wc¢FåfaßÒ”ª)ÄøóìÕ`:óäun‚Ib©ÿ|üŒ‡K“ã«FL+1üj^`D´¦Ãû§Ì½X®ù8Õ‡è*QÖ]#!H A]‘ÔÔ\T5¾\•»ù¡„ÅÝj1_Wu=ÞÙî·û»ª¼ùòKWM¸@ ýí>~^e‚n,gŠû(6O”FÍ#Øü,IçA)áHc)¤,ËOÓM1s‰ +Z&³ýdw[C.ÃÈ¡Õæðvvý~L(žÏ®g//§§“v6”1»6Ó}ð tQ¬Có±À1©DŠ)•Ù‡è[Q-ýÃ>"ç ¥eºb(Û±,åŸÕr7«Ü¬pS>‰×^ˆ¤C©)b’… t,Á +{€y¤ÍãÙz»›áÿ[å3ß,«?¾ÎWûÚ6ûU-Îyõk1&bt·Z/½d¹p’e…•lÛÞ?¬Ë}ùõ§☓tuuq„+!¼WóR*Ä…Dïa êÀ Ù¼N÷ ^XøMò åiDqkí_½k::k$K”™Ùè8DEë=1(ûâÌ ·[²DÈl¡¨Û¡ Ö((YFÒšgJ6@§$ë`nçü½RŒ4Ç"3Áݽ«s³4ŒTy>_¯»zï„ŽKn:­X¯5„€„5xh IÆ£5¼Î¼°54É3¬H#Šë®*ž¿œNÞ½žÆ;›@Lhžî‚Gôq4g7)­p®áXöU¹^zÙÜTz¹ÿ 1sÏëQHˆÈÃ@%"xˆ¼°ˆšä"ÒˆâÖ"úp>}=‰7†(¡hCAÜQ´þKr‰ÃùÕ;<˜A;nß%9GTa®Û£Ö8´Á2)S:óF\ˆN˜†‡U’,øA’^Ö*î[{îâqW9Çfÿã–„0JÃü·š™¹òææŒhºFÁ’>†K):Iêfè9dΑs2‡vÔPÌ×ï.f篣¥M•Yæ²0ÕJÓG±úo¯»ôhfõз£öˆ™ÙÍ“tÅQ¶b…7׶›äí4Fí£±Ì3iNIºFå+º÷†ZÇwSÏj¿ÚÖ7è¶ ãc‚Gý7Ó1öZH’Yb€î>DPEÍ€UÕåI­¬®'tÔ^Ÿ›ÙôÚGHø‡‡’d<:Àë,¤Á {H“<ÃD€4¢¸íGuçgñ)ÌÅ¢ éNxµ·M™PÍpרm²ý£©Q;<êc0ê4¯uÈ›1êyΨÓiDqƒÛ+ÓI×£ªuôÀ¡rŠ *4nõžt ™1¤(!ýC©!;<äc0ä4¯rÈ›1äyÎÓiDqÝ/&]3¶·ZàP·Y ¢PE“›v͘b¤¤îÊR3v0xÆ)Æ`Æi^?ã7cÆ òœ§Óˆâ†G¿xÊöy×´H7Á£vk×æâ¾Õ|ÖõÝbÎKÝÏ° H¤¿ôU¡ÃJQæ_£áAB"]0å¾ T'a“<+7ån¾/ëc;ݼq¼²7Së¤þbÁO){JqõŠb,ëCÖ˜šÃÔ®>A¿­Ñ¨þó½ú=Ù~û~[nÚí±ßcêèÏÿ÷1ý¾endstream +endobj +4405 0 obj << +/Type /Page +/Contents 4406 0 R +/Resources 4404 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4430 0 R +/Annots [ 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4419 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R ] +>> endobj +4409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 704.1539 234.5175 715.0578] +/Subtype /Link +/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> +>> endobj +4410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.8425 704.1539 245.5859 715.0578] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4411 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 665.2996 197.387 676.2035] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> +>> endobj +4412 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.712 665.2996 208.4553 676.2035] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4414 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 582.5446 207.0905 593.4485] +/Subtype /Link +/A << /S /GoTo /D (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) >> +>> endobj +4415 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.4154 582.5446 218.1588 593.4485] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 543.6903 187.0159 554.5942] +/Subtype /Link +/A << /S /GoTo /D (a00142_g905451249dca72ce0385bf2a9ff178ee) >> +>> endobj +4417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.3408 543.6903 198.0842 554.5942] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4419 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 461.3088 216.3557 471.8392] +/Subtype /Link +/A << /S /GoTo /D (a00142_gfa82b860a64b67d25ab3abc21811896f) >> +>> endobj +4421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 378.1802 194.2089 389.0841] +/Subtype /Link +/A << /S /GoTo /D (a00142_g155cba6121323726d02c00284428fed6) >> +>> endobj +4422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.5338 378.1802 205.2772 389.0841] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4423 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 339.3259 229.068 350.2298] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge3c821e3a388615528efda9d23c7d115) >> +>> endobj +4424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.393 339.3259 240.1363 350.2298] +/Subtype /Link +/A << /S /GoTo /D (a00084) >> +>> endobj +4426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 257.5471 206.8414 267.4748] +/Subtype /Link +/A << /S /GoTo /D (a00142_g7b5319b5b65761a845fcd1500fde4cdc) >> +>> endobj +4427 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 244.5957 200.296 254.5234] +/Subtype /Link +/A << /S /GoTo /D (a00142_gcfae9053e5c107a1aed6b228c917d2ea) >> +>> endobj +4428 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 231.6442 198.0843 241.5719] +/Subtype /Link +/A << /S /GoTo /D (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) >> +>> endobj +4429 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 218.6928 207.489 228.6205] +/Subtype /Link +/A << /S /GoTo /D (a00142_ge469332907e0617d72d5e2dd4297119d) >> +>> endobj +4407 0 obj << +/D [4405 0 R /XYZ 90 757.9346 null] +>> endobj +4408 0 obj << +/D [4405 0 R /XYZ 90 720.8203 null] +>> endobj +4413 0 obj << +/D [4405 0 R /XYZ 90 599.211 null] +>> endobj +4418 0 obj << +/D [4405 0 R /XYZ 90 477.6017 null] +>> endobj +4420 0 obj << +/D [4405 0 R /XYZ 90 394.8466 null] +>> endobj +4425 0 obj << +/D [4405 0 R /XYZ 90 275.5208 null] +>> endobj +4404 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4433 0 obj << +/Length 1429 +/Filter /FlateDecode +>> +stream +xÚ­X[oÛ6}÷¯º˜Y~¼3†]²Ë0`kóÖ…++‰_2Yîåßï£$ʲ(SZä!’uô}‡‡à·»ÙËfK¬b*¹»¯+( ’KîVoSÐj¾`–qþü%MÐæà¦XçÍÑõ.;lòmµ¬ŠÝvþþîvöÇ]׶e%¹×ô¿ÙÛ÷4Y!»Û%Ü™|ÆJÀZ–lf‚q²ž½™ýÛÕi.Ô7Œ N‚¿0?<†£ÕÍè a|¾Jiz(ž_VÅ&/çxš’l8Â×ù½»fÒ|›ån„Mi Vʺ4Jë*3s,M -~WK¬´jÅÊ÷YY<{©°ïÍ€«ãÛ¦Îݜ˴æUß».>–ËòksRlž×y';ên$¡`t¢¸!ÔR>ªš-ú¨p]K(åXKRB…”5·_çHâP=îÊ«ao ŒhÎ Þ¼CtïkT \«ÕíWËM«èaû„ó–æë}£(@ïnňà×N}×OU­‰±Z ¨6—ŸôW¶¿c„¶êÓ*;K¤ý˾ÈödŸ¹0a‰bFÅeëPaÿ“‡Õ\ÿŸGݤ/ÉЩ¸ò:G)ÛõJmV\ûßý¾؃4„c•D%’ò–½»T>´˜×ýé÷øEÿ†‘éê:v[¥tfÁU­¥Õ"ÃÕçQSíƒj®=ieìOøÂúŠ QN!jäÅ6[V$ +³àE¶ÞeOäñ…»ß¹½ò1h=Ä:’7\´n“7‡mææi?’¾ ”‰³Ï„>`Ì} + dıŽkøŽ1ºÞ% Z-Ú±CMõÅà¶T©Ó¾ŸæŒ¦»bôF5,€ô>¿ø<~ŠEP·[|öy¦ N‘3!GM5ׂÃÍßQI÷UyÈ‚î U0\ŠÐá'x„uRÀçžÚÆèPacýÆL+Œ +@ùHŠáDð9_ýØDUm·Žê‡Ê‡X•—¸Œdº\£”®bM÷ huähN0²˜ð¢®Ç!ibšõDâÞ€jkŽEÇ7yKiÙük7 )9G +÷DX+ã¤ZNÀ0.à¼ï…¶D +¾ï`“¾ïŒø~¢¯÷ýIßIߟö¾À÷,‚ºGß—ù¨ó­ÛÌè >›@!ìB:ü°îyçsÀm»1q:TØøÔùœeìpõEœ/¼óc¦JE\fê>:bêæÚ¿®GãçǼoìúðsQ=®î—›¼MËõyûKTEàà»Ø_P¢,7Sö÷°iû÷ +ÆìïÛÙ¿ßwÚþ'½/±œEP÷ÄþÕ²¬Ævp÷—Á£¦Üôåù# “.¢ÃOðëF@f¤‰ СÂƃÀ¤ÔJ¸àÑ ÜQhaÍ…ÐCÇÀÃÚ¨—ÇÙ¸/çB¦»Í‘ÊrÎuŠ/ôÍÏ»b[¾x¹*s‘ýºG[j¿O@P †7›X@xØt@ô +Æ"Þ· ˆ~_'Õ°-¾ËZÐjÐö|6xü î1êÙùò\”yU³Û¹#*B š¢`ïé§ÚGÒAj¹¸TŠ?Á#¬II€áC2:þ6¤¾6£C¾18êjðû²tè£#éÐÁ\ûßóÌ=ËžZcß¼Ô‡Ë}s;¸[Ru8¬ÎZŸk|WâJ]d}N1'Œ›ŠÊ’ê›>ÖÖùaðà¬ÿIQ«]”ß'œáî»,¾ ƒ@79u^åÛ¼\VþS©ÿîô·?¸uö:´'ÀÚÿôŠñ+Ö~•f”ª6gÝ;Þ®•3ü|ýñ«ÿxýåëC|¶vß“=µžJÿmÛ$endstream +endobj +4432 0 obj << +/Type /Page +/Contents 4433 0 R +/Resources 4431 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4430 0 R +/Annots [ 4436 0 R 4437 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R ] +>> endobj +4436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4437 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 186.7559 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00196) >> +>> endobj +4439 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 515.6229 172.9881 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +4440 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.4309 515.6229 224.4542 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 476.7686 180.7289 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> +>> endobj +4442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.1718 476.7686 232.195 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4443 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 437.9143 186.816 448.4446] +/Subtype /Link +/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> +>> endobj +4444 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.2588 437.9143 238.2821 448.4446] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4445 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 398.6864 184.6543 409.5903] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> +>> endobj +4446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.0971 398.6864 236.1204 409.5903] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4434 0 obj << +/D [4432 0 R /XYZ 90 757.9346 null] +>> endobj +1086 0 obj << +/D [4432 0 R /XYZ 90 739.9346 null] +>> endobj +358 0 obj << +/D [4432 0 R /XYZ 90 739.9346 null] +>> endobj +4435 0 obj << +/D [4432 0 R /XYZ 90 716.7484 null] +>> endobj +4438 0 obj << +/D [4432 0 R /XYZ 90 534.1992 null] +>> endobj +4431 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4450 0 obj << +/Length 1521 +/Filter /FlateDecode +>> +stream +xÚ¥YÙŽÛ6}÷Wé‹ Ô ÷%(Š.ÓMQ Mæ- ÅÖÄÆxì©,gùû^J¢L‰©6˜‡Ñrtïáå=‡¢L2 $38SB!øÌ6 œ}„Ë/¤½½†ûkðËíâésj2ƒŒ¤2»½«#H‚%4»Ý¾YjDùjM^^öO«ýCQ®ÆK´k®>ߊæèUqgïéeqÜØKJk±$J­Þݾ\üvÛ‘h9 +&‰¥ðÏâÍ;œmëËFÌh‘}†Œˆ14{XpÊÜÉañzñw§¹Q?06TAØøX Gp…ºÁR»òÇ +£û¯ƒ…6¡ 2BÔ¡¡Ð62Õ×Ј´ÁoŠ*‡HÛ&ÔMqÞ”ûÇj:¶˜76Ž%lš8·+&–5¯úÙÃþC™—_›“]‘oÝ·ÓC†µ×a¢U&™FØ`6Z9Zû¨°S´A3ˆ%0Â\ˆšßÏ+Û)ÕîT>æ&˜"Å(‰'ïP#Ùýº¬"L\£Õé·ùC[ÕËñænYÎMU ñž–q& ê§~¨*…´Qr@µ¹}Ÿ¹£?<Úî‰ÚÒ§D¶r ýÓy¿9£s1äB¹A’j/[‡ +ó÷F³ùi¼5.$µB?XäMa;븯»µ.ôþèw\PI¡ƒ(™$ ÌZööVù±Å¼ò§ßá×þ#ÓĵìÅ +a;$¢%bľGdØ}•JD³éQ[FÂ×ÆE$ +ÊÉyünÜ.[0 ~ðds8mîÑîÉ„‘0°ÝzÔM^åMÁ_WåeS]:¸,8,ÂTêÉ•ÀŒ)L‚H4¿Æ±ùßR*Be[§9E3v¨T^0hƒ¥ìç=×£ 23 ÓƒÌÓíåð)AÜk{ )HèÉe|ð‚!7 šÀÃŒJ! Ôa„5½r8ÓÀQòš#¬/Xàè`×ÍÑ®]„,Q8[Mx­K(33¹xèn%½v)´WÖZÙøÄóËqc=b¬/9ƒ*¢&ûÒDú²ƒ%û2šñÚ—‰¼®/{y?­(^žöÛ°3MˆäŽtf‹O±âvùþ\„Q0G†èD *•\qÄ5$‹—'…ÅœSp®™Eèð aÜIyR +ÊÊÄ Ð¡ÂÄ„û‰)ô8×rXÌFVP˜(MÜ;Fõ}#ÌÚêß[ªï+·€VE m$–ùJI¦ô +=¼UÏÓ«ŽxG³_-¥|¶‰À,À:¬&Òr"ü‚ˆi݃Â8ôXJ÷–Ö½0¦ûxÞN÷~Þ´î{¹çè>Î"ˆ{Õ}YŒ*ßØi•(‚C¥ÒkŠ@$lPüiåÛåBj2· >Á#Œ;­|F`Û¨u¼*LÜW>cú|Ø}ås§ü˜¨™1ˆ+&æ‰ÚGGDÝÁlúWus4zÞ¾°ëÃÏûj7¸{Î +ßšòäü™ÖHþdžÿ-/B2’KÊß‘"¯“/oRþýÜ3äŸ`ÄíÉ¿ÊËÐ`¯‰Q‰28TŠÌ4#˜ Ê1‰¨dn!:|‚G7b +Q-t¼*L<0pJ%Å°3–þ¨ÀöACg€‡Ž€ƒµP·Ç¤Ü•+.–§‡bs)ËSËâØ>ûxÚ«þ¦ßFY1ý~Àì÷Ùÿh‘0>m°ÃRX›”A8XÚ ¼€1ƒˆçí ÂÏkK5L ïJÆ~ +è§ö‡Oâ^½¡ž/û²­JÊfÕ-B JQЮՠöwàÆç–¢Ã'x„q#î `CËI|ü*L> endobj +4453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 187.3139 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00197) >> +>> endobj +4456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 534.931 161.5608 543.7776] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 450.4922 172.9881 461.0226] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> +>> endobj +4459 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.4309 450.4922 224.4542 461.0226] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4460 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 411.6379 180.7289 422.1683] +/Subtype /Link +/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> +>> endobj +4461 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.1718 411.6379 232.195 422.1683] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4462 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 372.7836 186.816 383.314] +/Subtype /Link +/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> +>> endobj +4463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.2588 372.7836 238.2821 383.314] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.9214 333.5557 184.6543 344.4597] +/Subtype /Link +/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> +>> endobj +4465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.0971 333.5557 236.1204 344.4597] +/Subtype /Link +/A << /S /GoTo /D (a00087) >> +>> endobj +4451 0 obj << +/D [4449 0 R /XYZ 90 757.9346 null] +>> endobj +1087 0 obj << +/D [4449 0 R /XYZ 90 739.9346 null] +>> endobj +362 0 obj << +/D [4449 0 R /XYZ 90 739.9346 null] +>> endobj +4452 0 obj << +/D [4449 0 R /XYZ 90 716.7484 null] +>> endobj +4455 0 obj << +/D [4449 0 R /XYZ 90 551.8236 null] +>> endobj +4457 0 obj << +/D [4449 0 R /XYZ 90 469.0686 null] +>> endobj +4448 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4469 0 obj << +/Length 1547 +/Filter /FlateDecode +>> +stream +xÚ¥Y[oÛ6}÷¯Ú˜YÞ/ÁP¬CÒ":t©´EàØJ"ı2Ûj׿–¨P¢D‚À²uôÃïFR$†?’œ)¡a\f«§ ÎîáçÒÜžÃý¹ø}1yóžšÌ #©ÌwG ’ A Íë/S¢ôlN ejZ]~‚K§áúâ}±Éë«órU=åÛÃòP”ÛÙ·ÅÕäbÑÒ6ª“Ä’þ3ùò gkPw5Áˆ-²ð#b Íž&œ2÷e3ù<ù«µSß8>048AØðèGð uã0ZUN#*fs‚1žVÅóøŸoóâþá¶ÜÍà×)ZõzßåpOOóí*·­2BÀÖ€êDŽóü°KëÆgù~µ+žÇÀóaíXݦ¶s¾<,o—ûFEyWnŠíã|S®–›ú»¿ÿ¥þ^íÙíÏúóòÓwY_­Êucm¹m@‡²çc/ë»êPíлëO}ƒp‹Šé]qÈQ?´@˜h•I¦6˜ †Òæ>*LVmÆ l Œ0âè©w3«üðPîÎúÜS¤%qò5ÀîGˆ`…aâÅÚ‘~½|jâ[m!‹¦ùf_Ç—ïiIgúøÔ¯T¥6Jö¤Ö·3wõ‡'Û=1 [ú²ËVÀdÿ¶/V{´ÏûZ(7HR-ãnkQ!gà¡5Ëÿv æD8“Úäñò¯Ómq¬›££‹æÓþ¾ Ô¡+™$ ÌõöÖî¾Á\ûáwø¹ÿÀ@ø»V]§…a;Hß›DBs²§§ïM‡J¨­Y¨ñ¦ìx“:“D[9?B_ÛÕ¦²•+¡C½òõ£‡WÖŽmEõ¬ûD˜Ô‚!et'©{* d8²ì»b{,qHRŠðíP§…B5m‚qí‚úù‘ï¦!A4â˜òÑÉÑ U¼„¢ÕüÅŽ%üJa : ¼£Œ-*Å 3˜ÁRvy_¯›‘ä\"Eé‘g¼Ã§dv­Œïþ¾Y\~¼Tƒ¨12á‡JpSL µ0ërª‡¢Œâ‚Œùå~,Æ *âá(i`ô„øú̧„7ª¡oÕj¸øsq}yñ9P ¡h–»%x ,ö3^=Rð ´Sðï«íÊNCϹFÂh=š > ’ -,™ QÆ—tHðº|èð~ŸQXú뀼a=îñ„pø”ŠÀn3Ãݸ⦀y8˜àÀiŒ0wE‹Jˆ X#™î… ìÜ×d(ôL ÉÕx¯÷±Ð;X:ô1F/ôqÞ6ô>o:ôîSBWØ BÿœïŠr]„ëØðH…EÜ-*!„Rˆ„Íh7 '„ŸR$0ãá÷±ð;X:ü1F/üqÞ6ü>o:üîSÂWØ Â¿\¯ÃÂW05›„'ZTBµë¹Â.§¢Dì‚Ÿ¢ì:Ï0öÝMØ÷$LJöG|ø•â—–ÜRwùkîÇÓf‡KèjHÝ+¬ªl՜攟ÚÊ‹] Ç(%âžiQ¡Â}°dö N/70ØCBkâ6$VÛX»€lSœ‹ñvábíÂÁÒí"Æ赋8oÛ.|Þt»èpŸÒ.â*»AZTÏëå!|³@ ”š‰¸3ZTB…|ÀŠ“^†šÌ>Ìuª#Z|RAßn²i(» ‰thQ)~eKØtùkî‘Äg–ý†ï–|@$ñ[X2ñcŒm¹&Ó¥}JÃuÔ%û•Ý’(Ⱥ¸sZT(¢Ó¯ˆ±3 í‰pýª;bØ1qÙãOK‡O¸!´¸aS–Õs HCtåqG´¨” ­áš‘¾#êÓPD5>ÝŸRØMÕ'ã¬>Šˆz E%ø‡E¬6¦Ë­OEájð8ƒe"…ü_‡*Ç×ØîŨÿ–]"£`×uœôáA{~â¤XÍòm¾ƒŽÞœ¸W±ÝÅÕŒˆiÕ|!´ùÄg”Ñæô²²9Š¸³Çå®9tŽ™ÜáÃyùïÏû<8^²ç>^ú‡Þendstream +endobj +4468 0 obj << +/Type /Page +/Contents 4469 0 R +/Resources 4467 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4430 0 R +/Annots [ 4472 0 R 4473 0 R 4476 0 R 4478 0 R 4481 0 R 4483 0 R 4485 0 R 4486 0 R 4487 0 R 4489 0 R 4490 0 R 4492 0 R 4493 0 R 4494 0 R ] +>> endobj +4472 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 217.1919 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00198) >> +>> endobj +4476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 516.2256 200.2959 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00131_5320d4457a472d8888ec1905bc0e0a1c) >> +>> endobj +4478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 504.3552 188.6795 513.2018] +/Subtype /Link +/A << /S /GoTo /D (a00131_5f2e1fcf0055d20ce17664b1027bb9eb) >> +>> endobj +4481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 445.4457 207.3094 456.3496] +/Subtype /Link +/A << /S /GoTo /D (a00131_1273664aba3e6a2a46e87dcb1a5f19ad) >> +>> endobj +4483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 432.4943 226.6668 443.3982] +/Subtype /Link +/A << /S /GoTo /D (a00131_890e822616a6839dfbf51dcb591b8e99) >> +>> endobj +4485 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 419.5428 208.4056 430.4468] +/Subtype /Link +/A << /S /GoTo /D (a00131_88460bea09a462d0e22511cb567eee14) >> +>> endobj +4486 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.2212 419.5428 265.1324 430.4468] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4487 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.295 419.5428 398.1028 430.4468] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +4489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 406.5914 220.5797 417.4953] +/Subtype /Link +/A << /S /GoTo /D (a00131_1d5ce7047650f3ecee0814dbc8714099) >> +>> endobj +4490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.3954 406.5914 277.3066 417.4953] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4492 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 393.64 191.7182 404.5439] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +4493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.6883 393.64 287.4687 404.5439] +/Subtype /Link +/A << /S /GoTo /D (a00131_692d80636342d564422ccd9296ad568d) >> +>> endobj +4494 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.2843 393.64 344.1955 404.5439] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4470 0 obj << +/D [4468 0 R /XYZ 90 757.9346 null] +>> endobj +1088 0 obj << +/D [4468 0 R /XYZ 90 739.9346 null] +>> endobj +366 0 obj << +/D [4468 0 R /XYZ 90 739.9346 null] +>> endobj +4471 0 obj << +/D [4468 0 R /XYZ 90 716.7484 null] +>> endobj +4474 0 obj << +/D [4468 0 R /XYZ 90 534.1992 null] +>> endobj +4475 0 obj << +/D [4468 0 R /XYZ 90 534.1992 null] +>> endobj +4477 0 obj << +/D [4468 0 R /XYZ 90 520.2106 null] +>> endobj +4479 0 obj << +/D [4468 0 R /XYZ 90 464.3956 null] +>> endobj +4480 0 obj << +/D [4468 0 R /XYZ 90 464.3956 null] +>> endobj +4482 0 obj << +/D [4468 0 R /XYZ 90 449.4308 null] +>> endobj +4484 0 obj << +/D [4468 0 R /XYZ 90 436.4793 null] +>> endobj +4488 0 obj << +/D [4468 0 R /XYZ 90 423.5279 null] +>> endobj +4491 0 obj << +/D [4468 0 R /XYZ 90 410.5765 null] +>> endobj +4467 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4498 0 obj << +/Length 1405 +/Filter /FlateDecode +>> +stream +xÚ¥X[oÛ6}÷¯º˜Y^Ä[0 ëµk†]š·¶[N„8ræK»þû}”H†eÒØÖåè;‡ßR`ø#…Æ…äiVŠbù4ÁÅ=<~7!öõÞÏCÀ¯7“×o©.4Ò‚ŠâfÝZqJhq³ú4UˆŠÙœr<=ÖϯáÞTõýÃÝv7#OÑC÷òm½©º«ëj]Á;5­š¥yT +§DêÙ—›«Éo7^‹•Ê™ FÉß“O_p±ÉWŒ˜V¼ø7­iñ4))s7›ÉÇÉ_ÞN÷¢ý`lÄœ°ñ!“ÁêÆLÁ22Œî?ŽÚ1¤9oÀ톀ªD,ÇeuX€¥Ugê²Ú/wõó¡Þ6Ö ¢cìݺ³ó{µXqûágŒ©Ó³ÞÚ‡«Åaq·ØÛÇÛu÷»©›Çùf»\lº{7ºý6Ò{§æî{÷ûþÃW›ËíÊZ[4tØZpuêóõñpÜÙ·o®?¼XBìPa¢d!˜BXc6Sš‡¨8••F3°Å1Â%ç­ËÞÌŒÂÃÃvw1ä&˜"É(I“{Ô{*‚%’„ñk-ýjñd}l!¦ÕfßšàkAQÉ8dvûÕO‘T)‘ÒR ¤v¯ wõG Û}1"[„²#ËFÀdÿ²¯—{´¯†Zh©‘ J¤ÝæQ1oà±5ÃÿóH-Ì w&)ôȃ¼¬L!4u[@­£ë¦W COr…X)ÁˆcfÕ›W»{‹¹Ãïðóðƒ‘ðGvº^/áÜ´’¡7‰@šâ@ÏЛ•Q[3*õ¦èy“:“D‚[˲…þP7ËÍÑ”¼€Võ +ô£‡W':+Te×™.¡ñtnÿxØ—Pþm{ÜÌÀ‰0êä„ÆêL@©¨òÅŽáÿL)ëÛ´`(ª$£GåxaÑXˆ>ï¾mÄÌ4LtL ˜O'™Ãç4Dvm’ݺ$»]¬V»8Ǹ™CHÚ5"¢zCLbZ´üoÍÒ”ßX°K©‘‰ÕIHÛòÁN2¾;Ãë‚Ýãý:£0©Ö«8Ü€&„¸á¶øœŠÈnî:_np#Œ¤]áQ+¤0ä\?˜cç¸&c¡QÊèéЀTè,úcú4¯}È›}ûœÐ§UDvÇ*=Ž¼D%ÖOxTF5¸Âw†(‘g»Àãsô‘]ç‚úÙt¹Û8ñÌHf‘¾Cåøá­0]°ÇßqÏJ<µ‹çñŒˆjØSéψŠíž50-O{Æ£b¤ Eh˜†Ìîi˜,Û q [£íT»ànIäévRíÂÁòí"Å´‹4¯o!o¾]ô¸Ïii‘Ý(-ŽÏ°9ŒóB©O;ã22(¥Ë’ ‚0Ö4(,64Ît„Çg íf›†4ó ΤƒGåø¥™-±îówܧ¿ÄˆÑÛ¨6ñ@*ñ,Ÿø F_®™ÄtiŸSçË#T—íWDc$!ëÒÎñ¨XD¯_mf:áúUÅH¨R xO§¥ÃgÜÛÜ°ÙnÏ‘ Ñ•´L;£r2”‚k³2ì;b¤>5ETáóáð9‘Ý\}²’uÇ€IxT†Ÿ•¡uŸ?]ŸTÂÎ^éÓõRõé`ùúL1Sš×W^È›Ÿ˜zÜçLLi‘Ý(ñŸ«]½]Õ˱)BHÌÓîð¨ŒJ"Â,œzaÈoc$A¤”£{( ö‰àâg·)¤°Ù‹ÑpÃ-–°ë²ÇÕV„Ñü®jªLåöÌÕ{ýé.®f„Oö†Pû‹/(» ¸»ƒvdw×3ʧîôøøÞÕ„ûº—Û¾ßWÍÐ=æ°}Ä?ÿF$YÍendstream +endobj +4497 0 obj << +/Type /Page +/Contents 4498 0 R +/Resources 4496 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4430 0 R +/Annots [ 4501 0 R 4502 0 R 4504 0 R 4507 0 R 4509 0 R 4510 0 R 4511 0 R 4513 0 R 4514 0 R 4516 0 R 4517 0 R 4518 0 R 4520 0 R ] +>> endobj +4501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 217.7498 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00199) >> +>> endobj +4504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 532.8737 216.3454 543.7776] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +4507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 476.0215 207.3094 486.9254] +/Subtype /Link +/A << /S /GoTo /D (a00132_1273664aba3e6a2a46e87dcb1a5f19ad) >> +>> endobj +4509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 463.0701 208.4056 473.974] +/Subtype /Link +/A << /S /GoTo /D (a00132_88460bea09a462d0e22511cb567eee14) >> +>> endobj +4510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.2212 463.0701 265.1324 473.974] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.295 463.0701 398.1028 473.974] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +4513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 450.1186 220.5797 461.0226] +/Subtype /Link +/A << /S /GoTo /D (a00132_1d5ce7047650f3ecee0814dbc8714099) >> +>> endobj +4514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.3954 450.1186 277.3066 461.0226] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 437.1672 191.7182 448.0711] +/Subtype /Link +/A << /S /GoTo /D (a00092) >> +>> endobj +4517 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.6883 437.1672 287.4687 448.0711] +/Subtype /Link +/A << /S /GoTo /D (a00132_692d80636342d564422ccd9296ad568d) >> +>> endobj +4518 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.2843 437.1672 344.1955 448.0711] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 424.2158 226.6668 435.1197] +/Subtype /Link +/A << /S /GoTo /D (a00132_890e822616a6839dfbf51dcb591b8e99) >> +>> endobj +4499 0 obj << +/D [4497 0 R /XYZ 90 757.9346 null] +>> endobj +1111 0 obj << +/D [4497 0 R /XYZ 90 739.9346 null] +>> endobj +370 0 obj << +/D [4497 0 R /XYZ 90 739.9346 null] +>> endobj +4500 0 obj << +/D [4497 0 R /XYZ 90 716.7484 null] +>> endobj +4503 0 obj << +/D [4497 0 R /XYZ 90 551.8236 null] +>> endobj +4505 0 obj << +/D [4497 0 R /XYZ 90 494.9714 null] +>> endobj +4506 0 obj << +/D [4497 0 R /XYZ 90 494.9714 null] +>> endobj +4508 0 obj << +/D [4497 0 R /XYZ 90 480.0066 null] +>> endobj +4512 0 obj << +/D [4497 0 R /XYZ 90 467.0551 null] +>> endobj +4515 0 obj << +/D [4497 0 R /XYZ 90 454.1037 null] +>> endobj +4519 0 obj << +/D [4497 0 R /XYZ 90 441.1523 null] +>> endobj +4496 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4524 0 obj << +/Length 902 +/Filter /FlateDecode +>> +stream +xÚ¥VKoÛ8¾ëWè(ÄÎ"E‹Å¶MÓÝúð­) +ÕV¡¶äµ¤móï;”HG‘ç°’âð›óâ`ô‡¡0“3"Uáz@¸¥ÏotÛ í'cW«àÅ7¡aFq®n{…Lräájó%B q YÔýó¦"d0L®Ê]1Ì.ëu·/ª6o˺Š¿®®ƒ7«“ZÇJ +…Vé¿Á—¯nˆÝuL-ß´†Æðp¤\øÅ.ø|<á ý¥ËI˷ÔÑî¯Çé¶Ùp;Íx'QW^Ð/i»²ewÓ ~*n‹cŒ:*ªua/8 #3RöÈdY Ìõ2C‡}Y´9!mœ­Šf},ÞR$F°8–¯pÞ×›Îs¸­Ã¤çØ–ÕvXÖ]û½î*¿zíÜÔ1ÊhkÝÒ _ÊjÛŸ1Ò1·pcsˆþ³ÿêÒAµwNó¦Øå÷žÿË8…èõ;/r¬»íÝ¡k½d¯ô˜oúP`ÓXÐ’ê,TB30 =é…’±Ô õê7ùÞ¹¹«~X3»fp3âè´â,’â¹?õÇŒj–1m25¡:lÿýì݈¶?±@[iÏ-r×þ¯¦\7¬)¦\xj˜âZ7ÛIj®ÿÑÅçhVÿŸ ™ ô”K’âÁJ^7¼*ûôyÕöûnÆ¥f‚PB…À$ÇÞn·NæÓØý^>Xpÿ ײW)CáššlBd}^ê9õ34«ž-U&Šh)RFy5T–«®Z[#6 åZJÁ”D|ò ,¥†¢èÖéŽUxùœ§¤­™”g5ž¤žÓK•Þ€RõžjÚT7Yà ʉî§#ÃË?Çb†ë"ã[ߨ\Ûr9Í2Æ…Ôç-q’z†·EŒ« ‡à­Asœ{ƒÞ,z(%¥f'# + N„“±tÏDB¨‰‰J{kЫ™Ñ –ÉßyµñÏÙc[Ÿ³C¾¶ ‡ÒÙ6ìIŽT²T‹óÅT*¦²%›™ •Tÿ«5é“BÓ|üX)j5„¶vœÚ.$C©þZ3¼-ªâ˜·þeõí½Ÿ\ÛÇ´s än„ ..¸ëÁ("”kb.#ß"Ì›µï÷¾Uûu¿-fMšíž<µ‘•~`¾Jendstream +endobj +4523 0 obj << +/Type /Page +/Contents 4524 0 R +/Resources 4522 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4430 0 R +/Annots [ 4527 0 R 4528 0 R 4530 0 R ] +>> endobj +4527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 250.6249 657.906] +/Subtype/Link/A<> +>> endobj +4528 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 200.0459 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00201) >> +>> endobj +4530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 550.498 201.2321 561.402] +/Subtype /Link +/A << /S /GoTo /D (a00154_gb4b17aaf20d630f30919b19937b966a3) >> +>> endobj +4525 0 obj << +/D [4523 0 R /XYZ 90 757.9346 null] +>> endobj +1112 0 obj << +/D [4523 0 R /XYZ 90 739.9346 null] +>> endobj +374 0 obj << +/D [4523 0 R /XYZ 90 739.9346 null] +>> endobj +4526 0 obj << +/D [4523 0 R /XYZ 90 716.7484 null] +>> endobj +4529 0 obj << +/D [4523 0 R /XYZ 90 569.448 null] +>> endobj +4522 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4534 0 obj << +/Length 2879 +/Filter /FlateDecode +>> +stream +xÚ¥œmo7ÇßûS-p^˜áÃò)(ŠKlÙqâØ>[9 HÁ••Øhb§~À¥ßþf¥%=\î‰;idï_óŸ9K®6ÿ‰‰ç«-óª1“Õ·>ù¿>ÜÝá]8¾‹¯;/¤Ÿxæ4“ÅçM#˜–BNW§ŽI7Û•šOŸn¾¿€?lµýñàæëzûê|ýy}?nº¾]µ¿rNù©pböiñvg¾ˆî]rZÑzÿµóñŸ\A’ow8SÞéÉà΄÷ròm§‘*üðuçbç_1ÎöÀæ C稅>IÑ0ø g)á¤->IÁyõY©mc +æµÞÄ„Ò*Î —MŒÉDuýx ‘®¶¡ö׫û›ï7w·] …@©—jgqÝ%ðtt¶}±Ø;{^?<^®þܾ\Ý]­Y¿æ" g'F¦µ°ƒ ¢]¬Ê‡†óŒs±Ç47~“Þ«Y›ÚãõÝý˾·à’Y%mUî¸,‚[f…ÒÏÑ6öW—ߺ¢>Ýþ9|ºþú°-ªèÝF²Fi7›wý’¥j-sÞš^ªÛÃN«w(íðŽ´ N;‹Ü&p iÿó +2†lÙêî[?iÌçéÒEUžCròy´6‡_ÆÞ®p!$L§šíÜ_ÿι¼½ÙŒØMµoº¿Ûß]gåÔŽ)#ÝÄpЬڦߺÿÒiÎñú]ü†1Åm³ÛN׌¨ƒÑê{ôÇ^'*Ùöcµ®¬+†½ëºxÂ2#»âý|s»úút³Ø@'ø©Íöú§öÍíLß +Õˆðîûc¦ º¼¼_]—ÔùÄЊYï’‰Ñ;)˜v 4‡­àáñþæö »ˆÔÀ@—<j‘0Ù=´Ðj\´Sxx­® Œ]-uìj†Žõ ÓÞ51Jëö»”:oUð& ý²‹¢‚)\g<7&1ýùª;Ç̹1%­HÇgJrèGÝ”yþºm—gçG'‹ƒ¬éHÎd#È mß´);×þ ­ + £Â6j2P”ƒ¬Œ™rDœißûVNÌkPÓidq7ˆ½³åÁÑI–„3°´ðM¡AU²†~§%ïYó|rå’Ä (ÊAV¦L9"Ê´o¤Œ}+('æ5”é4²¸òÅo”á¼ñ… +UÉÚKXmë^€²¢ kà.㔑€¢deÊ”#¢LûFÊØ·‚rb^C™N#‹(Ÿ_,rÊ°ÇÐB*T%kÏáBkÃÄ(7C”EÛ ´§Œå +S¦eÚ7Rƾ”óÊtYÜ@ùìâÍ8e²Ï”iëH[e7D™ ¦­&_H@Q²2eÊQ¦}#eì[A91¯¡L§‘Å ”_Í>Ý{—%lŒ¥*UÉÞ+&¸JÝùÁ@+g™ÚŽ‚Æt”A“ŽÏ  ¾tâ[šW€.¤‘Å  ?œæã‚»B‚ªd 5½Êór²•ÌØñõ:N1îTeÄ„"LšFÀÈ´‚/v®ÁKæÐàî-Ž‡zµõ^ÐçD_Òy›øòêóY Ý_9Ž (¶AV†K9"º´oÄ‹}+ø&æ5€é4²¸ñéÙb9?ÙÏ6Ê7œž¡«U{ WbÛ42µœÀbÖ=Ž (ÌAVÆL9"Ì´oÄŒ}+0'æ5˜é4²¸óÉééÙÐ ç¡ËU)SÎËÔh§¬$즥ßCaÅ9ÈÊœ)GÄ™öœ±oçļ†3Fs~q‘Ogà!tCW!ª +öít–Üôì‡¶Ê +êå¬ßDa…9Èʘ)G„™ö˜±oæļ3F·‡yy<ÏnŒHå7 ]ˆ *$ δnlšÀÐnYqØQK;¾Â +t•ASŽ4íAcß +Љy h:,n›ÆÑÞû³å|ïÍéò|~v<œO¢m¥Ðt9¢ª‡l`A&d/¡ë´tšyK¬´±€àeEÞ¤ã3ï‚oàø–y§æ¼ idqÞdû\§éQÁZr KmÝ«ÀЭÈiiý8b$ Y1åˆÓ¾1ö­@œ˜× ¦ÓÈâĦ8§ÛÅ—Ž®GT‘ì¡ušˆ~¹¶Œ[7¾É +y•‘SŽ9í‘cß +ä‰y r:,nŠ<ŸÖŽ c +Eˆª‚»œm|ê.äàÔn`¿-Ýø. (ÎAVæL9"δoäŒ}+8'æ5œé4²¸ÏœOæG‡o^Ÿž//NöŽ3¯¦¯fBˆéâè4[«)Þ0£º:ATÈJñööXÓ+ŽPzˆûÜ–uã»/, øY™?åˆøÓ¾‘?ö­àŸ˜×ð§ÓÈâðµßÞÿ÷ü|f8°¿˜¿ŸŸdo)ØWÃùºØÇÃe.Î÷æË㣓wÐ8öÏçù[qïmC—&ª +9µ÷çhIJƒèlü¥ßça…>ÈÊè)G„žöè±oúļ=F7C¿]!œÎEüÜA—'ª +y©Fn’Mòº',gÊúñ Püƒ¬ÌŸrDüißÈûVðOÌkøÓidqÛ4¶(fÏ&Â"ŸqÞØB‚ªdmk<®'zB‘?<Þ?­ón=³Úšê2})—,n÷Lóòqõþ}uŸ]4µ†ÝŒÕt1¢*O@4ø²©aAÔÀ–¨W ®®‰0rœO ·WÄä®7°¥†te¢¾P§‹V}a•Ú3j ¨FdåFA9¢FAûÆF}+Eb^Ó(è4²¸möGûDû‘˜ô®P„ *¹;XÃ5­W|ºS´÷wœ´µ•ˆúB.yÜ0ž®Æ…uLi©ébDUž@Ú(g®Q¢_ŒñFÑ+po˜óÒU×)èKuÊâ–è`É é*EUÁ>VÝ(ìèÝøs6è8Õ&:U¹Kv¨I¦±G ÓŠk:™C?ê¦?@µ/ð7ƒ±+Y¨B2èÇ +=âa´‡¬ã·bÑqtPASvÏ iÓ›–A'ΠéúQèãÓÃÁÒjÈs¢‚o?VÀûm/lÛD3ü„°gÂhó}±ÄfŒ@/†\$þ +ü…Ýb÷½]m²‡ëÛõýåcø^‡ðã߇ogBOŸº„ìþæ/¥z)ùö'ɹپú<“zzwßû²Á:áwßsp÷ãï/ëÛ~yÚo½¨Ïé@endstream +endobj +4533 0 obj << +/Type /Page +/Contents 4534 0 R +/Resources 4532 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4537 0 R 4538 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R ] +>> endobj +4537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 635.166 274.5352 656.3674] +/Subtype/Link/A<> +>> endobj +4538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 603.5642 179.0052 614.4681] +/Subtype /Link +/A << /S /GoTo /D (a00202) >> +>> endobj +4541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 471.0445 221.2372 481.5748] +/Subtype /Link +/A << /S /GoTo /D (a00135_534d9e416324fb8ecca6b9cb4b1f6a6a) >> +>> endobj +4542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 457.1975 187.0257 467.1251] +/Subtype /Link +/A << /S /GoTo /D (a00150_g88e60aa2cf23e1c65d630701db08c743) >> +>> endobj +4543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 442.7477 190.9012 452.6754] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6020613f5062417d9811cfa837215c83) >> +>> endobj +4544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 428.298 189.2474 438.2257] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5ca559def464ef20d8b1f7d32f2f160d) >> +>> endobj +4545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 413.8483 189.2474 423.776] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1320fd0006a2f70138bc2d0018dda829) >> +>> endobj +4546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 399.3986 191.6086 409.3262] +/Subtype /Link +/A << /S /GoTo /D (a00150_g44b3b1ab31a403ba28ec135adfcbefef) >> +>> endobj +4547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 384.9489 192.007 394.8765] +/Subtype /Link +/A << /S /GoTo /D (a00150_gc84f499cba8a02fc0e306c10b2acabf0) >> +>> endobj +4548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 370.4991 189.7953 380.4268] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1425d4a0c2760adb653a04c0fb137a8d) >> +>> endobj +4549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 356.0494 215.2498 365.9771] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1215163245304bad20d6c5608ad75ab7) >> +>> endobj +4550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 341.5997 221.8948 351.5274] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9f1822e1d231235edacad691f3cb7bbb) >> +>> endobj +4551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 327.15 214.7117 337.0776] +/Subtype /Link +/A << /S /GoTo /D (a00150_g691688604655ea8943d15f14c60027d8) >> +>> endobj +4552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 312.7003 239.0603 322.6279] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) >> +>> endobj +4553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 298.2505 239.7177 308.1782] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) >> +>> endobj +4554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 283.8008 204.1812 293.7285] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd58231410d58e34b455328b888a9e73c) >> +>> endobj +4555 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 269.3511 244.6991 279.2788] +/Subtype /Link +/A << /S /GoTo /D (a00150_g207d17b633cd095120a74bc1f2257b17) >> +>> endobj +4556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 254.9014 209.1625 264.829] +/Subtype /Link +/A << /S /GoTo /D (a00150_g4cc3e223b63f27b546d62e9a258dba5a) >> +>> endobj +4557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 240.4517 305.6302 250.3793] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) >> +>> endobj +4558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 226.0019 321.0623 235.9296] +/Subtype /Link +/A << /S /GoTo /D (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) >> +>> endobj +4559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.9495 218.1788 221.4799] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) >> +>> endobj +4560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 197.1025 341.9936 207.0302] +/Subtype /Link +/A << /S /GoTo /D (a00150_g42288d5c3cf4b10becefec657f441e54) >> +>> endobj +4561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 182.6528 341.0573 192.5804] +/Subtype /Link +/A << /S /GoTo /D (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) >> +>> endobj +4562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 167.2268 167.0009 178.1307] +/Subtype /Link +/A << /S /GoTo /D (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) >> +>> endobj +4563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.7613 167.2268 256.6538 178.1307] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +4564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.2016 167.2268 305.9885 178.1307] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4565 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 152.7771 172.5401 163.681] +/Subtype /Link +/A << /S /GoTo /D (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) >> +>> endobj +4566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.3005 152.7771 262.193 163.681] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +4567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 138.3273 191.3593 149.2313] +/Subtype /Link +/A << /S /GoTo /D (a00150_g4309376690872fa4beb4f025f5cc199b) >> +>> endobj +4568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.1197 138.3273 288.763 149.2313] +/Subtype /Link +/A << /S /GoTo /D (a00091) >> +>> endobj +4569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.3108 138.3273 338.0977 149.2313] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 123.8776 186.9261 134.7816] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb9435261753469accec0c9bf8a5a2686) >> +>> endobj +4571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.6865 123.8776 279.3487 134.7816] +/Subtype /Link +/A << /S /GoTo /D (a00096) >> +>> endobj +4572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.8965 123.8776 328.6835 134.7816] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 109.8015 191.6285 120.3318] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9c0814ed491fa452ec97910c0728d410) >> +>> endobj +4574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 95.3518 189.2275 105.8821] +/Subtype /Link +/A << /S /GoTo /D (a00150_g013c3a06a8b58589a77f4a3442f89c2a) >> +>> endobj +4535 0 obj << +/D [4533 0 R /XYZ 90 757.9346 null] +>> endobj +1113 0 obj << +/D [4533 0 R /XYZ 90 739.9346 null] +>> endobj +378 0 obj << +/D [4533 0 R /XYZ 90 739.9346 null] +>> endobj +4536 0 obj << +/D [4533 0 R /XYZ 90 716.0742 null] +>> endobj +4539 0 obj << +/D [4533 0 R /XYZ 90 491.1191 null] +>> endobj +4540 0 obj << +/D [4533 0 R /XYZ 90 491.1191 null] +>> endobj +4532 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4579 0 obj << +/Length 2957 +/Filter /FlateDecode +>> +stream +xÚµ\[o[¹~÷¯Ð£ŒF,ï—ú²—, @Ú8}h6IŽ…Ø’V–’¦‹ýïžsHóÜfŽay°}šù8ä7äÌ¡,fþ‰Yà3g JÛÙêî‚Ï>Ãÿz!š·ðþ¢üxuñ×—2Ì VÚÙÕueÁ +f¤³«õû¹ðòr!ƒTn~~õ^>Œ×/^no7õ«Ÿ÷«óÝfwZž¶ûÝ凫׿\e· +£¬ˆN¿xÿÏÖÀîõg*x3û¿p&B³» -UúåöâíÅ?²úêCƒ3B NŒ‘ixFëêѽ<ïV‘ñýeîÀ—”ã,µ+URpË´òúÁNtø›”¦ëKpø”4 +÷˜Q”_¡YàÖ¶ý~½”|¾ß®{¾ …0ßñ­ãçóÏ’EÂS,zv#‹óöðñ~sÚˆ¸S®„„¢Ü{Á¬7÷¿qÃ{~½aœ+19 O2èÚ­ ìÇS—‚„ ÎãCÏ(± ï;Cß®að¢¿òVÎl NÕ’ÕÀ¬Á‹]ù7|æÁ¿ÕÕÀA^Üÿ`´xÊÛÝö´]Þnÿ[gŠêÿ®²Q~0ƵsÚÀÚ¨é ɼµã²µÖ3ÇA˜¸l3Œ”mi‘-á7ɶ嗔mÛ÷Ù,zv“l—ëµ’}ÑZH¥Ê!H(Ê9ˆ[[­:¡­dÎ ?yø O1èÙ­†ï‡4Ë™ÔägT߯Хf¹d°«…îȹŠ~;$a†<|šW˜ýAÉ=r +$àT˜žŒ'ÂÓ·;žÓŒaÆzGÄ'¡(ÇÆ3nBgeì¢YÍ(æup³ZƲZ‚E?-ÇïuÛŸOõ‹eýCÉŧmú¯õz‹ç7 Ü?O~SœqYž€†ó[‚Ñù­0ØõX-F8•QLÙb—³`Énp… û!¥'A~ÜÑô4˜Rô®MÒãêæËýù®Ÿ§`¹†€R\$å;&=,¼öÄ eÇ !2pÂm»}“ ºvÇå‹Uq‰<únÛÉQˆì |<9ª&9~Š»çùºŸ£Ü”US”ñD€úvÇd!ó)!ˆ%åÒ"‡p¶ßnvhz~Ú‰ÙñŒ%ÇUçÆÛÕùvyj +ÄÓMóâÕî´9î6Mj\] +3¿Ù¬âLU +ª“é¥àó¯›c+£6³y)üüÞBÌÇ*× Ìȧb4ŸžÒ<ù4ÃÈ|Z|r>%Ø%\‹žO1zΧ½„kÓƒ|º=ŒdÔ`™Ñ-1–‹Œ¢üX¸š›ÎäANMoL@εڷ˵q•hDB†j¨)¦n6ËuRɈ’®;=,kDTXaifÛÔdq²â̸ÒLLQR©g9º#™5NPRK0Zj…Á§K g—¥V²#¤†Ð{¼ÔpzYj-z0˧ՈÖbõu›Di.2Š ¹‚ꊇöìMÕ„ ä¡'j­@cZK0LkW?½y²À†DUom»õÃ;ËÃa½<-Ç¥&-/‚y© §MQRK0Zj…A¤ BøÍ"*ý’]¶ï ]‚EÏnÞ–vÛ¾š!¡„¢|ÃQv¤Žï©2=A 'êJ4"“ {z#OC­#Œqϲ„µ3±"2ÄÎ0r —Ÿ¼[ì®Å®ª$÷»Þa¸we¸È¨¾ïVA%ŒfÚyщLSPµ—v|rÂEÇïøèž}Ïn9úÍj žäÌj'ðdá^‚´`vÝôKi)`ÅGGñ$ƒ®Ý‡ƒïr½>ŒP,ÇÞ„"–€´´¥ÍðÀŽÇšà¥æó^]­¸‡ª‹Û©ÑÊx"Z}»£G+0¥dåX)¦|Çïñ°?žÐ$l9dª›—“pÆ’p‚Ug•F%õÉcß*“—ÊÍ7wût¹Ùß7Àóýv÷ùáP#r¬×:@Žáyµ²pÞ5ŽJÔ F'êÂàÓ5Î.'ê’]Têy=’¬$7!Êr‘Q}ÿídí Ys¥:ÑJÖ^0ïzÑAŠ4x*=»ev›Kiæßú ¬ *EPÊ3eTw‰ %l-˜uPÈO BÆS zvÉ„ÆœG ¡ˆe ƒaÜs9¼ °&(š°!¿éJîÓ¢•ñD´úvǶ±p¸x”ˆrk|¬«]Û-¯¥`NO|LT€±lÝ ¢ÿ·© +<Z‰”#¢rª_ÞýœªÌ:µ£‡h8æ8ïųäfäTAu73ŒÌÍ¥A¤$ü¦¬ÛòKÖmßê@‚EÏnÎ|»ÛíýiÓÏý^3á ÜxŠòïa[:Ñ| ŸòZOŽ@“ ºv‘G>2d †žQ„cY=I%µSJV^1nÕÄŽl‰F´œa•˜OûFÅõÈ'ªt +Ë} ûÃfµ…-7M‹'’Õ´r’ ®Ÿ§ªL`°eRmÔ £5]Ä4ûÍš.ýÒšnùž¢iœEÏnÒôˆ¢áüõ¢%bP”wg™ãZvb?¨h^?Ò›:þ„§ôì"÷Ò$sÂ|èE8–ÜÄGr¡“ŠÖ +Ú0±ï[¢1E'X­èåñô‘t<Á¨ŸGÒ’3c4Õ®Í0ZÒ…ALÒ¸ß,éÒ/-é–ï)’ÆYôì&IŽûÕæþ~èú˜áÒAH(Ê=ìæ!(Õ þ ¦¡ŒPÃO @“ ºvǯ­Ùx?@â#Ï(¯䞙ØÓ«åç!QÃBVñ«÷ãOÛK¶ÐŒ^èˆÇG÷ +vY%;ü FïÑ z ×¢ws¸þ´ÖC¹‹ÎWFQŽm<ïŠN\bÓ>ˆŽ_¤áÜàI]»ã3âýiE =¡(Ç!žwµi;þ{&Ë[lã‹/§n|%Ùø2¬i"ƦÀ×MÚþ„}¸²øûy¹;mOÍåÆëã¥6óý]·£øé{ê2c¾E¶ÎÝæômü2ŽFoñȪóôL;hlysNî  lµïŒÄwІ¤Œ–_rmûž°ƒ,zv¾­±øªgÞ[MD ¡(ßN±ø,¦xÈ +ÈKÍ:+ãÑiŒiËb}Ê'÷Ãâ#öéf:øá7å¤ü¥Íħª%Ób‚Õ=¢t ÒkD²ë?WçcÝÜO´'ôŠ¤V§ìÄæV‰þò”䑾­wú]9_·ËO·›¡oPÅþ…ÖŒj² šÌ0R“˜ÇGoö»„k±Ã:Âñ +€§XV{¾¥YÚxä3d™p=–1‹WáîÎrJsÏžP Š¼>õm§¾n“aôŸ>Ç8»<Ç%»isŒ°|üã,ówY®ƒ3 SÆ•p(G˜×Eî¬Âr欦¾™aô Ÿ>Ã8»<Ã%»i3Œ°|ü ã,ó wYÂënyÿ¥?űǢ5Jr÷¢ +EO±vÌOÍpƒ¢'øÁÜÓ祖§· ã¶9Ý|ÒFU(8(ŠSË2y€ ‚b‚ PV¯cÆBÑ…0\dî;æz8÷´Ãó·úpñÇüEþ÷çŸCÛ»21CøñUS°e“`ôºA<>~áàìòÊ)Ù õT„‚Or²›ºfÀ„¨:>»„k³+®—]RäpŒC'-£(÷1ÓqÿþÝ«7Œ÷^ß½|ûêß¿üE~;– +Xx°ûˆiÇÒœ¨3,’¹J§æ|aqèbîc¾SW¡Z>K5,Ÿ(a4 RÆ:õ˜{᩹bÖà:tŠ®5-™òÊ´¨! ¬“ìØÌßL®¯M÷û8"Þ˜0xt ,†xÃlð$ÄÃ>éOWT“îá#¢xÞÕUõÍh_]^ˆ«WÃ’q~ºº.üu³Û—§ô¼!•„O/^Ç+çæ!›Ÿü©~Íßèˆçš.Nì:íYä?æñé{úSÿùþ¹ÿ ,þuD­ˆÒÿ‡w‡endstream +endobj +4578 0 obj << +/Type /Page +/Contents 4579 0 R +/Resources 4577 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R ] +>> endobj +4582 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 704.2391 180.1912 715.1431] +/Subtype /Link +/A << /S /GoTo /D (a00150_g22f140b02c354dfebcc7ad481c3bcd68) >> +>> endobj +4583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.0068 704.2391 208.6941 715.1431] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 665.5553 177.9699 676.4593] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> +>> endobj +4585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7856 665.5553 201.4916 676.4593] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.8776 665.5553 256.5649 676.4593] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 626.8716 138.5977 637.7755] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 626.8716 189.7953 637.7755] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> +>> endobj +4589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.6109 626.8716 218.2983 637.7755] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.84 626.8716 266.5273 637.7755] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 588.1878 138.5977 599.0917] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 588.1878 197.5461 599.0917] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +4593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 549.504 138.5977 560.4079] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 549.504 201.9695 560.4079] +/Subtype /Link +/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +4595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 510.8202 166.9111 521.7241] +/Subtype /Link +/A << /S /GoTo /D (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> +>> endobj +4596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 472.1364 152.9837 483.0403] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 472.1364 211.6433 483.0403] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) >> +>> endobj +4598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.459 472.1364 268.3701 483.0403] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.2043 472.1364 331.8917 483.0403] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4600 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 433.4526 172.9089 444.3565] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 433.4526 236.859 444.3565] +/Subtype /Link +/A << /S /GoTo /D (a00150_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +4602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.6746 433.4526 293.5858 444.3565] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.42 433.4526 357.1073 444.3565] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 394.7688 185.1725 405.6728] +/Subtype /Link +/A << /S /GoTo /D (a00150_gaa585784b0914cac1d37f07f85457008) >> +>> endobj +4605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.9881 394.7688 213.6754 405.6728] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4606 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 356.085 175.2098 366.989] +/Subtype /Link +/A << /S /GoTo /D (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +4607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.0255 356.085 203.7128 366.989] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 317.4012 183.4989 328.3052] +/Subtype /Link +/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> +>> endobj +4609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.3145 317.4012 207.0205 328.3052] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 304.9087 138.5977 315.439] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 304.9087 162.6772 315.439] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +4612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.4928 304.9087 191.1801 315.439] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 265.8513 171.8826 276.7552] +/Subtype /Link +/A << /S /GoTo /D (a00150_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +4615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 183.3435 166.8215 194.2474] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 183.3435 221.3367 194.2474] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> +>> endobj +4617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 170.4773 166.8215 181.3812] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4618 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 170.4773 213.028 181.3812] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> +>> endobj +4619 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 157.6111 166.8215 168.515] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4620 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 157.6111 220.2307 168.515] +/Subtype /Link +/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> +>> endobj +4621 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 144.7449 168.4754 155.6489] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +4622 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 144.7449 218.5572 155.6489] +/Subtype /Link +/A << /S /GoTo /D (a00150_g499bb98a0b4ae9a98553ede81317606d) >> +>> endobj +4623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 131.8787 133.6164 142.7827] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 131.8787 166.9014 142.7827] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 93.195 192.0768 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +4580 0 obj << +/D [4578 0 R /XYZ 90 757.9346 null] +>> endobj +4581 0 obj << +/D [4578 0 R /XYZ 90 723.1038 null] +>> endobj +4614 0 obj << +/D [4578 0 R /XYZ 90 202.2081 null] +>> endobj +4577 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4628 0 obj << +/Length 1404 +/Filter /FlateDecode +>> +stream +xÚ­YÛrÛ6}×WðQz ŒÅylgìi×Vž\G–hGS[rtië¿ÏBXP©êx<âå{°{v ¡ ø…¥…–šX.T1~íÑâ/é¿]âý2ü2ì3[XbSÅði3‚"°b8¹ëÂÌ d’ö×Ó·3ü'ãíéùô¥ÚÝTOÕb¦_ÍÆî’1ÜöÁðÁýð²÷yX[÷ä$WàlÿèÝÝÓb‚$/{”pkdñ7žPÖ²âµ''/½ÛÞïõ8Û›öÍQPI 7EÉôvV¨ª (†^aèÍj§HZ|\ çÀ›T[S”óÌõÀÐþ|:[áä7~XÍýïwï˜ÑÛÛËt±kNŒ”dXÊÇUáTÈ\\,×hÀÓãšfWÇ5f·6ûÂʈb’ì +—®È˜,»€k²Ã°º.9z^¶# D .’$KãAÙ†b†pÉsõ¨|\ÿîô°&©ÕQ¨9·ç³v6H@ãZ¤è•5¨e¸±”L(¡ 4}²oEƒ‹w+)4vÏ;À3óÞ59o‹‡;q%æmeŒïxÜØò€A-äZ^€¶N¯‹׸ñ½nøñÚßÁéUc·€ïîdsS6ûú^xKc1ÑÎ$F ËfF<àÉ©‘ap vÙäH1<´ê…äÈ1 ¸½ Û5ÏJt·`IŠeÊ·¸e¸i¿ûvqýðñëÕÕíýží²ÔŠH¡y·^"@J/–×KÂâñzI³«õ³K¯|RôŽ^ùdè\“ž[åO—«jö6_¬–ûJ éÈÕ¨ \C±ž5(l$óëÅíðóÕõ×›Ârµ_<Ši;Ö`ñD€”x,/ž„ÅãÅ“fW‹'f碳žt\ÁX`:í—Õ¶ßìÇK å|Ç;û2.ŠŒny§ÛŸó@kÜœ7Äp ¬8n/*…!J‚Í4æÖØ‹¶úï·O‡÷_éjƒý6’’ ¢Eö½W ËgD4àé‘fWgDÌî°ŒH°<´ªnóAdY\'Ëe[¶’0#L’fY£2ÊEk¹C`SSQu‰V ˜–B·v"@J;–×NÂâñÚI³«µ³KnVSìŽÞ¬fØ\“jf4sÖ–µ"T*›YÊ×ƵÞ×܉û®z$¬"F(vX݌щºYÃœqQ>¾¯Â'¬œ û£wÿNnYM¶GOóÅÎ.‡³òqê ì²ú±ö_kðl¶~} ›£ñèe¼~Ù|³XvÖ\a$v’ßÞ —ævïꙢ§AI}Ò÷ Mú|8?j)b57á£patüRͪÅh\¾Îü.K×þ˜ÿ¥ÿÀèöŒQª¼£Löƒ³×¾qñÀG™OóÞŸÛoÌ$fq ùç'„ëÝÀendstream +endobj +4627 0 obj << +/Type /Page +/Contents 4628 0 R +/Resources 4626 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R ] +>> endobj +4630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 702.9085 195.9522 713.8125] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga05a3dde2048480fa3ab2a5961898d18) >> +>> endobj +4631 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 689.9571 138.5977 700.861] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4632 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 689.9571 170.976 700.861] +/Subtype /Link +/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +4633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 651.1028 138.5977 662.0067] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 651.1028 174.8513 662.0067] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5b5615dc240daed20949c0fded2b4679) >> +>> endobj +4635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 638.1514 133.6164 649.0553] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4636 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 638.1514 172.6397 649.0553] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> +>> endobj +4637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 625.1999 152.9837 636.1039] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 625.1999 200.0271 636.1039] +/Subtype /Link +/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> +>> endobj +4639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 586.3456 152.9837 597.2496] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.4818 586.3456 196.4305 597.2496] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +4641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 573.3942 138.5977 584.2981] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 573.3942 200.3154 584.2981] +/Subtype /Link +/A << /S /GoTo /D (a00150_g236d5c7872f59c8fe7b701c7252b976e) >> +>> endobj +4643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 560.4428 172.9089 571.3467] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 560.4428 239.8777 571.3467] +/Subtype /Link +/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> +>> endobj +4645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 521.5885 172.9089 532.4924] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.4071 521.5885 236.281 532.4924] +/Subtype /Link +/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> +>> endobj +4647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 508.637 133.6164 519.541] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 508.637 177.0532 519.541] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) >> +>> endobj +4629 0 obj << +/D [4627 0 R /XYZ 90 757.9346 null] +>> endobj +4626 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4651 0 obj << +/Length 1995 +/Filter /FlateDecode +>> +stream +xÚµšmÛ6€¿ûWí‡ÚÀ™á»È (Ú˶½äp@.ë~j‹@±µk#~Ù“dôúïo(‘\Ê”IånÁƲ4šÎ<e‘9†d®ñ¼ÒŒËùæ8ÃóG8ýóŒØË+¸¾ +þºž½ú‰ê¹FZR9_?t$A‚:_o]Å—+ª)+—·ïáPàA¸?øi¨ú£»óær¬NmÙîϧåïëw³×Þ¬õJ0IŒÑÍ~ýÏ·àÝ»FL+1ÿ¾`D´¦óãŒSæ¾f÷³z=ý…Á ÂÆGG8‚3Ô Âh‹~t +Q½\Œñâ²zhw=´ÕCU/‰ZT§Me†Öë$H Ñ鄘•êY%"Vé]Õ– hkƒT5›zÿäBzXy£†#ŽY§æoU¹³Ý}¿aL7g{²ÝÙ3>-ë7ï_¹ã¦-7ŸÑu"”@˜¨b.™FJâqFœÐ*”ŠAQaÌ@— H¡:¯X‡Úݹ~}m›`Š +FIÚ¸—±‹à„‰gmùmy´¡¾œ>/ ^T‡¦5!ÁÝ’"ÎÀÔÝõmäjQ ¥ yåjùóÜý=pÛÝ1ⶠݎ4Jpûû-x Þ¢Íùxí-L¥Ó¡óR±ƒÁÇڌ߹"Ê©¤n)y'º6ä1e ‚9pä1%{òúÓ;Ë°9v ›ãÍ +ÅþÔô߶•¹vÚ›iaOu›ƒ²ÿ8]ŽŸœ¢óCÿù¦7w,7õÙÞÖîÊÖÞW;3ùÌѧ?Ÿ†¡šéÖÏaÒ ê©>?Öå±éñ)íçÕá0<³?µU}*Ws¯ië˦½ÔUó—x2ü,hõžlqx¸œ6]eè¾m«Í¡¬»jÚ ïo$å}9ÏÕâši¡“TÍ…¢H^ô ™Kõ£•ùND'¿ +o™ˆ‘^ã]_H£i¥R_¹p]œTÎp¤ÍFãpÒ­”Óðëýis¸l …ú+ðøüÔ¢ÝW7*<ƒÒ,d_âïʶìc}o³Ù-ÍȺ' N ÕñÖj +Œ•9 •Jñg=Æþo”Š¸¼Â]jZÒ¢—ÊÙ…%Sc)‡v{v#ËPFcêÊòm²œ|·H¯%ë#ÔS —D’p™¿ÔEPx#,Ù Ž«@R¾âc”z?ž+ðÓÔCðÖ{\h5÷bÆÏÕS½„¦©j|WÔcÊW7ïãÅ»?0ƒ«ºJ€â÷q ZÁXÚ{ë9ÂTrÒv}rB»¹ä ,OINÚ‡HoЯܚ8 +A~d.V*›AÁ4›'–ÏM 0•›´]Ÿ›Ðn.7ËSr“ö!ÒërSµ»åv,5e& +†Æ9ûÂ^’1‰0 zŽñ¥Ü‹}A/ÉÕêÓÞ®¨?šuùäÖ×n‚ææ +Ë( CM„—õyŸ7ì@#…µ@RV„OKF·èÔôCêÆ¢a°X{±,ÖI‹ÏXgì:¬v¿¶OÓâç?\¢‚Âä¿M¶“Ϲéõ* }†n;¶&h¤ ø¤#á¥2.ÄÚº `mø$·x£‚‚ód"q¡tbÚx1ãŽo/]‡ëºÛ`> gR»s½© ß͹B9A…¤/²£T!©InæÅò„ +S„§ízÂC»ŸBxÚH¯#ü1A8ÁfŒ* /•q!Ö6™pȼ¤ŠO$\k è†öôX6Ÿc¼•ùyY%Cà…Òæ#]“ÙfqN&6õ¡tŠm'6ζÇmXÍ+ +Š¾ ­Ð°sBdW'–ç5P˜6m×Ú€ìÀøfÓnDzƒ®ãVM†õ’D®DÔZ©Œ±¶©Üj‰Wd¶p‚Z'5Þp¼PA6ïÁ^›£Ã"Eñ?½ÁÔq¯ÌCJÆ­«Dº€ +Cfn4/+9Wú!ŸªºlÝóm·÷þ‡;x·$bq±_µŸø5e¯©}U‹b,í‹K +ª¯~ûñït™÷$ú7ºþýçcýÆe^²‰Òsµc'endstream +endobj +4650 0 obj << +/Type /Page +/Contents 4651 0 R +/Resources 4649 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4654 0 R 4655 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R ] +>> endobj +4654 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.4748 274.5352 659.6763] +/Subtype/Link/A<> +>> endobj +4655 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 579.3616 179.5632 590.2656] +/Subtype /Link +/A << /S /GoTo /D (a00203) >> +>> endobj +4657 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 504.4427 177.6109 515.3466] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4658 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 465.3492 197.5362 476.2531] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4659 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 426.2558 175.9567 437.1597] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +4660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 387.1623 196.4301 398.0663] +/Subtype /Link +/A << /S /GoTo /D (a00094) >> +>> endobj +4661 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 374.0913 204.1809 384.9952] +/Subtype /Link +/A << /S /GoTo /D (a00091) >> +>> endobj +4662 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 361.0203 199.1998 371.9242] +/Subtype /Link +/A << /S /GoTo /D (a00096) >> +>> endobj +4663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 347.9493 193.1026 358.8532] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +4665 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 264.6323 210.8161 275.5362] +/Subtype /Link +/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> +>> endobj +4666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 225.5388 211.922 236.4428] +/Subtype /Link +/A << /S /GoTo /D (a00144_g20bc87e5c063c3f4b01547be6e5a0148) >> +>> endobj +4667 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 186.4454 202.5074 197.3493] +/Subtype /Link +/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> +>> endobj +4668 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 147.3519 209.7101 158.2559] +/Subtype /Link +/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> +>> endobj +4669 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 108.2585 203.6134 119.1624] +/Subtype /Link +/A << /S /GoTo /D (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) >> +>> endobj +4652 0 obj << +/D [4650 0 R /XYZ 90 757.9346 null] +>> endobj +1114 0 obj << +/D [4650 0 R /XYZ 90 739.9346 null] +>> endobj +382 0 obj << +/D [4650 0 R /XYZ 90 739.9346 null] +>> endobj +4653 0 obj << +/D [4650 0 R /XYZ 90 716.6946 null] +>> endobj +4656 0 obj << +/D [4650 0 R /XYZ 90 523.5122 null] +>> endobj +4664 0 obj << +/D [4650 0 R /XYZ 90 283.7018 null] +>> endobj +4649 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4673 0 obj << +/Length 2412 +/Filter /FlateDecode +>> +stream +xÚ½[]Û6}Ÿ_áb_l`‡á7©‹b·iŠ»Øl:}Jƒ@ck&B=’kË“Í¿_ÒiJ´.™Ö]Çöñ=—Wç\’¢MØü#‹/”P¨`\.ÖO7xñh^þñ† oßš÷oCÀ?în^¼¢Å¢@…¤rq÷pŠ ”ÐÅÝæýR#Z¬n©ÀËc½{aþ£OýÓWõ¶êÿzW=TûÑ˪YÛ—´¢jI´X}¸{sóÃg’LËýÛÍûx±1I¾¹ÁˆZ,>›'‘¢ ‹§N™{²½ùéæ?>NÿÆé—Æȱ@šéÅ-Uý¨P& +IÍ#EZ21_4 Ä=c_4`‰8Ó|áa¶t¿PÕ€`ó)*Ø" gåP)^ÂQ¥óþeSý‚1mªˆœKd® ™Û·öæ]˜†Ã§ÒˆâÚ4ŒV>>V]SuOåá×i.Ô Q“BÃ…ð¨Dq´ÓÀ—›ÍÞ<’øBôW^aŠ¨ Vɾ ѧ,^h“…ä§:Ðae³p0›ÅU×û¤û4f( šËIĸn¬Æß­\©´ÑfB·(©Ús0@³ £SlÀ˜ÖkH›¡V0IL§ÔºÙ»(m²¥L‚ãv˜vÉÉ’¦” ÅŠîûþÙt[×{ŸËm]Þ»ƒ`;æúaòÖÙFu39³×§ÜíΤ÷ö˜áø`Ï’R‹³ÙEÚL}×hÔLT–jÔ–tU°U‚×ùjÄ›6Ö˜<ÃY‰4¢¸~­s:õœ±5ecÄØ,†G%²ˆ£å¸ŒI³w(Tæ D.ó°|—™)í¶}¸½7³ÚÔhvýÂäñt¾ÖtgÄÙ;g;~*ÝYÝ~_?»ÕP;õÖy5ï !aú:ÛÆMTI ¨´Îá ÿ€¤Þ>i†{Bæó€9L£ú›ðÛöP]$i¦rÏ`H¸ê´TYtYm·éª~«Ý¯.Z¿u·NL¥b ]žÌ+›cD0#WYYPªe…LIÛÁÒÚBâ†y½ºCÞ yÈsô §Å ¾3ËÃhã+L½8ITÁ¡RôQ´Ü;öûL³Ü6 !µ;˜Í╽ÝX»·Y»Ð‡üÖ=YqßWUãïeº;‰Ïu{<¸ ±+úéÉçÚì&ÃgŠ"Y0=ÿ¬<>Q‚8n¨ƒ¹ÆÃØ…à—¯Fð…ê•È!Žfs˜o˜ NùuNñˆÖHH’:²ö°d“M"ÁëšÄˆ7Ý$ÆäM"‘F׉c_ºòÒ:®@ÌlsUp¨}-g2$Š!•»Œ À@{p¨þ̺yv/øë¸}¸»b¾9̵„sÓÈhi*Ùxì@oàðð£¨Y$µ½fñe87‚ˆbmÁü7KmyµáÒš¦Ö–n A@¨-À¼¾-„¼maDžÓà4¢¸Á!f0 Fßcfq‡)\ J$GËjL LenwÐP{p0›ÁëÃ×.æ0¿›åfu®®4‚(æÉ)ÐÁÒZBZ‡y½ÖCÞ ­Ès´§ÅuZ79P±ü|º!{á[óìÔ¸ÀJ8T*…(ZŽÒ ‰×y:?c• PãÍiÖú •Ïe½µ:ß]ú]A„«‹›)äúÉßIà÷'Áï%*”Yô¿[’ètÕTû²›Þÿ—ûãñqxBèðˆ¿¥ì[Šûgc9|KÁ*Ä}Sáøzð·ÙX¿‰ð²ýï—ÇøDv©>ÿK¦~cendstream +endobj +4672 0 obj << +/Type /Page +/Contents 4673 0 R +/Resources 4671 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R ] +>> endobj +4675 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 713.9553 210.8161 724.8593] +/Subtype /Link +/A << /S /GoTo /D (a00144_g5323320b7316647042016f17c4e881be) >> +>> endobj +4676 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 675.2769 185.9198 686.1808] +/Subtype /Link +/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> +>> endobj +4677 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 636.5984 198.084 647.5023] +/Subtype /Link +/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> +>> endobj +4678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 597.9199 213.1775 608.8238] +/Subtype /Link +/A << /S /GoTo /D (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) >> +>> endobj +4679 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.9955 597.9199 285.9441 608.8238] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +4680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 585.0564 222.4327 595.9603] +/Subtype /Link +/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> +>> endobj +4681 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 546.3779 205.2871 557.2818] +/Subtype /Link +/A << /S /GoTo /D (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) >> +>> endobj +4682 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 507.6994 218.0093 518.6033] +/Subtype /Link +/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> +>> endobj +4683 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 469.0209 242.358 479.9248] +/Subtype /Link +/A << /S /GoTo /D (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) >> +>> endobj +4684 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 430.3424 211.932 441.2463] +/Subtype /Link +/A << /S /GoTo /D (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) >> +>> endobj +4685 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 417.4789 194.2086 428.3828] +/Subtype /Link +/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> +>> endobj +4686 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 378.8004 207.3095 389.7043] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) >> +>> endobj +4687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 340.1219 185.9097 351.0258] +/Subtype /Link +/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> +>> endobj +4688 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 301.4434 185.9099 312.3474] +/Subtype /Link +/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> +>> endobj +4689 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 262.765 182.0444 273.6689] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +4690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 224.0865 196.4303 234.9904] +/Subtype /Link +/A << /S /GoTo /D (a00147_g64a238a5c02640a7a4aef004163aeb47) >> +>> endobj +4691 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.6975 209.5536 410.5505 219.4589] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +4692 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 185.408 190.333 196.3119] +/Subtype /Link +/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> +>> endobj +4693 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.83 170.8751 416.683 180.7804] +/Subtype /Link +/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> +>> endobj +4694 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 146.7295 224.0965 157.6334] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga9de254b8aa308eb4aab17efdde622d2) >> +>> endobj +4695 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 108.051 198.383 118.9549] +/Subtype /Link +/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> +>> endobj +4674 0 obj << +/D [4672 0 R /XYZ 90 757.9346 null] +>> endobj +4671 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4698 0 obj << +/Length 2146 +/Filter /FlateDecode +>> +stream +xÚ­›]oÛƆïý+ôFê=ûýÑ›mN{ @NãsÕ…"ÑŠIt%*ŽûëÏ®È]/µÒ̶Ç+ëåÌpô¼ä.I± õÿØÄщQ†8!õd¾¹¡“¥ÿó7lxûο— ¾»¿ù×ÜMqšëÉýÃ1‚fDqÆ'÷‹_¦ÌêÛ;î¸0ÓÃë·~¨è”Ú~X­›~ôª6Ͷ›u«v{ûÛý››ߧ´CUJh’þyóËot²ðÕ½¹¡D8«&Oþ%Ì9>ÙÜH.â‹õÍ»›ÿ¦8ýÇ Î휤ŠXa'wÜô»“‰ +13„iîsâ8—»å…TQóÒ-‘u‹QM¤°r’d¡g¿r®N{À¨ßŠ+1É–UE–—Iâ¨Öã¼_-š_)åÛ¦H.51Ü°“äá­ÝrÐüœ—õXEÜPÆaõøûlþñ–Ñi³(J±# Ò‡¨Â +(¢ûïGþ‡•ŸAÿ¡Ê ÚÁ€ â»\}¬@щõhy¬€;B³/ACÿ™í{_<în½sš[¦¦ŸVía¿~îÿ¾÷^éG‹Y7ëGï›fÛfó[N§·íÓºY,ûF~{io´c„û7hçi×Æ®´EhO2”ö< @;’7Ò>Ê‹Ó>N^A;RF7Ò>o·ÛfÞ•´s*‰åÖÂ}H*¤€2Z íZ "¤¨ƒ=¬GÕõîÃp.ºNÇ×öÝ)á©c—±VœxÖØu¸ŽHÍÆu”á\g!®á¼‰ëAYm—Þ¾K§”Ãë·—ÉV–H&ÕUæÜR*"ÙQ†“„Ȇó&²ó¼d’× —QÄd¯¶«n5[oöûò≠~ÚŒ4"© +ÊhU| J”qª’ïL ñe¡‚›îð¡#ý‹Íìóê°‰ o%.7éÚá~õ×°MØŸÞ½;îJ?‡y8µÍa×üãÆ/>"÷ž9¢9Õ×ñ‡w€vNbþˆ2ÜY@ÈpÞäÌ"ó³tÒ8½ŸÖ_ba)±\›«FhãÑTØò6ÉPÃäà y£aFyqÃŒ“W)£ˆ sX„¦=NrÃEM~~ꉗnHR!•”Ñ¢0 ‡”'À1Sé¡L y(ÊB?û@§Ÿâ¬h¸Õô¿Woë™–œPÁ¯sƒIø2cc:Êp¦³€ÓpÞÄtž·‚éQò¦á2Š¸9ÓïWÛ3÷—xøÔ‘6$’¿Œ–“üuœcï:jßKæ°û‘ êL Ae¡ ïB#šÇËáA·nçqZöâ2ñ~ªÈ…uW!ž‡‹Ì`$J| ɉåʼn'¯ )£ˆ›ïOÎg‰×ܯNÁ6$’¿Œ‰_7à¡›¿ˆ ¢ò‚\ Pžd¡ˆwÍ%ÊO øƒú²¿¼³Oø}áËîC_qrõ$R^ç2Wá#º"ÊpWd!WÀy“+ò¼®%¯q\F7-–g‹Åî Y‡4!ª°ìE´è‰cn?ÉÎá%ÍÆ,ól,@# ¿è ®ÖH™2R”…Ê¿o·ûnw˜ Ç@|˜í¸SÁ ûáBÓƒßG5m[=´‡]¼ Ô5ûËæàŠhu§ü{þówØS8I†›# ™Λ̑ç­0Ç(y9à2Š¸/æÐgÝá$±&|D`¢ +K_DûRwdc™U6ÖÙØ@nòs$bYå¢<^Š*ÐJŸt•™šÕòð-Ówïã]‰§ö¸Ñâ²»˜ÕÄ*s{1ãlBaOG$j¯< `/$o´×(/n¯qò +{!eqÇçžßçíc˜|<—‹j?E—~òv#©2ÊhÑf‹fß vØïæ ”G˜óÊg„r5d‡(ëýðø\yVIK‘mö Äõe HK¨×y>ˆ åÛ‹Ý„‹*Ü/á þÁ¤ ÿ,iýyæøÁN£ž¢¿y,©G˜[Dpú"V~f>@ê9%œÛÊg†r5D}”õÔogÃäží§ö"ÏÀ”)ÁµW!Úi"¤Åž¤ˆ*”è,@4œ4'ʼne® ®á4ê Ñ›Ùþã9ª…ðÇ®Á6$\Bë"Õ_Ç‹úûçß"aÞæìE.êS2­Ì}ÁäH’ Wò»ˆn¢‰3†½Þ¾©<•Òß©Ø6»Yz4..¶Šƒ7a~^0>ü¦ßpñ ¾IÃ)¦P·ÜO˜véæõÉWnâmíWíççeS|ÕF1q®Kÿ`¶0ðendstream +endobj +4697 0 obj << +/Type /Page +/Contents 4698 0 R +/Resources 4696 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4575 0 R +/Annots [ 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R ] +>> endobj +4700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 713.8976 188.5699 724.8016] +/Subtype /Link +/A << /S /GoTo /D (a00147_gde6634974418e3240c212b9b16864368) >> +>> endobj +4701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 675.1037 205.825 686.0076] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> +>> endobj +4702 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 636.3098 190.8911 647.2137] +/Subtype /Link +/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> +>> endobj +4703 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 597.5159 195.3145 608.4198] +/Subtype /Link +/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> +>> endobj +4704 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 558.7219 200.8635 569.6259] +/Subtype /Link +/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> +>> endobj +4705 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 519.928 191.2995 530.832] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> +>> endobj +4706 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 481.1341 180.9385 492.0381] +/Subtype /Link +/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> +>> endobj +4707 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 442.3402 204.1906 453.2441] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> +>> endobj +4708 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 403.5463 180.9384 414.4502] +/Subtype /Link +/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> +>> endobj +4709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 364.7524 214.9411 375.6563] +/Subtype /Link +/A << /S /GoTo /D (a00147_gf2dbaceb10c67783a115075b5b6d66df) >> +>> endobj +4710 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 325.9585 203.0756 336.8624] +/Subtype /Link +/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> +>> endobj +4711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 287.1645 203.6235 298.0685] +/Subtype /Link +/A << /S /GoTo /D (a00147_ge5ab69d40013e6cf86ef1763c95d920e) >> +>> endobj +4712 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 248.3706 190.8912 259.2745] +/Subtype /Link +/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> +>> endobj +4713 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 209.5767 195.8725 220.4806] +/Subtype /Link +/A << /S /GoTo /D (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) >> +>> endobj +4714 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 170.7828 215.1402 181.6867] +/Subtype /Link +/A << /S /GoTo /D (a00148_g769512993b7b27271909d6daa4748b60) >> +>> endobj +4715 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 131.9889 213.028 142.8928] +/Subtype /Link +/A << /S /GoTo /D (a00148_g210e629f7252e4bc8458cbdf260b3318) >> +>> endobj +4716 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 93.195 234.0589 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00148_g6b16e0bac41821c1fbe0c267071642f0) >> +>> endobj +4699 0 obj << +/D [4697 0 R /XYZ 90 757.9346 null] +>> endobj +4696 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4719 0 obj << +/Length 3007 +/Filter /FlateDecode +>> +stream +xÚ­œÛr7†ïõ¬Ú²jà|È-ÉŽë‘Þìn’RÉe©b“ŽHÅñ>ýäl3 ”K•ŠEi~õßì¯1€3b#êÿc#GGFâ„Ô£›OtôÁÿøÍë¿ðÇ_@Á«ÙÁw¯¹9â4×£ÙÝ&‚fDqÆG³Û_Ç–p7yÁ?=|þÎÿOî·ß¾~ø8ß¾ºœßÍ'ÌŽç‹›ð#k¸3k&¿Ï~<8ž%÷.9%4 Þüú;Ýú$< D8«F_ü7”0çøèÓä"~óñ`zðsŠ³=°ù…¾÷(©"VØÑ n¶ï +ˆ +1£†0Í}U¸¯á©(ŠŽ¬ÿu-CQ˜?H³£¨ +•9\~ú|ý8fÜÕaýe¹}qr±ýz}{»=¾ZÍWÛ}yXwõ[Ìן®W¬È~™bJ†yS&ž—>ã>/e‡¡SM¨0b]èÌ•ÂÊQ’…7øçªLÎÿWböTµSÕ|™$Žjûþãvþ¥|1/Ì¥&¾·Øžy8ôø¡Ó\Â4¢¾–F7¤á{ýêás`x@í'Ùò¹ÉìU"©*)”Ñ6¨¢·óÕúŸÛ–Y=Þt¯BBþ êí¡þŸ¶Þ‡j¤ù“,¤vJ²Éeù´îúÿ~žZûËò±;ìÇHw|y× ‹Åà0 ÚúS£üYƒÖ^(¤¬ †$« ß82ßú`ÈÍC%"n>Êžs’X¡Uˆªš}-„`Žö¼âþ«æ=ÔXÏGYÈââáfÂéø½v|üõÏÏØè7ëùsô¼d„ÓüÄòí=Ïý•\0Uëù(«÷<ˆõ<î›zú6ô|fÞÒóxEܼçùpÏ£UØõoÇ+-ˆ¤ùÉãÛ;^Q"¹2µŽ²zǃ€XÇ㾩ã¡oCÇgæ-§QÄÍ;^wœiÂ|“äù°>î>s­¶²7Üãeuî˜#àŽû&îз{fÞÂO£ˆ¹ŸÿÒÀ\m`ñ†¶p7ªJ.œYbvy*¼¹ðMäøðÜ +0äQVGŽ9ä¸oB}gæ-Èñ4Š¸ùåñ¿OOfdªˆóLð"$UÅSë‹KÜeeN‰aÈåywcÜ©êˆ;@5M€i_èÜ‚Ía?j„{qþöm¹Hó—U-5þ棨bìa +róágW?W3’‰a°@€‘²:ZÌ°Å}\èÛ@73oÁ‹§QĀߞOKÂŽêt¥QU1ç”ùù¹9Ó=”…_±­†?E‡„r’U)£Ž;ÊßH9ó­SÎÍ(WÒ(â¦éØ«óˉ¦ãžÓ4õïP(¼IUI€SA$óÓ®,Ñw5–cÝðÕ +0ÒQV'9Ò¸o" }Hgæ-¤ñ4Š¸i<ŸŸÎŽ +ÒÜj™ÆëT•¸ DÎótßYøE›e’ “Œt”ÕIcŽ€4î›HCßÒ™y i<"n$=;9=>:Wiæˆ1~Š„–!©*þœóð©Ô^ùï»F µ¹H“Œt”ÕIcŽ€4î›HCßÒ™y i<"n$]]Q…É–sá,ŽÖ#ªj‰ø9™´á,é[E ɉݻ×+ð(«ÇpÜ7‡¾ À3óàxE\8´/KÈ–Åt¥QU1“2néËÌ{¯ÔÜký +{2`£¬sqßú6@ÎÌ[ ãiqáÒÊ/ž·°¼;ž–çqFãðr$U%.¥Çl÷Ê!úx3McÃ[¢P€ñŽ²:oÌðÆ}oèÛÀ;3oá§Qļß]\MÏŽ6S´¶òk$æSX-’ª’WÒ7wy½“3?c÷—„á}P(À`GY6æ`ã¾ 6ôm€™·ÀÆÓ(âBؽgqÎÑÊ2¼IUI€sM˜´6O@õ€æÎ/á”Þƒt’UA£Ž;Ðß:ó­ƒÎÍ@WÒ(âfû'åbË—KQ®ñ"$UÅ=ì~ú‰›ÈÝiecˆC&àà8ƸSÕ#v€0jšÓ¾Ð¹/šÃ~ÔwúŸ³«ËÃõ¬¥)’j´I„›‡–Ldæ}“m®¡Ô_—¡£eu¼˜#à‹û&ÀзpfÞ‚O£ˆ !ûërÏ:ÚeÃËTÿÐ T3“û÷Í·¹â„ +>|I†Œs”Õ9cŽ€3î›8CßΙy g<"nä¦ØañüêíÉô‡žS¶a—šáÕHªJ\hâÏÖ6O£oºÍ…#TéáP(ÀpGY7æpã¾ 7ômÀ™·àÆÓ(âFܯOή~™0NÇ/OfW¬o¦”Õx5’ª’F˜‡QéDžFß„{£´lx7 +0ÜQVÇ9ܸo }pgæ-¸ñ4Š¸ý¸ù0n¬7šÆ7L£wÚÍaT l î(«ãÆnÜ7ᆾ ¸3óÜxE\8í>9{S^³ÃUÊáUHªŠ}8*Ù~ú>· 1î†7B¡Ãeu̘#ÀŒû&ÌзsfÞ‚O£ˆ 7BwúÔŒX'-^Œ¤ªdÁ¹$Âú%t–EßãÔ̔ޅ„v’Ui£Ž;ÚßH;ó­ÓÎÍhWÒ(âFÚo_NgñÎÁrd[ÂUx)’ª’C˜›ðLm–CßgZÌHÂŒ¾^CÆ:Êê¬1GÀ÷M¬¡oë̼…5žF7ìéÕéËéO}÷ƒ2i4^…¤ªØoî!Väö¬ïBÍtxê“o@Æ9Êêœ1GÀ÷Mœ¡oç̼…3žF7­®·O?\\ô¬¸üeØ(mðJ$U%…Ð\‘§Ð{—“þ,Áõð^(`¬£¬Îs¬qßÄú6°ÎÌ[XãiqÓ]FÅGÕWÓ“ÿ—kmãOÓ†Wê"ÂPá™ ÿƵm|Ü–ù%:W¶öüa’…ìgñù«÷ᡬ§»Ð³wñ!“ÕÃÿº£×]?|¼~ÿ1=¬Õ)žVQ{{½¾Þ¾zXìíÚûŽú™†`#˜*B&é+ï­Œ·‹ok/Á ÑTÚ½Dö*›T{Á±Ò¿Îì÷*Š>ˆÃÂÍ&Ωgy' +ÁEmß$ÉêƒÄ1î›1ômÄ™yË ÆÓ(⦥/Ã>ÿlOÝW'‡§}w“…OÑšDQ%.ü [;“çÒ·î4rx§lwá݉ª´¯kÔ1’ŽuÎж2šÀ^Ìa³ÃÀ<Üh•!JÐ$|‰ ³<«Bß5ٰ팮ÇÈs÷#~{Ïé7ÿõªMƒXÿ+Lpø'¸´?‰„Ž»ƒI„$ßÌóÇëõ<>{ÞÎOã‹'LŸºoï¾Òï¹øžÓíw~!©»+Å„«qºZħw¡ñ‰Åí×£åß_?ÌûåQLôÕçÿ Oìendstream +endobj +4718 0 obj << +/Type /Page +/Contents 4719 0 R +/Resources 4717 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4756 0 R +/Annots [ 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R ] +>> endobj +4721 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 702.8842 216.9034 713.7882] +/Subtype /Link +/A << /S /GoTo /D (a00148_g969d7fff37a979737da045e0d538a9bd) >> +>> endobj +4722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 663.9813 195.8725 674.8853] +/Subtype /Link +/A << /S /GoTo /D (a00148_g22fa0681cd463191d7a01fe85d86996f) >> +>> endobj +4723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 625.0784 195.8725 635.9824] +/Subtype /Link +/A << /S /GoTo /D (a00148_gffcd2fbe181e2aaefbf970551c302af5) >> +>> endobj +4724 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 586.1755 195.8725 597.0795] +/Subtype /Link +/A << /S /GoTo /D (a00148_ge23534479ead15af8ff08ace26a47fb5) >> +>> endobj +4725 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 547.2726 195.8725 558.1766] +/Subtype /Link +/A << /S /GoTo /D (a00148_g165b603ec150e26efec7be199c9c2901) >> +>> endobj +4726 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 508.7434 180.7494 519.2737] +/Subtype /Link +/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> +>> endobj +4727 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 471.5241 169.3122 480.3708] +/Subtype /Link +/A << /S /GoTo /D (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) >> +>> endobj +4728 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 457.4674 214.6224 467.3951] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) >> +>> endobj +4729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 444.4916 216.6746 454.4193] +/Subtype /Link +/A << /S /GoTo /D (a00150_g39ce739bd352d7e348e37395ce903e43) >> +>> endobj +4730 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 431.5159 206.9409 441.4436] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf848ce44c810492e7a35c2d23a429f45) >> +>> endobj +4731 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 418.5402 193.6609 428.4679] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) >> +>> endobj +4732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 405.5645 200.3059 415.4921] +/Subtype /Link +/A << /S /GoTo /D (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) >> +>> endobj +4733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 392.5887 201.9198 402.5164] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga4c4310e54f18541b09e1e251fe7b22d) >> +>> endobj +4734 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 379.613 229.0778 389.5407] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf84316f469ce0726985c0702db49a989) >> +>> endobj +4735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 366.6373 220.769 376.5649] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) >> +>> endobj +4736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 353.6615 193.9898 363.5892] +/Subtype /Link +/A << /S /GoTo /D (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) >> +>> endobj +4737 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 340.6858 199.7479 350.6135] +/Subtype /Link +/A << /S /GoTo /D (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) >> +>> endobj +4738 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 327.1074 243.3742 337.6377] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd605357e29affb0d3104294c90f09905) >> +>> endobj +4739 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 314.7343 252.8785 324.662] +/Subtype /Link +/A << /S /GoTo /D (a00150_g5c97ae587595b5444be80f5ecc1d3382) >> +>> endobj +4740 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 301.7586 224.6544 311.6863] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) >> +>> endobj +4741 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 288.7829 207.4989 298.7106] +/Subtype /Link +/A << /S /GoTo /D (a00150_g28eda870cff3d8e3cf2949e6f57a502b) >> +>> endobj +4742 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 275.8072 221.3369 285.7348] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga5e3c856b86725125d19fccc34cd9eb5) >> +>> endobj +4743 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 262.8314 218.5673 272.7591] +/Subtype /Link +/A << /S /GoTo /D (a00150_g8af482dec973db57d8b3bd3f69461488) >> +>> endobj +4744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 249.8557 234.7964 259.7834] +/Subtype /Link +/A << /S /GoTo /D (a00150_gae59b70658f28ee6e998eaaab05e423f) >> +>> endobj +4745 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 236.8799 224.5549 246.8076] +/Subtype /Link +/A << /S /GoTo /D (a00150_ga533c394b1fa0030205534befa31c525) >> +>> endobj +4746 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 223.9042 224.5549 233.8319] +/Subtype /Link +/A << /S /GoTo /D (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) >> +>> endobj +4747 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.9285 211.9222 220.8562] +/Subtype /Link +/A << /S /GoTo /D (a00150_g64d9affc680a445d708234e70450477b) >> +>> endobj +4748 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 197.9528 222.8911 207.8804] +/Subtype /Link +/A << /S /GoTo /D (a00150_gfff0ed43201bf1e2020de1a0d6cac070) >> +>> endobj +4749 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 184.977 219.2748 194.9047] +/Subtype /Link +/A << /S /GoTo /D (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) >> +>> endobj +4750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 172.0013 214.1439 181.929] +/Subtype /Link +/A << /S /GoTo /D (a00150_g13dfcb4a5f920e108253ade527a66cc2) >> +>> endobj +4751 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 159.0256 211.7529 168.9532] +/Subtype /Link +/A << /S /GoTo /D (a00150_gde29ec025e6754afd8cc24c954a8dec8) >> +>> endobj +4752 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 146.0498 238.2734 155.9775] +/Subtype /Link +/A << /S /GoTo /D (a00150_ge0825474feee11b4e038bfe71757875f) >> +>> endobj +4753 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [289.3868 130.4285 318.6011 140.3338] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4754 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 107.1469 229.7753 117.0746] +/Subtype /Link +/A << /S /GoTo /D (a00150_g359951eecd80541c2101f628a9da9146) >> +>> endobj +4755 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 94.1712 223.6882 104.0989] +/Subtype /Link +/A << /S /GoTo /D (a00150_g517c770991459cc62dc009c0d3875c6a) >> +>> endobj +4720 0 obj << +/D [4718 0 R /XYZ 90 757.9346 null] +>> endobj +4717 0 obj << +/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4759 0 obj << +/Length 3015 +/Filter /FlateDecode +>> +stream +xÚµ\Ûr7}×W°j_¤Z‹û%klj]›ÖQž—‹)‹‰T(ÊŽ÷ë·13€€¹tcm¹J$Í3}}C7f$±àðO,_8ãXPÚ..oOøâ#ü÷'¢ûz ß/KÀ?/NþñR†E`ÁJ»¸¸j$XÁŒrq±~{*¼?[Ê •;}xuo ?Œ·o^no6í»ûˇÛÍî¸:n÷»³w¯O¾¿È´VFYIÿ8yûŽ/Ö ÝëÎTðfñ>p&B‹Û-UúpsòËɲœö‹æ‚±Åů—ÒµK™\½„µ:ù¸xU,^pË´òz‘PÑ¿Iiú+¾—F- +qº "H…f[[‘þm½ùs¹Û ˜µeN:Q3Ço;È›R‡'tèK:üúêüýù›3ÍOŽ?.΄?ýùý¯/Îû:I©™ÒÆ£ÖÈ \)-óÊšJáÆBJ8Æ¥ÖÓ®.˜¯Œv6ÆXxçÍî.ygø»"Ÿãp\Üi—¿zþÓ¹8])æ,'¬’Q„:RY&MOãÇÜÎ5ãÎúi·Ìí F»c,ÜŽóf·—¼3Ü^‘Ïq;®Æ@nrû«óßÿëûÜÌ=ÆjÜ +EÐKÁ™Õ}zÉGülƒ`6žI?—ÄÏFúe|ô3Á›ü\ñÒ~®Égø™Pc 7ùê÷¸£E`P£n†Œ"ø¥ÌADÔücùl„ŽÓ;v Àüœ`´Ÿ1ÆÂÏ8oösÉ;ÃÏù?ãj ä&?_<Ÿò3tbNÜ EðKÉ·ÂÕüã m “J‹iGÌÑ F;c,ófG—¼3]‘Ïq4®Æ@îcážLié>A ‘Q„Rq ){à†We¥þÞ¾û +àÄXPɤ·f:( + FÆXΛƒ¢äùœ ÀÕÈ} ŠÉü‡[KçqCd¡A ž è‚"ëð•A¡Sʇé (XP$c8oŠ’wFPTäs‚Wc ·ØàçhP`†(‚Õà1(úÔaÙ=Á‚12^·ª»p©4ì&Ê5^œ9}úån³Þ\ÝD‹ñ’é€ì+%‰– #£e|Œ‚7EKÅ{l×9ŒǤ3=f$TZ8¥B_jÔàAØ÷Ç¿W.=~Ã-¼%”s´\“Ú%\­ÞöîýöN¯ÖëÃPÍxªºdjÃS3ˆž‡™´â+ß ãÂ1aåÂXè™L5DG‹]à†Ùðľ…*.]˜Ž¢¹;Td~³¹;œ)wº¹¿ÏmMAÝ_µ¯«îs:¦‹6ê.`“:ËL0WºÓYH´›îÔVqº£öê £­ˆ%Λ­ä¥­bž‘h¸ +}©3 Yú×'®]N´J½&Ñ,•h˜‡ŠDCȉVò¿õïÆŠ=@mÓ­A Àb0ÁèÄ‹Äys –¼T VÌ3bW¡/•®¦\1á`ÖÇLÐÄ¢#cQrÃ`n°”–7¢æ„–±‚y-qGeÔÕƒ@ éØXð"õˇÝe,µc‡v +âvzv)¾GB1¡ÈHÄè'MqX’~:“°‰l×bh‚¦&žŽÃ'TèKÍÞmGÊ¡0„ ºö"ˆ­gš›š8N*iýcÓHÚ'µñ-ǬͽD#»{†5&HÛv´Ãvu³ýo±Å_uQ8¹kÈî`ì“lãZƹ§î›d¸…@,rqÞº%/»÷œàŵÈMá{¿9nïFq‰#5BBQô^0c·6>ñ€×G€³ ð¤}¹“½Œ„Ø´ÆEtéEÇ[ÂûÞÒ‰¬mN'½š™µËÚ{‚¬…؇ø×O’¶ +¶-auß+ÃÈ´-"iK𦴭xÉ´­¹g¤-¡Å@nJÛ›íýq³f­fR(KØ ¡(vg™ãÐ|Ô¶ÍZˆ-)Üìõ'<¥Á@.’µ’9ØRñ¥gAû9ÈðÞÒïö‡#–· +ÊœŒêÎÊÛäm†E ~9®Ç6KÛØî>¶ûîõº{´åþns¹Gx›uûQûÉ”VŽ3i¥š”6Ž)a¨[œF§t!Kiœ7§tÉK§tÅ='¥q-rSJ?ì&’Úk˜g¢P+$Åï-L*6ô¬?šÔp•×z¶žÔ /w:©!Ò¬ ÄÒ3Š –Â@üÆ”*‰É¤Ö’)G5å¤nÑ’Jêk“z÷Éi%˜V=MN C¬wTN'Ó…À>#¤ˆŠ>)JMi—3¿Ô.æÜå~7Ì7cµwÕp™QCn¡Kn£™v^ô,½èphŒã<=ÞéÕ'<µúÜrõ›Ë‘¬ëžvA Q=tL(çú) ˆâyÆLd<©A_.y8c¡@8 $Òæ­6ã!ÐS¶ } shŒÏ´=ë머‡…Û¹ÖÊxÂZC¹“åYÅÐ`ˆLÉ(ŠX)¦|—¬Î\1#½Y 4V,jð¼K’ª"¯Ú—ö>ÅíþØÕçëý}|¸ÏUüâùù™Pæt²NË ™YòIê´„‘ÜB¿HÔé #ët)é½ÞT+^²÷ª¹gô^„¹§ »‘#ˆ[È[ Eq;ˆn¨‚µá¡ +BNASÚ£WC´e±eâdéPf½:®ž¥? ›–KÒjf½œ—Jɤ„jÚœhãF¨[wp×ëp.mR%»= +;Ž€øcNª§¹(5gΑ§ßFçO!ð›ûB»œe¥vÍl±žèuôB:TËeF ùë^ÇA¯Ã•êYg¬×¡Ö»uÙ¢ÃSÈ--°ÛœIsúyøH¸ý™2BF*Hå™2ª"cýŽ0·ð0×Oi0Kö;q‚=š°@Ba ƒaÜs9XÑBûht“îó¬•ñ„µ†r§ûc™·RQ´Æ3Ë…«iT¿•†y5÷iUékËtjaîª^’GÄäi†{q>¿Ä2úpõl8—Éø»Üj®2ž0ÐPî´¬aF AX(¡(bëÛÛè1q$`Þ—Îõù—ÿ¨J“w.J–ÏDÃã”oNX$\¨Á²I•h´6»Íl¶®ÏŸJo^Çõ> endobj +4761 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 727.7951 225.3421 737.7228] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) >> +>> endobj +4762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 714.8475 234.7566 724.7752] +/Subtype /Link +/A << /S /GoTo /D (a00150_gad0321f4c570f9983c6de81ece3ddc20) >> +>> endobj +4763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 701.9 209.1527 711.8276] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) >> +>> endobj +4764 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 688.9524 220.2212 698.8801] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb948296aea6b6b3aa1f156799c4d479c) >> +>> endobj +4765 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 676.0048 218.5673 685.9325] +/Subtype /Link +/A << /S /GoTo /D (a00150_g17d111686f98e4c09db73a770ac3f1a4) >> +>> endobj +4766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 662.4546 229.0778 672.9849] +/Subtype /Link +/A << /S /GoTo /D (a00150_g6f2b90c597ec23f39ec716ccec11233c) >> +>> endobj +4767 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 649.507 227.424 660.0373] +/Subtype /Link +/A << /S /GoTo /D (a00150_g15f2617f7dc1713f9d10282125c6027b) >> +>> endobj +4768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 637.1621 227.424 647.0897] +/Subtype /Link +/A << /S /GoTo /D (a00150_gee37386b2ab828787c05227eb109def7) >> +>> endobj +4770 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 579.341 170.966 590.2449] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4771 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4642 579.341 229.3566 590.2449] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> +>> endobj +4772 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 540.4944 170.966 551.3983] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4773 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4642 540.4944 229.3566 551.3983] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9ebb4dac683163840eab9c6c41ad61f7) >> +>> endobj +4774 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.2787 527.5468 204.1712 538.4507] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> +>> endobj +4775 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.6693 527.5468 257.5805 538.4507] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4777 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 470.7019 166.9111 481.6059] +/Subtype /Link +/A << /S /GoTo /D (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> +>> endobj +4778 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 431.8554 180.1912 442.7593] +/Subtype /Link +/A << /S /GoTo /D (a00145_g22f140b02c354dfebcc7ad481c3bcd68) >> +>> endobj +4779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.0068 431.8554 208.6941 442.7593] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4780 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 393.0088 175.2098 403.9127] +/Subtype /Link +/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> +>> endobj +4781 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.0255 393.0088 203.7128 403.9127] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4782 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 354.1622 185.1725 365.0661] +/Subtype /Link +/A << /S /GoTo /D (a00147_gaa585784b0914cac1d37f07f85457008) >> +>> endobj +4783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.9881 354.1622 213.6754 365.0661] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4784 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 315.3156 152.9837 326.2195] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4785 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 315.3156 211.6433 326.2195] +/Subtype /Link +/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> +>> endobj +4786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.459 315.3156 268.3701 326.2195] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4787 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.2043 315.3156 331.8917 326.2195] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4788 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 276.469 171.8826 287.3729] +/Subtype /Link +/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> +>> endobj +4789 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 237.6224 172.9089 248.5263] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4790 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 237.6224 236.859 248.5263] +/Subtype /Link +/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> +>> endobj +4791 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.6746 237.6224 293.5858 248.5263] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4792 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.42 237.6224 357.1073 248.5263] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4793 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 199.1494 138.5977 209.6798] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 199.1494 162.6772 209.6798] +/Subtype /Link +/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> +>> endobj +4795 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.4928 199.1494 191.1801 209.6798] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4796 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 159.9292 183.4989 170.8332] +/Subtype /Link +/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> +>> endobj +4797 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.3145 159.9292 207.0205 170.8332] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 146.9817 138.5977 157.8856] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4799 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 146.9817 189.7953 157.8856] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> +>> endobj +4800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.6109 146.9817 218.2983 157.8856] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.84 146.9817 266.5273 157.8856] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4802 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 108.1351 138.5977 119.039] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4803 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 108.1351 197.5461 119.039] +/Subtype /Link +/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +4760 0 obj << +/D [4758 0 R /XYZ 90 757.9346 null] +>> endobj +4769 0 obj << +/D [4758 0 R /XYZ 90 596.0036 null] +>> endobj +4776 0 obj << +/D [4758 0 R /XYZ 90 489.648 null] +>> endobj +4757 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4806 0 obj << +/Length 1902 +/Filter /FlateDecode +>> +stream +xÚÍZÛrÛ6}×WèQša`qÏc.Î$3mÓÄéC]‡–d[[vti›¿ïB"`ªÒCÇ£1)»{vØâZ:ÔRË…Ntx‡o¿°êqÏ‹ðúbpvvh‰U †·Û# /¦—#CÀŽ t´™?Ÿá‹ÜïnÏç³ÝÕçÙíl9ff4[LÜ[Fƒ1cÇWï.Âì9Éss\^ÑáI~P­‘ÿñ†f- ¸¿y|üÆÙ=Ø~`ß•Äp3,@ïVZ`¦ S€ÿXÉD·ÑHFFã‘ÑUDp#†æL÷'€lÚ€QüH>ŒlÎ(ˆ5 ׸{æÞYÞU>ÇÜ©RYvWc·aêzÝ¢Ç5Q”‰$= ÂR§'(¡X–žÇÕéÍŸ¯×“çÉý·Õæ±I(%VsHÒ,*C('BqÛð•ô¯1ÐÑÓ|Š×¬íÉ]èh +„j• ³ +\Äè-I‡™(±5X|jÍË ŽÉ›òa²y(וÜÖ÷ÕÅÅ›O»‹É˜ÉÑýlâØn͵}÷é¶.wˆ1££Ùz÷Þ|Ä}}ãžnªO•‹éË“òùyZ®KÒeeaLë“HMiƒ@Å3R °¬Ôâ–Z†ÇÕØ¥¥–¢w°Ô2ô<®N=¼™vJ-ÒF,<(3=J‹çºá»žBC<ÞOh1:!´K íëÛÿÐ$P\ô´A„ö•ž1TŸ„ªÔ+f\žÙ•úßÇFår^Þ<ÌV{Š·´’†}A—rc@B¹–Unjƃ•›açq5v³O¸@P–d×W¸\bâ¤&ËÎãêì¢Xj’T—ƒ~N:- rÓ+ƒý–lLùõçë×.È¿žùðÇ»Ÿàª+n¥¡Xb5ô‹ÛÐn€92^|›ŸºUè­…Íê¶gelÔ©5©,‘Ôð“5)Á—ÍIÃÃòÒˆÜcÉ +•›7}<¯OÆnî³s\TœÁ ¥Ââ,»ÌMy‹ Â — ‚‰ÒUásT[ãzT9³E{j¨L[Êpbn$ +g Ñ3¯JÁˆÂ0Ìŧ‡9¦ŸÆÆu±Æ°ÛU‹§FÕÀu<Ì'åzþT•ŠíªjÅ#YaŠmN‰’â4¡@ìWs[£Ë‡v4àñY?Í. f—î×Rôî×2ô<®Nƒþa¶h§|ü ¶:I°P@ŒëÔ xÜŽhir»–«%d¤z·¾ÿ­Rµz¦CB]`ÐÖžfo"°q5Âäö&–õxÀ£c=ÃÎãjìœm'O‹v4IlI†E@µç®Õ &AkXf_ýP®A¥¬1o÷ê=>·úÖ¸ÉÕ[ iŽýVrõYFs˜–î8,¹I€õ+“Ír9æz4[¬›‡¸¼ÙÄU•n‰à>ÁŠ•ÁÑèVäR¡òyîx}$©yDÔòêè¦×·xidèí¡·jÇ/öé\@Š_@™™­FW`ÓϼíýßüúË/_®öìhBtŸAÇ€T”xX>L3'iv!PbvÉbŠÝÁ;Å ;«³s}òd¡EQ+B]sœtY@å&Çl)…n˜æRtî fjMÏÃÓJæ&ÅÍ SbŽdrTþ¨ÚŠÕ¬:z¹}Z6ò)‡âf^¥ÒÕìû¦újï›ÇŸ†'Õ&×Uwv¥Œ0~¢„C˜É6 –N<àÑÂÉ°ó¸»êôqšÕ˜fè$Ë" Úó×›)”rްξ&Ä`e×-ët[Àãsh›³pì?  pìq¦æƒ:®9‘íD¬ÖÕ·Ž—CÒ|ÃÁqæD –pžk8<*/ˆ—áŽ×C’ZCD­Ÿº)ö­&;)ˆE뢸jÇ«DÏ +“âXPzvÀ·Ö²>û¶ñÀXën>8W„ÝRãaùIÌxx̤م ‰Ù9—¬ÖåºÝJŠ–㤸Õ£QbÀ}±ž¡èq{)¶S­ \Ë´×´&€FÜe7n{¦7`Α¹n!ÀöŸ"ã>êÌ_;þóÕz>é.öœQlÓOTì;o Ùb`Ù@<:P3ì<®Æ.Ù%§ØÜ%gØy\ƨkʻվܫp³”$Y˜ +Ty¶;aö#R+“ó¬‡å= x¼gÓì‚gcvÎvóçr:]îñ°’˜2,ûf!÷U“6ËÒãZ,ïŸPÇȳUºs¥ "É#¬BåÕëBd®1 °¼£÷qš]ðqÌ®Ÿ,÷qšeðq“åb¶~,WßZ.f–"I²p¥a‹Ê»X¢tÖÃ*ïà—áŽ÷o’ZpoD­Ÿw»)îÜ$ÅàÛÅér¯xÝžŸ3"ˆî¬@¸asY\í…QdëÕGýFq?Â8~¡Ü/ÒŒÿ¡%#Ì–¸¥½Ÿ-fËríO$üw€?û‹îäbSÝ0¨þÓWÀ_ÝÝ¥ª:σù3ÐÊ0Roª·Oÿü¸k‘$Ô"ûü „¦õÓendstream +endobj +4805 0 obj << +/Type /Page +/Contents 4806 0 R +/Resources 4804 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4756 0 R +/Annots [ 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R ] +>> endobj +4808 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 713.8674 138.5977 724.7714] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4809 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 713.8674 201.9695 724.7714] +/Subtype /Link +/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +4810 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 675.0131 138.5977 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4811 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 675.0131 204.7393 685.9171] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7023a34ba9e9d03b5fbedbcb32924453) >> +>> endobj +4813 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 592.2581 133.6164 603.162] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4814 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 592.2581 166.9014 603.162] +/Subtype /Link +/A << /S /GoTo /D (a00146_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4815 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.3873 553.4038 192.0768 564.3077] +/Subtype /Link +/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> +>> endobj +4816 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 514.5495 138.5977 525.4534] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4817 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 514.5495 170.976 525.4534] +/Subtype /Link +/A << /S /GoTo /D (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> +>> endobj +4818 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 475.6952 152.9837 486.5991] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4819 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9538 475.6952 200.0271 486.5991] +/Subtype /Link +/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> +>> endobj +4820 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 436.8409 152.9837 447.7448] +/Subtype /Link +/A << /S /GoTo /D (a00088) >> +>> endobj +4821 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.4818 436.8409 196.4305 447.7448] +/Subtype /Link +/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> +>> endobj +4822 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 423.8895 133.6164 434.7934] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4823 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 423.8895 177.0532 434.7934] +/Subtype /Link +/A << /S /GoTo /D (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) >> +>> endobj +4824 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 385.0352 172.9089 395.9391] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4825 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.8791 385.0352 239.8777 395.9391] +/Subtype /Link +/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> +>> endobj +4826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 346.1809 172.9089 357.0848] +/Subtype /Link +/A << /S /GoTo /D (a00095) >> +>> endobj +4827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.4071 346.1809 236.281 357.0848] +/Subtype /Link +/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> +>> endobj +4828 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 333.2295 151.3294 344.1334] +/Subtype /Link +/A << /S /GoTo /D (a00093) >> +>> endobj +4829 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.8276 333.2295 185.3713 344.1334] +/Subtype /Link +/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> +>> endobj +4830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 294.3752 133.6164 305.2791] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4831 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.1145 294.3752 172.6397 305.2791] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> +>> endobj +4832 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 281.4237 166.8215 292.3277] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4833 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 281.4237 221.3367 292.3277] +/Subtype /Link +/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> +>> endobj +4834 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 268.4723 166.8215 279.3762] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4835 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 268.4723 220.2307 279.3762] +/Subtype /Link +/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> +>> endobj +4836 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 255.5209 166.8215 266.4248] +/Subtype /Link +/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> +>> endobj +4837 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.3196 255.5209 213.028 266.4248] +/Subtype /Link +/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> +>> endobj +4807 0 obj << +/D [4805 0 R /XYZ 90 757.9346 null] +>> endobj +4812 0 obj << +/D [4805 0 R /XYZ 90 611.208 null] +>> endobj +4804 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4840 0 obj << +/Length 1472 +/Filter /FlateDecode +>> +stream +xÚ­X]oÛ6}÷¯º˜Y^~‰ †a[»Í0 ëòÖ…")±QÇö©[þý.%Q‘DIt‘",[‡÷^ò~@Dñ"C£XÆÄp¡¢ô~A£;üùÍš×k|¿î~»^¼¼d&2Ä(¦¢ëÛ*‚"°è:û°CWkf—åÛwø(é­.·»¼~z}HËû|_$Åö°_}º¾Zü~ݦmXI®À&ýgñá2dwµ „-£ñ %` ‹î‚q÷e·ø{ñW§~Q5ëœ>Þ;a®{ {×½Ó„cW€Rº,·Ç—øÿ99­@/Ó Ù ûø>¿Í«—ù>Ímëà@Œ”Up,®ÍôSpMø×y‘`¤¬)Wþž¶GW, Ä;c`ãXʦŽó:OwÉ©ªìCÝüp[&§t³-ò´(O LJcžn?RÊÒúûm¹O«†d8(Z +:ŽׄÊGKê@ë.ÊŸ4ÚJ9Æ’”P!eEû×æ/‹Íát1Ì ”‘˜3˜OÞ¢F²wË4&1pù­JŸ%÷M±Ëý—Ðe¾{¨‹ Ði­\âĪZýäQc¢M¬Të×_"÷ôG‡¶k1B[ui{‘-iÿ’!cdKÒÃý‹9 +I›ùÒµ(ŸC¯ó~4Ëáç‘9¹íB2”2ΉzjÚ¹¶ßV¹*ö¶ù´¿ïr¯šE¡˜ŽP")oØÛW§»ó¾;~Ým02¼¸–]-çJÊÃ*RJ”áCÃ*:T »Íf'MU¯ŠàBBL¢‚þ°Ý§»2C +´ŠÈ›l^L8 Y;Ã¥S÷ˆã¢ÛÊ”ž\º€1Q)Ô…OqlÂŒI_ÌÖóPA³[T(/šµ¡Jõó~]1t½mæåÆj9È==Ÿ>Ä‹ÛΧ,ãÌ7 …K +W8T(ylˆP‚JO%õòjtH úìî;|ˆ·ê¾þ\Œ I˜Ðà·(?/ˆžÁÕÝ {Nùˆ#áil]ûöáÈÙ9ΈŽ¹9·<->P?nUP#õ‘’H…n9_‡ +%F›£Ò fÆá +gøÂŒ à¶÷r„jÖK=¢Ï¼î¢+’F(QÍ ÜàÐØ觠–Á«ätzl¶&eÑìMêÎÖ7[÷S–U+™dŠî ;Ë´! +8W$N€)1“kaAëf¬&£ÝDèÜ-ÄÎázìFgp\H(ˆYz¸Ç14Ó¸3vÇ çp}zhéæËCyïû”&±1³×Êm€0Ü7 nÌÀÊàRÙO;Ý{‡2Æ–?NVNÙ|ÇÈOÛ7G0Xæu|ÚݦöÆ®žå­ï}Œ+~nZ| @~Üé)t>¨C…+ôG,g?ñ.ßÏÙ£ÀÅŽ±þ™rÚ»è{laµ=îÒr—Í­Ø4o÷E~Úç;¦+ËMžÚÁªDTû©=¹|Åsg×T›µgÑêH +°œôT£^”QßÇSí>w!Ou°°§v>ßSçÙµžÚeðÔzßî©óôZOíÑCOÝ'\Õ("…µÕ–ëÊopê +*ƒ‡¾ê6ß³"œðX°3EÔAωÈÁfEÔ\Jmò$s2™Òí é1©Õå@á‡qgY;­ääŒÔp_(@òï#5°§€z/4'5 K­ðùR›g×J­Ë. µzß.µyz­Ôzôp”‹tBköƒg76KsÝ¢åõÛþè«5*ˆD¹ž©µzNk6§µëWïž-°1QÕkÛ>{z“YR$“Rã†ã‰ ÎRgV–|TjG”TϺ—®ôª± pÖ½ ­ŽûÚ–™3lh¯ q1«ªÊoò}~Â"7Ýv7hº‡+[ä²ù¬ù¤Œ_°æ'œj.zWL.qù7õ7îžþ¿Ç»Ü»¡·WçŽZ§Jÿ 6> endobj +4843 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 274.5352 657.906] +/Subtype/Link/A<> +>> endobj +4844 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 201.6901 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00204) >> +>> endobj +4846 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 532.8737 177.9699 543.7776] +/Subtype /Link +/A << /S /GoTo /D (a00151_g6832e4d2d046536b6472f7ac92340f68) >> +>> endobj +4847 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.7856 532.8737 201.4916 543.7776] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4848 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.8776 532.8737 256.5649 543.7776] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4849 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 494.0194 138.5977 504.9233] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4850 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 494.0194 189.7953 504.9233] +/Subtype /Link +/A << /S /GoTo /D (a00151_gb6683dd83fe1c8de9a24086d4b69e907) >> +>> endobj +4851 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.6109 494.0194 218.2983 504.9233] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4852 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.84 494.0194 266.5273 504.9233] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4853 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 455.1651 138.5977 466.069] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4854 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 455.1651 197.5461 466.069] +/Subtype /Link +/A << /S /GoTo /D (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) >> +>> endobj +4855 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 416.3108 138.5977 427.2147] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4856 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.0958 416.3108 201.9695 427.2147] +/Subtype /Link +/A << /S /GoTo /D (a00151_g85b65e38aa74eba18979156f97a94a87) >> +>> endobj +4841 0 obj << +/D [4839 0 R /XYZ 90 757.9346 null] +>> endobj +1115 0 obj << +/D [4839 0 R /XYZ 90 739.9346 null] +>> endobj +386 0 obj << +/D [4839 0 R /XYZ 90 739.9346 null] +>> endobj +4842 0 obj << +/D [4839 0 R /XYZ 90 716.7484 null] +>> endobj +4845 0 obj << +/D [4839 0 R /XYZ 90 551.8236 null] +>> endobj +4838 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4860 0 obj << +/Length 1799 +/Filter /FlateDecode +>> +stream +xÚ­YkoÛ6ýî_a´À`Ë÷£ŠµhÚµÛ€4Í0m¸¶’µ­ÔuݯߥDÊ”)“ZFléèžÃ{Ï¥H‰Œ1ü‘±Ác%2ŒËñ|5Âã[8ürDÜé38ž]½ fl‘TŽ¯nê’ A _-ÞO4bdzFžìËûGð¹žm¦OîѼ9ü¢\Í·Ë⦀szR¬çöÔÜLˆ!ÓW¯GçW­ +'R0I¬†/£÷ñxb_0bF‹ñWø1†ŽW#N™ÿ±½½iã4'ê úÆ*ë,áŽP?Z +ƒWá` Æÿ{´0Ä&6AFˆ:6¤Ú†¦úùèÏ‹Ý "-šPÏ‹í|SÞïÊjí± "6ŽUlš8¯V÷ËbU¬w³_¨nšÿ»;'îéå…û²XlŠíÖKÞVËý᲋Mµ«æÕWH „‰VcÉ4³ÞüzÐYˆŠ ¥ ˜A,æBÔƒx:µ†ÚÝU›ÇÇÜS¤%iòÕÃ&`…aâ­¦_ÌV.õûõg[àb¹mROHpµ¤ˆ3.«¯ú9’ªÒFÉ#©ÍéÏcÿí·@¶¿¢G¶ eG‘­€ÈþeŠA-šW«c=T1è*mÒ©kQ±†ÎàãhVÓ‡žíCRèkð„E>/>`L×åÁo¥ûo/‹(›ZDR=–#™SoOmnæ2´€ÇŸ…ôX ŠkÕ5½mûúX†à*ŽdûÏ£räQ4KŽ\e'‰Ø‡$ +IÊy }X®çËýúZ¼ñÀ˾{`Cع¡³.8¶²`Hݱò‘h¥kÛݦ\ߢ»žH¬I±>é›ú`,r®`r`Á$ACGÛž;‚ qLùÉÛVèës ­ªù!Ž%ü@©ˆç;)CS'[TŽn&KÙå}¸p#ȹDŠ*rD~Ú㟓ŭ§¹Ë‹ëËó7v~ûóüíU4]4Q2‰•‘@á,Úu%ôÝü rºÒ‡ó©B;T¾Î º ÌIÒ¶Êé€"‡ÌCjœÔpõPá‹ß¡Äxò.*0&Hr¬“)hAizŠ¡‘zÚS]X§ nŒ8YÞ¨o Ë8Éx¨p†×—¸Ã›¯q—|@‘32¢¸¾Ì¿þuõîâüúüêרÌLÂ7LYo=*£€2ƒ8Lç}mÌ•A‚ëÓ}R…ö°|¡SŒA¡Ó¼m¡CÞ…î)tZF×ÊxVÏÕ/"RÂ"š«L<*G-a‚6a>ëÌcíîüûù®Y¨ÁJãún±q‹®Œ9,¿!‰Ø]‹YϺ­ k1‚üY—D5‘C³Ûâ3CŒãú5ߧ)…ÇM$DÃîDÉt‚=(G~Ër¿ÇmúúÊ&ŒT§û(¤úÈÃò}”b ú(ÍÛöQÈ; :äCú(-#Š[o’/Nu’âHK’ËGåÈa›Æ`ÉÛM}O#»»òT+)X73ÿ»•¤@Œ“Á nñ™1Æqs­d$¬`£ŸLq‹ÊÑGÑŽº)Ú{Pì#‡{ûõÜîDûö,¯8O,Y@ª=,ß)Æ Ó¼m†¼ÛªTå"â†l ¸.÷éôøœŠ(n°½¾.aÿ)Ñ Iæ«7 •ã×PnlŽ’ýçÑ7íÚÇBDÒ1ôÒwôÔ£Ÿ…èZˆÀc B$¯…PӾч õLd€Ì–å¿Å©Gt«j±_S"&è¤LÈ…æD¦e:•„B/Ói¦0ÒÓŒ™[XÖÌaÀ„™3¼ÞÌÞ¬™»ÜÌœQŠͼ+WÅ&~^Dà`h& •`l¥9JÿP; Œ}´=ÌÎ:eg³J.¦îf›²Z”ó#ßo¦\Lªy±Ý–ëÛæØ›uO;›Û;›b?ÆÙŒ" YÎ9ÛÃòΦœæmòæÝáâì´Š(nèlø”ëØÙ`AI‰œíP9àlj(=JÿPgƒ°!f ³tÊÙæöØ Wÿ{^­ÚÇkfs;ˆæUÂn{ÚîõÚäǸBB‰&2ãö–u{0áö ¯w{‡7ëö.÷·gTDqC·WûÞ5 –Xe’àQ9z-°ï»Éèuª4¢LÉa^Ñ ¯·°zßL™š÷ÅÚ½<‡eÉf]¸ÝÊ]1[Îð»Ê= +ð¯÷»OÕÞ_÷ª×ÿþ +ÚnÉSº×”_Ýïuá߀z–m«ÈÖ¨CÜöZ£ý˾ØîNö• +ÁˆÕ°F«·¤wÏ¡ªD +ù]/ªëvÕp a4|I*‘QLû÷Ðîêó²X›ÙÎgÇ¿?ûÃymW‹{÷ƒP÷?¦ì1ÅÍ/Š±ts×”Âtæʹ÷#È?}soB«¾ÝÑMÀºØK òómñûžendstream +endobj +4859 0 obj << +/Type /Page +/Contents 4860 0 R +/Resources 4858 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4756 0 R +/Annots [ 4863 0 R 4864 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R ] +>> endobj +4863 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 636.7045 274.5352 657.906] +/Subtype/Link/A<> +>> endobj +4864 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 607.3502 196.7088 618.2541] +/Subtype /Link +/A << /S /GoTo /D (a00205) >> +>> endobj +4866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 515.6229 216.8139 526.1532] +/Subtype /Link +/A << /S /GoTo /D (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) >> +>> endobj +4867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 503.2741 202.6371 513.2018] +/Subtype /Link +/A << /S /GoTo /D (a00152_g06ba7b414e718081998f2814090debf1) >> +>> endobj +4868 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 490.3227 237.9346 500.2504] +/Subtype /Link +/A << /S /GoTo /D (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) >> +>> endobj +4869 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 476.395 167.0009 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) >> +>> endobj +4870 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.2853 476.395 281.0723 487.2989] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4871 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 463.4436 175.8576 474.3475] +/Subtype /Link +/A << /S /GoTo /D (a00152_g9f2196e2705036869611962425e404bf) >> +>> endobj +4872 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.3448 463.4436 297.1318 474.3475] +/Subtype /Link +/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> +>> endobj +4874 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 406.5914 184.6146 417.4953] +/Subtype /Link +/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> +>> endobj +4875 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 367.7371 192.3555 378.641] +/Subtype /Link +/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> +>> endobj +4876 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 328.8828 191.7978 339.7867] +/Subtype /Link +/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> +>> endobj +4877 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 290.0285 184.0569 300.9324] +/Subtype /Link +/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> +>> endobj +4861 0 obj << +/D [4859 0 R /XYZ 90 757.9346 null] +>> endobj +1116 0 obj << +/D [4859 0 R /XYZ 90 739.9346 null] +>> endobj +390 0 obj << +/D [4859 0 R /XYZ 90 739.9346 null] +>> endobj +4862 0 obj << +/D [4859 0 R /XYZ 90 716.7484 null] +>> endobj +4865 0 obj << +/D [4859 0 R /XYZ 90 534.1992 null] +>> endobj +4873 0 obj << +/D [4859 0 R /XYZ 90 425.5413 null] +>> endobj +4858 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4881 0 obj << +/Length 1913 +/Filter /FlateDecode +>> +stream +xÚ­ZÙnÛF}×WÍ‹ô ÉìKPMk'uŠn¢(’À`$Ú"¢ÅÑÒ$ýúÞ9ÔCÎh`ZxxÏá½çÎBŠŒ1ü‘±Ác%2ŒËñb3ÂãøúåˆT‡gp|æ~™ž¾ fl‘TŽç÷ç’ A Ï—ï&ÄÐéŒÊÔäts ož„Ë7/Šu^¾»Ú-N›|{ÌŽÅn;ý05ºž×´•*Á$±¤ŸGï>àñÔ½aÄŒã/ð#b oFœ2÷a=z;ú£ŽS8ŸÐuq‚°î«#Á7Ô]…«UåÕiÄàòÆxr*ŸÂÿ]¶Ÿï€z7ȇÔ;.#ˆë­fïŠÇb.haÉÁ…J¤Á¡RüA´sú±ÀðOºÊaoé/·ˆ•ÛÁÒåŽ1zåŽóÖåöy”»A>¤ÜqA\WîC~„5f¶ טÃ$«¥ˆ'¢F%„Ñ\ÁsKÞUu·îcZ#¡ ¶HôÑ‘l ³2Þ>æ‹ÂVä[ëGsEûúù”áɯխ›2¦`/tè]Þ¬[0j&¨Íaƒ Ú‡ÝCǬî`VÉm¹ByÌÝcÎ;tå(¾sO€ÊWÈÝÇÝÉwÓÙ­gF‡¼šŠûòõKõy›»SŽåP+²5j×ÍVjÿ|ÊÇþF³M$¤þ>†9‚ejrq°t£ycç­ÍçM7Zƒ{H£ÅUqýF;›<¼GmbÂÐD*%&Íi¥`«m•dàBÜGGZ­†[mª¡%öÅnY,Ú³F×LS-Þ{M”F S1P±‡îÞ:Îí¸P.áþš:ÉöEöqÝy{œP‚¸Àý›mi•–l•#8Oûô4ae×()u×Pç¶t턉Tˆ+C¢*)âfŒ¤Ji•€{R*®Keçv†9!aÛ-¡j&°uLçü‡A‘Bþ¯Sœ}¢áÂlìJŒi{‰vCìï&¹<~™oó}vt†{æûÚ½ye·§ê¡Õ+~FÙ3Zýj„b,«.›Rh¼j† ^òñ›ûqÉ×oy°¶»“æeé?L›‚]endstream +endobj +4880 0 obj << +/Type /Page +/Contents 4881 0 R +/Resources 4879 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4756 0 R +/Annots [ 4884 0 R 4885 0 R 4887 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4900 0 R 4901 0 R ] +>> endobj +4884 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 638.7618 274.5352 659.9632] +/Subtype/Link/A<> +>> endobj +4885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 609.4075 197.2667 620.3114] +/Subtype /Link +/A << /S /GoTo /D (a00206) >> +>> endobj +4887 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.5376 534.931 188.6792 545.8349] +/Subtype /Link +/A << /S /GoTo /D (a00090) >> +>> endobj +4889 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 453.1522 237.3867 463.0799] +/Subtype /Link +/A << /S /GoTo /D (a00152_g3e1562e8a6de32268e5df92a52152f91) >> +>> endobj +4890 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 440.2007 226.8662 450.1284] +/Subtype /Link +/A << /S /GoTo /D (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) >> +>> endobj +4891 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 427.2493 231.8475 437.177] +/Subtype /Link +/A << /S /GoTo /D (a00152_gbb558f3a9b1ec015e83c314aba694e35) >> +>> endobj +4892 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 413.3216 198.642 424.2256] +/Subtype /Link +/A << /S /GoTo /D (a00152_g737337d6a51e31b236c8233d024138a8) >> +>> endobj +4893 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 400.3702 206.3828 411.2741] +/Subtype /Link +/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> +>> endobj +4895 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 317.6152 184.6146 328.5191] +/Subtype /Link +/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> +>> endobj +4896 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 278.7609 191.7978 289.6648] +/Subtype /Link +/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> +>> endobj +4897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 239.9066 184.0569 250.8105] +/Subtype /Link +/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> +>> endobj +4898 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 201.0523 192.3555 211.9562] +/Subtype /Link +/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> +>> endobj +4900 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.9104 118.2972 168.4754 129.2012] +/Subtype /Link +/A << /S /GoTo /D (a00089) >> +>> endobj +4901 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.9735 118.2972 218.5572 129.2012] +/Subtype /Link +/A << /S /GoTo /D (a00152_g499bb98a0b4ae9a98553ede81317606d) >> +>> endobj +4882 0 obj << +/D [4880 0 R /XYZ 90 757.9346 null] +>> endobj +1117 0 obj << +/D [4880 0 R /XYZ 90 739.9346 null] +>> endobj +394 0 obj << +/D [4880 0 R /XYZ 90 739.9346 null] +>> endobj +4883 0 obj << +/D [4880 0 R /XYZ 90 716.7484 null] +>> endobj +4886 0 obj << +/D [4880 0 R /XYZ 90 553.8809 null] +>> endobj +4888 0 obj << +/D [4880 0 R /XYZ 90 471.1259 null] +>> endobj +4894 0 obj << +/D [4880 0 R /XYZ 90 336.5651 null] +>> endobj +4899 0 obj << +/D [4880 0 R /XYZ 90 137.2472 null] +>> endobj +4879 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4905 0 obj << +/Length 2075 +/Filter /FlateDecode +>> +stream +xÚ­YmÛ6þî_a´*5ËwJAqè6»I“kz¹ ´h‹BkÓ»jlÉ•älößßP$e½YrzA°1E g†Ãç)2ÇðÌ#ükKz•€hƱ¬DW ŽQ@^˜¶í£Á±0ð6=M£|Ôñû$½·OTqždG§eÝE¶é¬‘mtÖšNÈ®… ÁÑ>Ùqçlïc»üv|ì L瓳°uÞu§0ä«) SNÒ2`1d©ÉLVÃMÇSvÌmÏ!ÏþÒëò«…Aa_n’z²<Ñ…•IÒ¢ÔñÆér*ô&)«ð ëNÕ½ "øï;gò Ÿ“¾°>ü¦].Hð—ö0¤’Ǥ|ðŠ¨ bkŽ6Ál’¢Ì“»5 †Ø£ZH!I9¯„®µ1š&§”¸ßSðZTÿ$ çBDˆâˆ[èšWù½“¹mòßË/›øßÓk¼«sv׋ˆ E¤ãE7÷x©)Û=mÆ6r’-a¯²Ä/“t½;n`9$ì fU—À­Y×3ûI„B¢D5ø] ,YÛ˜¯Çö„Éeõ  C¡(' +Š0XÇ®÷Î q<‡–e'4 +]Z›ÜL/ ­ú7›\EKÔ?UsŠw»§…Á×ÐòÀ!Ñù’Þdk{~~õöÏåW_¼úåæzÁqpu}}kT)››Bi¬ÚÃfóK ‘(JL(¬D?a3¡Ÿ-4bûSô:1cÖVCšm´³jWÙ«ÂÖa€Ir0œêrï‡æ§&¾D½5i+>îJÛ‘gÇR/¨+lߣÞílË÷Ø€Æ ´òT»ÁÎ>L\àÈMº#&öŒ™”'ÇšŠ›ëkdr=”câÃa—¬“øÎWSv]«<²=/UçsÓ¾sâùуÜäÆæ?íŠïÌ`Úº2Á©Æ9+¥Åþ9;ë‡8½÷eZ•úà1)mËå|h¹œÊ\q¤°8_†7†* EJÈOzÌD~§Tô++E¡œµXKMÙ… +9ÂR¶í~¹±‰¿Ÿà¹DŠ*Ò1~>Á{ù)7zz†ôm~wK% +Þ›ºp<€ È‚¢ ç’5¥"§#Ã’AõFEÄjž‡à±ä•Çp–À + +áZÌn˜À›}’êâ˜=&ãÓžúÑÃÐ0<[˜ò p*}ÙŸf}zß™”ˆaÌÇ'êæI`“€²ï1[Ò0B‚“)ÔÕbUqë‹©nº´‡—fÞ¼ºu}¶9îÆöòl8ݹ¸óЙ{ªhÌÓ›«ÃÁóÿ#íR"ÒK#Ö®ï«N … $·—->S§€N]B R~–hM¢Õb“Dµx"Ú„]O´–Ýi¢µ_@´ 7zz=ÑV«{N„aɉx©)Ó!Àƒ@~n™–üøH$¦â2ì5„GÈê¥Üñ±½A˜8J \&{Ý.ŸwÉX+AÚ…¸|ˆ×æ¼gomJG±6Gæ§ÆÕ&ÁYÆ‘#@ ù,[‘°ß’&!™P‹M2¡©p„ v=Zv§™Ð6~&ÜèéõL¸½¹z÷îæÍ÷?Âbâà×Þ®Ã(T1|*ÕUýÔ]‡ 9…c'UáØÜ×sŸ7SØ;²¼ìܬ£ÕM«Ý!. +½¿ƒC­)Ljbõ™@ +G%Ø$H½Ø4H +Ç@:n·iÓî m¿¤ãnôô¶@ú盫_®ÌYòåM¿6RHðD8j© ?(‡*GtÜàø,@àj²èBÌ7¤Ç@ïÅZÙ{LöG÷Ù䔵ã´ømn.[bøû}–›õÖcì¯Gü•p]´u¨a3zu½·5_Ò¶þçN¦UWßV‘Wèö¨À¸€Òæ 7g¹ÁA—‡1 2 휉½ †µ#Ò^üão”=CBmÖtPk+ ´û ™ˆ+›Š^êTCç«QŸ‹ÞøÆk³þ +ŒP÷‹ŸQöŒbû’nÅÌw–æ'A+p{G½Î>>Ýë´NóÕ»ÖˆÏÿø@èëendstream +endobj +4904 0 obj << +/Type /Page +/Contents 4905 0 R +/Resources 4903 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +/Annots [ 4908 0 R 4909 0 R 4911 0 R 4912 0 R 4913 0 R 4915 0 R 4916 0 R 4917 0 R ] +>> endobj +4908 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 630.6989 274.5352 651.9003] +/Subtype/Link/A<> +>> endobj +4909 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 556.0563 192.2954 566.9602] +/Subtype /Link +/A << /S /GoTo /D (a00207) >> +>> endobj +4911 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 392.5288 225.9098 402.4565] +/Subtype /Link +/A << /S /GoTo /D (a00153_g51195ea7cd5aa387a87f9d3b23905b62) >> +>> endobj +4912 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 348.6697 246.7912 358.5974] +/Subtype /Link +/A << /S /GoTo /D (a00153_g9069474ea570fd78c481aa164317dbaf) >> +>> endobj +4913 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 304.8107 245.6755 314.7384] +/Subtype /Link +/A << /S /GoTo /D (a00153_ge0f8cbeca9731af2171ffd37e79de893) >> +>> endobj +4915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 210.2945 187.0159 220.2222] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb61381673de27f31848c5396bf0b338e) >> +>> endobj +4916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 166.4355 233.6306 176.3632] +/Subtype /Link +/A << /S /GoTo /D (a00153_gf963fdea2b75d27ef31e92d1d01359ee) >> +>> endobj +4917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 122.5765 248.0566 132.5041] +/Subtype /Link +/A << /S /GoTo /D (a00153_gc3882366feda1cb759ccbfe98327a7db) >> +>> endobj +4906 0 obj << +/D [4904 0 R /XYZ 90 757.9346 null] +>> endobj +1118 0 obj << +/D [4904 0 R /XYZ 90 739.9346 null] +>> endobj +398 0 obj << +/D [4904 0 R /XYZ 90 739.9346 null] +>> endobj +4907 0 obj << +/D [4904 0 R /XYZ 90 715.6224 null] +>> endobj +4910 0 obj << +/D [4904 0 R /XYZ 90 491.4899 null] +>> endobj +4914 0 obj << +/D [4904 0 R /XYZ 90 228.4871 null] +>> endobj +4903 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4922 0 obj << +/Length 2097 +/Filter /FlateDecode +>> +stream +xÚ­šÝsÛ¸ÀßýWh¦•Œâ›À½ål%qÛi¬ô®½»ñÈmsªŸH^.ýë» E€j<ž±@r¹»XþX€$# d¤ñ( ÒŒËÑb}†GOpúÝi.ŸÃõs_àÇÙÙßÞR=ÒHK*G³ÇJƒ$HPBG³å/c¢ùäœjÊ’qyõ š Âuãm¶JëÖåvQ®ÓM1/²ífòÛìÃÙtæÌ6^ &‰1úûÙ/¿áѼûp†ÓJŒ¾ÂFDk:ZŸqÊìÁêìîìNO}¡ºáXçaÇ{GÒBPÛ= +½MêÞ}¹lº´Øn~Ř>•»ºÕÉí‹içǺƒ9"TÒþ {µÌ 2Áq¦ø^qæWJÅ¡-‚á.*XØ¢“ŠÙ%i,eÛî_–©éû&íç%4!ÆÍ¥ÝS#óÙwÃÊÇÜèè­žÅÕ§{ó<P ’ŠE" °A@DXÒ¢ÿH¸@K%‘Vj‹À#nJ^¹  àD«‘3nÎ&šŽ·‚ÇOÕ¿Uš×´|M‹çtW·Wyùò²ÝÍÁó¶\-ëöCjÁ[¿@5g3K^£g³-P‰Ú{™H„©NÂ]mzJ"\^^¥ÄH)?mŽòêÄ¢¼ú +¼FìZ^[v㼶à5âFG¯ÇëýÅûéÅßï¾\ߺDB‰(gš©SÑå %<‰‘ÛHÁÍ ]Lˆ?§‹ Åãÿäå:ïÇ·Ì-ºƒe%J‘×A¡1b©8°{u!^ƒF®žÑ´ú–‡ÀôáPk ÕÛ››.¦BEŽÑˆJq2¥Æe,x S+VqúÜ°µžÿ™­Ëu}0_oËM3Žnݤ½(w» Ô&©½æÏè›tQMà½< +¥‘àR ëŒ/}¼´C(Y3Q\üµ… ‰žGø¾@€|'E?hqÏ~Ä®…¿e7NÛøü#ntôÚx3áx|1»úçôþöÓô¦“Œ#•(‚Ñ  J§'æ€ç˜FòÀ‰Ÿ/Ó"Ý­³Íá0Ý*)í°»}I7Ùæ©Ã~#¶›p1Þ6¹ä +ù!Ioòp  )ÂNÌ{‘=ˆ1ÌXi_aéˆ]‹tËné¶ñHGÜèèµHÏ1©ká` 4GLèS f.¡×*Vv8±þñ|S®lµlÇó.¯Šù&Ý–ùêÛžëºå§Ñ‘CíEa¥ø*•°‡°öŠ­:­XœNOaˆÎ°]G§ow-ãCè »ÑÑkéüxu7›Þ|ºý<‘ðôºœB1È ˆ¼®ãôœ¦Vìû1]eyá ÀŽU3R(5Z+ú*”2Hi%‰PêÄ¢”ú +”FìZJ[v㔶 4âFG¯«‹?¿»4•Á› !Ä,’4Q…N` +óW$$)Iʼn°²Ä”ÑÙ‰^8˪V®–®`^΋¹[¹eæ©,¼2õ»*&!è"V^Å[$¦ÞV,Ž·§0„wØ®ÃÛ·;ï–ñ!x‡Ýèèµx׃ñmwgMßc‘°R1`uÄ´ÔmX/Pnó„©9âI‡rÄŠµôl“Ù|UÔ«Åbg¶8æ›|幃½ÈÖ0¦–rXoîˉ&©^ÊUžöíŒ2$ׯÃ>VˆI[ñ9±8ûžÂûa»Ž}ßîö[Ƈ°v££×²ýæçÿŸ»:FŒÂÄ „“Šx@ E +øo{ úРš@mJé0ô}éúNl>O¼Z†Ë}-ªZ~ ÐyÝœ×Ryjfçu=AÀy7@û¡Ñ{E2^gE-•”™zŒDcĺ³¯ÜTÏ`K—½‰EF4aìU‹J *öšÆ‰EËWH¬ˆ]›X-»ñÄjX7:z½Äºû×M_n1x@‚ñp,œTÄ ³JHøÁ#½pð +j<°òò¥C©eÅö©•0/µàÀ¥VÂëÔ‚s6µ 9¯ fu£cpO•EËúð¡±Ñ™¬šƒK­Û›hehªE~/Ó¼hL×)ñƒ`@(`—é™-ï–iº¶ó^±­Ÿç¤¶´ëñr“—‹Ešçåª?[©„ Ò×Y‡›ñXÓ$¶wbñlõ†²5l×e«ow@¶¶ŒÉÖ°½6[¡ü¿¿¾»;6j.T8 +N*bžÑ—‡ÑÇ~4KŽ/oï®þ=­á9ovëÍ6ÁÇ÷÷§7óà6ü—@ éŒh†É°Œ÷¥ïÄZu¤[FµvÚ¹\mü75 Û›DA¹ÀÈë¬ú‰4¯ÇelÕïÄ¢9á+ äDĮ͉–ÝxN´ȉˆ½nY4½˜š7?]Ý\ÞN˜ÿÔ}{«JF"€vàçÄ5¿¹Mp%bZ±‡`­©Â^š/ÿHwEæ^ÊÖÃÿ"Íàô_ §ö[…l³Ü~ÀÑO)Ó¦ù:”RX˜q.b”Z±8¥žÂ¥a»ŽRßîJ[ƇPv££×ÜW×€è„P<~s5«o¿Ì:¤&°àÖ‰ +ÅIE¼ª̵¼zA_†¥H¾'"ߊãïÕz—uk7X燯ºÛUy1ÿv°zw#yWY…ÕIáa[KÄø°B† +D1>ºŸ‚!ÔD +ù]ÂU9ë FóßFK¤«ÝÇ£p#_à©ÞÌÆïÒMº›»M ´kÛø`ú_6„6¿øÊ~ ÍÐ-Ùì.N¨p}t? |øf? üóÛSÚù$Ð|«g]ó¢ô?ÅÞ'endstream +endobj +4921 0 obj << +/Type /Page +/Contents 4922 0 R +/Resources 4920 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +/Annots [ 4925 0 R 4926 0 R 4927 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R ] +>> endobj +4925 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 701.9494 188.6795 711.877] +/Subtype /Link +/A << /S /GoTo /D (a00153_gdcf372ff9748996f7c05e9822a615384) >> +>> endobj +4926 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 658.7078 254.552 668.6355] +/Subtype /Link +/A << /S /GoTo /D (a00153_g92f3344ec8ca46893163399c89fafed5) >> +>> endobj +4927 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 615.4662 227.424 625.3938] +/Subtype /Link +/A << /S /GoTo /D (a00153_g196379ceb1219a99f4495e41ccc9bbfb) >> +>> endobj +4929 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 522.401 235.8724 532.3287] +/Subtype /Link +/A << /S /GoTo /D (a00153_gac0de06236b02659460445de30776e00) >> +>> endobj +4930 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 479.1594 202.5175 489.0871] +/Subtype /Link +/A << /S /GoTo /D (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) >> +>> endobj +4931 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 435.9178 233.4713 445.8455] +/Subtype /Link +/A << /S /GoTo /D (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) >> +>> endobj +4932 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 392.6762 215.0208 402.6039] +/Subtype /Link +/A << /S /GoTo /D (a00153_g51c1cd531ff0afb81620151f2248cd21) >> +>> endobj +4933 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 349.4346 187.9025 359.3623] +/Subtype /Link +/A << /S /GoTo /D (a00153_g15de27b044603284f68db05a378235a7) >> +>> endobj +4934 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 306.193 211.3245 316.1207] +/Subtype /Link +/A << /S /GoTo /D (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) >> +>> endobj +4935 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 262.9514 231.2496 272.8791] +/Subtype /Link +/A << /S /GoTo /D (a00153_g24aa5bc36939cc9a0833e1df01478a7e) >> +>> endobj +4936 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 208.1483 211.942 218.6786] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4910467b83a639f06739c82cd362037e) >> +>> endobj +4937 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 165.5093 259.1549 175.437] +/Subtype /Link +/A << /S /GoTo /D (a00153_g5b9dba2123705bce1ce95c3deca0bdad) >> +>> endobj +4938 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 122.2677 272.6941 132.1954] +/Subtype /Link +/A << /S /GoTo /D (a00153_g2bc3b489923793759526a3181eb667fa) >> +>> endobj +4923 0 obj << +/D [4921 0 R /XYZ 90 757.9346 null] +>> endobj +4924 0 obj << +/D [4921 0 R /XYZ 90 719.8332 null] +>> endobj +4928 0 obj << +/D [4921 0 R /XYZ 90 540.2849 null] +>> endobj +4920 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4941 0 obj << +/Length 1952 +/Filter /FlateDecode +>> +stream +xÚ­Zkoã6ýî_a _l ÃáSû-™dR浉Øݶ[±…:–kÉíÌþú½-™Ô´A„¦Žî=$Ͻ¼¢LÆ~ÈXâq*R$OÆ˧¯¡ûfDÌåWpýUp9½~KåX"™Ðd<l,$ Jèx¾úe’!Ʀ¯¨À“c± ¿å¾FÝó¶Øæºu›?æ‡)É&ùn©ºRƲ ‘búÛüÝèzî~‚%D¹ÿcôËox¼žïF1™‰ñ_ð#"%?8eöÃvt7ú—³£/47ô SÖ?NB‚ÚRwªÇyqûYeYî~Ř®‡E]”;Ý ƒ†vÕ7œ"†Óó³ý|]“`­É&8AœeÜYQL~¥´3oÃMT° ;Š8%Iœ$žÓV¹õ.ïxæ JiJ|ÏêÊam ·mápjUqø2û|Ë0ŸJ6¹¸¼¿›ý÷ú” eÁ½‘y 0ÀŒ3ÅIÎÛ žIKIèøU")b`Ùòxœß„7|A)8•ÙØ¢ßùƨ¿*þgZå£þ_ÛKNVõâ‚…ˆ ê®­fdqÌI˜®aK(™ð³²K’ qAcºs°¨ðÚÊ‹øµÒóüƵç; ¾ŽÝ–üî?\üûbÊñä¦G}¦‡ç‚"(ƒìDyês Ÿ•‡`Hà,¨æ:$g óôü´øZŸt{1%x²VN$~¢ì¦™ïêC‘WÆJ¾¨Ž‡)K'ùJ÷&›\o*ßZ•CÞ]U烃S$806úº?õ'6¶f)`à7ù.?,¶+ÿ‹L D¦ç·Û6 ‰Ä ÇçHŒøµ‘èùG¢ï|@$FhtìÚH¼T’ûò¶w€µêil&0ŒLïL“ŽH1J‹Žƒ ÝŽ3.ûÅrJñä÷&¤jÝ÷ zŽª€jê(BÎoBH”Jž½È6!`þ3•­"âÔ06@œg gÛïqz·ˆ3L£c׊óN×(ÍBÍgwóÙ›»ŽH)¥¤YdFC’ˆì{EÊʤä1‘Z˜â}•×ùá©ØÙô\ØÌ[Cž«êbiú«ã~_Œ0«MyÜšìýÛù´‡ÂßåôóJ¥‹—Q*•™$1¥ZX\©-ƒ!¥†ý:¥¶ýPªç|ˆRÃ4:v­Rߺ¹™}¼é¨tG¨Rgx¸pêXHsÉæ‚DÄé`!qnKW~¬‹ÝÚÏ­ËüP/lMÑÔÖBR½€ryFΠñÊå‰D„ñ,¢\‹*·m0 Üˆ_«\Ïo\¹¾óÊÐèØuÀ­*Â?M™˜\\½¹€”ÛÉ°ðÈyl> ‘Œ~çà ‰³˜†-L‘¾ J‰ÐèØuÕð³2z^‰Àö,#AÕ®9é» +ªÎQYËÉæ‰ùá[mõÕœ»â¤s6ÖN†\ªÐs ±‰ÅŽLÈ?ª"TßH¤r`’o£û“<‘ðP"©}ªÕòé;7&)×K}.PÚ€@ 8X4P‚Ÿ%â׊ç7(¾ó¡Ñ±ëÊùÙ|þþúþúãÕì¢[ÔsŽ’Dòð\8T„åJø„ã„ö­wBPšŠó/ŠÛ€Ðz[X|½C[ëöëÖ»íwÀz{·¬w˜FÇ®KŒ³›s‹M3HO$ O„CEPx  e>BïûRA„÷¿—À`Jøä}ý¡L·FÛ¹(A2e™ývƒ!ñü†«¶µ‚ͤlãʧGûzŽÚ×t?QöÅúÅ8Ñ­Ç)*§ûÙ— ló¾þU~ý¶Îw§Ó£¾›Ñ3?ÿ}¥Ž¹endstream +endobj +4940 0 obj << +/Type /Page +/Contents 4941 0 R +/Resources 4939 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +/Annots [ 4944 0 R 4945 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4954 0 R 4956 0 R 4957 0 R ] +>> endobj +4944 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 705.1301 233.1426 715.0578] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb1455b27c06532a399cf06d2c1d6d08d) >> +>> endobj +4945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 666.2758 236.4303 676.2035] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3090117ef3ff5775b77cb1960e442d07) >> +>> endobj +4947 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 583.5208 209.0629 593.4485] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3589822ecb9d9c4145209756396b8a6b) >> +>> endobj +4948 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 544.6665 222.0741 554.5942] +/Subtype /Link +/A << /S /GoTo /D (a00153_g5726142fec34f35fb9ea19e5a45975c6) >> +>> endobj +4949 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 505.8122 214.124 515.7399] +/Subtype /Link +/A << /S /GoTo /D (a00153_g21664b7441cfa37d280228d23316d609) >> +>> endobj +4950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 466.9579 228.3406 476.8856] +/Subtype /Link +/A << /S /GoTo /D (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) >> +>> endobj +4951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 428.1036 212.4703 438.0313] +/Subtype /Link +/A << /S /GoTo /D (a00153_ge6f4a2453dbd8bc60e6a82774552366a) >> +>> endobj +4952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.9153 388.2731 166.3534 399.177] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> +>> endobj +4954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 255.3053 233.5112 265.233] +/Subtype /Link +/A << /S /GoTo /D (a00153_g285a80366aed9428f64282b8d13c918b) >> +>> endobj +4956 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 172.5503 245.6657 182.478] +/Subtype /Link +/A << /S /GoTo /D (a00153_gb6e04358481bd2057524fb874cfa472b) >> +>> endobj +4957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 159.5989 229.0679 169.5265] +/Subtype /Link +/A << /S /GoTo /D (a00153_g6836f92f3692f3a4429eb599db40cbae) >> +>> endobj +4942 0 obj << +/D [4940 0 R /XYZ 90 757.9346 null] +>> endobj +4943 0 obj << +/D [4940 0 R /XYZ 90 720.8203 null] +>> endobj +4946 0 obj << +/D [4940 0 R /XYZ 90 599.211 null] +>> endobj +4953 0 obj << +/D [4940 0 R /XYZ 90 322.1845 null] +>> endobj +4955 0 obj << +/D [4940 0 R /XYZ 90 190.524 null] +>> endobj +4939 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4960 0 obj << +/Length 2082 +/Filter /FlateDecode +>> +stream +xÚ­š[oã¶Çßý)ŒöÅ~0Ë‹x[E·¹lw“œÄzN[Š-Ç:Ë®%·Ù~ú3”DE7“ö6ËÖhæÏáRbø#C‡’K¤Y †³ÕŸàç‹)OOàü¤nðÓtðÝ9ÕC´ b8]äAœ:œÎ-ƪ)“£Ýå r<"çñsT®g»U”da¯“ñïÓƒ³i¶TÅ™ &èƒ_ÇÃ9¨û0ÀˆiŇÁŒˆÖt¸”Ù/σ»Á¿+?ʼnü‚¾ÆqÂú[G¿PÛ< +­•EëœOÆx´Kâ—ïvñf2['‹1á#´l7ò6ZDÛ1Q£(™E¦‘…w‚4ç¹wÈ®qNÕ«wDJÿ§Q‚§y™¯(mãÍ8bµN0~Œf]øyŸEFÖK¸ÚXAU€æß0¦O»mÑùæ—çµ{Cq„‰’C0„¡Ÿ{si&u«.-J#Œøâ`%+䎴l¹Þ¾kÇ&˜"ÉÀ›3xeÕ½ž&‚%’„ñWoyøy¸*“¼K> äí9-’LHíjAQÀ8•_õ}Gª”Hi)ZR‹ÓŸ‡öèçšl{ElQ—Ýñl„ ûÇ4ž¥(ÚZh ‘ J¸ÓVYuã7ÞõfâÿÐÃá„pë’R8à…éidÐJâWÔârTr àRŽQ@e¡ÞœÙ>•&·õî·æ“š}Oï·½ivÃàm‹ÐqÕÒЯ´ñny2qQ™=ÑÈ.Ý É ‚ÜòÛ8™=ïæQ‘œ!©UƒÈ–Kà=€QYÄI–}ÙDiÑÖ¶/¤äª4ý¡W%ˆQºOßDÀ¬õÍ_ÑcmÿŒ¶hùÍž)1DuP q“ÏëÿE³l’n¢Ylˆ˜9&©u>¦®I°ðœÏu,`£e˜¡ùFÉnõÓrþÓzQ|vBå'ËPùUÙ2ÌJÛ°<ÿ•vfšýÓü‹¶Ûx>’â’źŒ…³eq´ÙæMEã ×x4]Fié#Ü–Å´É +qb¥C{M «LB Kg¼Õ˜®²ü8LÊ‚>?;²œ„«(-—á˜â²yÅ/Ù²<ØlóýR|»¿¼y8¹¾:+¾Åçôäu©’åf$¢nO1‚€¹õ–ró!¤÷S B¬8óQhÍüÖº(tÇ­(¬Ç=€ÂFðC(tËèøíPøñònzvus};Ћ=$RÝÊ=i1ëIëö#I„ +aLúH´f‘ø§Y”ÄÉS ÌÍz›9dÙh$É~&aå@ —>&­™ŸÉšC“õ¸0Ù~“n¿ &2õþüüìöáîò¿gaY¯$Vž”À~ŒÔ±­YÀ™¡kÍÌrîsº[¥ÿŶñTè·¨·”q¤ :øH´f~k]$ºãV$Öã@b#ø!$ºetü6H¼›Ž5½ÏGSØï^žtyäæ¸ö¥%à(G×^ +PÁ|P%1÷Ü]™P +qŽõ‘ØåweWv•YþL³ÜZÄež‡€dr^DÂîHÉ·¹oFˆPå[ÜUf~¼j]x¹ãVxÕãvð"¢§wEZaÕ²Ÿ/kï“Ôñ›óÕ'bXeIÎݹø¸yÒz$`B€ºï~Ie–¿p Ž% ö;üE”PŽ(×Ô˜5óVsèÌ·¬· X’ÆO‰}» ]šr§£!ËvYMM{Y«ì=êº~˱¦2¥=Äq‚˜ÜÉÍ.‘ähä ‡–‡œ53ZïZ´"εv##4‡Ë^ì ,ŤwbÃJ"Š{._ýfL¯‚KHí±  ´dÊ´œQ¸Ð¼# |– ¿ˆ’hf»rød>˜ ìÊ/„–Ÿøeïhù +Ÿ°‹1åÕ¢£û®Ðãû¦ÐË—§¨óŽyyÇJ«eéÿ5/óSendstream +endobj +4959 0 obj << +/Type /Page +/Contents 4960 0 R +/Resources 4958 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +/Annots [ 4963 0 R 4964 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R ] +>> endobj +4963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [176.9013 641.6664 250.6249 662.8678] +/Subtype/Link/A<> +>> endobj +4964 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.3666 617.2739 200.5842 628.1778] +/Subtype /Link +/A << /S /GoTo /D (a00208) >> +>> endobj +4966 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 491.778 298.8158 501.7057] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) >> +>> endobj +4967 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 454.9084 293.2467 464.8361] +/Subtype /Link +/A << /S /GoTo /D (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) >> +>> endobj +4968 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 418.0389 263.8671 427.9666] +/Subtype /Link +/A << /S /GoTo /D (a00153_gcacc406c3bf7d0e00412e4c946252739) >> +>> endobj +4969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 381.1693 265.0627 391.097] +/Subtype /Link +/A << /S /GoTo /D (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) >> +>> endobj +4970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 344.2997 245.6755 354.2274] +/Subtype /Link +/A << /S /GoTo /D (a00153_g3001114ddadc1f2ada5cc9a780e866fc) >> +>> endobj +4971 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 307.4302 220.231 317.3579] +/Subtype /Link +/A << /S /GoTo /D (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) >> +>> endobj +4972 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 270.5606 286.1035 280.4883] +/Subtype /Link +/A << /S /GoTo /D (a00153_g9dd44616d41cef74d3beb51d8be5ecec) >> +>> endobj +4973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.7309 233.6911 253.6255 243.6187] +/Subtype /Link +/A << /S /GoTo /D (a00153_g529648ad3b0b327a43689b0f1779ff55) >> +>> endobj +4974 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.0032 195.8452 196.7092 206.7492] +/Subtype /Link +/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> +>> endobj +4975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.9845 158.9757 206.6718 169.8796] +/Subtype /Link +/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> +>> endobj +4976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.1599 122.1061 252.3298 133.01] +/Subtype /Link +/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> +>> endobj +4961 0 obj << +/D [4959 0 R /XYZ 90 757.9346 null] +>> endobj +1119 0 obj << +/D [4959 0 R /XYZ 90 739.9346 null] +>> endobj +402 0 obj << +/D [4959 0 R /XYZ 90 739.9346 null] +>> endobj +4962 0 obj << +/D [4959 0 R /XYZ 90 716.7484 null] +>> endobj +4965 0 obj << +/D [4959 0 R /XYZ 90 542.7325 null] +>> endobj +4958 0 obj << +/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4980 0 obj << +/Length 1572 +/Filter /FlateDecode +>> +stream +xÚ½X}o›8ÿ¿Ÿ"Ú&m;%”÷@ït:BœÆ§r@ÚUw§Y¬ˆ€´Û·?ƒm’PHGÿ8­ZüöØ¿ßój# xüOèü`¬Œ9]’ÕA_ðƒ¯xøúB Ó²(áß–‰‘"HƒÑ±èÄ»¸œ‰ú@ä9U•·.7WeS4ià…07þ®ˆ²#Qá?èÿõþ$27ÖÆB)Àã}NÖD¹ØÃ%Y,p¢õŠ_°VÄÀo·éJ¾’n&!*÷Í»{®ÑÅQqÕ½±Ö{c#ûžZ4?u÷ciÈ ìó‚9fá3c×zñÒÇZ†Å^'rýäDF>†ž¤ +¢!;QÐ[Ä`1øG&9õÁ.bU[ÅQFCMÒ8QQÕÄO ã\*â´þ3ÊÏ)›)°Ï•]2Ü3{üŒ¾5NÕq!9A/¼€žéVø©.ÊõYâxIk@ìO!<)” Ü%K5)>6cçwäoó¶4pHR5£c‹rg@K½½F¢^cEè¯>7ñãFqª§Å+IÛd¡ŽX±Á6$|Ò,?ãFrÄ>õ.Ì?Rò%!>6:­ØqÊÈ``ClªG¶É¯kúhž®‹§2‰vFéÏ„U&rÄ. +Ê¢Âð¡º~ee9IŽªKž¿à$ê XFõÔQƽ]Ë›C—Þaì™wg8€z]:ö-œ‚)éMîɯ7gË,׃ÞÊ£]â MÛò8Yy¶C7úòÅpÙÖïß–w;–Ö›ŒaQ|àÓÒ.=Ïvè¹7ËdL0SÇ°<Ü!cb.VSh]Ó>ÆNƒÎ¦¼“÷ìáAÝôÞ:PR*3ò{sŽ'Œ \@ᄀüô¬šýŒÑ7¨A ǃæjaÐáåÊYÚîbÿ*W{Ѻæ€7`Š3˜ VjfZ¥–ºÕ¯;7‹óþŸ« IWàÄú;“z‰ÿöÝI¸’Õ+iLŸ"¡Oo®àûŽ4Þ!øR5(¿&Š'P/àÝH^æOe‚â-J‚íž=üË‹¥Üæ÷6 ¥C"ýµmpܶϛ=Úq›7mëµÖõÄíz«DQ=û[%d¾UbWt,Ú©#¼ £5J"–ž |†¬ÊÿH‘ñß&,u +»À"i¶n=Yî¶g3à|Æ×oËtUÝÕÄæ7áò¹À òøç¾ÿÓš­endstream +endobj +4979 0 obj << +/Type /Page +/Contents 4980 0 R +/Resources 4978 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +>> endobj +4981 0 obj << +/D [4979 0 R /XYZ 90 757.9346 null] +>> endobj +406 0 obj << +/D [4979 0 R /XYZ 90 739.9346 null] +>> endobj +1237 0 obj << +/D [4979 0 R /XYZ 90 549.2183 null] +>> endobj +410 0 obj << +/D [4979 0 R /XYZ 90 549.2183 null] +>> endobj +4978 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4984 0 obj << +/Length 1278 +/Filter /FlateDecode +>> +stream +xÚ½X[o*7~çW¬Ôè {|YßNÔ›„6G:¢ÑŠÂBPÃ¥\ÚDÕùïµ×^ +a5jòÀØžùæâ{ÖØCú{ +y‚ _Ñ€{ƒiyc=}UÀn¹¬×Ë» Qáó%Qžò'Ü‹F)Ç>#˜xÑ°WÄJ–ÊD Š›z[“ ±,>÷§‹§ÄjóÁfšÌÖýõd>+=D7…0Újv†1ʱÑûG¡÷€¼¡6ð¦€|ª$óþÒäc¥ˆ7-„fƒ§B·p·Å± ©äÃr{zF œ9H´¿Âú°R™#Tüi˜Œ&³ÄºQ% +ãj«yY¿Š;a5¬ kv‰Ï´²²ò0‹Á¡IaV& ƒŒ^nkK‹AlVÒÕ9„"¡IÃÅÓÕØŽþ¤˜Þ4,õâFÆNh¾8³Äãúe‘dôS2ËÈù´Šá¨çÉ°<€Ì$cÆ<ã^%ƒ•Ó1zêa%ô@É`Ò—yz‚þ—£üì€u”Ÿðò‹CûS~ÌaéRq2šél´ƒûz;Mĸv]mÇúÕu‰ªC_fýiÒã°mü0F“§¤‡‰„ù±3-™ '#ˆÉe‚UbcRË÷\  I¨V/Z­¨_tZ•ZµÒì$zÖ¶ *U.Ü4Þðî>4 ñ C²2_¶ÝøžŽQ‘@’*Oò:úÞã0º;ÍÐyé(¡6w0Ñ çç!Üv¯b R*S3E(( ¹%hd5î†oa'n·:[›„ä"Tõ°í!@¤`Ð$Ï­Õ»Õ–6Ì!‚‘ÎËÖ奤y›,òÒc›YiÕ@·ŠÈËZ¨ÃÐ (T(2/1*Õ¯:——P„d^64+™”’äúØ+ÝÌPh«%ä¸ÌÛÿ¸ÕŽê­fܽ¿ÐißVº_6´g’€é´î#³yAÞH~¡Ö캤Ö-PqÊŽð.®·+µZÇyà“KÊ0i¬ã¨~›œQQ'`Lá›óÇ%5ƒ£Ð©²•^¯¹¸0(K~C`uS$Ö(g96µÌA`ÐÁà°yèËÌ]m¯ÛKÿâz/ôÜže÷Ð0Ù’˜lIBÁ[O±7ªöÇ“A<˜ÏŸ$ú•rz0EŽ’ÔJÁŠ]¦N×°òu# ;i¬;í@¦?§+/$ÁÞÎ|ùãþR ”IŸ3Fޤܚ[¦Rø4bß% ÿNhDöÅPRÞ.Iq%,–«=ݽ™;6Ýò¯ˆ¡-FÈן&ìMVëÆh±^ž½ÞSj‹¶Œó b|ß'•ßÞc×ï?E‚wXòéÓ^þ@‡Á¹ 4õ¡õíëÅ£UB>F‰ òQ=ÙGÇ2Yo–³m'«‘ÎÁ »ƒâ¸Èv«ŠP_iþ<Ûÿ‡¢¢ï**Eô) ä+—ø±ªâ¾þ‡«*[Ú©*ŒÄ¿eµJ–&Ëx2|UWúK] +þŽ ß)!¬yŒ²}ä±R_CÛ»ðXÞá*Þ਒ì³}šL‹é½³håÛ]˜d×W`‚y½å`|cBž¾=8ãÿé™'}¨’ZS²ûNÅ}%¨4Ï8”hÁ€“­)Æëd–,ûëdh_¤æ3û{›7%ÌŠ7ÀÄý¢/„~!îIK7¹ÜR£aÅùÒß¾~{Éž½ž_ÆÉÁƒ—y‰¢ô™H°§endstream +endobj +4983 0 obj << +/Type /Page +/Contents 4984 0 R +/Resources 4982 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4918 0 R +>> endobj +4985 0 obj << +/D [4983 0 R /XYZ 90 757.9346 null] +>> endobj +4982 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4988 0 obj << +/Length 1353 +/Filter /FlateDecode +>> +stream +xÚÝÛnÛ6ôÝ_! À¬3Ë;ÅÄnâ®ÝX0d…àʲ#,¶\Kéš û÷‘"eË2­¸«û’äA¼œ;Ï4ò úGž„ž`HB¹ÍZЛªåó²Ûmµß®œ­¯±ô$s/˜8 #ìã›# Ðq3x4¾ˆŽ?o< +}W45’R¯¶ºÁŠ‘•ƒŽ4›O­›Ð+yÞ´ ÒgÞ_jBÅÞ¬E1)'w­aëýŠŽÙ(\ê0D\úpO­ˆJ}°ROuÂÇmäCx´Œóûåü¸ÍÕ8]ä‹|iÆÏ͇¾*4Uö’€rÊ,61»ÿ:7©Ù|Qlb$‚Ôk#%?õ õ€ð±WYnî¯`@˜8cdoTen¤m‰ÂÒ¯©ÄŒJY>Ê“ÈŒïý0/pêƒK{µ¥ü„Ka‰qC`4‡ËøS˜,ÔhùdpERÙ°äæÔ>2L’€1TWA®ÿ8Ì7g¥ì%1ý +®Ï­›ül>‹³AؽþexÕ}ö'ÎÕ+kZ¨P79ËÃp¦ML0´Î>‹gÑâA›ÚùÉ+0g`§TÛÒé÷}KÔ`Ü5˜<¹¨Áô€QƒÙfÔ(«'é<«…Méù›m+j0„º +¼!j°ø>Qó¶7 Ýù@ÑJ™ÈÃ+7¼>½ìồá¯M¬ üví_ÝÆLDÐá¹v.‡á°{õÛ#œw×bg!MÕ—<½êKY}I¥úÆóñFþðÀ’áÿUu} ¤&ySÑ%ß¡èv/;ž&¿ÎÓ(lð4Šžœ§Q¼íiŸÓdìTßFa´ŒGyβ©ö¥euÝÔ-A]ø6bët™ŽÆÑ(³N÷1ÉI“g–Ü!X¹¨€¼–ÑXY« Ô*Ëì#Û}²°—0JW'%•Ö[ƒÜ¦*üÌÈÅÚë¿B|ª’¢&>q9ÇN\Žb€›}…®¹dqnª\ ‹ô䙋tö(élÒÜEzú(é餅Óì·Uy`kA%†ÝTý-X‘½YáhÞ ¶ØlïÍ\ÈgÉd>Ž'frÝ„gýË×a‘ßöÎ/.‡ÎCœfqãj€F;sä"S S2qBç*u»½¹YIf£i©|þ™ÄÛÂU6›%d +çO®QábÿF…ûV^8N²(ýÏMaÕZÔ‘dCK!Jÿ]uÎ ÷lg”¶Ge¿Þ̈҇w7O¬ß]÷jž6Š®V».“ýZqm8]*F‹Åx”¬F1€¤.´*a§ËZ´ÙAÎv:¹ ÎÕ²"(»nèªo8Šf¨û¶27ÚØ»¡eRÔ‰ªÓžõÕu7cÞÀ¢öcîT;èˆ:ö2Öˆï»ØP¦óz¨ÔÀ¿éí½ø±ÀW(êž^ý­€)ˆ_¾­[!´˜çñ<^ª› Ò¹ù¾+oŽ;º·ý_|áKL^ê‡J=S-7£É1fGéÒLî{ ,àÇóí¤_¦ª³®™Gÿ0à°Ï„×cendstream +endobj +4987 0 obj << +/Type /Page +/Contents 4988 0 R +/Resources 4986 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +4989 0 obj << +/D [4987 0 R /XYZ 90 757.9346 null] +>> endobj +4986 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4993 0 obj << +/Length 1285 +/Filter /FlateDecode +>> +stream +xÚÝX[oÛ6~÷¯ÐS`o•Ê»ÄtÐ.n–¬¹4vY ¨6“µlU’›dCÿûH‘²e™–½yÀÙâõœïð~<$t€üC‡ǧ¾Ç1aÎ(éç^6w éve¿[ðvØyùq‡{œ!æ ïJ zAä Ç7]@ÏE>ðAw~r)‹t¡t¡ÿ%éDèÊÑl4OÄ´ˆŠx6íÝO;ýáB³F1ƒJï—ÎÍ-pÆàix˜Ôy”àAΑ“tÂUeÒt>,äèŽr‚Í> +±Í@æÈÀÊ@$íõµ}Ðç=@š§a.¦ãߪ¥é8*¢=—É^Ù¡ ®þ”£‚°P†:C(p\(±‘ ”ü]ÙEck4+™añœ +%ø qœ¥ŠwòrkvìÑÏ?]^õ?\÷Ãz9lÑ‹ì«ÈÂ2’€&† RP‹•aœÊR¶U ncˆ©u>±¶ÒŸßö¡7ÎZèûÞàÉo›éÍo˜¬ÓÛb¡›æsÝŸFY.Bá«žò( üÝC +H‹Ì8<ž¢˜ˆé‚*]å4ÖÀ\æ›(¸'e®ÄºÆ¨Ëß/¶°*¨®¿œ¡xaE*xeEŽ­­ÄÈ{|ˆ'%½Ô1ý°Ø.墵,‹Üw(G?ÆÅèAÉ)‡ùÐó1„»Ä‘ÖÛÔãúÌ“yl¨cFÝ(ÊŒËËáÉÅy8¸~{Þ†go¿ZÑÊF¤Ÿ»‰HFésy˜xSQ$QþùÅFÏ ÓE6q‘ûIžŸíCx+ò«‹ëaÿÊ + 豸‹æ“"ÌfóBdû`‡p+vˆZ±ÂAÿê×Mø± ÿ4W‡Å^ÀÉvà´øÙà8~¼ìÛa3#¾¾ÍÔ¸@žœ¢]“ `3®v^ò¸ð}ÜPîo·-hß +¥C“#»qÜâ Äã}œ‚ÀVà¶ß3è‡Ã“3»[² Ÿ)*,âDì…oÇNZ±÷Ïí˨‘œ‰bžM—ômWR‘Ü7k¯om­¢aÅò•ÓæÞ®.ˆ]yuQ´*ÇU®º“!nNzFÿ·;Âxç¤GÞRêI¹:´\è¦-Ç0Þûεߕ‹îåB ‹¬aŽ«+W|W^µÔ…È€}]ÛŽWýË÷uýàÀ*GÆÌ°H’YO î[–òøw1+•=iß,•J%hÓD€MÓè¡vúå^µ†*c]Õµ%#¹ÖéQ_ÌŒp©ý9®Õ7ó!©Žýúf_KÒ­·Råeåbm¨ÖÍ®·1!Ʊ'º„Öè¦ù,=H|ës!p¸e{½Ø•oŽœe מ™Ç}¨9ŒäDÂЊÂ|,¦"‹ +1Ö‹³©þžU…Ӥݹ©¨4¬ü‚C„‘y”Ç +Ó¥»¢ÝY¦+ëϘŸž«̧ç{±öv©-«ô'¾ *Óendstream +endobj +4992 0 obj << +/Type /Page +/Contents 4993 0 R +/Resources 4991 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +4994 0 obj << +/D [4992 0 R /XYZ 90 757.9346 null] +>> endobj +4991 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4997 0 obj << +/Length 1339 +/Filter /FlateDecode +>> +stream +xÚÅXmSÛFþî_¡¦SÚørï/¤| `ˆ“”PpÛ„Ñ(èÀŒìHr“ä¿÷¤;¹~9ÉxÂLó2òÝí=»ûìÞju(€æ/ + @ʃ«» nÌôq¹å®YïÎ ¼t^a( 8æÁàºBà0Œp0ˆ/¶@;]Ìàv<¼š\«ËÁ›€B ã³Á•³Þ`¦ÈÙÁG¥šO‹KÄÆž7ˆ’,¸7R8¸ëPLêÁ¨sÞùs†cª >w">x`fDµ?ظ'¬;˜ò.‡pûEå&@!Hƒ.2J¨¬D~µ.!q07Ý}º?•Â$àŒ‘&Ýh^¹µ¶K+i (§Ì¹$¬Ky‰ \’Vât^Ÿõö?@‡QtXƵ~'±y¢ò¿CYŒ¯¾EwºHZ ¯zÇý“q+“¢„{éÝâÕ°²¨0k«)À8]à¨ÈÂè&JÒ]K¢C± ½ŠƒI—,"΢”kËž}œö½ð¼wrØ?9ö»IgÛMpnó…íïÞ¼5ÛÞŸúw3ï,w˜ñ¸-&&-,5ë4ã$¿ÖY˜æ˜H·¥Hîtæºpq¬ÆÏ]šYGšA”1¹ðÏ~þu2è¿›%„C™&“0Õ÷qTDµIváÛ7û´&è/“$Óñ¼u’z•sèEΤäºDjÔ½µeŸ“(Ëux—ß,.ï¹°¾>8}tÔ;ûoÉn’™âÖÔ©`³ÞA¯ÿwÏŸœ8”™Žný"Ôù÷Ý»êM"Î8YHÏßWÓ³‚@¦¼õrõ£8ÎtîHÿ%õ¿ˆÐôÙs/.®¤í!N&%²îÚAéÌÜ1·“xUÂMV ÉZhº,ÑȦ¢-Œ¤º¸‹òÛ˜`ML8°6*D|༉‹6pº"Ò̆haãðäÜÕ{™fr#Vd+qš¯K¸jb¥ œ®ˆ4±bŽy +±¾Ž¦#7ÈÆÓb#fDÌXàÐb¶ä‘ô©Â<­WE›$›Y#«¬½ÓQ]Ší{ÜU™$uœâ:Å®Æiœ·G7i1æÖºQ –=Á¼œ}˶¼£VÚÉò£œOGî…㪀Wº\ôÞßßÈ\]6—)Í>G¸w¶>‰ÕÕKhظNn¦³Æ§™uéUü²FÊ(q_1ž,÷\Ö! ˜°M>¶#š›E+‘ïEz¤íÝÙ’+á¶ã/L`>ê݉6r”.O‹¡®˜Þ«ÎU×rß»µº/†É,½óˆ;ê}Öi1F£‡Ù>Ï ˆ +ïE4&#Îø]®U·ÒlAÏ_švLY_ž9#JRŽuª3ÓºÄöFpœÚçõ7;ˆmOÝÀnŸp“] íÈôXÜþºÞÁl{œÙÁ´l<*ià?>ØçáøËÃN—é)oþ<üü â¸=Áendstream +endobj +4996 0 obj << +/Type /Page +/Contents 4997 0 R +/Resources 4995 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +4998 0 obj << +/D [4996 0 R /XYZ 90 757.9346 null] +>> endobj +4995 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5001 0 obj << +/Length 970 +/Filter /FlateDecode +>> +stream +xÚÝW]oÛ6}ׯÐ^{ˆX~Kê°‡.ÑZžãÅZ! Õbj²¬XV“bØ)JŽ¬Ðr‚ {hŒÄ$o¼—¼È†òƒlÚ.sO(·—k ÚŸåò{ 5fGÚî?üZo~Á¾íŸcn‡w5G€a„í0¹aˆÇv¡ GÕd.‡ Ž€z<Æë"zr±YVk‘ïâ]ºÉǷ᥄ûÈ 1F8Rqï­›[h'’à¥ñ=f?È È÷±½¶(&í$³Öo{m¨Lûcˆ˜6Èm¹âBÔnËýºzÅÕ&P—2ÛAzµí‡ÚâÆ)²;ëåjSeÉØᎶ"^ÞWéVè©x,丱e".E©Ç+± Æs(x\fP.Cjô +\Ðx£áˆ0ã}86v'ã>¬ÒLü DòÒ\þªaσ¥uFL‚é…rú¾ÅN9þhtq› ­žqÕo|d˜`ö‚ jÒƸّ> +L€ =vxݳsþ»7æÎyUâ| ö½Þ–°ÞÒ—Mš·L´=Y-‹e”æ©::¸Üäå®çˆ0„ïEœÖñ2Š“d{¦AÒ¼ASë™Èëâ©YKÆ!æ÷XÑÒÂm1Vi¥… +5ðjlN;7®¶W‚–°Æùé‰íqHïÀYîJÎñ¡³\4ûú¦U÷ˆ¥Ô=qÀe¾ ƒh2›„“wS#(AÏÎE岓ÌØYç÷è%!xODVB~ÀCWIå⡾møáÕl¡/>œÏÏ£Epý1¸ŽæWסŠt<i¢¥wʹó»&èì÷éô„àÚNKðSš'OxfŠçÓI0 _@‘ IáO"¤tZ…ˆ; BÄûæTˆøÃ*DaW…â¢XÆY¦ŽQ9ìÅ¢ï4T´-áUœ'™ˆ²<šJRBé7—ÊN¤„wS²÷•(w'Sâ¥¤Ì +ñV°µLÝà[sNŒ2É`O/ºbiRËÊ¡Œ{åxÒM=jtžÕŸ£ÕÃp£»ÕF’::îJW®ýsîY‚Û²ëzÅ=¿¾:‹(ø¨Tmv5 ÎõS@.òÜ×fò)IûEÄè.26p¥Å•BÿÃÂ/?Ž~+‚¢®±E‚ò½8ãÿªK©û,Oº ‚»m—m‡|É.D>k%Ž÷TÕ÷"[y3ÝPÉ.ªþþµ\ŽUÍáæ¾Åä-n:2ùœázt7Æl´ÙêÉóÖíÓ׶k{üúY<ë×T#e8¥¯Xöendstream +endobj +5000 0 obj << +/Type /Page +/Contents 5001 0 R +/Resources 4999 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +5002 0 obj << +/D [5000 0 R /XYZ 90 757.9346 null] +>> endobj +4999 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5005 0 obj << +/Length 2011 +/Filter /FlateDecode +>> +stream +xÚ½Yms£¶þî_ái;Ó͘ ñžýR‚IÌŽc»€7Ílw\r¬ .ङ;ýï aÀ ۙÎfÖz9GzžsŽt$†<þ†?T$…ÓQúÛ?|ÄÍ7@ºG¸T¸r×Pjœ&Cy讋dÀIÀ¡|ù qðl%þCðäï|îéì«ûi(ò*ÇK23¼·L·šˆàäÓü9øò•ϧÏ š* _p…瀦Ááv BV6gðk5NÙQ(°èH@`ó"‡[ %1?¥Æð|ƒPº*q ã¨DçEAYاÄZ!éIã}⣖ÔCyÉkY^ÇÉ6%æ 3bû89´Äû¬›´Üÿ6Âuè{9z2¯—„;”lÃ,Cç.‰ŸÃ€Ö²'/£%DÁo6ñK=–U?Ž‚07í¬ô\¡Û¢ì²{`µ÷À€+Çmz4m†{Ý~P(û4£™yÔÙ•]¼‡ø¹Ò¡k¯¹öòRG¬Câ,ôÑ96$ 7!…Eá×\ÒŒÁ.bSø/Ü¢„,5Aå „·­:bÀ—5@Ux—±á)cS¶Ʊ±qH{ê÷Ø[åd ŠMôà ôÔIÿ±Á›¶Èå +¢Àñ‚ÚrìO!ˆýýE™×Ø·.èVã Iqëáý=ô6)k8lR£ºG¹ …ÞQ#¨™¡ð¯š7ò¶­äTuµ’W³t[K=¤Éû°ä'é‰0ûû`ë‘è~@U ñ—¿( +𴨙° ¶1%S® +6À®z¦ƒ¬±\;FÓx½ä›h·c¤þLhf*§Ø!?O*_Xå¯$O'Q-»¤éA"¿eTuÕÒ8Pz‡–;±r†™_»wºm’È!­ {þÙ›ã²vu_þº*6s\Ë]º¤ªÏˆ 1Ÿ¹¶uµtç6è?t‡ýóÏñîÀR{“ÑgŸùÛÂ62ßÜ&óÞ.¦e‚™Úú̵Lçœ21¦Ë±5»!uŒ,º9)L­[Ë¥úîüü`ŠnZo( •ëò÷Ö´ îЯ¬©åÞ·Œm¹³Šý5¥¯‡ê¶kË©NšK{1wNp€ý³\EcË1¦ºukŽñ`afjUâ©ÏæŒØ×™èÓééø¢\ŽÃëʤNÒ¯¦§Ø€Þl¤á5¶lÓp«ÀiU ¼^°k¦ô6±0 «ª™¿™ØÁº}~ÄÈ1]bE,{>ì ¬ßê74€òKÏ÷F:Þ +Œ¥mÞV£Ñè,¯^º™ÏÇÎ ý µ’cÚŸ-Ãt>œs§µ0–ŽIÐŽuWoÙÀKƒ*ÓÖ«¥c–‹5sMÛ^.\k>+.‡Ý4ÄÞ4&ó;ïÔã:;n-Ýù¬jx%Ìíû&É<Æ‹uOøÝML,Fw¹Ym‰èUX:x½î 6Ro6mÔ xQºŒh#1fÞL­sf´VôþlU^>o¼ŽUß±D7§þÉÝYºòM€;1ºú=Ø?¿¹Õ‰lnè3=b{IÖq’Ý[ bçˆ +ó«"O@–äõ¥¯ø4©b•|+¬}É“9MTú€È©Ý %^ñ±"ÿ<™¿iæ¿·´ðé Hö¤ÈGLÀ_Báßì‹Z~$)Kë3(¯my¥8rÒ|x-Çñ_¯(j›'ÿ É°Ï?,¯?€endstream +endobj +5004 0 obj << +/Type /Page +/Contents 5005 0 R +/Resources 5003 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +5006 0 obj << +/D [5004 0 R /XYZ 90 757.9346 null] +>> endobj +2465 0 obj << +/D [5004 0 R /XYZ 90 739.9346 null] +>> endobj +414 0 obj << +/D [5004 0 R /XYZ 90 739.9346 null] +>> endobj +5003 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5009 0 obj << +/Length 369 +/Filter /FlateDecode +>> +stream +xÚ¥RKk1¾çWzÙ-lœ™$“Ǫ}…–îMd±ºŠà£-JÛßìfÁ½•2¯/óÍäC á ô uÊkÃr¾ W!ü °Mg!Ÿ]Ü¢wO^zå™XËæFe I‹IB`ÒŒ8HŽO/Á´ ‚hŒ~fÛMá~~ÜV»Ãì°ÞïÒi1£âܹ%f5cÝ÷SL¦ àX€Ò>·ò;8 Ð{’[aHŸœx¯çwb¢tÍgQw È2Dài@ +óº8sM5 3¯ ƒ®+˜§$7Õn±^F»×ÔYR ”Ë 3“7Õ·MÆ+ËåE¼,‡ƒ—AùX–ë”ÎïÀårº„öº–Š +ëülÝ‘-ÿkßbòAM—‚á°@×ûÔ€†éL¥¦úPíª¯Ù¡ZDi=4÷óɧh“cë µ7ôI÷©Õp´–)Ùdÿk¾ÿžô÷󻪮”WK¢cKó±nendstream +endobj +5008 0 obj << +/Type /Page +/Contents 5009 0 R +/Resources 5007 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 4990 0 R +>> endobj +5010 0 obj << +/D [5008 0 R /XYZ 90 757.9346 null] +>> endobj +5007 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5013 0 obj << +/Length 1250 +/Filter /FlateDecode +>> +stream +xÚÕX[oÛ6~÷¯: °×ˆå]R»X“´K¶µÙâ< Y`È •%M–rÁÐÿ>R¤É¥ì&Ð6A‘<—ïç;¢ˆ(ÿ‘@ÇcåÎl9€Î¥~7@fÚ•ón[àÍxðü-œsg<¯-pFØGçÑ‹Š›p™'Â]†qšdYî^Çå ‹‚Ã̤÷ bÈFããÁáxíÕ€b„#åóŸÁùt" îx |æ\Ë(°³PLšN28ü±¶£'j[l {pˆ9‚›è° Ök‡ ÜÝFH>ùžãA  Ç;‹ý°FØmKkpÜ‘p=ˆl€‡F.—È~ˆÓYREB÷žTqOiÜ å”Õâ¸O|=*Ī’Šò:+>º‘¸Šg®I­š‹²Ì#»³*”ñRvnóŒ‘HÌãÔØxsöV?ü T¿UYT³R©èE¹˜,¢¢6‡¸ˆ‡™ã"™GÔ¯­þXOQàùØi K[è©20­æçðBukAy &!µ¡ù¸ñ\»6IØãµ]»ÿß_í0pÆÈ—„­ÑºÄÇ€qÆ;!¨#ŠÓÒ.2 «(¤6â*‹£õªmˆšdý×6§(é/ÚÝK›5bj‹â<Œ¢bÒÈ×=«3Jí$©“P?梈³(žMê±==(é£ûV‹¶ËeC?™%AÞCÜ߃{½‹‹Ûi%—v‘­Ê®­^MfäÆ\]wGæÙ›ý¾^ĉPꨦU/ƒ°,<š‘jÉWºÙؘB„Ñ6D[ñ\‰u,¾Ö ÜŽ†È9Š×d½v_—·¹)߯ ¬E™¥+5vt29ÿ2þëäprt¢Lï0/K £&XÅ8×å§7"ÒRˆÓ¼Úº#„i]åé‚ø´—BJz47õeab §Ù•yœW鬌³´©§WÙ,¼ëbU%¥ˆšYÝFa6C]€]ÎA@»¼$²Æyj½W‹¬JŒ©ñ»MQͪæ!Ý€i2docø2ɦa¢Ÿ¯Â"§‰°-7î;©¯ÿMÑÍÌš4“Jt³ +ÔÆ1bò(Hð=^]©Ã]XžÙLJ籤!ç­DËvdN`ä7'·`+ã(4H?Ù&2}Ò@E²2ËvvýüçЋnÒKþ¶ó‹’ï1”~UÆPöM2†òÇ2†zd€¿Áš–¯ hDæÖÃ}Œ7y\ˆÈrPÛM† &mJ&£õÄ×/#F}žésFç… _°ºùI7ŠÈòd÷þ´™}ölFÚ"rƒ«öÖ ‹}oDfü«™yß$‘™ÿX"³à~¯>F|Ž¶Ÿã-ÄçÄ6¸¾¥˜ß‘æìàÄ&ÊFAim 7/Â@Ô³^ÎAI$¤>¹sGVßðùRÉÄiÝI²xÄo®™ ù;‘Š"¬§nù%Tû{óp> endobj +5014 0 obj << +/D [5012 0 R /XYZ 90 757.9346 null] +>> endobj +1366 0 obj << +/D [5012 0 R /XYZ 90 739.9346 null] +>> endobj +418 0 obj << +/D [5012 0 R /XYZ 90 739.9346 null] +>> endobj +5011 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5018 0 obj << +/Length 790 +/Filter /FlateDecode +>> +stream +xÚ­VmkÛ0þî_aŒd̪t¶^ÜÁ`[»Ò ÛÒO] N¬´fŽ9vÚ2ößw²ä.I.°Åtº÷G:1ŸâÇü˜ú’K‡‘ðg ú7¸|æ1Çlnx?öŽ>BìÇ$ üñ¼Õ áÀÀ§W b€¤’šó’œ¡–8½OË\ÛÉI9kº¨“:+‹áõøÂ;?ZvŽñP0c÷‡wuMý¼ð( cÅý;œPÂâü…AØMrï«÷ùQe´}ñqö(|\‘”uÆ+m|ÃãÅè²å¤I—“¥®²2Ífß(§þ±7&TÄ$·RÒIµL4ªHùC×p4[^µœ˜p¿±~>%ë[m‰dZ®9oŠY›½v–ër–ü™WzÕäµN;®Ó¤N:IÝ „ qo{¬†ܵº-›Üé˜:»+,›¥Ê¦#Š7 ]ß•Õ÷×;Ë7y9MrK¯“*K¦ˆ‡ž„ÅμIs®»W}gµ.]N:…yãì¼µ%­r`ÑBOÆ#"ÕVÂm‰`¦è¶Ü’ÔÕ1››zo9×Y4°äÏžÀ¤á XR-'˜A£jr$¸ý.Ÿ“T¯³™ž` ÒgåBçé¯>f4 "ØÇäÖûh!sàs°"(ì…-ÛÌâåùhry2j¹¡"À…Ø—|Ö“}F9ÊŶg¢Ï]éb±’‘$ +¨<èh}Hò|žï¾ŒÜJ¶ÐUß)Ók]=X’ÑŽ³²HWÔ:Ü-( ,‚¬)˜ÅZëÐDß/³J·•iÐÓ® üu±CƒÕ‚7ƒ®ŸêèÑ¢÷Ýæî½ÈSìp)„sH÷1³LícFŽY麩\1h¯À½ZÄ& ±T TxP©‚ÿ÷³‡‚+"8¾’vÛ#CÈÈÞ¶MëLpñO³íý +E^›­[… •éŒ! `$àÑãê™.t•´]Ç4ysjÌø©#.†Œ7aàFz á1¸WbGXj>>(+;yúœ˜>t/‰û‡ýä aš{O–~éü@endstream +endobj +5017 0 obj << +/Type /Page +/Contents 5018 0 R +/Resources 5016 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5015 0 R +>> endobj +5019 0 obj << +/D [5017 0 R /XYZ 90 757.9346 null] +>> endobj +5016 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5022 0 obj << +/Length 1194 +/Filter /FlateDecode +>> +stream +xÚÕX[oÛ6~÷¯:`°×ˆ%)’ÛmKº"Y×fHúÔ†bѱ0Ere)I1ô¿—]É¡K‹uµx;WžóR$ÖHĵµOÚâgž#0ö‘I(´q?äå¬h3eGÚ|‰Œ=Zx¨}Œwätù4­·°D^–R5WUýO˜©Ë|¦üœÌ˹hšeægà^†&¿PµŸAxæbËö¤[r ‰Î +–t?u+ Å %Ao>üz¿NCÄ$8¶)ïë¶Ö†QB\ J¬CyÙx¼•vÑ$åߘãË*ÏtK<”[Ò}k:HJ¬¶g>2 +d&aòešeõÔÑw#/SL«¦ng@ÞÅÔv—ªÎ«,ŸM»9¯æ›ä ¶c›®Tcüÿq(mϪØùzÿéÉóýׯ\vt 5{åUéË,ƒJHþ©Mþi^æò­Â’þ¶ÝF,}°Å76ÞÈ°=p’HºGD²‡÷¶zEIOŒÞ±Eµj†²¶rRߤ‹lé[=£¾0RÆ«E^(ÃNºüÝšªTLƒ…*-å/¶ÙL­Òl§E1ÈÊç†l ñWÛà[¬Ñ¡etÚe»{$P[¸³%ú0ôÔ©«§Ã9ge1=«.¡;oËY“W¥«—Õ,ý<®Õª-•¹UÛfi“:‰©-,¡>£DëT[54zõYW€3P¼R®\ès:冒½éó¢:K Û¿Lë<=+”ïð! ~›|åô»rRÁ¦8E«†aDpŠ9ú¼¿Ëq%™Œ!dh…@>8q"În¦¬ÞÒ)1ÐüÑ·È!Ÿ?ZŪXÁ6X;m©T×˼V™§\¥·˜-@½¥sË[w·Zû¼²Eg€^ü ŒµÍ϶ysx<Õ…ûÕ‰[}üøØZgW§m«Y8lÌ×8ðã’þ׸I&‡W+ ˘~3X2ê¿, ×·ùˆÞã¦D‰¹£s:4‹B Kfn»âþ°d 4û`ÉøÌ2ßMƒÅî&<ÿ ‚7Ç>ÒäaÒÒî+&{°j³;B‹ãï Zœ|Shqú¿„¾Zœ= Zœï€; ÅŠ´$HCŠ¦Én^}èE ¢\ˆû܈¾rèkÇð“Ž'ëƒÚc¶„+±oQ¸/Z5m]®Qî¡„Xx¥ÐÁG²D„&Ñ÷ñ‘¼ùlDa±÷5 ë`ó1ý%/JÝ“X¢YˆÆPïÅH×8JÜ‹ aŒ|¡JU§]ñ1Ïb¦:˜öO×9š>na`>¨»?¥ÑSó•gF:Ÿ…íÍ'”«ÚÚÃc F@xöÁ¶Õõ‡sÆí1Ï]žýù<³æuendstream +endobj +5021 0 obj << +/Type /Page +/Contents 5022 0 R +/Resources 5020 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5015 0 R +>> endobj +5023 0 obj << +/D [5021 0 R /XYZ 90 757.9346 null] +>> endobj +1367 0 obj << +/D [5021 0 R /XYZ 90 739.9346 null] +>> endobj +422 0 obj << +/D [5021 0 R /XYZ 90 739.9346 null] +>> endobj +5020 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5026 0 obj << +/Length 1686 +/Filter /FlateDecode +>> +stream +xÚÝY[oÛ6~÷¯02`KŠš%)’’º®h×t]ŠnËP{h‹@•èX‹,yºÄÍŠý÷‘")™²dGIž–<ˆ2/ç;Ï"šBñ¦>œºÔ¾CØ4\MàôRüüf‚t÷Lô϶ü8Ÿ<ù ûSø ³é|Q¯À áé<úpŒ¡w2Ã.táquv.š#Uãõ—`µN¸z9ÍÂjÅÓ2(ã,=ù4;y=o$k`ÔaHÊý{òáœFàÛ ŽïÑéF¼@€|OW‚ó’LÞO~oÖQõ„>ý(rúDˆ_°Ñ …]¥ èÉ A—Xœò0 ò­x`y³][´o{Ëe`ÜLXd‹ÝNSšã@ÿ–;ã…´8à´·`žFI”ÖºÇMéŽÓÆÚ84naÑvÑòt0 ׂ°‹u½[A+¤¶ßk|® ‘ ð–åÅîÒ³‡û«%8T쥃Â{w<¡q][#z?bw(˜š—qÄÿlù”ñ˜NZUESJɬ—ÉIIÒMÛ ­;ö"ÏVï(nŠ’¯†•‘ÞÓäã•É±i‹’ç:[Äë ¹‚âbÞh $U<ÚçÊþCº2J‹ë,ŽzÂ7A»>k(Sjz¦a5ík_ŸÈkL¹Q±ŸÜW Š¨aŠvS(%±ØecžYÞÕÚæÌžÏ_éÊ}ÝTÿòk‰bS"\g µ>Äó:Ü­©4Pòöóü·_߈) l£Y‡)íóÿöõ±ÿ[„#î="ïhg}å¨].ƒkëìuBËgç/ÏÏ_½|÷NGÀ ̳Æ0]˜øw;Hhgž6 šº¿­[ìÛÖ­Esjý®Ø=< ‚¥ã‹°N~˜ïÆ| ‘ +yšú%Oùµ‰¸AÚ9i‹.SgdaXå{b/½[ÆÁ%h¡Xß +R¾Ù©-E¸LŸ…£/yô¸3% +J½Jçñ5/LÊ‘ú ë0þ¬Ö +j¾t„Wi¶ _6°ÚAòÈYØ¡ÔœÞr^æAZ¬â²l&ò2JMê> endobj +5027 0 obj << +/D [5025 0 R /XYZ 90 757.9346 null] +>> endobj +1566 0 obj << +/D [5025 0 R /XYZ 90 739.9346 null] +>> endobj +426 0 obj << +/D [5025 0 R /XYZ 90 739.9346 null] +>> endobj +5024 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5030 0 obj << +/Length 1036 +/Filter /FlateDecode +>> +stream +xÚ½WmoÛ6þî_!ôCcÑ; CÛ¸YÒ-ikûІ"˵0YrõR×ößÇ7)’*ÅvW,!éŽ|î9òîxDÿÈâÐr© 8q˜lFÐú$Ä—#dÔ¶ÐÛÍ/æ£óW˜[p†™5_)†Å[óåû1tbc +Çë0ŽS{7Apœfñ“ókË€” t9C.¥£é¼6iQÂ4øyôþ#´–‚ÙõÂ=jíĈslmF&ÕG<šÞÖ8Z¡&ô9FéóŒYBâBTy†…£®vŒ1åöãرl$ÀO©~Rá9s°Õëpb3ÇÛ,-Ò< þ -ˆýLËL¿øÛm~¥I~¦Eyáaõš•AQf!P–lâLûæPÍÏ=ÀÏ®‡Q“ß¹A#ÀqJ Í›ØÈ“LW …e´]i’„A.¥@üüi~+ ØFà›@¡|3»}ùzqus5—çö³íã–ý,J¶eqW®VaV £¿ÂTm«+‹?÷Ør¡aûOŸõ ±™q~`ÕìZ%—qWÏ&'Ç«(ñãxoœÜ™ÍJá²*“@†E5Î7r_„DÔ_k?YÆa>®óýᤛM™˜ðZöGÅ×ÏsÓ1£H£¤MxiÇÍF¼7£}˜>=™~ºêØ Ê, “¢òIE³rhØ*û‘9åº&æôf-î)¨h nO3îm®uÚ*âaÅÓþqÊ¡b‘(Å'-’çâ¸nË%ç’]«‰é¡³T˜´¸Ì×QÀù÷æb•}xëI›ç¢ÒtŸÌýÁM™W9ïü½á—…â$1#ü¤: +S™îÊ¢;9 ¿ˆ<æMNæ~•ÙUõjR²+Æñ·:U$6"‡+~f–z-—aÒ>[ë}PÐü“ùoü Ksð&=9!MN`8‚4vï~Ô;ÖS<·Ý +£º3@vg‹ìÌ÷¥#Ùï™Äª`ÒX¨©KÚ\¼áæÀã¦êæàÅôòê¦î† +!‡}BÔBšMo.³ù»n«ñèWépuvÕ‰[¥ü¾nÄþò'y4È·L¾›>¿˜ßv ž)Œ³A b0Ħ$ÁvoúiýèæH~¨+âÎ KcÞ±èQX V½(¬…òò·ÛÙôð¶»}B¯…$èÆáÃç(‚­S§NÂþ4øÎÑjF÷ö„rÜÞë¥ 1ÊþÓÅJÝ =1ܼ2Q9ˆW]œ Iò2LÂLT˜¥¾ÊÃI>¯^®'ˆŽKó°y§˜<ÅPa™~[M0÷IýQ^½1£x·×Ï‹ôëþ“8:Ë#o}=ëó/ ñ¦Áendstream +endobj +5029 0 obj << +/Type /Page +/Contents 5030 0 R +/Resources 5028 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5015 0 R +>> endobj +5031 0 obj << +/D [5029 0 R /XYZ 90 757.9346 null] +>> endobj +5028 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5034 0 obj << +/Length 1357 +/Filter /FlateDecode +>> +stream +xÚ½X[oÛ6~÷¯Ò»¨ÞEuÃÐôšÙš­ö†"ѱP[ReiiPô¿IG’©8N‹ÁæíœóÃôá¸z{®š Ž€ºñêk¸ÎWRw^fQµ–i–I–N>ÍÞ^Ͷ– 0F8ªí~]|‚^¬¾A@Á¼kÕöÖ#Š‰í¬FFnõè‰FÀåCÄí ¢@`ë!VûÚÁðÉAÇK¹ZeÓë ‚ã¬XÅ`ÙwB0‘ð=R ´!ì@±‹§íÕ÷@"‹Æ.¨á É”+,ǵí-ê)R.S¿Yðøq35ÝÎ y ôf K53`œ"¯5þÆq™]Y•kÛažo´ L@€  +i(§¬‘ bÀ†ömXÝ£_àŽ¶cã~]e¬™‚1>OqGw #¨¤’T H]ƒlïعIëå2Ùôù}Ø;ðÒŒ¨õ«*–&\Þ'9XÚ¤`VFašfeGªµx˜(X¥Bëê9#JÙúï·çó“óó'gg.æÈÓm‘!,.]†ëdÛ<¤]fpˆÅ½ö±—ù€ˆºòqØu±úP"DtÁù.Ä⮨'iRî ¹+1ø3á®–„â›ï“¾˜ºçg‹ýêlÅ~è«ÀÖÿ6üÿ#é?}!€¨ï|’ƒjggü‡^Åšw=¡DÁíW/UÓûŠ§³…G°¬]°Pj¨od* 7ë¼ú‚ªÿ·wÄÆ•é¨O]ýŸbò›@ !׭ųqëÎîSa}³éW¯7Wrç}°~¸sDé?TÌ¢endstream +endobj +5033 0 obj << +/Type /Page +/Contents 5034 0 R +/Resources 5032 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5015 0 R +>> endobj +5035 0 obj << +/D [5033 0 R /XYZ 90 757.9346 null] +>> endobj +3302 0 obj << +/D [5033 0 R /XYZ 90 739.9346 null] +>> endobj +430 0 obj << +/D [5033 0 R /XYZ 90 739.9346 null] +>> endobj +5032 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5038 0 obj << +/Length 1998 +/Filter /FlateDecode +>> +stream +xÚÍZko£Fþî_aµ•šT1a†›I_U%6›°rŒ xÓU[µpŒÖ€Ëe³Qÿ|˜ƒ²x·Ò«½ÀÜÏyæ9—ƒÆ,ùƒÆ2;–‰‘9^;Áˆ?’ꛢÍÒ>©w¸¶F—o°<–YÄâØÚ3ˆˆ0ÂcËýíLf¤ó سøMϼ$Ú}<—Ø3Æ9ÿÃz;æÙ)à +"™<ï‹ÊkGªU­H8åëý=úívìÁÞŽX†“§Âø‰XÉ2#sPØÌÑ/կئ&í›&ûßÂ.}UòO‘_~•üÝÐrÃs«Y´ŽýÇmzðÔNᾊ"fYVcÀ¾ºEÍ«ÀÙ«ÖF©ïx°.¸Ç—G€Ú®4yص ggûAåyŽa¹©Øyx +ƒûÐÛÆñmÂJ7s¼/\þÿ¼‰EÞ¿sxv¸ +nädyÀ´¾ëÜMDŒá|™’“› 9AÓ9ÈÕw´‡5üðˆÀQÖTW‡`€HPËnûέtùå]€ºQ ¾& :QÚ“òxø”ä…À挫#Ò†¬×&WmÒ§ÊÿA8(›öž“;rÖâܹá¢>Åy(k‘!I^Ù]þ” ÌÖ­Fs7›(™ªñN›©æTNÝlqmªTÚ¹b)-Œ‰„ý0¸bÎÚÔ–½nE~•¡--Õ0Ö+KÓ—‡cÜ­~O( ;®aç-ëÔ—-ŸGÈ®ï›Jæ/L»çbN~¨º¿UÉjà—/-C©ØmZ†6³^ˆÑÔÒ ëÛzd~~Zª7 íF]ÎÔæÚz®Á½fªÐC3óåjUøÞ+îºÅêÊÍmj·h}lI!~^Ü—®¨ÌßiY^H\´©ÕýÁ0g·` ¹è9º â)Yƒ };$Hpí8íH*«Ÿœ¬ÙêÞ“Ôv>ô)5=I©áá;ͽªß^1ÎýQ1Bu…#^’¿®tÐ/^‘3'½ƒ õýê»n½Dö½Dô5oÍD|ì÷X®”ý[?tvœÒ¿¡ l¿96„?:$ó÷ý…c ñÒÑ!X²]HÄ/ú.¡ø¢bJ† ׿;Yâ¦ðK?¢ˆ]^èÅvq‡“U‘Ÿóòç¼¼=GÂYF Ó'{…¹+Ì–¥œ0åÛæ Å(/†PôfhÇüw†ü9>=?’£B žü£‰#øü ½ˆJendstream +endobj +5037 0 obj << +/Type /Page +/Contents 5038 0 R +/Resources 5036 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5039 0 obj << +/D [5037 0 R /XYZ 90 757.9346 null] +>> endobj +1567 0 obj << +/D [5037 0 R /XYZ 90 739.9346 null] +>> endobj +434 0 obj << +/D [5037 0 R /XYZ 90 739.9346 null] +>> endobj +5036 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5043 0 obj << +/Length 1362 +/Filter /FlateDecode +>> +stream +xÚµXëoÛ6ÿî¿BÀ¾ÄÃÌò!Rd7 ð7K—ș݀´0T‹Ž…Z²#Ék‚aÿû(‘J¬úì&Ý +0÷;Þï%›ñö Å|áÍÓönÌòY‡¸ížÙïíü2é¼xM•§Tx“EÍAÄ)¡Þ$¾>1ÿÝ p€O¶çWfÈñ AØwQºYi;9]Ï·©ÎʨLÖY÷ýäMg0y8Ù Æ™ Õ¹·ë÷Ø‹€o:1%¹÷ÉL0"JQ/íø”5“UgÜùýݨ~œ0HAᙕ“FAjô ¬~Bt{ã“ï’l¾ÚÆÚÎ~*Ê<ÉnÐòçJû§/|n!´(>‹,Ö ; §­r´†0Éôm=z‡9þkÄ5’`Ž(æÜ룶/kß×[> +$%ÞκA\ïõ6:Ê@´°;Xgqâd|QÓsŠ¦8E!.üÖ)ZQ†Áþ!Ñv1öãHrÅÚBÀDÝ•Ž(D¨díƒìIÄGæª[g½#ÌO²RçY´²\&Kgä4ºKÒmj'Ù6ý s;^;käÚ\¼.ìäÓRgv;Øñbí0‘c¥Õ²0,æôiwå,Â|£V¤­=ä²ÿçl4˜ŒÎc» !»ùÐ"ÿ&Æ< ©.ŠèÆ­.uëÜ„Š¸:ì!A(6>âm\š¨ÜÎK;Ž³b¶ŒÝUü it{DšÍ-3Jâ!JÙPʆp±Šn +òÃ΄‚H(’]f¯/úgÄ\×øjŽÝž_±ÇwL$>Êdxõjx:˜'ýÉtìÅwäDžÂé<|;UBZ³Â#IúD¡ÂÓþèÔnV Tì(«þtòëpÔŸœ¿5"1lù@n,ý£|&£iøÊ,:I(Ä¿.£‡ô-JJRÓÙ¨ÿ‡ï98 +ŒF³Ëþø·gÁ ˆ‰ü"“p>z|#êËLú—;LÀDáýø2)õv«‹ª( xQÄDYñIç0‚ˆm¹ÌsÀ@€¾+óèÂùÕ?à&‡Å·M¨Ö@rµ p›»‚C F>!äYùÕ—Hˆ `U'Ø]A «šÌi™SÃZQÿPѲ¨l®çë¥Ï蚨Ș•¶ä%ˆ¿ò~£!/&¼ù** +˜º²\]Ó÷09r+Á´~C›lfÉ&Šãü¡8×3Å„(Á\|ººÌ4Úvh‚¡üZÕÞÁlNǃ¦ÔXuþ0_IUq€ + !ø ÒT„óðÌ®PKbOëJP››PzjjÀpäZIJ½¦ÉDl »ñ÷ˆË¾jÂ÷H]S“‹}1ôm¶†‰ƒ=b£Élóe”?:Ï5;D}_S|̯)è+”_šÓó«Ù«aøºj9‡ogƒÐ~(@x¨û V¯×N›&L¯ +ýµ_Ǥ5¾‚¡‚çÔ4" +ˆ >•?QÑçOü‚“¾|Ríûÿõˆc,?“55àªz ádþ…ÄYMŠë¶ìpT00O2²ØS—QèY‰˜r€Ï]ؘž.þÓ‹Sýf& Ä¿ûdfJrÀdõ¢Ä¨V]^#J%ì™ÎtnÒalÇÖ™ý¿loº„Ÿlݤ~c«þñKÊ^R÷ºfR¯°£E—òº¡©&ûÏp»û½÷öV=ŠVúÂbéôendstream +endobj +5042 0 obj << +/Type /Page +/Contents 5043 0 R +/Resources 5041 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5044 0 obj << +/D [5042 0 R /XYZ 90 757.9346 null] +>> endobj +5041 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5047 0 obj << +/Length 1592 +/Filter /FlateDecode +>> +stream +xÚÝY[oÛ6~÷¯Ð +t°ëX%)^›u@‡zEº6ÝoІk+‰ÐXJe9m°ö¿eI¡oX÷Rû’Ïýð𣄤ÿ8P(L„*¢<˜-:(¸ÐŸu0š>¨OøeÜyø+Q +'<Ÿ—8Á$ÏßtU(zÂP7ïaÙ—ÙÕMO n8ë½?(’!b\ 7s ŽÌÓÎp\iƒXıÑ÷±óæ +æÚ°çFJ²à“¾A!VŠ‹%‘»¹êœuþ¨äXBÉàó‹áÈçô°sŒh?…õ GQoÀê.‹i‘ÌÜu¾šöz•\OVóëÉ,KÓÒWLeH(%ÁkC¨,Å<°a…$8¨=ÏËHYæRÜc;œþùâÅqÉ3À, +áÚpRN˜EK*j=eÞ§Ü +}XI*Œè&óêÖ ¾Ý¯T1rÆ¢½Bc­DŠ„˜(ÙrIìtéd#Ô©nxõV/I‹8O§W CgŒqÞR!w„K…ŒÓ†É¯§W¬]Åež­..íÍÔ³lq=ue§³lÏíÍÓÓ3{‘N1ð¤@Ëãb•§Nj츚Û1)Bp% +©Ð.4]Q;\T$½N¹–¢ƒ#`b[·x¼ÑâÊãó6ã)>´l¡rˆ.6EhKùîÖõt¨UºL.RW_³ËinWÖ)cXúJ`MkÔµ"®§ù2ž˜\½E m¯—ºîÏ«8¿Õ²0h§:÷œà–kÌjøÇ×Ö¨nkXúµ•uìeÞ§„ͳm*Uo!#Úuk3Iï'‘¤r¯L–n÷ûÐÛ¹Î'窩„!Ÿj(«úÓerU&løÙ¨ŒåfÓ™.|JªÊg$äˆølv‹°F¸Îu¿<7:ïÝŸÝ;*§U¦ï봱︡á€ÊÇ +‡D’Vå³|ê÷KÞ|3 +“A0‘ýê's [St¢Hrñ®™øÞ[à‚qИcÖ.UûÕf¾ª ›"*z@†¬Œ× + +êTàPD¸µ8™[2wdÕ³×c¶Œ´œC +ËGk¦e5íS`_}Cª9Ú·öf#Kýê%âïnáäT<:NŒtk÷ª +;\%Ë¢ +ÌåX “/c˜¬¡Gî`Vu‘Þ:âD^Noâ-¸„ÓƒÝI3}ÃÅû8®fâö0þŽš6/³#çM:³UјemoƒRœ}K(Å¿¿cw¡ÔM–̽M@:¼Ï>Lâ´Ðé[šŽf*`ÓfR[¶hª†u¡ ;Îïž6çérr9´UA¦=ÜÖLîĶ¨Ö}ŽF¯FÞ|K +bàå×y¶Jç혚ë£õ»°5­© /Ú÷CvM¢aµßE*´§wÑIáÀÚÚË)<«àR¾J+Äã`€»OÜEvWYÚ„iü¹°Ök‡‰b­æ©tÅKZ¾¡*zZŸ'9ƒ¸×' én9n-OU5㣺ì~¥Ûg•Úå7Š{ä´W…Q*áam6Ÿjò±ËÊaUÕà º0³6b¥ê%únxj–ˆy«¯ížO‹é±ï[1Þo'HW¹Úü?}Æ(?ÀHÍ‚#Rÿþ¢ô"’î3al~§q®S<·aÌ0ãKwñ¼‡Yw7˜Àˆ‘èAöN‡”Û«óaÝ,·7«“ßavßßÚñiöùö"NÛá1ßX<ñù`ÎGEendstream +endobj +5046 0 obj << +/Type /Page +/Contents 5047 0 R +/Resources 5045 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5048 0 obj << +/D [5046 0 R /XYZ 90 757.9346 null] +>> endobj +5045 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5051 0 obj << +/Length 1707 +/Filter /FlateDecode +>> +stream +xÚÝmsÓ6ø{~EÆ¥µÐ‹%ÛlìŽÑЕA6Û—Ò˹‰ÛøHœ`;-Çß#ë±k;r›–}\j[Òóþ*‰õ)ügý€ö=é‘@¸ª?ž÷hÿ†÷{ §˜wê ~öž½æA? âª?¹©}ÍÞ¡T‚ YÆu[}´+¬Œ¹È˜V|{ÔiH~ð V²‰PùíÒåJdÆDa•¤ÖÈXrí2…L[lzì–OtNí¶ö¯¸¹mUS×#>ìZ•[®ú7Õ¾M¡½ëÝZÛõŽ?ÀÎuÐÙŸ¸Þ:ÁAš.Ò;r+A>Þ½<þ³› ¿Nðp5¯6EõÍ÷ã ÒÅøh®òiš¶£¯y¦kìÛ8){Ϧ¡êgZ ++¬¤]°Èj7$ë„,Äéä]€(ò­'-ÒDcU9ïQšl¥[ºV"›ÆÓzƒ1œâþ¾ ¦{Œ¼œC'ŒÂI•Ð¦‹Õ û’3\¸XU;‚¼ œ›Ó„ +_qÔ`"Q*üV—ºg-ôÙƒicÚóál¥FYÖ×Ø~àUKvc–åó&7méñì$>µC—µ0.¢yøÕ< a¼û÷hp8<:7öþ-4Š¢‚êgIºF¡~_ 3Ç×ÃÁRÂÁá~{³ßFimUÇ݃Qie-»Wñ¦WÅÙº/àP²Àîõ€0Áë׊žðõ)»à¨û‰’Íê~”D)xÇÄ\,ó|W¾¼Ùar{…úø¯xÒç\<çxãÕA™·ó.·µêõÇúÕÄÙuy+ñõú"Z»Ð-ý @Àendstream +endobj +5050 0 obj << +/Type /Page +/Contents 5051 0 R +/Resources 5049 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5052 0 obj << +/D [5050 0 R /XYZ 90 757.9346 null] +>> endobj +5049 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5055 0 obj << +/Length 1755 +/Filter /FlateDecode +>> +stream +xÚÝY[sÓ8~ϯÈ2ÓB-t±d‰…ΰÀ²0,ìÒ0Ë 0c;‡Ä¶CÛÙå¿ï‘%;±+‡¤Û§íelërt.ß¹H"c ¿d¬ð8àRÌãh1Âã3h~>"¶Ûƒ~osÀ/“Ñý_©+¤ãÉ´¦ â”Ðñ$þp PpèQŽŠC"’2Ÿ; ðŠ?M^Ž},æˆë±”pÝ:z6iW´ q&ˆ^ïëèÃ'<Ž±—#Œ˜’||¥èx1ò)k>棓џ-ÓQOpÉÅ s &ÆÐ`ÒFAÎÀÈEÈÅ0Æéô#æ8 É"\.«Â;NŠâÐÐõÓ#óÄ0‚˜×¿k¹A +ùÂç––<ô| +½›TÊ*¬3É’9™<ž<;}ööí›·?;É(K¦¨õ|:ÍWYÜgN¿z¯ß½z¥9s pK¬Z™{ ±:øîì¥ÎVfçÜ7`3)Æëø²s·îQˆ ŸŽ7Úÿ²êȳù¥y‹Â¶…ŸóUe^«™mûºJÊ*Í3­‚rm‚0‹{ìèH:I&U68h¹,ÓŲá=NK`?NbT¯@™%¾C> +$%›š0ºó(Sˆ`Æ{\q«á¬Q@ÙѬ‚­“Y¬ñ°Z´Ã†Á ’VUÛ ÚAÃäg«¼62N¾¤Ëž4ÎÍ[š àÂÚûýû÷˧V²r–¯æÖ¦EΣ}N¶ÁAY8D³$ú’ØéáY˜6؇;ë¤UÞ®l8[5`ªfáñ—.JlZ„U438“á `C0s La$¹b=Ò¤EÄ"ÀÒÄ2,ÊäT÷hTèÿhG""@, |—õ5~Véò"WV¡¡}Ï<];´mò Ö<PD¸ßó +éŒF²‰Fç³tž˜X¹‰ðãݸôm°4*kÑá†nÇ•Ûh3M‹ÒÚóóe5„Ã]Ì2_QÒ|Eya1'UR,Ò,±b¤Sû¬ŒŠhHÕ‚׃`”e5å‹%,U&ñÕ…ò¢34Ë‹E8o¢tb#gÈ÷U°WdãQFz&…U³É¹õÐV”ˆw°zÇšö"ºb]O¤ü¾z ás¿µñðºWmü¤§A͇õF‚¨âtÕ(S$–}”–»ŽŒ÷Qg–jGY˜.€YË"ͪZÿ·úr…Ùy™ ó³[ëàO ’ûdÙÇþ0GJ¨ ;l«¦&ùn“ì¼L¶x¥"׶Øë¼rƒm:‚1‚²’ïe»€ÅD_,ê²Ý±b9Çx7ÇÒö°ôצñˆÊ~"S¬Õ³K­¾³•Û9a¯Ü¨«¯ªXEV£qVžÚ(v„`eØë•Ø1o‡÷ãšK[T—K‹µÛ65Gó°,{mU5ïµÌ“쬚5Æ9Ž ÷m.î0qFú›ehË;Öëkùz5WÝYs²Ñ[cÝéÕüþT:—ñ¤]óáC›^Å:&þãZQÓ#Ÿ¡ußi мWyË0è‡Ó¾q•CÈá×ÎÀOtµfsp“Ï^üa#ZkïïC ­÷_dh³¤Ú„­*ß@Ênª]ÿæ]Ќͻ½! ±_Þ$äã½¼É0íäÍOÖO­£þ6yóúD÷“µíïÜq*›YŽ×à»6)“Àf€ßÀi8Þ3Ìo$«9m;FÍ_Ç…G'¿ÇÄuÕ)Ò¥&Ù¸¡©/m)œ»Òi‹™éÔMIn£DvçHíJgƒ£u¸±M.#øÚ¹}½ß;O¶ïö¢udØÜl5õ±(i«u°$ (`¤'h+ ¬œ‡YuÓîO6ë‹æ¨Q'YwñåªaÃÔÈ052@Íw¶6ž¼ãIÖUV†Î-é¡s-F‚}êLئl©ßºõ¸Í®¸óéLnÆÔ–ÂŒÑ&z^³‹uR¡ÛŽí´9ØËœ­&ŠL1ûJ‹QÊ"ÃuÀ&¨½›û1a6•‚s¶W ¢ ²@}ÔIüP¤»vïƒì}:E,¤´.`§lÖ€½.ïm + ~ ®-G ‹°97x÷Ôƨé*‹Ì™—YÒfÀî’r_ 5!ôªh/ Rõ¿3;³~û-OcÒYÌ@Ô‚€A2Ñž­g ߌÑ-±…1ë¦tÓÇa«xyåYæ˼¨ +&ÎSÿj… âΫ ø"‚‹ÿtëRßI˜Bݼ.‚MpÀds«b™Ðâ>O²¤+½ÙÖwFyfž¿7// ?XÙÖê'~@ÙüôÄ?aÞ¦‡”×Túc¥“u=ÙŸ/Íói~qyugO=úJÈ¡Ÿ“p™²endstream +endobj +5054 0 obj << +/Type /Page +/Contents 5055 0 R +/Resources 5053 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5056 0 obj << +/D [5054 0 R /XYZ 90 757.9346 null] +>> endobj +5053 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5059 0 obj << +/Length 1399 +/Filter /FlateDecode +>> +stream +xÚÝX[oÛ6~÷¯ +l‹—J%)^Ûµ@‡zE‚,kg{hƒ@±åDˆ-9º4 †ý÷Q"%™2-ÇnŸ’À ÅËáùÎç:@þCG‡æ Sg²çZ¿@=íÊywuÁïãÁ‹?p„'(¢ÎxVQ Ð#"g<ý|€ ºˆŠ£²KÀô€êŒ¾‹å_g*<Ïœ8÷òxPä,ùõÇ|p6øØÐQÕ>}@êÈ` I¼Láó}ð?ë,[c'ï§A<–#®9êl³ó"úxÁRÍoœÕ\Ø'‘š|QM"ß`Ç…Ru˜WK~­f°Ç8rV†Ý÷WàîQBüMgÃÕ÷®/‘àHþVHŠ®ÛÌqPÁôv¼EÂ#ì|,Â"ÌÔ©jâ`ª^–¨6¿ rcÉÜS¹`õ5KÒz]Ø%qÍçªwU•¬zI‘{Z¾‡™‚) ²Í!Ð…ðúx¤Á¢Ëý¸t“dy;ÜÊ#ҢˤtÒi/<¶«ÝjÓAÒÚÂjüé9ƒP¾&ÑÔæÿ¨ù4Ì’ù×ËRäe$šÜiµâ!@ècÄP*·ŠzCÈèÍíØ Ò,+o§‰ZYðËÚP¬±‘ø½›æYx÷¼ín 54¼Ž²<Ô¾˜åi1É[ƒ^K%,‘J5Îþ:ùûrt:þt4:ÓK£-·©/.-㤟ËÁìstaåã†ÕÜ7¥šu„x­ ߎG—ç§çg£w[¢P_»WiÜÚF}—-õ ¶¤"b·ÜÖP£íÔ›VmÛøÚ¿5o;ÉŽ…¬3õl÷Ú›õPÖ—iPnzXdªÎ´«-ÂaI¬{ƒ ƒ{›C}P™o­ÃˆŠÉÍ•µ% öäkÏeÅy%¡gçY_+ËDõAuš–WlüL³¨Mw +Gúº€‚Êû‹kb´‰°édù`xcÙyÞšãÆ –Õ–cõãU7>ýc§À×(´±ê#öݵn^ÄAOªÌá“Ë8ú®T™û;g‰'Ir«o襑 ›Éaw’á MíÉLµ·qr››³¾\‘ã½RaNöJ…ã$oòß:Áñ¤Íø“x®Í¥P² ÀePÓ8˜oCìÝSùFœu¨Ñ)Ð4©«‰®)D¦M!Ò-oêȵ^Ût´=«©Æa¶3’û }RIJ’0 Sݸ½‹&AlV&ENÍš¥•ƒ¿ ßL#ÆŽËô½ØËèØËèÓ0/R-«·ªY&•›ÒÒ°{õP{I.¥šg)ÃÄ×Ìæ­Õ£=ÐÜC0J&j³¯Å}z~rbê;n¬­qÊìÒzp ý¸Ï4„ÿ#kgŸÜí(ˆövHe1Y`G€Ùܨ™2܈¡¥ŒóŲS^×Eò#+É•úZ&‘¬<ÊdšõäÏ‚ïQ_ Ñföj#ŸìS 7¯ +'blÏÒЃ˜YŸËtH ý®ëêÍË-ÐG«OîÔÌçå‹´äÆ2k¯Y)™}Æa*Ù©z\/CWÙþYwŽ‡ú"Ý‚—ȉôë¼,Ϩê͆ˆTa§üXÆ¿z¨_ð¿=\‡ko÷壺EJÿùÚË{endstream +endobj +5058 0 obj << +/Type /Page +/Contents 5059 0 R +/Resources 5057 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5040 0 R +>> endobj +5060 0 obj << +/D [5058 0 R /XYZ 90 757.9346 null] +>> endobj +5057 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5063 0 obj << +/Length 1263 +/Filter /FlateDecode +>> +stream +xÚÝXKsÛ6¾ëW°—ŒÔ„Þ$“&Ó´VS{\¹Ôöàx4´ÙœH¤Â‡]·“ÿ^€iŠ…)ËvstÀ{±°û-¸Èòœ:ó@@(wf«t.d÷û2îw›~˜ô^þ„'ÇÜ™,J †v&óÓ~¼‹ì§ä÷E–,¯ìƒÙàlräPèȸ®æbä©ÞÞpRïhb„#µßçÞétæR±£$ð™s-  ÀΪG1©ËÞ¸÷[-G” l¸"6`Ü‘=D0,qz…hà"ÂþË !€z”9.’»P¿œóm9Æ)rý†ËO—˵ùeš—UCèÊ2ÊrÓ•è2f(Z´æÆáªÊL×SRtýÐ,‹òz®RÍ¥@âsy±€r©½F†.)e'ù =ÿÚì‘Š¼HüÑïÇÇ ƒ¤Ê1²€§Àóñx}\.¢>À”âÖÖÄê"I?B#½Õ]À×F{]|§‹ÃñÉñÓáhòáp86Sž?äz¤ÿ”[ÂÖVT¢„æ×yº±Ó3Õ™Fg¯­K™Y-”’F€û6ËÃÜÔ#hÿuÍÈhendstream +endobj +5062 0 obj << +/Type /Page +/Contents 5063 0 R +/Resources 5061 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5065 0 R +>> endobj +5064 0 obj << +/D [5062 0 R /XYZ 90 757.9346 null] +>> endobj +5061 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5068 0 obj << +/Length 2089 +/Filter /FlateDecode +>> +stream +xÚÍZmo£Fþî_aõ*5©bÂòfH«ªÄæbNŽq'=µ•K ŽÑÙàò’\Ô?ß…ÝÁ|øîCu§x_ØÝgfžÙ@]ÿC]…íöÅ>£ð‚Ô]l:l÷7ßuíîáþÞþ·vçú=§tF‘8©k/ó$Ĉ⺶ûLJäË×gûìEªOqQd/Ã’‚öÙÙlש ÃEºñ‚ÄIü0¸üËþÐÑìbe +Lä%”­ûOç¿Ø®‹~è° ¯Èb÷WX) +×ÝtŽ‡Êºcu~+æ!ù€cò‰ˆ?. Ü„¸OT, bYö"ºDò…‡ë—K,-³ªÊ ‹ ‹ä~·Ïr Û—J>@÷öŸ&h¤.Æ×g€24è²'a(×ÙÚè rþÀ?æ]½¢OfXIé[ÕÊ{F”ÔÝkÿñ‚ãºIø…é–¬ä«p<£ ëTaIó1|ëU~ý·~6áÄlÓ—¹Òl×T +ƒ8¹<™ø5Ú“ÎÒÞÒÇü¯•®ßzÎáÄÚ7ƒ‘Ú"t=RZyŽ ­ÙâLýêòy|H“UHP]gCJÃ4øä­cRùÙÁí¿º¤‰Y„›_êA(ßÒÀˆÍûØrcyÓÀ°ƒ•v3îYq'F*inß"ÿy•eÿdEvÿPËr=ü‡¿ªQ!Lf$…Ê’ð­Á¨ë5åK†(.¸ãE/žÛ´”p–¶ÄÖMÏõã$òŸÒ<.äøœÀ%…4¦¬öiO¦Ñ«<õäNôF)F›˜ªöÕOV¤|ÍZÂ4i[j-À&tý¥¿ÈÃ]؉(Ä­mü$ñ(Ðm¾ø.Ô’•“@ÉôëuøêÏ°«×Ïæ÷[#.àm¼ä¦af¹ṏ!—JY.m¸ó[›4N€‰ö.4ã<…/ÅØ_õЕÐÁíuaâ/¼+Xק¨×>àü{V)ó°ÎŒX‹µão¼ˆn8gX^–J9¶µ¶¹&mƒ«›ãPÛ˜•n +9Sáú*¼¬‹ìùzpíEpKgZw î&Ä ÒâÆI¼Èw B–=ÁÎQí[´‰5í#OYcÃR³ñÊ +ß‘`/ÖoÊ"l7J-¯ðÒ`üzFà»a,ó&L¼ í-@È Ÿ|ü³ÄëUɇËäµðH×Ö[dŽÀúw½ÞÅöP_£,{‘!ŽOXW:'sí#‚=Òé±Ò2ÞÛª©‘´NMãAjCR»ýH4¢©3{d˜¤ü÷ߪƒøöO†P Cµß§¦fY \h|~?ë€Ëbª[×,êhôÉ`<ê“;Z¿Ù¤01ha¬ßë6Œ·«Š°0}=t¥5ôJ²†ñžüÞkæ`„;Ô[}¬Û+Ú|¯Û“L‰¤â«ÔdªiëƒÙX¥ÍÓ™95,­6ß><êÖ`¬ê÷Ú;Äåj­Rƒ?hª_k¤ŽÇ ºÕÀêíX«J‡T/j-ÂP7µ]p£R`Òcíiƒ5ÕzQÓ~×0Tó#­Ä1±´ßfx ~¶lû›ÅP½Wï€#Ù½â\2ãý<˜™Ú}a œ5»µlÝžÙMDisî ch•µdiæƒ>ЬŸ(NêpfiíPµÕŠŽ±˜ý0¸`ÎÌÒ'n…Zc×'¶fš³©­“Ý5nd°`”j¦}„m XÛߟ&ÚÝX¿Ó&­¼¶‘Ið¨[ÚN骩[Ùò%± +ý>ª ÜY…Õ…›ÁfªöèMliI!~^íÜ…KWT‡zA–€ØE[ú¾³ßmÌÁvCæ®î¼|ΩoµìâX•g¹ÈQ¸N”Ô*óáIwy,vÝו¿X•7}¦“âN»‚«ŽCÓaœì®š…çÓ ))ŠçìQúgVs—)뮟½ÓÊný êÓ[ÅÃmðtíU³|øšW̲ùõ¢·>ðR€^ñõäÛØ窒E­Z/KûëÜ«Wò '¹¢œÃ©ý½'{ ‚øùÖèÝkb™ȉ$‡ù–7 +a×aø L”ná6µ[°Vx©}¨ó·ŽëF§‘S+ ½§·CQé EdùÚ"ùVÈ ¡=[Ä‹ãÃÓ@½,í¯F@Á +U'3ðÜ~õRæû"L×nM~ëï¤o%¡&˜å0ò·I+‡¤¦'0<ÏË_´äžvR$ÍI2Wì3¼,|Ù„.»Šwb8™“ËðÅcïöƒ„þÑoXlL$‰ÒW½öÏ?\ñÄsû¯õ%FécõØË.ÏáÙF€’_K½À‹œÜg_(d.?û½‡Â‡K$^¤´‚8úËÞpü G?qÈ΂¤´¼äÄœwYåð[ˆ,HÏ >¿={@d_&ÑÒ'­)'endstream +endobj +5067 0 obj << +/Type /Page +/Contents 5068 0 R +/Resources 5066 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5065 0 R +>> endobj +5069 0 obj << +/D [5067 0 R /XYZ 90 757.9346 null] +>> endobj +2466 0 obj << +/D [5067 0 R /XYZ 90 739.9346 null] +>> endobj +438 0 obj << +/D [5067 0 R /XYZ 90 739.9346 null] +>> endobj +5066 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5072 0 obj << +/Length 572 +/Filter /FlateDecode +>> +stream +xÚ­TKoÓ@¾ûW¬ÄÅFÊvfß[.Ñ"F\Je…ØI#›:qJüwÖ^'Ø©#R|ØÇ÷ͬ÷CîCbh©©åB‘É22sÇW6îóÚ¯FÁÙ%³ÄR«˜"£i]A!• %7¡¥&0 a¡ ÓU¾ØDBzÝŽ†D€¡ •+^Å2´Õip1Ú#6„$WXáÝ7·@GlåÖHòà  h-#Ë@0¾3Áuði_Ç;ꄾ¾$ò¾Æq'p×s}jß—RÑ@„guh)2ãj Ã¦Žx^{,•J i_–Ùd=ϳ­$£ +˜éITÖIõ`£(híÐ,JHÏG{>›|žø]Q;žäÙô+H(QÅkO– Ê9? 2ÉV«´Ø¤…«/<>º9 JÛ%`<ìÁ)p£N‚iÈÎÒõ ªVZ¨BSÃ@wAí‘®çÙ|ý¸t’5üÆ‹<ÿ^þ¨ &wãÂ_9P#-?©J6^¦íÉ:B1ìòÄ#MÞ—i±í@?éj±ûnU³¾ÁqOãYš%óiûÿ™¿ƒ8þ|qýáÝ—øM×!ŠQTÊ>å%ôs}œå_ß«ÇB7Awm°—¿:ž“ù +RºWXÁÍ•Tÿ¤qµ:—‚œµÅY9Ñr¿D£a ‰ŠäUš¥Åx&^¡ó̯ïw›a„2,Y³Â9ãç ¼Å”ßM#&üðFùöcM›Ào[¿¾Îngiv8žJ€{æóÛ¡‡šendstream +endobj +5071 0 obj << +/Type /Page +/Contents 5072 0 R +/Resources 5070 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5065 0 R +>> endobj +5073 0 obj << +/D [5071 0 R /XYZ 90 757.9346 null] +>> endobj +5070 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5076 0 obj << +/Length 2024 +/Filter /FlateDecode +>> +stream +xÚÍZ[o›H}÷¯°v+mRÅ„n&­ª%6I¨ãNµÕ.qŒjÀ 8iµ~˜C€·«DbîsÎweƒ!‹ÿÀPf‡’ 12Ç‹CÇ°ÃÜ|9¤{„ûGûέÁ锇2#‹PZ«l0ph¹ŸŽ dGPb%öh§-pQ`Ãæõ›ío7(¯LCgç£ ±/ Ž¿XïªUìL€ œÒ}ÿ|úÂ] ðý€e8y, Ÿp…e€,á?à!G+›9øP¬“wdšø €k&x·@ÊbÂRN—ŽG€eÙ£ØO¶ŒSG>Œ¥¡ÄB†•ÄŠ\ŸíOöGçÄ!F%±€B R àx$b§éÞÔÀ<ùq6àõë¬kTôV”¥\Cí³²™D ÷Ú?Ž·]7 ¢p·Í÷¶·Û8ßrŒ X,G™áE^Èfp½÷øóßöÕøVãi +«ú2ฺ˜u±•6ñgä)$O­ö¤™šR^2¯­E^RG¾ímH? +\µKhüKå-¿°Z£›Ï¢"ÿ ÖÒ^ÒòuAÚŠì ^aÚYm…I脤ï3+°©¨ð“8ƒçO,X/@n^¹ÿž?‹ ¶¼ìQ»3¢ ù +sz“H(‰8±׎ÈÎO6Ù:\•*ô‚6 ñèA{ZÇa1„·h‡ {CÖ‚EJ"çµGdïéÑXÉ,-–ÁšÊ1âÕ°uºU5ØAd®7ä +*ÒuøDÖ`æÕ-1™hþÄy餦Êž§{Ð%Sµu0á{3 wÉsMßÓÆ5•_’–{„ª,èØ{DbZ Šä2ð„àµFÎ<,ÔVB'*±³i§×µ`¼4ƽå—Ï•·éò¹÷¢eÔí2ûÖ!{ {—¬CÞ×öóÒt|EÔfßÚ¸ýO7obœÐ×üJmCØ mȽ¨íveÃþÎ2 ·ß#ïa”Qß)C>dYþ¤E|^…Þ8” qÔ ÑM„b=v: ”Ô \/N"’"@Ñm£jŒÃ]ä Ú¨{/°#YVaäÇD´O^²&q7*[Ò0ÖN»¿[û¡ë­<'s4#q‹"ßKšbpXôŠ„“¬í¤L“ýf>)Õ qæM×íHü°Ì(àù(9k_™ëIÌU¥Æµ÷‰=:¡K±ìâ„Zgb{AM2ö}øXÌ¡®Õý¥€B_÷:pÞòtB÷¥‰uãQ\ÿžVj¯D-jIJp6¶ç£ˆ8Ï1,7«û¿ Á.iS Öã¹´±Uº;ªCÎý?^•Eñ:Ú¨¾?·r@ÁÒpâ IÑ·ñ›«gÓìXe *ík´ËjúgŽXÍy%¼bßÀökïªE—ĉ—ì:2lš[óu¦¬ÃœOu3N쯟žWîQ‘4Üê«0~ÆÛ¢j.À*ðCJ&÷¤8‰Eøe•,²Âãê6‡«ä) £íŠ‘ú3¡Ù)ßb‹œ4¯P|^‘â4£{ &Ž_0’ñ!¹œëŸX¬+Í$çbýºU •Xi]ú6U§yíüŽœâ®è°¹iiÖÒ"UeNNô¹ehçKK7ÈBÿ­˜té?þ(‡·ß?—)s‚Oý¸0T“ì§dßëÅL£L0SC™[šjžP&“ÙrªÍ/Ic'N§“ÂL»Ö,:ßÒOJQ´sèÄoAI¨\{ Õ˜\áå\›iÖ]Møš5/Ø_Pú +Q¨bXÚd9SHóbi,t³‹Cÿ,WXÑT3'3E»V§8‚˜‰™J•hêFùšWÊlÖm_”Ësó:W©’”óY›þ×¥©yM5CX…áÔªì/X53Ò`.Ô‰VÔÔ*V°bÜfÅ3Ìgƒ­M¿O³Ét‘ÕËñu´˜Õmú‰Æ˜ôØ%ÅÖ.Åì&ä=`ˬ˜æée˜m€ E  U`uDöØñÇìT]°³CýÔ=vbg'0;l)5Å„Í:=©ÆÀ`š÷U&´KsxºO5šH!ØA“×î¹V„JuCb. 17åô*ŒÂ_ÞŒ~:Ku܈ʻ"‹S×ý˜OÝ܃jˆ¿±1·8Úá¯_ü=]\¾tVd¹Ê“?$Æ?m$ZuÀœ·áuíq›’½Ðšz:©P‹d¾¬šdºX®ËwëÉ$+ïöŽˆ1Úty•˜ªùÝ w",-Æî$œn#yñÛõxtHZ 4v•i¾ÈœëUgiF\†Í›düƒ bÜ4Ýe^žGãð ²6N´ÝüA1ÂbRæÎÛ*ì»l–ï\‚= —²ë<ԡΩқõ€ñ%E»x{âÊؘSð(E¥ÐeH›7ô¶[þÕñq?€²ã8”c$àýúÁQ,*î¡P‰J-”ÍM¡Ìãé,šù¼]-Úþ¡­öÜÒ‡ºµ"]ÀýøÌÆ·O44@«à$T†Jù‰©Á‘TQ!è×—ÇQÔ}TJ²TŠdYFeþŸÕÂèáDhÃíÅÆàÿF†V*ã'¡ P©81 ˜<’La4ýúú80s 8ºñýs3I¾ê¯"ðî9yp­iûjL©ú6íß:@¡wÔ·ïKRÈoº¨.P´5±Q·ïO,m×› ‡Æ çøE¶ÈŠ¸ÌÒú%_ÔÏß7«ˆ³uÓ±»yý¤Oê¶׳¯Ž²nMLœåEÝY_¾j´I£øîsý<Ï?}~Ÿ-öÓãnKüü PŸqçendstream +endobj +5079 0 obj << +/Type /Page +/Contents 5080 0 R +/Resources 5078 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5065 0 R +>> endobj +5081 0 obj << +/D [5079 0 R /XYZ 90 757.9346 null] +>> endobj +5078 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5084 0 obj << +/Length 982 +/Filter /FlateDecode +>> +stream +xÚÍX[s›F~çWЗŒÔ)›½°·dòÐÆjÆNS9™q<Œ«V…KšLÓÿž]@6 E`Ç£±ý{;çû–ïìdCõl mN9Äev°± }£ºßX¨vÔ¸SŸð›g=ÿK[É0³½ea!@1¶·¸aŒÇæÃQ~z®^)!˗ɳ]‡eã$òMe~¶Š£ñ•wfM¼[Ï0JÒ~?Y—WÐ^(€gD +jÿ« )±½±\Lvµ5³ÞßÚ)Š&~Af«ÑŽ V|yÉ2v„pt>›¾~;ŸMþ<™Ï¼‹Âg)ئqðÏ/c‡© )Õ^jrÊŸ#Ë\Z™q‡šÑ]Á_~RXA‚ +!·¤X¹¢0ös1ä.0²kýÚyºÉ¶ó ‰ÖwH$À‹"jÄÉ8/&¿žxSÊÓÙt^wÒ6ý¢2¾Zj“)XEÛ<»Î—Ë0¹„W¥åŸ^ÝyÀÚAÙüÏhPŽߢ}ýÇt6©ƒíÄçÂja±_‹8 +õ2Ö=5M>œzÃüàŠñÿÆQ¥-$:G]c/­ÖÜSHœ)Ñ3v?!-ü̯ I À‘à-D̈“7p>TH®0öÊÊøP!‘!QØýp!i«Å†x÷|Üp4XHô T¨Q*ô˜RÉâ^¡P6O +êæÚ´øiµR31£Hi[¤AÐ&ì%ƒÇ¼3‚Þƒ¡G¹ +~jW!;\Ì\ì˜ÁµLâM¯ +Ù=«i°MíÉ3“GÄ™æׇAÖ •Ãá_aÏf‹ GOíCplÄIöpùnÒ›úû:Œº©ƒŽÓ#oÈ6LVñbØÖÓ þ8i÷Lxú2g.˜ðhJxD÷|ô°„GàCg² Æ^÷ˆòø”¯úO±lc·fï¼óùäâb>}ÛÍ¿yš·Bª{/ šwM”ƒÏ‹AL€DÐíb]'í<Þ_á€P¥dÐŽ—h"1@X¶®n!KJŸãÕÂDYÂêÀÑûïo·¿ÖQõü"DLkŽÄHÌWê XÇi¨­ ]OàÉ]=AåHq©ã?\”ÓwY¡ñ»Ê]ý ³<‰Ìsè¡‘l¸'ÙòÒÿ·oåSOÈV›pçÙPnüaÜ„éHA—r/ÚÅ$Ô/Pc‘ Ú¨ìýP©¨” µ\/”©ƒ„¡ëH«….÷P4ô7a&~±+º$GåóÝîålŒè(¯WOø“¸ª©aYù¶c:Š“²±_|»þº«»}ùzîUÜt)Ì°KßÞðOendstream +endobj +5083 0 obj << +/Type /Page +/Contents 5084 0 R +/Resources 5082 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5065 0 R +>> endobj +5085 0 obj << +/D [5083 0 R /XYZ 90 757.9346 null] +>> endobj +5082 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5088 0 obj << +/Length 1329 +/Filter /FlateDecode +>> +stream +xÚÝYmoÛ6þî_¡OC<Ä,ß%¦0°-ÛºdmšÁÞ§¶Yv´Ù’+Kí²¡ÿ}¤HÊ’J+~)ú¡1I¤Ž÷<ÇãÝ‘B”?ä èùÌ‚PîE«ô²ùÅ™î‘ì5_øi:xö+ž‚cîMçÕ†ö¦³7g²g8 žmVÅDÃwÓkÂ@Æåê Œ‰jü2­õŒp¤´¼¼y½™„s=€€ˆ€yåHì­û°LÔãèŽJÀņ!â¢Ã=ÙâCdé`ÉÁ×l0„à + <ûT1‘æ€rÊL/2½Šì]ñÇáì-dPþ£çN<ñ£Ýù¬êÄ©7B’ ªW¾×æ~€½FóèËýU + gŒìÒšÊ5Ú ,‚%ú$%=î¨î“®Â…oÄÙ¦€qÚ‚3YÇQ2O¢G­8Lõuòjz«ï6qþ!ÎmïLßëÞƒ4?}þòò¢Mcs<ÿTó<[ÍD&Ù)³œœ@Ëû¿â¨èhµƒKœŠkµYt0…QQ†ËÏ ¼’Ö ½%0_Î2N;ˆdËÂV¤;Œ´?Dô%³51³L7É"µUw‰;©ƒFîVÙJÛBæL&öÛTÙyG%’€ï%E§H«ux®m‚8ÀlBÔ¦®5ü!ÔÌ’è"ä*öAú‘.¿+šŽµ-Q÷ñq×;XOB¸ÝÍyi­*7d–êÊ 2 7¥l¿YRÏ (€|ÞÑç;QØJ©ÒÚ,,i=gÕóÛôõÍDõ`¦ì°³ü!¶”J敃nõE7¾|YYr·­¨,¡¬2GQæF:ÕQÔw„B±5:0Üì*3`Ü(©ÅlöÛdî [=QK ŠÜ¬Øf¦ñ6U¹…j­Ð?n¥·¨_‹Ö1{\û¶[$hŠÔquÜ\nAájeö¬ëvòúò÷»«›«©òï6`½É¢¿mm ’t]÷å|¾­·“ã¬r¦Vo¯š…ÚmµîÐô«ž*žÑoî,=±sdÍc’&UP/×A±+зacÁëҽؙ虿¹IáhϕܳÊ[¬~øÔê9 “¹-PÙ²}(ÝC|õŸ ¬ gü¤óýê{D EÁÍϲvðI`Ïï òEœÆyX¹®ú&¡RÕõ•½¹"&‹;ý€°¹Â L.Ô!zÂr}7bv–åú¡:Ò«ÞæÅûG}ý9ûçq§]ó¨ûüeÜ  endstream +endobj +5087 0 obj << +/Type /Page +/Contents 5088 0 R +/Resources 5086 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5089 0 obj << +/D [5087 0 R /XYZ 90 757.9346 null] +>> endobj +5086 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5093 0 obj << +/Length 1936 +/Filter /FlateDecode +>> +stream +xÚÍYms›Fþ®_¡I;S»caŽWáv:űHe¡Š›i;.d1 "°“éŸïÁÝ"¥:ñDwÜË>»û°Ëí¡!‹ÿ¡¡ÂeQf^†n8`‡øñÍÑáO¸¶—o9e¨0ŠÄIC{]ì !Fä7´½ßÎ8N8q2+³g™¾ÄM‘=C KÚ''Üm}Ò™ÆnúQê¤Aÿa¿hv)™y årÿüö;ô0Àw–ᕱ8|Æ–AŠÂ ÃÀñÐÙ¬Áûr2P,hÒOD|³‚H`ð4ä°Â2QPaÖ±,{¶Ó³©C‹ ‹ÆòPf9†•¥Ša_€É£ãÙ„4Ä°d˜ƒ@¹P¼ÃHaI‰åÏGuY þÂÊ ãbÂ÷ßC£rlÌ°’"c|ûªbDaDI@ãç¿#^pitdg‰ë×f=‘“|¦l“pOMû¤ÒªæOâ,íP[é­@{Á:p‹dG; …¸ó“0HSŸÝ%ñSàA/Ý8)´|@¿ÝÆÏAôHºnyA¾ï¾1×?N”ðB?½êعh@ Ù¸êTʺxýÒ‡nì–lŸ;Sü]ZÆyˆŸÊ5ðjµC-ž@Ü8ˆâ4pý PÔÛpþ#¯TyØæFl wë¡ŸÐNà–KUÈ|oks]Ö Ö_Ž—ÖƬô2pÈ©þŸ¯Ú"Ÿß +^åKÀ]B¸‰±@Ú ÔO’c5U©Ñ±G»XÓ?#ð”56ˆŠœÐ¯ü@‚£4:”EØo”Z~¥Á!1ùõ#/N vÃXç0N;¾E8¹¿y!±ážà À¬±¼:¹öñ:}.ã¤2´óÝ<Øãn·û¸?Ôç$OÑQfØï_ñ®rJæûg{¦[—e¼µïTS#=xº4úT›’ÞõGÊ ¦®ì™a’öŸª,þî;:¾˜Bƒ.Õ~]ššeµsïŸ|~»œë€ëbª [×,hôÅd¾šê‹Ú¿^Ù¤±0hc®ßê6¬·‹š²°};t®7ôJ"ÃxK~o5s2Ãêµ>×í5k¾ÕíEnDÒõUê2Õ´õÉj®ÒÇË•¹4,­vÿTòdª[“¹ªßjS\W˜¬JþA[PûZ3u>ï`е~P¯çZ];Ì v„Þ*LuS›Ø%7jÝ &=¶þœ>°–ÚD/{Ú¯¦‚j~¤}€81–ö~…â¹`û*¦ê­zɧ’¿Ï“•©Ý–>ÂY«kËÖí•ÝE”þ9çÆ0¦VÕJ–f~Ð'šõÅiX5î¯,¢ª¶Z³1V³—ÌYYú¢;¬È½±ë [3ÍÕÒÖÅá73î0¥Áã*;­½Æ¢ó0Ù ócUÉœãÅ«}ѹÿ¡ên¦ai%/mS-ÙmÙ¦>±_À¨Ô6L»mXûŸŸÚÍ\¿Ñ­*ÛÈ5¸Ó-í`tÕÔ­\|E­Ò¾w*wUcuf°›ê#z[„j04^Â…K%ªÓzI–qˆ¶ôã`x1'3xò ÐqtÐ)_ Bÿ¬e—ŸUE‰|j-•Eõ¸Ðz²¼„ö>uÜ¿º”âORªBøV÷®5OfsñDzˆÊÚt‰ÿÔrЕ ]áÀB¾˜ËrŽö‰ÖN¿íÐJ|®EñŸ»·~ÝøÙH_N,n%ÚuçN)¸bÉ]ö<)WHÂI7!8ÑAÄ?z¹Å•£ñ"-Ö5~†b×Íß»(«)튋'ÝÑןiºªE äÆ+dï†$Qúª[ÜâzŒ— ž;¾¥•EæÇù)Ïá…ùµ@)Î~ä'NAÎüÂ9çqþ{ wçH<Ëhqô—½âø+ŽÞXçiœ´ÖçœX©òÎË«íœùäVûÓçGÿÅ}v~ÑÜ`¥xÓÎendstream +endobj +5092 0 obj << +/Type /Page +/Contents 5093 0 R +/Resources 5091 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5094 0 obj << +/D [5092 0 R /XYZ 90 757.9346 null] +>> endobj +2467 0 obj << +/D [5092 0 R /XYZ 90 739.9346 null] +>> endobj +446 0 obj << +/D [5092 0 R /XYZ 90 739.9346 null] +>> endobj +5091 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5097 0 obj << +/Length 919 +/Filter /FlateDecode +>> +stream +xÚ¥WKoÓ@¾ûWXâÒ f»oïÂ…7´Ôp‚ÊJ'5Jìàl€ +õ¿3ÞݤvØ´®ªìùæ=žÃÄljHf\ÆÙ2ÂñÈï#⯇p?l3¼G'﨎5Ò’Êx<³’ A ÇÓoG<RÖK³BWƒ‹ñY̱BXHÀlX( 5z;Þ)òv&I£ægôíÇS°ç,ˆi%âßpÀˆhMãeÄ)ÛÑyôe‡ã.¬@ÈAXÈ%Ádë÷玔ÖnQÂÀ¹²WOk(Q”Ä-ú‰¥)Cš`1D\ráÐ’ÁPb|ô«*¦î­ R:­Êü;xS®‹y™û«ìjR»·¼®«Ès »˜*DÔAEEY˜FQC>„—à‘8”“{¢¡‘¼w›23EU®‘eILÕC©$ÂIºöРYUΊù¦¶Ñ´ñ³æ2†”î§sQe“ÅUµ6åd™;è ‘©qH#(1Þ ª±h׿òVꆔƒ- +Z¡ã óŠäßú¶ÎËi×-Á¦²_Qšê¸…jy@š)ÙKzVWËcïHÂèØÏC"pÝGûEjsù#Ï̾…R"Íu/„åz¾µšW½k Øèriõ€Ì"/¶t\O¦ù¬(sw8ÿ4¥ço?¿iqÒÌ¿¸0¹”u\UwøN)„Ù ø~¶¦dK7µó {ÅVy@eht$áÑ1Y­ 3÷MšŠììÚd¦]Ófb|hÿ†ä Ë‰j²¦¶I³AÅÌóÞx‚ÅIÏöðý¹›Omhþè&_w‹Ç€û +¸ _>êç.ìd›Ÿý® +f(TmJÿµoóÉÿ˜ˆ…§+SÙC= ý—ä&(ÁBÄP÷jáÇE1+ab¸Ã×ÓQúr4zýòãÇHh´E† ïu_ůOÀïbbP>Ž×«|gÙ]¸)V©É¬NKMM04:@„ïcJ:6¶6 XŘâêÐ&AÛµ˜¦vü~HÓ>›D`‘ ”#ƘÚ3ŽMfm3w»\[—SF“ËŽº7›Þ«ÎþBLáIp/Ç"…|Ô®l—{"„Ñön_Ý‚äwaoDcäû¼Ìk(ˆ©Ûï«Ò=?m_ÎDÀã„ú'~FÙ3êÿPŒ¥{› ¨8ªjwØœŽ<7òŒ—×îù¦ús=ÏËýð4‹| >ÿ¶ÁÙendstream +endobj +5096 0 obj << +/Type /Page +/Contents 5097 0 R +/Resources 5095 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5098 0 obj << +/D [5096 0 R /XYZ 90 757.9346 null] +>> endobj +5095 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5101 0 obj << +/Length 1899 +/Filter /FlateDecode +>> +stream +xÚÍYmoÛ6þî_a¬– ±BRïÙ0L±™D…-¹’ܬèŠL±äD˜-e²œ´(ößG‰¤lÙ’2yû04¨ùvÇçî)öùû:諲*袤ôç«è?æëdÝÒ?ØpéõίÞ×]AJß[(È¢¾|:AH9 ¨àdcNIQ'P´€¿ø«§eH+£d¾Y…qægQŸ~öÞõ°WÎ̀ɢóyÿì}ú úø®Q×äþ ©ê:ê¯zyeÙs{ïK=´£¨³O†b½PH â"b°J ÔOp’…Ë8Ìa¾^“5µ¯$U©øö<ØMq(}‚LÃàr„B0œçs—pØ*iÅ€~(ºeŸ&EWi”š¥Š] öwÚƒ¢äA–<¤Éæ‰ÎÍì§Ó QÐ! îÔI‘äBHì<Í/ßšµI¯h“UCmçÌ$fH«*“‹.PiSþKÕ£\ºˆÈrh´X{ÍbUÐPw•ºárIíX‡és˜Rí + ¢èíúq$ØdIÚŒª–ûüŸ€6E16ñárM+?ù¤ý—u4_ ëðgfˆ"èRÕ²_™±‰¿TÕ†j˜Å +5gÚRm‡PzEêÐÑÃäék=¨”oÍüÔ[x»î‚Z‘›%íü˜VHŠuÏlP€’ZûüH†ƒŠ¬ü«¸â Q#"PD»/lŠ «¢–¿l‰ˆæOJqæ ã0õ‹»Ïü±0¿É'¼ðîÊ'Vˆý‚ $^ öÚ˜'ZZZœ"¹¸HÈ+‡Ï’÷_ù‹ä—¯áÁ[dþHX㥿Çñendstream +endobj +5100 0 obj << +/Type /Page +/Contents 5101 0 R +/Resources 5099 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5102 0 obj << +/D [5100 0 R /XYZ 90 757.9346 null] +>> endobj +1540 0 obj << +/D [5100 0 R /XYZ 90 739.9346 null] +>> endobj +450 0 obj << +/D [5100 0 R /XYZ 90 739.9346 null] +>> endobj +5099 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5105 0 obj << +/Length 1195 +/Filter /FlateDecode +>> +stream +xÚÝX[oÛ6~÷¯Ð0`ˆÛˆå!Å[»>t‰[$p q±‡,0[N…9²kËÝ‚¡ÿ}G"åH +­h˺Ú/çú E(þ!04PBÃ#Lo{4¸Áéw=pË!®‡Õ ?{/Þ2b$“Áx^p@Œg†ôC&èA/Ò8›‘iÿr|DT*$²Íw1¦òÙÞ`¼“åT\B.éSïâ’3Té´G 7Zà€0†·½ˆñr°è÷~Ùñ± Ï"Üg’ pFQ(Mbh¡²IÙ%¥ßÏây’Ævp>~3LŽÏú!§8Œ +ÑY†D2–NµÐÆý4N¥ÞKy4<; )Ãé#5žIE-‹Mv•%Óò}½föÝ!5É×´Í+ðM2²ãÁp4ONÞ93™ðªø~Ú_O†Cg(^ÁQ ±u°%f>b±Ÿ8G•E)÷‘Ê6ÒŠ\_P(/Š5Àla0`#]ìxfÓ…(Í ¨Ì‡ÿݯÀ…&RÖI¸U7äZ)U7I?Œ®éÇ«uA¢€(àî–°0H£,/c鯋åt²@÷þFý¼Lføôv¡ý—o \ð­ãl»NíÆÛøözR°Ï9ÿ‹À©œ»/âµ î/¾5þÍA©£‡PæÎ÷Yïh×±Ú!”¬Å¢“RŽÚ"„åÍ¢&P¶ ­ÒºóuWÁ=´„¥ /κgó•á¼WxW˜ m…Ö€‹‚ñb1ù´M²°†-LÔE l2÷¨AdQ]ÛªáÔ ©4¦×º¡OíÇÓˆoOÙ9më?›8=HY „™Že¤ž±Zª¯‹Ò-ØšÛŠÊÛt“ܤñÌŽ’ÔNÀX]¼³eÉŸ/óÈ£I-hè+ÇÑ>~¬¶îãÉÑÙèídôáýðd48w;Ÿ?O +#÷”¹#`2ÏnHî˜ÍEré$;Ñ£Ãácœ0Þ#VÄ{ƒÇ}ýò»"r„×ëøêwÿá´üâ]•ÎkþÕ²¸Z “ºa^ï=f©vÚ4›G[‰jÚ´º?ã šòŒƒNûÿ´jðFÝ°‰µ&:¯VñÕzy»Ê ºì²T©Ur„‚­dC`Ô9ÞN¼`DR¦:!~¹q5}Qðbw í;Hî-¨Çø=›ïºç/”Q¾J§«»’ÑáîƒëГ2y¾ £ýšÇÕCÄ åÚ‡YÕ•…Uœm¦I2]¦Ÿ'Ùò*o(Õ® +ï`Á ÿGÁJ±‰(ZoóøATú¦ÒwZ³A[¶³–s90þ0Û¿Îß=ÛYÔžíLT³}¹ÍV[o¶‹®Ù‡/9›¯º+=«” ‰9«˜hhÜrž¦=,âÔ8Ú_iô¿«4¦ÁÝw¿œ>±þpxzýáåI=SÓÑÀ©ât‚¸îth^¾Hy¯i€‡d)ä“î劻D$¨hõ*Q£¸.ïÝœ¹Aïâ4^ã¹f¯—©}¾/_Nû 0&ì ï†Å“¾düe^nòŠ¤}›÷™8X®í`{ò³ÛMÜÆë;û<^þywƒîk¸'¿4ôøçoQ÷ð9endstream +endobj +5104 0 obj << +/Type /Page +/Contents 5105 0 R +/Resources 5103 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5106 0 obj << +/D [5104 0 R /XYZ 90 757.9346 null] +>> endobj +5103 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5109 0 obj << +/Length 1205 +/Filter /FlateDecode +>> +stream +xÚÝÉrÛ6ô®¯`/«2i,Ä–69´QR{¹+'×£¡)Úæ„¢‘Jâéôß  EÊ ¤4bàá­|ô€ü‡ž#,8¤^¼ïA¿@ö%Üo_øe68ƒ„'Aõf÷ +‚ òf‹›S„øÐG 0pº½ø]. 8…Ћñ—h¹Î½y½Š·Ë$/£2]åÃÛÙå`öù1ͪŒPùv)S„!öÊdÍÉžÖùs‘DY¶Šçu‚)µ*nÀm¯Ñ:»Þ¯6 +%íäk‰£µê¯NÓ÷ïTÚ¼67G£ô´a]Ïti§²íU›æÒ­]|â*´®á5«ä.öÓ÷“‰qÝø~óÑì¹+Sá`¾»fðøfÈÜ•%s•Ñ¡fØáu,´ÄpümªËœ€±ãô»ÛÞ¯ËÍ™6 ¡ä(<åQ;‰/ûï€?³±Ù¤Éx×æ*jrgu9F­§Ì× +tÜ\¹h½VV¶Sä;ÜýŽ×ÞÓ±:gš¼²—Ùv¸&Ê;PWžÑ “S.†„­xo蚨þ¡ÖzÕ¤­æêôÅaÝùëïiÍV;¾VãpÔ¢á~AH½¹›ãî#¢MìÕ¿~oñ°ÕÄï g£g—Í™˜9íHÞöªQÇ¿;þ ¼tYuGtHfô —y6Ö¡Ûpèî\ÏAÎ µvôŒ^F.vˆ;%@ ±`u7ÉŠÄ¡®¨ß^w›$ú`§è|g ì*T"lõÃ*#+{¶ÒÆY;GõZQG¹ô+Êüêúöz'ØñõN˜4ÎVÅáŽUˆ–3ìœ` ÖQðD »&úMÓ¨jžÆ% +Ĩ=N£`˜«iF1¤¨EÉü6É“MTªžY ÎV¹þ}W/.‡È¾Ú Ûù/~ÌäM:8Õ«û!"§«Þ<ÑÝ=ÕÓ¹/Oɳ¹œ˜Y¬ôÀ Ùsendstream +endobj +5108 0 obj << +/Type /Page +/Contents 5109 0 R +/Resources 5107 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5090 0 R +>> endobj +5110 0 obj << +/D [5108 0 R /XYZ 90 757.9346 null] +>> endobj +5107 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5113 0 obj << +/Length 1224 +/Filter /FlateDecode +>> +stream +xÚÍX[oÛ6}÷¯Ð^ +{™XÞ%¦í€¬u Ž³-.ö†++‰Ur-9Y×ö¿I[ôhÙÁlöÅËwåùŽ(¢Ê? + "A(’=ÜÉáw=d¦C9¶ü4í=‹E €à˜ÓÛFG€a„ƒéâº/Bƒ3دӼHëH7Óó€Â@Æ¥Zµ +c¡F{ÃéÆ–q…Ž”¥O½ë,¤Kç=ˆˆYð(; !pð±G1±¼wÕûe£GO4¾ˆ"¾x G"ˆlHXFéˆ0„ƒÅö«z^gÉ äòy]TÙ]‘.t/+jóð¢‰V¦MÊ)3w½·åêwÈ`¦U¼Ò |a4êæ¥n¦Ãñd8}3{}9y;›¼¿&Ã+³òä$“jî|ñZ$ƒ@¥ôV¬@žiuÝh™ïŒéÉûñø&:©ÌL‘Îó¼LfJ“«Siðgƒ/¾yg¹ÉŠ6ÒNù'c=ù¼™Äi"‰7K¾×XQŒƒÖpøïý„Å€3FöÙFmãÚÛ ñNHB‡Ô†ÞC™-|á#¨çïÒz–ÜÏL­ã™AfÒì¨O¬kŸ‘ŨFŒñà•Êèêr–¬@YЭÒz½*¼@´kÓóŽZ TàÃúöº© ¢VÎ4ËzuãTâ·9ÔÕŠ¼Èõóׯ^ÅŒ„[÷¤WA•ý™–[“Û†ºA‡²*vJ¹mäGC!t`hŠøÈ Bo12Z4âØ}B¤Tkb™ÖU’eIY<ÌêÒô6ñüàáëöMùÇç;YÏ;éQW9žüü)En¡endstream +endobj +5112 0 obj << +/Type /Page +/Contents 5113 0 R +/Resources 5111 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5114 0 obj << +/D [5112 0 R /XYZ 90 757.9346 null] +>> endobj +5111 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5118 0 obj << +/Length 1020 +/Filter /FlateDecode +>> +stream +xÚÕXKsÓH¾ëWè´e/«ašW€C †J*±w‰¨²)•"²llHmñßiFŽŒ¬€ÙöAóêîiùPÿ‘/¡Ï)’„ÌO§ôoôð;Ùé@Ï› ^GÞó·XúH†™Mj Šö£ñeØ0‡öVÇë&…= i ¾&Óy®Lçh–®¦ª(“2›ý«èÄDkË% Uv?y—WÐk€'D +êє؟z!&M'÷νÖzÌD-àò"ârùz„CÔ8ˆµ¿ÜúÇx?` ÂÞ,5víLÕyeçÑa4ˆ/ŽOO_Ti#! ©•Vöz¡’î%²ÐP/I“¥Õ N‡ƒ(¾ £—‡Ýˆ´¬ÓGˆ8nCt4rã!xŽFnSa7ÚŽ¦ö× j•>¯g) báHWc(ê5Ö3P"cü½šçwÆÈ—¬¼5­Ä<ªHÕb‚È9q( xK¡ JÄŒ<Ê,Ð¥*Ƴyù/¤p#¥þ2vS=ŒÜÔðFþ§B+º¹—®Q Û"ÒVý&‘x¿ˆH²ODdØI[¸oÙ%û_˜¿øõÌóVæ/žÄ¼Ø‹yÙż&½•ywÖˆ~î Ä{qOà>YO`ØÍ}[Öµnö›ÌÏ&•?©õjëÍ}|ø¦òÊŒýçTÃíÛ­Ý7­ÄZ¬_}õj•7àÝ–šï¯UÆém²¨a·’ŽàŽ+A¨“T„-©nÄ9:GuxhÕÄœ£ÜPáfÒd-&@">)σ_÷«-*£ÿH‘‰ÒÒŸ¤ñéó,»|ÆÐÌ—*/T9Ž“ù¦½ÙÂt_q\ß5·_ïnÔ£{êÂÁÁÒwÖ 3endstream +endobj +5117 0 obj << +/Type /Page +/Contents 5118 0 R +/Resources 5116 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5119 0 obj << +/D [5117 0 R /XYZ 90 757.9346 null] +>> endobj +5116 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5122 0 obj << +/Length 633 +/Filter /FlateDecode +>> +stream +xÚ­UßoÚ0~Ï_áG2)®Ï¿wª´ncÕP»n#o]UQb*4H:j«¶ÿûœØa x€´Áƒã»ûî¾ûìäó¤ŠEŒãçAwÆ|€sGƵާÁÑ'ªÂJR‰ÒIA(J³«žÂaDé•z–ë2Ããð: NL„4i«(Ê ²ýt]ËQLBUéWpuMPf( ‚™Jz0‚A)Šæ§¬ÙÌ‚aðmÇ:j€¯#Ì×’DÆhZ¢¦ÃØvÄ#HéM'?ˆ K¼,G¥#iL''v¦§iÿæÃùå°obÀŸë΄ +sÉ…Ë&ˆãíæi§ùrùýâôü­-z5½¿ÏŠ¥®(U%ýá± _èrµÈý1‰kïÕëU>+'IÖd²†mçåÅ 6^&]£ÛbQˆ£-\9ë¬X• pêœ9!º4½‚p¾K.¼V¹%ÈhüóO¡}ôšsê€üìv÷—Ø>®\?d£rt ¿ÊYóÛ€y +º‹¡`^+ßb¸ÐóiyÈÅ¢u16îÄÉöEl+¿·Pã"ÏõøÀ ,’ò¾˜ÍU_5Ÿ g{å—d—üÒò;©uÕNÊ°ÂQæsÊ“:äý˜ã8¡¨eŽþ߯.`¤ÂRö·ÚÐ.nÙFLQ T%-±½-Ù¼À±y‹;]½{íxæ²9Ö½–˜I +RÈšxõ”N miiFKš‰æHT$Ït®fôdvP¹]/š‡A¢·r n%Ç”Sbw”iŸ&!½ba7«Ï_]4v·OvýX<>Ýé|Sžj{ôù ¡ Œendstream +endobj +5121 0 obj << +/Type /Page +/Contents 5122 0 R +/Resources 5120 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5123 0 obj << +/D [5121 0 R /XYZ 90 757.9346 null] +>> endobj +5120 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5126 0 obj << +/Length 1857 +/Filter /FlateDecode +>> +stream +xÚµYmo›:ýž_m“ÖN-Åæ½»ºMhÔB¤]µM ¤AK H»êþùk°MBdd»ZµøÝç9Ïñccƒ.‹þ®Âv%AbŽ»“E‡í>¢â« Õ§¨þt³Á…Ó9»„JWaŠ]gš F€vïËäàñ)”X‰=Zé#”Ø#À°8¡ýt˹3ýh²Zøaê¦As>v4§˜™8dóþÓùòízàÇËpŠ,tŸQ†e€¢Àî¢ÃCŽfæ»ó©WäªìWm àT©…,a ˲G©?ýÔcfÛèea,u%2¬$–¸ÝÁ@Ÿn¶Æ8Ä.B&±€Â  2àøTDβ¹ ¸§ÙÊËyƒwïòªÓ¢NfXQ‘°—ê{å5 +#ˆ<èn”ïz^=ÆÑj‰çv—ËÏ9F,âRax‘ò\ë9>ü[?¿g4ž‘dX팘Ÿ9L.&äUl©Lü>¥ƒøôüé›DM8ãäœNüøÉë©‘ÿ(ÑÊžÑ*í,îE¹þ ÎÌÇæåabM@…Í2#*/¡`Ï„k¿o„{zÕª3µ…«àK:ªš©  ÐšÇLHÓÕz®Ä}VKŒ YisT{æÏç»®EFá•òèÒAÝU:‹š,·­zîcî¯Âþ<Á™¿\Tþ! & “ø×¢üIq@¶BìG½6 lMt/Z¾ÄÁãŒ,ª¯¬ÀNÐdYî'w˜cê=¹Ö8Tª¥ qKìçÊòš¦â"ªý"²|/HÒ8xX凼»…$¯©R“D«xâoµzB7~Áéi/BísÎp +ɽ(‰ViƒÙbk‘LƒI~–"»1¸ôãE¦>ºŒ£§À£¹tæ¦4åSôóyô„8;‰B/ÈÆM·¼…Ÿž7Œ,·0xà²S‰ê¢é®'‘G±¬’”ª3u©¿ f܇è©èC—V=ô}…n¿a”ÿ„ÎÔó€â¢ø7¼RÖa“¹,ü˜,8žcXNËg¶öû8lb›2¸½8vÙFªôVÔ![„×2Ìö OÊ1ñ!¼ž_ØðÚqeN‹y½Ò‡wFÃM„’äÂMý8péÆXD‚z¼\{¼ë€·F¸¡Œ&õñ­ÕÇõ§ÉÐ]øeÇ­Å„„‰—ÂÿD¢~í©c#üë‡^Ó=€€¸[Di“6…öÔáE@7Hùꉂ™¢ù¶EšDÓô¹ˆ£t[ÁUK’ml@ÏZ•¼‹x9ζ”pc‡I’=Þ•Ù̹öñßè6Æe›—έji8GKG–y£÷µ>Î]Ü H3uì L §¿WmÚùí[Roôi‚tÕ>,Ͷ´ ´6‚"ЯGCbE¶XªáèšM–nô†ã¾n\‘üÅØÁ Ã$‰¡~­;´¿cžlK‡¯…ηßÖ(ñæ%þ½Ö¬ÞU¨úPwî¶Ø¼Ô##g¨ù*q™j9zoQGÔ¶lû‚¾z­^QdŸ&‡Š­çÞØÒ® ŸPÁÙã ÛѱÓ$”ö{Εiöí2K¶fÝè=Í~Opšö–öǶFÐöUGÝâ€ÔO;ÊÛºÑVøö:ºáh–59ºi¬¿æ-’4õ¸ŠÀö·V§ilÅ<$vÓº+™i<_Ú' ˜ÛÛÜ44‡F¡KÇR uÛŽ¥÷œ%BÓr*ÔÖ€µýW¡] õ+Íèiå¹ÍÌ‚[ÝÖÖ¤«–ngÓ—Ì*ø½U)¹ã-Ua¹i»FoRKû”îŸ'ë°Gà’Õþ^ˆe +Ѷ¾ì× ³7 «!  W¼rÈ©A8ä>’«òÛ4|Ô¦e7Nk•Åí¥ÓÑt’º“õ6 ]^ +í÷ƒ7ºw^º\ff'O¸0°¸ϲ? çYåœçÎréCÚOrOý¦Á0î Ãø?yñ&æë`z>q×ý½£ Íéßîï+.ærûÿõBÿ;IU…2>œÌWô^áÕ*XFË”™½ªê¢T=G°¸çSx%Þ»ËåÄϳ–Ufå}Õ ªVC­D!õò~ˆöœ!Zæ}¹ +Ž*ûæ5|Õ¨Hdõ}SÓªÂ>€Æø:›Ç®z1 à¥Ê—L­ +âo=&æÏ¡2ê8¸ùX(2ŠÄÉÙ#QÇìq„BÉÏ ~èÇn~ÿ–½{fßèÙï5M|<ÂÑŠd²ÇÅü—=‡Ü9$§Ù"Å©é1òÐ,³ûÂúðBW¾<ú;ϪÙ{gKÿoÍ,ýendstream +endobj +5125 0 obj << +/Type /Page +/Contents 5126 0 R +/Resources 5124 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5127 0 obj << +/D [5125 0 R /XYZ 90 757.9346 null] +>> endobj +2469 0 obj << +/D [5125 0 R /XYZ 90 739.9346 null] +>> endobj +454 0 obj << +/D [5125 0 R /XYZ 90 739.9346 null] +>> endobj +5124 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5130 0 obj << +/Length 616 +/Filter /FlateDecode +>> +stream +xÚ¥TßoÚ0~Ï_a©/dR\Ÿÿê^Öµ´+¢Œ©éB…Ð"A`hCSÿ÷9±A µ4¤)ñÝ}÷ù»óéóÒI.±f±@ÓU@Ыqßà‘‰GMÀ×$¸¼£i¬(™× 0§@Q2u4F”“N‘-ó¬˜á·pœôPL&\Ú +E«¼A79Þå¤p& ºég043’zÁL+Ž~ƒ`К¢USv0–ÁSðãÈcu‚¯"ÌW’@Æ# J¢¦Bi+"Œ!‹Y6_ä™5’nÐMnӛtðüØtŸlD]°éœÆ±ˆ¹%‘Ž$Ëg‹¹ |Nm³vŶœöìÚšîŠIáÄüñ¤JF Lpú6ÙÚXQ"Q¦;±ªQŸlKE5üKSènä-rü¹Î‰8Å‚PÕ¾š—ÖÚ^Êy›§"éwŽæD4õåoŠ­Ì¸T©ëM^®vY^xÑñtÝA/–[À»7è{^éž·Øo23&g½Z¹Ø¤Åt“N6›Ú›úuûæBº¹¸XÌóãuÏÃôz8¼¹î÷=)Šx¦¸™1ÒÐiDM'Ë¥þ1ÉŠúœ¬•UŸ/kÜqŽ>Œ¥Æ\Ä­±LÓÃ(}KÓ#Ö±>k¦íu0†•nÏ­Š›Š ÚaŠµI-+Äج Ú¤ýòÞŠœ­ät÷†Xz·01ÁÅ­Åz•+“Œ67¹éŸdê°öœˆJä}–g[3–3»Í×¹ý?½x§tÆaç¹¢ìŠkQB„=ÍCÊ;ë­5ʇ¡Cc|ÙÛÿíú÷þ5ËOÛSílOþ`f™úendstream +endobj +5129 0 obj << +/Type /Page +/Contents 5130 0 R +/Resources 5128 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5131 0 obj << +/D [5129 0 R /XYZ 90 757.9346 null] +>> endobj +5128 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5134 0 obj << +/Length 1803 +/Filter /FlateDecode +>> +stream +xÚ­Y[sœ6~ß_±ã>Ôî¢ ×´ÓIÒ8™fÆ3éÄ}Jò ±Ë˜…-o¶ýó #`°YÛ~X.ú¾sŽ¾s$á%’ÿx飥k»¦O-glh¹–?.°zmÈ÷F·Á»»Å«Ä_ú¦ïgyÕ_p°iL–wá×KB­+ƒ¸ÈE—域å¥.±‰š‹›l»Kxsó> Ê-O VÄYzõýîÓâæN¬€ÙÔÁÕ¸ÿ,¾~GËPü´@&õ={¹—7ÈľO–Û…E(Ü$‹/‹¿ôwšu‡!~6¦Ã±eÊ'IØmú&¦WFHŒwF…ÜÅ!áfpL³M„=wé"b"×é™ø +46º­8ÎRt4Р‚ƒ¯ GByU­QXR¶¼ºÁ/õß´ /;Ïï6±húÂo±áÍEEq³¤¹«6W5MhÒüJ›ÍÐ>6‰G¼±-ÓõHoì­ApeV[âõM˱ì&€êw¨÷Œ>J²ÉÐï<9¾[¿³f›æ¦VÈ£už•»Öödaœ®»FiøPÓLjö ÛŒ>Ùyon²}sÁšŸ÷ÙÚ§ÍÍ6 K B5yØÜÀåEs¹‹Mï›=CšÀͦ‡õžöY®@±â(VW|§©öÄ¥~ÅÀ³ÈOÅ)ïñhÌq=NÁ›M¥ +q)ø¤Êj, ‹¬`ãŒcõ%j>fòCyKNO^išQüþlü+žd`T°œf Ø–w-g67w‡]Hœ‡ëÆý A·KXÀ[¦£0R*cbâÑ'1У››ãPÐÎr¼í´ýMÑ3ŸX}ˆøˆ†~Õ™ê˜Ì&öæ¿ ô‘Ï‹qmõ£¯YbŒíž4ÅיͷrRí»qÖîc¬]Ó#Èí~õ­Ò<æƒòxW—#=1ÙoZÙÀmƒ)*(Çô-¿Ì;‹-+‹M–OðõÏಭҚ2½ç‰âñ“Ï߈8¦à¿!èœà&x>ΛžN´[{@ ‡ÎJà%6œÆº©nÃD_Ñ6ìs&óÑwc‹~•dÁ½ÒDixˆUAÙÓL=:yŠ$ŒQðt>ø‹ÛÚVâ¢×à)A+xPM50‘‰†R¯ÈzIe"ö€2çQeÁÿEà­DWA¶­"IÅL’e÷Ðâž·z ê_Wú€Ê¢|Vý‹L cÜ'á1óžÆlxú³íq[&ElÌ·„ªŽ»e,—‰š‹»œGÏÙ*9@õ6.rt~ÊJ˜J¢R€4àâZKIŠ“ˆFÎaÙ#†­s¶Ûˆ‰œOñK5\û¨ÅÏOq$%,Å.äÚÓÜ\ µÊÙÔ~FüÐù)û–AE™Ÿhxš¥Æ:ÉV`ê–Ç2& ”eÐC—¼[ù¹ðx ÒV£ÕB0á$w6~UC]«³þ=ç»ãÕ²ˆÿå#‹qØ®2Å¡¨BŠÚ§SAå½hPù=+©l¢<%lýë@¼Xhè!~FYóëÜ·ÉH|@õ•ivÄq€ézˆE¬Íž•…ˆC>µPõ‰EgÃï +_]gôÇëÖ%©^OI…Üñ4<–*Ùk{ŒÕ¬ýZ‚3q˜ aÍ_D)÷)T${¹úäcBeyß5GOvVâqíÁ‰é`ÙgÅÛ|Ñú\*+†ñƒŒ“\Ùö²ƒ©^• §ynR‹¢Ý‹H!ÍA°…Ll¸Ätç«ÕŠ{›zRL™ôEÆòŸ¦ §5^î¯Ú’¬m>@ˆz®I-×íoÚ¡ç,qm|Ö¢O­Di5ðß‚ì …½óá 7åv›œ¬ª„ÔÒQæbÉßwVˆîfݼ:NÚu7^Èy4‰ž)çE™KP4 F«-thD()§6rlë\LPÑÈøÁžüý0–¡ºx”¸D\)¬Øñ ŽbvàŠ ¸ö³áb7`éÔ¦e·ËÑ¥(8 ûb×úiÊÖÎ9ân?¦‘jA<$î rVº†mÔ'müð¡ÄfàÏ1‘ëíý{³a²¨TzHY°íêøäehÇfÚ ÿK;h6…¶@)øv—°‚Ÿ.Y²g¡×€sGUèÝ8)φ×JUOA¨óPgI’íu׎es.«¶Žÿi}%™b$î~¹`Âí=ËíÖlÄzc—gEVvP À] ¬ZBÑ¿í˜ë ~öl¤A[vë•åë²³y1ˆ¦- ÛÅhšv³€fc[îà!;’ÛyÖ9w}RïÉ.˜’î9¶$ïR¯:8¦Dv¬NJeŠ<å9«÷J«#ùŠnõ{ Ÿ®°}YªLÔ/zMèk¢Îô BNs]û²ªGª›ÓÃÿÕÎýõÎe×HÕQü€•þ¸²endstream +endobj +5133 0 obj << +/Type /Page +/Contents 5134 0 R +/Resources 5132 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5115 0 R +>> endobj +5135 0 obj << +/D [5133 0 R /XYZ 90 757.9346 null] +>> endobj +5136 0 obj << +/D [5133 0 R /XYZ 90 739.9346 null] +>> endobj +458 0 obj << +/D [5133 0 R /XYZ 90 739.9346 null] +>> endobj +5132 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5139 0 obj << +/Length 1533 +/Filter /FlateDecode +>> +stream +xÚÍXKÛ6¾ûWè¸ÎF _¢È¤ú´E‹¸§$d™ö ++K®qAþ{)‘Ô[öªÉ¡»É‘üf83ßpÕ?rt|Ï‚Pæ„Çtjøå +±«än÷ƒ6«g¿`á fÎf_¯Àð0ÂÎf÷æFDÖ.öàMÜ0ÝI7/b µK0Áèoýnójõó¦ÙÇÀðCÕ.ÿ¬Þ¼ƒÎNÁyµ‚€î9gõ$vŽ+Š‰ý¯^¯þjÖÑ‚z”6"Sê0GøYu°ÒÎ×Ú0VAuÒ +s5©Å)¯EOj c@PátÆ·²8K™¬]áMq'õKÍ[ì²}”å…~=™L” ò·ÐCOÍi§g¹«wt9Ð÷(£žÆé/Çù`ðèG%‡Ø +Ë,6Òm„÷Ò KVQ‘›³‰£D‚ ðøxø£.¼gz5L€@öWzÓi¤M{b-”ッ}ï½üOê¹/“°ˆÒDÙV³+O­€ô +Ÿ¦dxí"®„ æ€ L'Tr _Ï&Wf à1Š»†ø- ƒØ(dQ°¥±~~—–±q¦ >f|kŽq'ÃXù“ý¢¸]^™=Ø}+«±°ÇX_sº»µ7¸°ªweÕY× P_­Ò[™Ó‰£ZôB Ú¢ +U0gð÷vú;—©­­ì!´qÛ(ÍL0¤éICD*×pÈûÁàûFí¡eRÈ,×æÁÐLåÖ%Ñ  ¡þú|ÊmÅ—¸-‡‹~s'39öSë›Ijd§ ”VÔIœ÷òáœf»ürÎœõ*Žî¤^ ÷¸¢B ÝÌÔQZy”™IŸéIfA‘fùÓFíyÌx1æ.„žùLR/ÇHmSy%Ov"•“ÿä:˳Æ#úÉ»<¨ˆª ¸*‘wˆ2ÚvéÓÂaKûQ“ yTgŸ_ÐÝ[~6—ÑÀÇùWïÛ'×VÞ” vǾf +å¾ÉƼ‘Æð­~ÀÆÒúñ~ ;|{µ†¢OÎU›<Ô¨3v¦FÔu&qeÖ8…ß!ÆÒ¦ó}JÝÆixoÄ•¶ãÒ'o +ö*[ÏxÚØ+—«5¡Š0ô{vp±&ç»(žu]³§üÐVžiy¸»ìrQ>[V.w=ZŒÞ–UUÖäW àÜÛ4Ö`­>4Jydí^ÞÈd°Dö1ÝEû( ª‚#¿€/ÆXP¥—)³ÌæÒS–6á9¹!¹²ažÑI €„÷c]P?Úmpšè /ŸðÖ.ŵõŠ23ŽV¡Ë:õ‘Ê Le‹Çæ´{m©¨sL‡Ý½>q)M¹ƒ| G—„àúÞÉûJ1c‘ÏædbåŸÖ.§ÿM±õÂv5S‘ô#ç+¶c‰¥`Sû©ãà ÷Ášä:qÇjj„n)ÿ˜¡¸¨n$T(u£àÆ;ÂÛÛSÞ#C…BCÓRã•ÓB¬…¦4­o|»$º_ïO›ÒSêy‹n¨D(?Æ‚t"c¦k&+êÐœú}eÚØc_«Ô…-‘%iââtÄmN°×±ÜG¶(5|HëË?¥–JÂôXsL[ÏWz‹¡·½‘nÍÔ ²õö)“'™ì,ÄsT éM1@.®Õ¶)s£ø¹Þí‚.l±.¡"¦¢a°d_æëïäþ•=æ’aSîõVã-Ñ[o˜i“ (,.í çIF]G'Gñ… €-#[ü¢“ŠzSô# .AyQîMi¥‚cXD½E„îäþ øøÔ)xg:B[yˆ’¤YZ•ló~‹íbÚ¿’Çòy=ƒ#€…‡—qªkˆ?iC~Õ†O 㢿»ÛwŸ{’G6«@ÔŸl™Cuvˆyì‹úØuß«)ˆànÛánûÔDò¥Lªë}•«Ö{U6TÏßíË«5ònJó£ +Åú ŸcòCýK1?Óoû5önªê¶îâÿú§ù˜«Æqõ´10OÕdŸ°Ï¿AãÕendstream +endobj +5138 0 obj << +/Type /Page +/Contents 5139 0 R +/Resources 5137 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5140 0 obj << +/D [5138 0 R /XYZ 90 757.9346 null] +>> endobj +5137 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5144 0 obj << +/Length 2011 +/Filter /FlateDecode +>> +stream +xÚÍZío›Fþî¿ÂÒ*µ©bÂñN6M#6I¨ãnµSFàßjƒÇKÒlÿü¸Ã†N?L«æ{¿çù½ÞCÿ†*;”E™QyAz›;¼ÇÍ@ºG¸´?àÌœœsêPeT‰“†Î2_AŒÈnèø_Þq¼t4âdVfߥÆEö`Ø¢ w7Û5,*“ÐK70HÜ…ÁÑï·î”;`"/lß¿_~g‡>øaÀ2¼ªˆÃG\a ªÜp38žVÖ{ð±\§èÈ'4ñßL ná(C– ‚*„£`YLmG^,€øŽYÕ)("ÃEÊ,Ç°²Tð3 tðhtFbx2 (: ŽFr’í]bLXPòïßç]£²OaXI• UµÏÊ{TF”0Ükÿ +xÁõý$¼Ât[ì…n“bŽgTÀb‘ªŒ b>‡ï½Ëoÿ´¯&¼°šÀÈ +WYí„ëSª‹‰y[i“^#Qù ‰î»Î£ðOè%£x =´D^Ñš™ºO£ÂQò&,q\ŽÛå¤üP©«/¬Ö( À³¨àÿ†À(B¾ÂYa$•*œè ˆÐõVEi[h”)jÎ +Æ‚‘Â7¸%0QPá¼m4sŠxÓë­)°À'…õºUЙÉÆTU +Räp‰¾å…1¿›³s¦.ÿÜV§.lµ¶šÐàÕ@¬¸uëN»0±oÈRoqŽÃíS„îWD³_Y‘õðÿH¸æXV:.Šö#ôQLŒÅâ%i«†>7[ÜHlËö <Ø%O¹7^ê:M4ac ßµ•r@ÕÞ­LLI„îÒ––šR§¢‡iäÕíùnôT”±§nb¢‚G”ùS÷ÍZÂ4i§Íõm›ÐÏœ8÷¡ãZØÂhƒ’ú¥ã? ŸÖva¬ô¯e¸^‡(¸/ýÓGûù  qÿhVÂÛÀä´cåþÁpXUj\µú}z¡O±¤qB­3q©¾KɸwáC9‡º`;ô—Í…{A˜ Ó}A½F×^z¢Z©Úa›±,¼µ‹60"'ð Ë+R²Ð[Ú\—´©ëÎñ\ÚØ*ýÔƒ¯¸øÿxUÙøvHý)ø•›wBÃMˆ7$Å‹ãVÕ]d‰ÇÕm4—ÉcFÛ£ögB³S±Eåp¸P™Ã¢,£{ &Ž»„gÉå|ÿÄâ\69˘çεféÄrHëÜ2?}RÔÎnÈÙù’›ÙŽá,RÕfd >e:–q¶pL‹,ôÇšM—~ûv7¼Õ°øþ¹L›|úç¹¥Ûd?Ó"û^ͧe‚™ZÚÌ1tû˜2OcvAê;q:“¦Æ•áÐùŽy¼E;¾7‡”„Êyñ{¥[ãKÜ¡Sù© ÿÜpf%ûsJ_# +Õ,Ç/¦iž/¬¹iwqèŸåJ+šöxªWúG0Àåb¦R%šú¤Ïˆ|íKm:í¶/Êå¹yéTIÚÙ´‹Ø›ÍN‚Ô¼&†¥ÒpjÕ1ö¬š)½UÌõ±QÖôÏ:V°fÝ?cdëx"Û¿ÿõg¢]iÔ€²ËÏ¡–ŽCÁxaéW¥Â¨5Ú‹³Š–.Lsbwp蟩”lÝúdŒuûg‚Ó´kŽ±°u‚v¢9ZMƘv :™¶ž-lcç.ÆÌÑ-k1w s–_Ûi(½i\š×ØÞ©Æ5 vRs]sV35ì ¦uS%™Ùxî÷„ßõ¥Ž‡Ñ(7Ûs­4KûËØé`ÓÿX‡AŠÒi°6bcúÅÔ¸ÐgãšG›ƒkÃÖw7sÍ2ìržQ̵vÓÎFè'45«.cVS½§ž3wÁŒÀ%CµÉ'£Ôò³•qàµýŽG´sêŸÜíÅø’zC:î‡Ð?¿9å‰l÷ÌE[¶n”´œdË×Hg‰rã§z/ +$QzÕ×òü{¿‚§žÛÿŽYæ•ì4Ïá‰Ù—> +%ˆãY&âìÃ~Ö²ß+Zø} OI%ËEù/{Êñ§ùË€,S¥å'æ¯/YåùŸÜ=Ñ¿øþtŸýÝ@öA¿AJÿ&¡ôXendstream +endobj +5143 0 obj << +/Type /Page +/Contents 5144 0 R +/Resources 5142 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5145 0 obj << +/D [5143 0 R /XYZ 90 757.9346 null] +>> endobj +2468 0 obj << +/D [5143 0 R /XYZ 90 739.9346 null] +>> endobj +462 0 obj << +/D [5143 0 R /XYZ 90 739.9346 null] +>> endobj +5142 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5148 0 obj << +/Length 1024 +/Filter /FlateDecode +>> +stream +xÚµX[oâ8~çWDÚ—2RR;ñeæi¦¥ˆŠ[Riw.BDS–ÍtýÚqÑÊ„Mñûøv¾ó}Ç$,$` d19‚¸Ôš­[ÈZJs·ù°-Çíý _üÖõ–pÅÔòÙ¶üù·+á€Û¶±‡®ÒpcÏâhÑïÊYµø÷–‹¸ƒ<*÷VS1aÊÚêøå¹?¡ Žû§õí²æÒ¯ûrˆàžõKvB`kÝr1):/­qëÏr=-0Áò€˜pQKZ‚–0™†Ei$<Ìåb›»<ú ¡9Œc°öì×™ÝÆÄ€\KÇ¥®§wcm›"tµ{Ýó`¡;iíød—wdëS¶z»’›ŒB/º>ì£vÒ.Ç$T°lŒ¡#ЄãQ÷ 4 úÀç0ww>ÝM˜2w¨Ào!38rŠÙ7\Û7&†èÊFÅÈ*Ð  v‰!ó_? æÅÄmœ.WqZÐÒ9I#ŒnmŒß¸«p„Q¸ §/á¿Á¶Â+ïœÒeô€t–ÚUM“x3ùIⵃ7–R “]8Kþ¯v9jÂ+‡ËjWùmì"ÞêÆÏ Ø„ÑRw’w Ã¨ný¤«Î Þ(/ø…ó‚Ÿ5/¸1/¢$\F3É*Þ)n&Š’Äœ(Ü”(ü¤Dáõåaú;\§k}j”®Ÿƒ\YqÏ¿é†ü›‚Ù.Œ£¤B¢Q ¸¬ >§ ÑùCç¬î<õF“›áànòðù/ÕtnüÞp0Ö£.2-\“Ñ;E‚ž_/òN ¢ò–)±‘J¯”k$~a)ˆsJ:¦…~oìw£á£_¥@`´â}5”ÔPŽíÅ9¼îð-Ÿ¿÷¥‹E!…DÆ4gšÇeÒ½·nºGÎ9àžWÛ½ƒ\›ý¢GÈÈ6qmP VÅõ—§»»ÎãdÜûÚiÛ)¢±™in´Š“˜T;”7£§œé×]&Þ΃mш|a¢œ“hõu[Aôß~g2|¼í+Mœbl´’“˜Æní >Ýæ·x’n6åi=ʱ׈rL/M9;+弊ò,ŽŒK“ñ*ÇÂd%è$º 4§{¶ +f?“t4!œ¹¥ßñÀ—kŠHúÔ£'Õ÷²Â$—K¤cûuIêFxQ¿ËPNvƒ(ØNwêSLÕ&xõ|(÷ªJ™æù—¤Ÿè#&å5’õ0’¯ YkÑÆ^·¬Ì©^Š²ÙN>ñùU?oãß¯Ë zU|4Äç?³Xendstream +endobj +5147 0 obj << +/Type /Page +/Contents 5148 0 R +/Resources 5146 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5149 0 obj << +/D [5147 0 R /XYZ 90 757.9346 null] +>> endobj +5146 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5152 0 obj << +/Length 839 +/Filter /FlateDecode +>> +stream +xÚ½VYoÓ@~÷¯°èK‚”íÎ^öòô -Š’>•*JíMcä8$þ;c{m×ik(Rö˜Ý™oŽàRü«©ëIh.”LêÞáö¬¸‡òÞæ×çð”iW­˜rã\ƒ"0w^w÷»=æQvVç—8•´„““o£é"6Åâx¬¦f–ŽÒh>ëÞ .œ“AeÙ“\Af÷‹s}CÝ^8”píKw J@kæNÁx¹ˆ¾ó±ÒSò MþIàM*w< +¥ƒ ýõ +ÿ€ó «Ë8Ñ@…ÛÔ.ü\ö<—h"•wcÿp1‰BÍ¢4ÅÑ“ä'{œá ‰q&BáXÄóÙ¦þÃBó‰ÒLÔ´ÉnOQÚ9Í8š™bqu~9<úðþtxuŒ“³“£·ý«wýn|B®ÖÔ¨Æ]¯Ðw¸ñs‹­”ù„*íÙë~ëPæ5•™\fu³L£`Y¬±„Š1±ãxüPŒõ#–› ús/`Ÿ¹ì¡Ü÷¯çýÁù&ž«]‰¼qW<šøñ83‰²¶c4 âUhéÄN&f›ËqÛÝq™ÞêÜh±ˆ£ ï!Ÿ¨¤Küƒmý«eeè¡Èã;a"+œ•5±HæŸM’ÂIБ†”¥ÛOÝŽzZäî%ú`+NÏ–ÓtA&Ïò³>¦%kP”Õõ68o?à&&Žç½õ<‰Ããoƒ-@ +Ÿ0!X ¤¿©‰g&­þI†ñ» u Ÿ¶¯nÛÜÚÜ.MòÕ$¥ÁÚ“’t?n…“`T•¡õ<Þ®2ðÑJðkè`?賜Ç_«˜SâKݦÏ„s^GÇöƒsÄr’ªj©$ŒJÕ!ÇV\Ç×ØD¥m¢fFãMpÕîh¨[f‡Ãª£Ÿ ‡ù!ˆÇ¡ÝKÞ¨ÔÊFØê‰}|ñȪ¶À¾ü¹%i°Ií©IïÿC©³T Ø6Ù3Ål’ê¯lNÁ}¼œm2p…ŒŸTÎðbæB %ƒúÆÌL2JMXpíŒeã»rrÑÙYÙ0;ÒŒ¿`–¬3JU1w™Ì‰U¶¸Ïêo¿—„þÛ÷;sÊg»!J¿Qˆãâendstream +endobj +5151 0 obj << +/Type /Page +/Contents 5152 0 R +/Resources 5150 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5153 0 obj << +/D [5151 0 R /XYZ 90 757.9346 null] +>> endobj +5150 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5156 0 obj << +/Length 1973 +/Filter /FlateDecode +>> +stream +xÚµY}s“Hþ?Ÿ"ã9£uZÊò–Ðsœ£ 6ë¤!±:ê(Ò0ˆ¼´z÷åoÝ%P GôÆ:Ù÷}~ÏïmwCýC™ŽÄ#ó‚4´wvx‹š¯wŸ¡þ³Ã—æàü5'eF–8ihnò$Àˆà†¦óñ¹ÌñäŒÙç÷îÚö=7Hûä³ùf(°c†%´p6Žãå¬u št7 Fä%íõ}ðñ3;t¨7–áå±8¼G–²Ì wãIŃ·t¢#ŸÐ$“øf¡€À ŽHÅ!!G‡B–} Õ!þ±È°`<ŽXŽaGR…Ñ(Èà³ÃÑiˆ°X@€pr&!ç9£ð@Ò +ã|À‹y×íC¤Kò¨à¼}VÞ#3¢$€áAû'À –ã$ám¦ûbok¿‹=8ž‘‹Ø”AÄ|ß{¿þi_Mxd5¹ÊjçX|¤2n\]LÌ»ØJ›ô+|ŽŽâÓq7lR{*ª7îº(àÆVfÆ¿•gù‘ÕÅl1‹Pý0˜[/.äsX»½ï•xÞãv«ø™™æ²BD^N¶.‘e¬5Y# ‹_'¼üÐr(½EaoݺÄlÇŒ$sB…zËbxç»Î& +wµc7ºs£˜)jãÜ啕U¡ƒt·v£¢n°ø–ï¯-û[t®7ôM؉q•º5¦ÒË4³C¬»XÂõOÂ?± ”O•’&žïýM„¢ƒíÐq/:ðó½ñS§ùâX‰µEšðÝè+²è?8­9Ö; ×F”#ÚÁ¿&ñv®¦I+kFu¤~—ÝLLñ˜­±ðþÚjRCd£JhlÚéE-ÖƆqo³Ø˜¹R‡ÔrïE!1e+³÷ªkQ­›â9ö(¹¬4نسÇÂ1bšß\»ËK µÿåMŒî^u ¿Sý× ~ŽTýíÚçú{Ñ$ÜÿŒ¼Û-%™Ø™UŽe¹Óúº´%öÆ¡ø>ŽÐ˜˜Dë<Š;][IG5ê Pw/N"o–MSQ“Ž{â0l·6jíV„Cú&Œv1 D^²Å.•-( uˆÝßÏQîð6ž;$ÞØŠ0Ľí¼„æ}Þy©•‰†zî&ôýðÞ nI¦ ¯Hlíˆû +oç&‰Œï>T•WãÔ¡³\Š±¤1=K$Ñ7e¥š;:‡¸V;ôÇ +94taâÙî)Ù—œÈ|à¢G˜R+U;lS#âÂö-”L#ìpÏ°üXªBîìáºØ& Öã!ÛÈ*Ôv og˜ïÏ°]‰ÿ áíü +ý—Š«rJ÷uB;­ec› ÄÅ•¸‘g‘ìH#A;^±?Þ2à•,£Ëú¤ÞÖÇcë3ÉVµs[N$‡ç…õ“ê¿zNGÑÞ©žàÝÀ #’Ȉ»]˜tÙæ¨?u…é ]Ý0å%¨4Ò8Ü$÷4Ž’´Rtí];K¬‡p·ó>>BËQ–R‚ƒ ÇhW>&™ G܇gÐ(pÚkóFÑU|MÄ­K]{§ê´¨]~À4ÃÔ•9Óô¢üõ«bÉÏžáþÅ”ðTõýRW £Ý„þa‚^/ç`E²èÊ„ª\Læ«)\\áúåÊ, + æðšd¾©Ö„%Ë·CïŸJ”ÅÚëâ÷ZÕ'3Ô¡\Â94?ÔØ| ÍEFbQ!â+XeŠnÂÉj®àæåJ_j†Ú»ÿý—ÚÉ“¹¯Õ) +.€Ëi&¬b…¿S˜_c¦Ìçt©=(—sµ.² vúŸ÷§PW'&µZu‚Œ±?Ç ÆR@ZSß«Èý®ˆma¨oWh"Û¶ÿ¥`ª\+WÄF²«É±ÆŒüy²ÒÕkªbpÆêÒ0¡¹2» ¥ιҴ©QeÉPõwp¢bœšQ³ý•¡b´SÅTj#õ“ÉÔrV\t‡•þ¸0U]_-M¨-Ê›àL»A&M4® °Óšwj‹ZÌCÆ®éªBf6ž»vÇ[Ðÿns3SÑn$.¨]šºB­Û0u81À¨jjºÙ`mXûßjêÕ^©‹‰ZÝ[Ë$¸†Z’®èÐȶ¯ˆEù½Q¹«šUÓ0ƒÔTïÖ"öϤ$ž–aÃÅ;*ÓwË€(Dð0Ø—Ž9™oÈ‚@Ç€Ž95ˆÜ/¼¢çïe•ñ½%-‡ÊâW.s²<'å8±ìo]BñG Õ?!<…ÎEí=”±OïŠ&Àpô!H:G€< Aºàñ[¥E߆ÔøûÊÓÑÄ£D“~çÛ›8jx{Çö?¼ÀöSrá’z{fû¤i¼Ü6Þ÷ÖÍS$¶qJI}ó,Ð8+rãпk™Òô¸(ñMë¼Ìn^Á-³}Õ4Ehjñ:Ž»ñ¼Ìz9AÅ…ùÅD#“Ë6}p F¿Yd¤@¥_úA£)€ç¿5KŒ<âÇä /‘gl7p#+Ë>¢g·äì÷šÞœñyŠ+€Ã¿ìÇ_plQË|¤(mN81¿f•ÜýóÑ ˜}ÖÉ~§áŸ·è‚T£'ûPÞÀÏ¿_Êendstream +endobj +5155 0 obj << +/Type /Page +/Contents 5156 0 R +/Resources 5154 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5157 0 obj << +/D [5155 0 R /XYZ 90 757.9346 null] +>> endobj +1539 0 obj << +/D [5155 0 R /XYZ 90 739.9346 null] +>> endobj +466 0 obj << +/D [5155 0 R /XYZ 90 739.9346 null] +>> endobj +5154 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5160 0 obj << +/Length 1022 +/Filter /FlateDecode +>> +stream +xÚÝXKoÛ8¾ûWØ‹Ý…T>$>ZìÁmÔ4iwcíî¡- W¦c¶ìJr›t±ÿ})‘re$»H/MD$‡óqf>’vþÅŽD¸'©ÏœxÕCε>ía+vµÜÝŸð"ê=}E¤#=És¢y…À°Lœhö¾O|4p Gõ·gït3@}ì!Óo¦«ÍR™ÎÉ:Þ®TZL‹d>Fç½0Ú­l (Ã废{ï?"g¦ <ï!J8_uyXJâ¬z>¡ugÙ÷þÜáA¥ù` +9È=®$Ú_nüc¬4Uk»Òó™˜A>pBýßfjž¤Êtþ _¼¼8 /£É8Faõ÷¯ñÅÙehäG½‡'áÕXGÑ×R ÁÈ#`N†ÑpàúD‹€ÁÑ//Fcí-e¬ã@~Eï^] O'—£2@X´DˆÓ.åÑm j‰ +÷»TߎþOô­ñº´Ã««Ñ•ÕmΡAh œG“tiÙB7h +)ÊÅ8û®8jQÌ7ÓXÙm†nD‡€- ø K\^ø¸ngÛ¸0í¯êS¼Lô}0)gX+òç’ ZzžV2,=L„>ÛXŸ}_T3žTßã‚`goÜýù?ÕJT2Ob,Ž2˜­i +<†|z×5f\‹ÓÌ ŒÀîN$<Ä$7ú¼áU²RÅíF}@ú²Nfú òh·â¿LÚCš©b›¥–.¯F†x“vŸýÉð£¥O’‡Ñ'i“¾y²Tétuˆ>é·Ó'¾¤ŽuPÇ/uâÔÉ&u‹u^AF¨;Œ0H^‰ýœOÚÙÈîÓG¨Žò=ú¨Îò£ ßì ئyrª™Ôb`(‚&]=ó U¬‹*RUâÂT‰.ªä}ªè#¡ +Û _Fòã&7Išä“n0Gýpðˆ`÷´V6ì_r0‰×iªâòwÑEGQäÞ^øÇ¡ÇxŒÀ\¼[áZ™ú¼Uy±TóâÎRyòM­ç¥+‹¢ØLôÌÊJæšíýÞèAKû i bÔ +ÁP&ÎÒåù0Pù¿ãÇ€‚Ÿe«ŠL§5; m®²ÉôÚä;j9Ë¿£Â8üŽÉgöõêWÇnBí7¼‹°_6Evg» XUB£íKj:SÙR¿¹Ž¥¸ãj¢ä׿šš ìaŸƒ•)äè<“ìAÅ¡ª¼%´ŠÞ~uK›Í©(‹?”hEŸ‘)¥©§*U™¾ f¦ŽµNÍ÷mÝ8à@§¶öEì=#ô±…0ýg¦5 ¿ÎLç~ÅìÓm],»¹Õg¡¤²~DéõÝžoendstream +endobj +5159 0 obj << +/Type /Page +/Contents 5160 0 R +/Resources 5158 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5141 0 R +>> endobj +5161 0 obj << +/D [5159 0 R /XYZ 90 757.9346 null] +>> endobj +5158 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5164 0 obj << +/Length 1373 +/Filter /FlateDecode +>> +stream +xÚÝXmoÛ6þî_¡OC²Æ,_Ä·°vi‘ k7ÄÃ>t…áÈr"Ô•\IN—ûï;Š¤$+´c§†-ù ™GÞ=Ïñîx"‰0ü“HãHr‰4‹E”|áè†_ˆA>îOx1=}Eu¤‘TD“E£AÄ)¡ÑdþîH#ÂÇ”ã£ÏéU²ÌÒ¼FÉñûÉyc…0 ØÌ£11££ÓIkÍáLcëÓèÝ{ÍÔù#¦>ÃŒˆÖ4ú8Š)ó?–£ËÑ/­+h„8qÂB¤D#OŠGi9ÆŽÇã£Û"›7\À-Å"æN[yKyš,‹*ýsl–À“—q»ìKP(ŽÇD´BU=«S;õ;ûøíôÅË‹³Ó7“éåä‡ÉéôåÅÛËÓçA5Ò®ø+(TVø´R†4Áq4&à¼X5S¾µ[‡¤¢QoxüÏÿ5†˜€¨mH„E=Žl¶l@M[jë¼Ê®ótn%7³2äˆ7ð:­Íöµ †xPRì…즨êgŸˆim_WEéG§v‘-Ó6–Æ"”ƒlÀ„숩˜ú˜ªËuâ`­³Õ4)òÜáሚ,Ý#Ì"sãŽÆ†9æÌÙj6Ÿ—à ³@c¤¸f{±¶ !Í‘ˆÉsÜÒšÕYÒÑjm6#š¡[xpÔ' 3ÆP,Av2l`êC~••Uíw:M>Ø×laŸõKf&NT9ˆ¹}žýÜAN« +ÙüÄàµX’4VH)̤cfý³QY¾Ùî%åW-Lf€—Ù•s1„­ì~3'œ|]äîÁļ1ѾEê ânè‹£ËbÄ(áàP +ÓuL6£¨"Çto|°GÅòvº,Šë•÷ƒøôà a:,Q‡Ül(Y´›70;Ðo~½¸rjL!`ŽÊ´^—.ªpp_9sƒG÷¹–3‡ûÌiÊJßݾ֤IÝ‘ssSyeFM4ô:õËàèf|ölà6*»Mà]ŽÁ_´õ’®1aC¬+Úy²º3ä*dÎç¸Þk•ý™‹nÆN7Š8¤¸—½׾bÜÛ£Bø¨Èò¬öQ¹Qº]•/Uý Ù2Uíèt„> Ó!ÿ­VGºæeãô W^B òr:CÆ út¡¥SîÒ%)VwS”,¿ÞQÙáÈ`€}RóÔ„—µÝVÜ b.ÒÕRn3,)|xçû†«29Ùª­y[¦y×h ;ÅÄ ¹‘lG‘Ô²tíNµœ¡`@Kˆ}£Å¾=i5„W‹é åÿ¶ñ—ê~6lûn“®*Ti>ŸÏêÙCl +ïØsE|·ÛµüÛ6Gùƒ  `N‘Àt?þðmR¦ŸÖ ®¿€Y¦b=°Á¾ÆF²ªËÚã /¾qW¨ƒºLÎ)ßoi߆º„;‹ ”£²Sz¯—ë +‚ ˆk¼iZ“ÙjeÂÀwmˆK:è&U°ùPjØAá4ò¶á©Wæ;óÞëƒÆîàÛZ+”>ÜþF3l-Ú§sжseP´¹{ÇÓ“'ÈÎ.ßN«Õ,IŸû|Fòy`Š<Ò±‡ýJðnÕ48ʉ))óe•‘‚+˜}š?W°Ñk%‡à þù^>Øgjù¯ïƒ +ŽêGâZWi9]›û§E–.çÕI莔 ø‚Þ×âH#è¾ÅW]Ÿ6—¾ +–Fûw¾p@K¦üõ¨aø¾Nó´œÕ¦‹2÷¾EnŸ?ù—óc¡Ӳ?uOüŒ²gÛ_ð¥*ìÛâ˜ò£¢´?Ö椙ÜÄ«;ûü±øãü4t¹Û øçoÔe›˜endstream +endobj +5163 0 obj << +/Type /Page +/Contents 5164 0 R +/Resources 5162 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5166 0 R +>> endobj +5165 0 obj << +/D [5163 0 R /XYZ 90 757.9346 null] +>> endobj +5162 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5169 0 obj << +/Length 1411 +/Filter /FlateDecode +>> +stream +xÚÝXÝWÛ6Ï_á'– lôm›­Û¡#P(ÝÈY'Ç$Jð©c§¶Ó”®ýß'Y²ÅI:ö28`Ù÷ëw¯îÕ•- ~¡åË¥®ãc¬Á¤¬±ø|Ö‚šl º½Ìðº×:CÌê + :Adõ†wmDPÇF.pA{vþN )hC¨A÷s0™F\½œ$ƒÙ„Çy‡Iܹï]´º½Ê²F1ƒÒîÇÖÝ=°†àE 8Ø÷¨5/À¾¬I‹ \¾D­ÛÖï•E(LþQˆM2K|q,DÂ_Wû„/ÚYžF<þ Pð˜çÓþ,ãi? ú£GÃLP üûI:'ìÙ¾C¡Z 4~ÁÃ@èŠ;6ƒWê‘9cž§üãŒgyÄG¹úú‹zÌÂi’I{@ÚûÕ¨wl‚ž3™‰f^5kv…jÐRuÆã¡Ô½'ÿ-„ï–5Móô^Ú>PðUׄ‰‰h{‚雑ê* f¢§ˆ‡aLJ€X6Ù@¼‚åÇ‚B×CÖÒgûå +CØgôÖa€Ë j›`‘½Ã+®ù:+dñ ÔøSMa€@уÁ^ÌŒd”ñ62CÅü·‘ˆô\Ì ëçÕÜç bãW¢5„#‰¤1©‹ìlBCÿ«Rl‡Rî.¥= Ú Ò~µ!ª¾A\T“’Úß @S-!ØPKýok á絤Ü¢¦Ašñ¾™eQs™"õªXWaˆ6ä4*W»Ác 9  í܈LPo‹Ž†=â¯hw6=msþF…#UA••¨{{e}Év÷ȃ!O¥ïUþý¬éážèú®s– ±)‹ ¯ËÞÌÞ—u_$¥hÒTÄb«PItUŒ‘ç0m-å²L§Ã t¸s×guW0ЮìïëdaÒƒò)ú“‹Vi{Ì®»’Ïj³¶½n!Àå.#4NSS¨õs~{Ó£ s‰=—{ e¼§ñ`25aÑ[„bƒÁQ¡¨(I-ó4ÿ ­KéWº²Äôõ«Q?+¨ ½ Th†ê®ƒ +·†º)袜©´0¨êRKïçÚ¿_»÷¾V¥„FQ0®)|Óë½;½<>ë_ß\wÐt¢-‚'Ñ-L$ÄÁêòQvœEcXˆ$.:˜ Ch¨?±ˆ0R«¿bÇ/EoÞªÖƒâ +½;t…Z*»U Ò˜6Å÷æ­9ºXG÷›âçQÆÕhc¸1€æp ÂVán*Bª,oB€Ö!@/2áô»'\Ä@)¾J>ñ¡nø<±8ÛEOêC¢‹ ½5:MfñÐQãËdPœj´ÃE¹é­(:½z—= [,6ž Ý<Œ"%1HÄ9Ô-9œ«AÌõ Ò¶œÝ» ÎN±$;Xì§W¸[fçÕÍŸÝs‚zëÔ> endobj +5170 0 obj << +/D [5168 0 R /XYZ 90 757.9346 null] +>> endobj +5167 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5173 0 obj << +/Length 1556 +/Filter /FlateDecode +>> +stream +xÚÍYÛrÛ6}×W°y¨íÚ„q#H$ugrqÒdÒ4¨“‡Ä£a(:âT–Šªã6ý÷.ˆ¥DB°.®jψ$n»{v÷`A²€Â? 4 â(&ZHdW=|†æ=†Ý!ô‡íOú½Óç\šhÅUп¬WPŒDœñ ?üp¨ ‹ŽBÑÃëüS6.òIE²£‹þ«@Ò„ÐHÁÂf—´öÎûKi¨L$3²¾ô>\Ð`J½êQ"t×ð@ ÓšW=ÉEó0î½ëý¶\ÇvÔ|6ELøŒR´Ä”5Fq°1¶6q…ŠÒÃjCM¤’v&¶ó´îä‚hFe2Ð@&õ¬ý$NxÐjïÿ¯$´Xr›¬­„Õ:”K”pLÓÖ´y•VEfï³QZú`ˆ)ö§ó<»š}¤]Má:â;)4¯Jv‚KM'óÊ‘ºçRü¤5¿¾çÐY³YÌ!^! º¦0;ôo¯ü(d‰{÷È;Ix[%.u=*ƹA ”³Ëüd/´Vuƒ2k‚±vÐY=b[$Rï ·U9T€…RÚ‘ P‚ )…8ñ,­I¤dgéçÓ2Ëôéu^†&4Vx¥Y•—sROf"!*äÛ!m0bD9UÒU7Fu‹Ë:­¸ïͯr+ Ì’¯ývÖLåÔïY½ÜÐŽ:Ö;œ(Ê“#Ø*ð*’¹„ÖÛ‰#˜¡e^-J *æµ á-Ø{|¼ +wŒláþ1M¤†!¹ˆÂtð+coÛ"¿O’d]'z®ÅNÎøÿóµ¦ë|½`jPù€ÐF³´œçƒQž!M”ÚkdéNçÒH tÖ’··D}ÛÄlV•6Ķ–^LæÅçI>tù¸ðFˆŽ¼­j+#Ÿ ¡Ìɨªfºq1ÉAqÛñ#öåÓ:óÝ‘Õ-T¤*sç~ðˆ½hó?‡Ú%8w +¨ÎF͆5ßy"[³A:› Ó*EA­Dbíl¨:Y„wçÚÀiQl›A»é ·qôvz¨‘_¾ûu0oö¥  ŸnI†õ]ô=n™£ôO¼K1&¡´.Jlû¹ß‹ãj]1}AcLƒ‰?b±<šOo/µ™n*úcàºnà\!Ä^Æ L‹\i¡ºÅ#ÔƒVnÃ(#’Kü—fî€TÌíÊ×)ÞT£¦¬I›úÔº1  99i‡ô”_ͪ{ûà#²4?“ÆÇ!1#±`Ž1°•Æ¼å´‰‚á´‘|]T#GYdxG•Y9Íò†6=³ J[¤c/¦ +Õ0©ˆQ@)ÓW´OG#Âi9kÇè¯91$Ÿ7ìV_ÞŸ?yúúåù›þà]ÿqÿ|ðìqÿ±?¹\¥]2ÜÊãÎW5F½­MZïÂV|ˆ¥ØEÇ$o#¿3k<åÙvíË)ŠžÏò¬¸l6L?c\ùxØå@ª¥ñ>9Í#A¤Ô±cH7§[GÄ[øÈ4àøWÇ ª›´ûð1…€àvmæŠèW- ‡l9óJãŽôñ|ºhRí©Õ*4ZµÐî¨Þ#uÀp’H—­™B]³eÌ5Ua™Ê ¨<:Xm©.MF¢ —‹7“7¿¿~½ ÆÄÂå®Ô»V‚¾<ñÒ"Ó¨¡79m¥*'ÙìÆÂpU\å6¼¼»£m=ö®†2ºw쬆MIè…Ÿó%;Ùd¼Ü÷I©ñ4ƒ’y:ñ¦7E{,×MjfÝG*qykxî>ä£Rû(êUy[»‘^Ç ¾Ï•Ûhš|Žï€D‚F¬8Æ©±_]€ÑëÊÂM ÝÈ–}(ÆYÇÇÅu$Pœt_eh  Hïvznùû¬s˜úöÍæ´Žp§t¤²{tpz°‹(~¢:—ÍòÄ}È{xàøÍ}£Î“±÷í>…튩Hý§—íõ'‚¦ÀFÜþBÃq_¦£Ɔù$/¡¤Ú¯Ó‰½þÒܼ:bœæ탩€ê+}ÈÅCÃáæ xPÙ»Ë#šúÆ<,^¾ÅÑ~º±×gÓ¯7Ÿá(ïÀc¾xðùûRendstream +endobj +5172 0 obj << +/Type /Page +/Contents 5173 0 R +/Resources 5171 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5166 0 R +>> endobj +5174 0 obj << +/D [5172 0 R /XYZ 90 757.9346 null] +>> endobj +5171 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5177 0 obj << +/Length 1192 +/Filter /FlateDecode +>> +stream +xÚÍX[Sã6~ϯp_¶IY{u¿lg;Ã.Y†½´¤ÝÊ0&ài°SÛ)ÐNÿ{,9„Dq´…K:·ï\td G~q¤Q$¹L4e"ßöPt ˇ=ìÉ1Ðãe†·£Þ«÷DG:Ñ‚ˆhtÕh8á“h49ëÆ1‘H¢þüè 9êã¹Áð>½M›ãù­Éë´ÎŠ|p>:î G ˧[»¿÷ÎÎQ4€Ç=”P­xt”`­ItÛc„¶“iï´÷ãB#4!ÿ8¦!E+áÖAþJç¥àŸFõ«ä¦¨ê³ì| ˜¾qô½u´Ç:a‚q/ĽÐeiÒßÂ,bK,©ÒS׬ZfLi¢´Šb ®2Õˆ|×PX"‰––dzºtöcLU"ÔŠåíìí=r®bÑ`[lBÊ ×œm¤bO­ê2Ï~EUÉU65/CÖªVÙŸ¦¸z䀶APŒxůª B"¡b¤–Ný„¶®g7&˜ršå8 ±{„3%˜â pCðñ²%öI¸\ =£ƒ˜‘cÁU\^“3ÇI" U‡N¸`O~5ß–Æù7)r?š¥e•å×mZ +÷¼óÔÒT¦vÃú¦•(²¼6>|i>ñ’uZ.q6¡X$ꉲáBýÜÜ{›ÄC\…–Ï 8Æà*Ç«W>N3ß¹©ìŠš„5\fZy÷ÿ +±sä­ííì-p¼°¢BÉãƒSO-M=/sE“‡ 1GkâŽèbIh¢1b»ôšø¿ÿq[X À€õ.|0 +§€tÅ3±(Ì:»ñE6 FÁÕ$”äÝ$­SÛ–,«mHAvÕU +ÚçfŽÅEÝ‚«Øk±'¥:Ïf¬[ˆû¥ ÁÕ¶h2ßwmd|Q¿ñ¾ß¾;9~]œŽöGÃæÿϧ'GŸ†M,6{-˜¯æU̶¿˜ kj^Ùí`M;ü°ó®Â"¸*ŸïÙ‡áþÁð§SG|ñb‘'7øÁ÷†m^«N¯]¨¶º¬»\–Á‘ø‰ËkÀŸúµSDöGû ±IhIT,:êÕ4½vìßx…F£/ïOö/>~þex°%t’úÐÝ™Ëñ4ƒwŦ´oà@™šÒ—7ߤåóObkÚî•t6³:_.’û˜‚Kè3PO+¨Xg*xG'•âÿÙIÕsÎÒp+•²»}JÕ¾5´©„ÈÓét[#•º£BzRâ6¡ã"Ï͸6“¶ým)2Õž±URg·f—ƒ_‘…ÈòžÙÖúÚ¯L>i–m@±µ±æoX{A÷6æ]…­dpU=¿­¾;ù|ºí¬PzÝÑiQmñR#/ÕììË¢¬»Ùñö èΗ,Mƒ«l­*0;פækÞ¯(cíL –k¨lÁOŠy½+,µkUCW×áßl¡œ`&ƒ—>[°àâ_Ý 47 +D0%ËÐ%Uö»Ÿd‚, X°‡&7%øÄ]a¹{~lÇÌûs?ÁÄ?ÑkB__®„÷‹ÒMÖ/K.Ú{’û‡k³vCb¯.Qú…¾Fpendstream +endobj +5176 0 obj << +/Type /Page +/Contents 5177 0 R +/Resources 5175 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5166 0 R +>> endobj +5178 0 obj << +/D [5176 0 R /XYZ 90 757.9346 null] +>> endobj +5175 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5181 0 obj << +/Length 866 +/Filter /FlateDecode +>> +stream +xÚ½V[OA~ß_±}ísß›&­­Æ[ãÚ>XC$®»¸,USýïÙ–0m +!s9·ï܆ƒ|¨¾ÈÐY¡ÜïÜzÐï«ë=Yr èÁ,Ãvì5v±ðs?î•8 #ìÇÝ‹šˆÕÌ`í^^u’L Щ_Æ>…€Œ+ÅšS¦o½f<µfÁ0‘¶uç]\B¿«@x1ÿ^ @B`ÿÖ£˜L‰wæ}›ê1„RÀåCÄå÷ÕMÑÄ)¬| O¢Ò (§ÌÞâz€"kƒÞOÈàx0lµ;7²«ê‡ô¯pÅðÛ)NêŠ:ÅàVæ†õ£Y৵"svܬ̂{vRùôTÞwÛE{]ðáÛÁGV¤bÉÍ,–ÁGp~.nÅD§ÁñôäVT¢É¯—Êá¹·$M-ÓîJÏz^ª”ÉHšÝ‹³Ã,IÖ5άñÍM›*·UnÙŒ‘ù¬Ú´þhn9ÜoÇ­xÿ¨yr¯2­j„b8ó´´Ön6.–G ²re ¯²|»°ì¹,ÆyêäÁкç,'¬¼`TQ%•c€8~€Ô#B£’g£¤`‚ÔŸ!¸sÊ0à‡„F³ŒÑQ¢ aT†—õ&Î[ºÐ$­]¯˜Ujáº(†½¤Ý72ïl9|ãÓÝÃÏ{­£“ïÍU:¹MRc&>‘#>0Nçâs¦"l4ŸšŽ¸Ù™YGƒ~ÚN̾y² Je/1]?A ÞˆjkYc¸n§ÝDæ:LÜ{ûþ½Z«8šÖa¥¹ÝQ›”¶ÉD.GYò«•dÙÍxhS“Š—ÐO:UcY‘mÍ[¥wc™?Îëtz@…ä,H‚ÂÔ—Å‹Z ª®žzƒD¾n,k]B—õaÆ„›È ±1×Ú¯TÊl¡ÿþS"‚+ (zKµª<qRq-t:­txö P£ÑœÏŸžç(o@¨-QQ"þ?”ꨉ¢¡sì…êBœñ¿šBËÙ9R"ˆàÙÑYå8$ÑdÊ´ 4È=™Ê¼]È®Ÿ³Ô¬G“ÍA±ÚØô0R®p “-ý÷¦Oªó¸Ùõê˜Õ²ÜÆû§–XÆ«G³îd}™VãGdG|þãÝÚendstream +endobj +5180 0 obj << +/Type /Page +/Contents 5181 0 R +/Resources 5179 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5166 0 R +>> endobj +5182 0 obj << +/D [5180 0 R /XYZ 90 757.9346 null] +>> endobj +5179 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5185 0 obj << +/Length 1880 +/Filter /FlateDecode +>> +stream +xÚµYmo›:þž_m“ÖN-µÍ{wu5šÐ†) vÕ6e4- !íªýùk°M:2]­ZüzÎsÎy|llØøl« -‹2§ò‚Ôž,Z ý€›¯ZvŸâþÓÝNëì©m•S%$µi*A‚œˆ j;Þ—#$HǧH28ÚC\Áä)è¿ÜÅjî“J7œlþ2vã \s>¶t'ÓL‰¼½?[_¾¶‡~lŽW±ý„+€ƒªŠÚ‹–€xV™·ìÖ§LéH'”Ù'B¾Ü@(p¸1 6X&ªÄBÀÑ“?™ØnVįˆ€ŠÜ–â€,å¼»‡‚ >ÝMHmŒMa$ðøTÂ(ÎÝàSˆ­”tÀ»wi×iÖ§p@Re§êYiʉ’Û;í_!/¸ž‡Q¸YÝ™ˆ"Äs*Ø¥*'H‚˜Nã+úð»Zšð‚4“”“vF}€ã†”¼01í¹6éoœ*äÔi€—D¥ÅJc™=ßõüˆØ‘Ê&¥6Å3ÚÒsœ!)QWƒPcË&ž1­šç.H©»YþðçkRùÇÅí<ÒÄMÂÅ¿Õ (X$˃_ûRa°$øå¢_©h˦àCþ…YûNê„«ç(x˜ÅDíW ‚ þ.l:©ð‹•ÂI*òFqhó9‘ž‚¡¡‰üµ=ú^*ñ GIZ¾¬ã(¸ß¤›EŠÏ]z¤°YSB´gn¢‰_u,Ýè9[ ‹5uíSÏH‰Q5i 7qÙrc¡LƒIº×QÅnD!®ühıO®¢ð1ðX-ž¹qaÝNÃù<| +–tñ†K/Hä®k+gð~|^#Ym,rDp>¨”uát?†“ÐcX6똱3vY¼3ϸ÷ác6‡-­Jèè¥|ÂòÆNÇ2Œƒ‰Âôõ<`¸þ¨äyXFì‹ÉÜ ~DœÀs€W¤gñ§õ³lÏ’_é…Û˜ì»E×qSjî:²Ø‰YÁ#3ÅúŠ$]‡Óø)Ë£l[!]+’l l€qWû]> ÊQ²¥,wv˜õú…è*‡læ¨yþwz†MpÙæ¥s«Y:©±Ö¡eÞ]½Kjw”A=:L9=Ó"åïß5›M~û–öº¬@§êŸ‡–nÛÕ\àAc#ãzØ7Vl‹¥ C·iÂ2þ¨k ®hýbäÂÀ¤…¾qm8l¾cžŒeâ«¡7߶(‰ó’ü^ëV§‡;´ £o8wo^Î q"©0ó52ÍrŒÎ¨¯ÑæáÈš¶^5?¤2žt »Ó׌k½‹“ D©›™WiÀoôõ¯ÝÓúý]è,ÚE_/Z‡TmBóó~×°ôŽ“q£Pí`Òcï÷iƒ=Ô;FVÓ?ë˜ +šuGë bÇØú§žˆÇÖ€mþQÐÕ®µ+Æ‘äÓäP2ãõÜYúuF8{ta;†3rêˆÒ|Ϲ2Í®÷’­[7FG·ßSœ¦]àþÈÖ)Ú®æhc0ûÙäŒ9#ÛÔ§•æ:ÆÀÑ-k4t s°ýì™·˜Ò,âÛ-¬NsPÈy˜ì¦u—72áxº´Oj07ÿ¶¹íéXˇƒŒ—Ž¥eì¶Ëè8{0ruLË)a[ Öæ_5ýªo\郎ž×m&ܶ¾uºfv¢>gVæß[9wT`u–fp˜Š=F[šï¤lÿ<Ù¦= +—jÔº7FF–=€8EÛÆn²ß.ÌN­†$ Ô\àSƒÐ|×r²cÕöN‹µ¬Ü(®8T¦—ЩÕá+¯cwò£Î(tQÍ7„7†w^¸Iåf'¤ r(»’ÎðdCð\ÎñJ%ÇæìnHÿE¯eßÔ˜&dšø'Wo°òî­€^²¾¦Kϧoõ‹>ì œqo<.¹¨Á¯ñœ`éÿñ4¥¬Q-iõœÌ7ìÎáUšÓä+iù°æf¯ÊfÃÒÙ›`®âŠ)¨¬‘/1sk$N¬—ãkíóxdõûl½CÊ$ e"[þ”)oŒWFLUþ.›œ<}(ɲRÆìZ*ùò}_6VÞ›J/«ìÅñj:wJ‡—EOL”˜UÅe$HÇNf.ý`œ…ëø‹¾•G{Ó$ô¥2*åRø}€~ù?7þ:^Å¥^”„ºIsZnŸXö 9(È¥} > endobj +5186 0 obj << +/D [5184 0 R /XYZ 90 757.9346 null] +>> endobj +2486 0 obj << +/D [5184 0 R /XYZ 90 739.9346 null] +>> endobj +470 0 obj << +/D [5184 0 R /XYZ 90 739.9346 null] +>> endobj +5183 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5189 0 obj << +/Length 1221 +/Filter /FlateDecode +>> +stream +xÚÕYKoã6¾ûWèÅYÄ "%îžÒm»M°\Ô=eC–èX¨^•¥lS ÿ½¤DÙ–BÙ‘ røš™of¾ÑÄD”ÈâÐr¨8±™åÇ#hÝÉé/#¤—'r}²»áÇÙèâÌ-8ÃÌš-+ Š¶fÁ͘ÄÎ&˜Âñw±ð£P$XÝή-ºR&«}ØvÔìèçÙF›6††”®¿G7·Ð +¤Q×#w©õ] @œc+Ù˜4ƒhôÇè÷œz¡:`ÂD1b–œq j@a‰Ñ©11‰¹Žý•—ŸM˜|[E¶^ ò(LÄ †ðöS…R:Œ›Ù´>éè“%bóÂt4+rãA×4ÉÙ‡±(2qC°ÑÖûþ3."Ó$®O(©XÖƒu‘—¾¶×ùºð +QO–a6/ülîeY5;/Œ +I½û)Xb¯^Mç—Óéç˯_» +¤4ß‹"“$Û4IkÕ’©ˆ]k$sÁv«>TK“ÍšLIÆú4ë?V­p@™¬ùÏÒ¸…çÿU«]–‰_„i¢ý·ò´ÃÂuýTPD ÷æiÜìØzw4 +¡eþ:›MkØŒc» ß ð +Og¥§­\ˆF[.|Þ‹ìQéPiö4lèlÕx±íå¸\ÝÚÛq‰Xº±qõâ¡ãè8 ÊHt£T®Åz»±± Ûn,¨_gImPÇ%Œ†Õo9ny;óª·'¦ÌSð%iñh¥³ bkz]uµr/m›ÏëašD:a–iÞñ¸ç¥mý°‡.9†®=Þ7DléHÑxÜÌSJÅ^ÒPC~EÖç;2!¹=œw«Ï6òRZ?p:ÂB„É1^tR%MüGeQ}"†äf¿í쨠9G-ór/îÚ}Y?²4”¬I¿´“†ÛíÛòu$`÷TÓ£FÛ†ëræ®Xéh-_ÎôC8.n™~¡¥ÀlKãºOºOàۅ(›W2#‘ƒVÍW¥š9€8˜>I·¢“z§”¾’"Ñ'\ˆÊ¦´e™©Iãø”N‡“7ßéìýsû„€Ÿ&‰Ø±Þ}zKƒàÿ¤ýº-ù½È÷$)§ÇÎÞoÄçéú¸ÏÊ{ÞÏûM(Ö« [ª¶Ùˆ 4΢]’n´HºYÛIqÿ¹Wei¸ìä!Àv$ê6z2Øü~’¢`‡ÊªŸÑÀÒ²û¬´XÙ:Ü«0ÔŒ™ 6¾Ÿ¢f Î GM5A·Ÿ£U¤eŒS”›f<‰¢½kŠ"üzÝ~m½Eš÷§º’²Áð"Óúf›…WÐ{® èÅkzÖš€öÔPK2–|ZIÀoµ$zkcœð›( +~”®7ÿþ™í$G±Û˜¾4K1{N–bgOw]Eø I±kœ5R—ÛprZN†óá* ‹Ð‹ÂÅS~±¦{0íïä ¥®Ø(;銬ºØså o÷^î·¹ÓF(H_D"r¯Êku·§( ž¿5/×gˆŽK=}Eý„1ù¨ +ªaõÍàò Ó±úqU Ê«©Þ ôFEõü)ýçá®þ1x×=êþÎàŸÿ>¸*endstream +endobj +5188 0 obj << +/Type /Page +/Contents 5189 0 R +/Resources 5187 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5191 0 R +>> endobj +5190 0 obj << +/D [5188 0 R /XYZ 90 757.9346 null] +>> endobj +5187 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5194 0 obj << +/Length 1641 +/Filter /FlateDecode +>> +stream +xÚµZ[›8~ϯàq¦šPÛ€ÁݧÝîlw*Uíj#õ¡­*'x«\²@&Í¿_lœ@Rå!ÆÆö¹~>ç`hñƒ–ïù6q\l­â°Ö¢ûÝ ªá¹Ÿ¿ðÇböú/D,bŒ°µx.WÀÐöDÖ"ür‡Üà~Ž|àƒ»ÝÓ'ÑôÀ´AÕxüIãmĪ‡?ÓÕ.fIA ž&÷ßïg‹zgE˜ç`(÷ýoöå°BAàû°xÖ^<‚¬xæ"G?D³gÿÔëTå„>þ<èô1ˆ-Ñã¨D‚_¿â:Ž¤ÕBŽM p­9«»A9öªqm?@ÖQ÷ë²{Ž$fÛÅ®§Vsï瀻—”‡UkÏ–«ˆ ¹|ç /¾È1ñ+×¼Þ^\-öz˜ÖWŠ*=Ø_M÷ÏðHl»ð˜É[–T{Rõÿ÷bñ©j­Ò$a«RÍås‘ª7kŽ«Fβ–éU”äè9_'4Ò@Qžð:Ü«C@­ªŒmÜÖœÑc­›XôÊšä|s§EÿLòÞ-ÍhÜuÂß•£¦<)´;¹V^dµäÊ#Z$™ú™qiZ×îcž +¨ v1ËøJ[Á“~†Bµyۃô¨OP$ +±ž%@6Þ+ášÙk[$Ȇ8°qP¢¸I›MÓ¦s­6¥mW­:Hlº„Œ–]Åî7|µéE«‡¶Ð].;‚B£Üirð®•C“ñ™¬º#ó<9ÍxøÖ¬0òŒ§ñìOâ9cÅ‹6_0‚ö¹¡)ø~Nwbyrr,ˆñáW˜špåÒ‹·Ñ›1q±Ba”ð4¨õÁÕ +‚ +ê2¸§5bñ‚ŸãLJ·,)úH‰ai'{dñ¶8´Á8I‡ÕXãq•<k5G5o£½[ºg€; é:6p‚Ë0³ñØÇLr}êˆs×·üζ~¯?×ù#¹?Ê£À×ÝÀÉ´:Ó+¾ýL~­iÕÎNÌ_˜I²¾ÔŠL@Ó?ÝÔTu*'!]“æ׌kìùÂf|Íëj@ýmG ÄÀËx€¬q!¦¡žÈ‚¥*iTh×ÿN÷öÔ-ҥζ ,¸Óë^-Ðff´þiß;þ¥çÐüø·DdÜ‘5á—"2!}W!  ]¿÷Šâé6¾ê–DyÏ#S ƒŽ¯yˆtÀwy ÂAb¢‹QMŠ$öKXFËÓT^è> ÿ?èÆû{è‰4D]Aê¼AΤn„ pÕz¾GžLHˇӫ#äª[#?kvr_D^äè‘Òÿí¨‰endstream +endobj +5193 0 obj << +/Type /Page +/Contents 5194 0 R +/Resources 5192 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5191 0 R +>> endobj +5195 0 obj << +/D [5193 0 R /XYZ 90 757.9346 null] +>> endobj +5192 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5198 0 obj << +/Length 885 +/Filter /FlateDecode +>> +stream +xÚ½W[OÛ0~ϯˆ´—­Æ·8 {ÙØ:Ú…i‘ö¨J·‰DHSûï³c'4! ½À„ïÇßw|ΗdCù‡lÚ®ãŸPfOæ´grúÄBfy ׫Žëð3ömø 3;˜FØ¢‹žë°{÷|<¹N¸ÈAÜ¿ +Îl +=& «}˜újÖÕmŒCRwÝZWÐŽ$¨3 â{Ž}/ ßÇöÜ¢˜”ƒkë—õ³²£ŠmœDÚH1[蕤°äèjNÂþ€AØ;,ˆ`|©=@òê[Š¥Aµ&¹2ß5ÇÑúsÅŠF‘½2ÿcœ‡‰Ð·æ1×8]ä"œ›Q:m,O–Y&Ý­_‚à\÷¢0uo‘g<œ”@]êÈ7”ÉV#ÅÏ ]ClM0Ø”Œ"žgw<«ï +E“lÆo—|a|0tg\z(ÅŒG] [3?tC~[b¨äŒOÓÌi^G[\Tî 折¯Ggk:i–Ì^kó'àű÷%Žy•¤“<®èë¼Íx~ (ÿÐkAœ˜“Ó¥˜äI*ºÀ³­Á—Ö— n¼-ýkb¦È¨D̺²¦ ÆÎqwËok6—ˆÐŒçË̼õÝܤ‰ÈËTÈÓ½ùøÏ£Àõð*®CCÓÌÇ´n Á*Õ2}šH<¶Înðcè”ÀUüÜ¥I¤bè¾–ºÀ“иVK,lÌâ½t‘—Ñí›43ï!–óqSÄ^R¿Ý)6‘³»~w“ÛU¡õd›²vß^/þ—BkŸrdìéúÚ-<ÂäHfq1’Å›)H§}ìôÔÏA5Xžž›ÝÀlT_Õ~Jÿ≮hºG•-þù6¶´rendstream +endobj +5197 0 obj << +/Type /Page +/Contents 5198 0 R +/Resources 5196 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5191 0 R +>> endobj +5199 0 obj << +/D [5197 0 R /XYZ 90 757.9346 null] +>> endobj +5196 0 obj << +/Font << /F29 499 0 R /F26 485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5202 0 obj << +/Length 3602 +/Filter /FlateDecode +>> +stream +xÚ\Ûn7}÷WèQLš÷Ë£/ZG»ŽbØ +²ÀîBGcKXÝ0'›¿ßb“Íf“Õ͉ N¢SuXgŠE§~Äà/~äÙ‘Õ–z©ÌÑæþ;úÿùý ž~¬„„?‘ðÂú3pJ¬ôÙ뛋¯þ&ü‘PÔ:Ë.¾^c%eJŠ£‹ëŸ=\oÿwòŸ‹¿¿8½ÈŽH 곋<% òÈ#`6ÂŒ4BÀB„h^?=ÝÝn®ö·Ï/k:®4uÞÛÉd ?Ú}K˜O}Æ“Ò ]Dë7,Eš†_΀霿 +:£:¬!tΨg:ò]===¿ºÙÞÝ=’?N8;~ÜÝ]×ÿN7(‚;ªŒq“³uQ2ž”íòZ¿a‘\ÙfRRÅY½€J•ŒêЂ*Ú;ê¬û ªÜ ªxÊ„r“³ž* OJL•ÚoTÅaªxãlµD•Õ¡ ª8Cæ…*»íóãÝï飑ìà°‡­Ò“ugÇ$8)ñȆ©½F|Ãî5ÎùŠ¾Þ0#ªÃD° +Š‰ZáAQÉ ¾eóž + OJL†Ú歞 +eê4:$T‡6è`µÞúI‡çûýÓð7, Œ¢JA}ËføG<) ø¿1~Ù~žJ/ëÔñ¨mˆ_3j-CãG>£)cÖNf½øž”Xüµß¿Ââ÷š›jHüªCâ—6 ,âßoï¶ûëWÏ¡6¢…€S#ÁA6íí„'¥¶j¿Qƒöð„½­­©Ðì„êÐ „¡–›E °: (÷ÌL¦= ž”˜µß¨m5°”ËP8g h4H¨mЀ+(Ñ ý‰fB¸øq5÷THxR`*Ô~£ +ÍÑÈ=T7«ëÔ*Œ¨mP jŒ\IǨr^eÛŽ#œxD‚ÚkT =½¦JÊŠ½ Ö9!~åìA3ÅÿÇöËæîvû°Ÿþ »92I¡„ólß¹"pRà‘RíuÐÀ0ìÞ +÷ÁŠ½¾ uΠ…KDy `Ü X!x¶ïk0ÀIÇ5˜yLcLÅŽh0€Ö9ƒŠ§3 ž·»ßO¸>Þî^Ýì÷O×dóíÍA•†ÖoôÑÓ!ÁIÇt¨¼FT«ƒ¥ŠñŠ½Ñ!Ö9ƒZQ­u_<Üà²~> pRàñ|˜y:hL¯ýœ‘!`Öƒ +JP-`ï¬É€p{…7;èÕÆ„'¥Vk¿QÓ~D_/ ÖaDuhƒ’Q2gxaØmnn÷ÛÍþûn{B„fÇÏOÛÍí¿›øïßÏ>Æøúýaƒ¿D„¾M{ï&×<ñ¤4@¥ñ–lÛ £g„®øk‰FT‡5HÄ,…³;VëÍÝãæ¿*ê…IÚ^;ýôòöávߦ¤¤Õp{“pv g{GJÆ“ÒIÆoXˆWX£c¹}°Ž¨+KÑK'©0¬çr{¿EÂ÷š× ï? I ÇBŸû\ +P +,æÜMà Õá„|p­‡dŒŸøÛ!†-qû°ß‡—« &€4&›÷$HxR`"Ô~—dÐÔ;%+þF†„ê°@}ÁLøë{£•E¸Bå“ +nöÐØödñ¤4@diü.È¢§ @ÎùkYFT‡5È"5åzV†øaY\…þ ²k²Œ°ž,3þeYVYƒ,œSæ]Ú4áLùö}7¼fÇíóø4œ'éxyÜåyÀá$“ÓÞf“Ò{À¬ý'LÓ¢8Ã}Å_Ÿ0#ªÃ +â@¥ž‹Ø]ßlž6—Ïû«=RDà8g\©É¢÷ÊŸð¤4À^ùk¿ÃýCH¬Šyídµ€æ™?¡:´!t«©s:¾;ÿ?õôd9\Æ< …)›ö4ˆpRâ1 *¯ƒLcçh¸PÍÙ‘c4€:œ!~ ý«Ooå?…·û—Q‚ü‚~Õ#”P“mÿ«žOJü«ž¹ßAÞ&apîBÓ=_@£ABuhƒ +X›Þʇ/0.søK;úa%Ÿl{ï– OJìݲöwB[!œÜVüÍsUuHƒúW•žÉº8áîøØ K§Æ÷Û§ NÅŽ7qôYÊN¨•†~гö€'¥þ¬=÷Vƒ¼hZdtóª›PÖ ƒŽÎ§ç‚›}8(V´iõ– %î¶P•ûO¼#ž”ˆß°Ó¾nJÀA…­øk=FTu¼}‡G5-Ó£êÁ9‘­͉Ò`%'f«i_µò§=ç_̉uVÈ ntn~Ì hÙs⧋‹ï.ß¾?»|ûúÃäij•4z8ß”“ݧ'{Ú¨¼ÆRÂÛûŒ¦Ì±Š½yÛH uÎ)5”¢J›I›¥¶TRc˜Íø^W’à¤ÀcMIåu!òð ¦*öæ I uÎRP%<ò‰/&Æ rýÖT:o`3ª˜èÞ¾œxìò]y]RE3¸ŠH=goîX ´ÎTaŽJ«‹LØ|»½Ü\ÝÝ!ÙÀ¡ý3.Ûô²!ÁIDz¡òãÖØ™î%«Ø›lH uNˆÛ*Ó:m€šS2Nõ-øÞ$²å”6&3f>+ƒg˜M\øóÀyŒïLδ~’L‚ŽŽC(«;Õ£e¡&q9Ÿˆ‰²ã8©¡OvæŒðΈLã5FßÜO¤ ¥Y¬Ï匠细fÇrëüÝí—W÷Ûû/á~E7ïþÌRÆ“ÒY_ãwQØ`ÖÖ hdI¨íxl*hzä8*d¹„;Ê#R;¡10á­>tâñ¤4@Òø]Šßkª©PÇ?¢z´9~à—Pºsø_w[äà ²j+3¼ü'YDíu1tN-ã{yu8sàp×|*x«"¡3Ôפ Þ <ÁIǯ¼ÆÀU›t>4›{øêpŽ…@ …¨Ê÷¬‘ +š#aäÁ%²À¯TÈÕ+3öÅú¸Î™U6N¤é˜A–/á;äÄ4–ÊøMo4è•Á'«‚•×x…l/P653jÎÞ$Du8sèÐË æù¼ühF@ƒÄà‡§Da°–#¬›³,gÅ:í¨„Þ‹kÍçeⵑNQÞà˜´) V´É°¥22F=_À¢6Ú¬M³g"~ÞÞ?îþŒwÎ/Ó÷Ó÷WW߶÷Û‡}o„CÁí– '·ë*e<) Úå¶~£JÍðW˜æ’ðYW ¨¯£#ªC;©¤õã$ÇÇÝãþñ9¨ÃÙñvŸ¾x„–ewµûó%vîI)øä£w=OxR`÷óÚïpA×í‡ssAO¨kVDBï¬Ùßì¶W×Ïø¥S@7œM¸t<) .3¿a)íW­ƒ|ÎlœÕcÍE]x© ¬OÏØwñp#†ÛŒ.°ÈG<) 54~ãIÓ¶©ÊýÔ× ¨CQ=ÚñÖ%¡Xºq`äãç_ÞþãòÍéû³s$÷‡\“E/÷ž”Xî×~‡Ü7mî‡ßÿ1¾âor?¡z¬9~èfÝ8Àãûá—ϧ/±æ˜É ß)†MJ8R ++ŸCä¶e Úœ»‰<¡:œ9rèá¡3óMä—§ÿ<»hÃßqɬ#Àˆ'¥"AãwA„ð­˜v®â¯EQÖI„¡ãI¤Q„wá¡êõ çüøâÄËã×NÛÝ ¸¤,”Žì #Lj'¥"GãwA1üꩯøÛ_q¨ë$G˜üº”ãôüÒ{»ð‹8vÂ÷zï„'¥Ö{×~ñèSÍÓ€&T5G_Ž<¤è±½ŽknäÁ³ß‚hýá;ìÀ…YŸ¼A=Î|9êƒz~úiÜ aáÓåg,”vTsfÃÈøÎDDëwAh³•…ÛÃêFFuX'EÊiŒ¨ÈÙ9–µÃ¯åeƒþnˆ¿ÆWà»aî?ä9´ªâGvÀê±æðËáŽþùéoMuDJ£e;wèÔIÆwæ?Z¿ƒ¾-€3\­OdT‡u’£œ=‰r|:}ýîMh~ý¢Bøí¬P¢F»ž + OJL…Úï’ +€ ssþF…„ê°ff.“ +±<¼ÄîlÆ[sèÀMÆwF_Z¿ " ¿ÄÄúÀMFuX'Ê—(Z¥WTMœµÉøÎÔKëw!|&%ÂÁÚ¬MFõXsøåÄÍþåç‹OÈ6°á—TõdÔÛ OJlÔ~ã#Bû–„ÓÏÙzͽ1¡:´“Å0O”à·. 2ž]\þz~qö¹@;Ê•2Neøú¤OãuIî•n}º(ƒÖ9sÛ\Îõ­ãâcÜBg­5à3îôãœxì-®òŠw•Ò„²—‚y3ÿ@ʬK1Ù3Ä|ùårãûW$vA­±‡Žeøú¸Oã5>)xìéÜr¾>b”AÎ|1ÞSt•?šåPÎ9±:™Sù\è-Æ»šÆðì˜BSÁ˜:èÿ<ôd]Çendstream +endobj +5201 0 obj << +/Type /Page +/Contents 5202 0 R +/Resources 5200 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5191 0 R +/Annots [ 5204 0 R 5205 0 R 5206 0 R 5207 0 R 5208 0 R 5209 0 R 5210 0 R 5211 0 R 5212 0 R 5213 0 R 5214 0 R 5215 0 R 5216 0 R 5217 0 R 5218 0 R 5219 0 R 5220 0 R 5221 0 R 5222 0 R 5223 0 R 5224 0 R 5225 0 R 5226 0 R 5227 0 R 5228 0 R 5229 0 R 5230 0 R 5231 0 R 5232 0 R 5233 0 R 5234 0 R 5235 0 R 5236 0 R 5237 0 R 5238 0 R 5239 0 R 5240 0 R 5241 0 R 5242 0 R 5243 0 R 5244 0 R 5245 0 R 5246 0 R 5247 0 R 5248 0 R 5249 0 R 5250 0 R 5251 0 R 5252 0 R 5253 0 R 5254 0 R 5255 0 R 5256 0 R 5257 0 R 5258 0 R 5259 0 R 5260 0 R 5261 0 R 5262 0 R 5263 0 R 5264 0 R 5265 0 R 5266 0 R 5267 0 R 5268 0 R 5269 0 R 5270 0 R 5271 0 R 5272 0 R ] +>> endobj +5204 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.9034 619.7797 156.8586 630.6836] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +5205 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.4706 607.7527 234.407 618.6566] +/Subtype /Link +/A << /S /GoTo /D (page.147) >> +>> endobj +5206 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.0285 595.7257 234.965 606.6296] +/Subtype /Link +/A << /S /GoTo /D (page.148) >> +>> endobj +5207 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.7487 583.6987 189.6852 594.6027] +/Subtype /Link +/A << /S /GoTo /D (page.149) >> +>> endobj +5208 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.3067 571.6718 190.2432 582.5757] +/Subtype /Link +/A << /S /GoTo /D (page.151) >> +>> endobj +5209 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.4535 559.6448 180.3899 570.5487] +/Subtype /Link +/A << /S /GoTo /D (page.153) >> +>> endobj +5210 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.0114 547.6178 180.9479 558.5217] +/Subtype /Link +/A << /S /GoTo /D (page.154) >> +>> endobj +5211 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.6363 535.5908 187.5728 546.4947] +/Subtype /Link +/A << /S /GoTo /D (page.156) >> +>> endobj +5212 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.1943 523.5638 188.1308 534.4678] +/Subtype /Link +/A << /S /GoTo /D (page.157) >> +>> endobj +5213 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.9352 511.5368 195.8717 522.4408] +/Subtype /Link +/A << /S /GoTo /D (page.158) >> +>> endobj +5214 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.4931 499.5099 196.4296 510.4138] +/Subtype /Link +/A << /S /GoTo /D (page.159) >> +>> endobj +5215 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.1679 487.4829 219.1044 498.3868] +/Subtype /Link +/A << /S /GoTo /D (page.160) >> +>> endobj +5216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.7258 475.4559 219.6623 486.3598] +/Subtype /Link +/A << /S /GoTo /D (page.162) >> +>> endobj +5217 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.4608 463.4289 218.3973 474.3329] +/Subtype /Link +/A << /S /GoTo /D (page.164) >> +>> endobj +5218 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.0188 451.402 218.9553 462.3059] +/Subtype /Link +/A << /S /GoTo /D (page.165) >> +>> endobj +5219 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.9692 439.375 202.9056 450.2789] +/Subtype /Link +/A << /S /GoTo /D (page.166) >> +>> endobj +5220 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.6036 427.348 244.5587 438.2519] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +5221 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.7603 392.8518 165.7155 403.0385] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +5222 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.1837 380.8248 170.1389 391.0115] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +5223 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.0254 368.7978 166.9805 378.9845] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +5224 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.4892 344.7439 147.4444 354.9305] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +5225 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.4892 320.6899 147.4444 330.8766] +/Subtype /Link +/A << /S /GoTo /D (page.94) >> +>> endobj +5226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.603 307.9457 223.5582 318.8496] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +5227 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.0181 284.7592 157.9546 295.6631] +/Subtype /Link +/A << /S /GoTo /D (page.123) >> +>> endobj +5228 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.3408 273.4495 165.2773 283.6361] +/Subtype /Link +/A << /S /GoTo /D (page.105) >> +>> endobj +5229 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.2461 250.263 161.1826 260.4496] +/Subtype /Link +/A << /S /GoTo /D (page.113) >> +>> endobj +5230 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.2768 238.236 182.2133 248.4227] +/Subtype /Link +/A << /S /GoTo /D (page.124) >> +>> endobj +5231 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 213.4648 175.27 224.3687] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5232 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 189.4108 138.5976 200.3147] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5233 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 177.3838 175.27 188.2878] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +5234 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.1403 154.0471 216.0768 164.2338] +/Subtype /Link +/A << /S /GoTo /D (page.121) >> +>> endobj +5235 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.6645 141.3029 169.601 152.2068] +/Subtype /Link +/A << /S /GoTo /D (page.121) >> +>> endobj +5236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.3933 117.2489 151.3298 128.1528] +/Subtype /Link +/A << /S /GoTo /D (page.121) >> +>> endobj +5237 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.9906 105.2219 167.9271 116.1259] +/Subtype /Link +/A << /S /GoTo /D (page.125) >> +>> endobj +5238 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.8746 619.7797 367.8111 630.6836] +/Subtype /Link +/A << /S /GoTo /D (page.121) >> +>> endobj +5239 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.1917 607.7527 371.1282 618.6566] +/Subtype /Link +/A << /S /GoTo /D (page.126) >> +>> endobj +5240 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.1781 585.2835 372.1146 595.4701] +/Subtype /Link +/A << /S /GoTo /D (page.167) >> +>> endobj +5241 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.7361 573.2565 372.6726 583.4432] +/Subtype /Link +/A << /S /GoTo /D (page.168) >> +>> endobj +5242 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.3297 561.2295 401.2849 571.4162] +/Subtype /Link +/A << /S /GoTo /D (page.90) >> +>> endobj +5243 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.298 526.0161 372.2345 536.2027] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5244 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.8372 501.9621 377.7737 512.1488] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5245 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.6463 489.9351 396.5828 500.1218] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5246 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.761 477.9081 392.6975 488.0948] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5247 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.5691 465.8812 390.5056 476.0678] +/Subtype /Link +/A << /S /GoTo /D (page.104) >> +>> endobj +5248 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.298 441.8272 372.2345 452.0139] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.3662 429.8002 383.3027 439.9869] +/Subtype /Link +/A << /S /GoTo /D (page.127) >> +>> endobj +5250 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.298 405.7463 372.2345 415.9329] +/Subtype /Link +/A << /S /GoTo /D (page.103) >> +>> endobj +5251 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.298 381.6923 372.2345 391.8789] +/Subtype /Link +/A << /S /GoTo /D (page.104) >> +>> endobj +5252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [462.3752 368.948 479.3117 379.852] +/Subtype /Link +/A << /S /GoTo /D (page.102) >> +>> endobj +5253 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.3358 345.7615 402.291 356.6655] +/Subtype /Link +/A << /S /GoTo /D (page.95) >> +>> endobj +5254 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.8269 334.4518 372.7821 344.6385] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +5255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [333.709 321.7076 350.6455 332.6115] +/Subtype /Link +/A << /S /GoTo /D (page.128) >> +>> endobj +5256 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.918 310.3979 409.8731 320.5845] +/Subtype /Link +/A << /S /GoTo /D (page.96) >> +>> endobj +5257 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.0338 298.3709 410.9889 308.5576] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5258 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.6999 286.3439 438.6551 296.5306] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5259 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.085 274.3169 424.0402 284.5036] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5260 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.9554 262.29 399.9106 272.4766] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5261 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.1671 250.263 402.1223 260.4496] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5262 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [457.5143 238.236 469.4695 248.4227] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5263 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.3975 226.209 399.3526 236.3957] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5264 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.4025 214.182 427.3577 224.3687] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5265 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.878 202.1551 425.8332 212.3417] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5266 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.7013 190.1281 419.6565 200.3147] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5267 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.4946 178.1011 405.4498 188.2878] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5268 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.7473 166.0741 433.6837 176.2608] +/Subtype /Link +/A << /S /GoTo /D (page.100) >> +>> endobj +5269 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.1483 154.0471 444.0848 164.2338] +/Subtype /Link +/A << /S /GoTo /D (page.100) >> +>> endobj +5270 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.6343 129.2759 365.5895 140.1798] +/Subtype /Link +/A << /S /GoTo /D (page.96) >> +>> endobj +5271 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.7713 117.2489 368.7078 128.1528] +/Subtype /Link +/A << /S /GoTo /D (page.129) >> +>> endobj +5272 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.6343 93.195 365.5895 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5203 0 obj << +/D [5201 0 R /XYZ 90 757.9346 null] +>> endobj +5200 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5275 0 obj << +/Length 3125 +/Filter /FlateDecode +>> +stream +xÚ¥œÙr9†ïýuiGíKß®3´aì"艞C´±Ý^z†·Ÿ£Ì”J»’rpaìú~¯´UÚd…áY¼RB!ø\}üv€W_àÇ/Èüò¯¡àÙæào?S³2ÈH*W›Ïc ’ A ]m>ývxrz¼þõè÷Í«Ça!¡!ûs*ˆýéÁzã[ŸÍ“ĶýçÁo¿ãÕ'èÄ«Œ˜Ñbõ_ø#b ]};à”¹o.ÎþáÛ™^J9ÂJI°$ +ߪ)‡·çožÿýâùë7çë‹õ¯'›1¯SM‚Œ“òæîúãOÒÄÓˆpÃVŠ"õÔ/ûÒí—YsôÐë‡0 ïfÞ®íƒQ™?!&ñO¸xUÇÕÂÁaId@çøˆãçGÐÀáæȰç¯×§{s’†#‚¥XÌ) hpò²§Ø¿Ê©í +œ¤¦ˆØñ¶ã´>=Þ‹²ã}šË°-,NÖÃù×±4]-¡åØ„X*ÓŠ,âÂ%¢Z,ŸVa@‹‹“\tKä_çÒtµ\GŒápZ½XŸ®ÏÜ´"úðÍÙÅù£†¥ˆ)Á—£ +Z¨œ¬‡*ò¯£jºZT#Nq8³NN±2 £—bùÔ +\¼¬Ã%ö¯ri»¡%Ø„Sëtý>[œ÷žjBq$_>Õ€''9™:§È¿Î©éj9IŠ„1áT;[?=~vDðở÷F#Éùòé´ð8YOä_ÇÓtµxÀXjÃ<Ó´?*‘bü&YТãd=:‘NÓÕÒ!)¥ÃIö¨EY`Š4e?0©‚€'ëq‰üë\š®À…Œ´Ô2árq¾9Û› W–Ϩ0 ÁÆËlÆYCØ0št …ãT[ GJHZ‡Sêý¡°.Ÿl.ÞnN^ïÏH„1[>¯Â€#'ë2Š:PgÔ´µŒ8H¹š&ÖÍ}ž1Œ@Å(Ù ;;ý2ÎÚ3fyÆD! õmÒ4c§êÚÎo6gÑi¢¾Ý\<[¿89ͳ‡ºÚpØÛ½¼“½Óa@¡Y»¶,«Ï‰¡"ñO“wªž«O†ŸÎägG0ÀQ–*¦v N?„…eíV0hÐ1ÉÿƒSõ\=X&‘Æa8þr}üîõ:ÏÚƒã¨ÙEtòwú! (ô$kwÌŸeþt˜ˆÄ?Íß©z®>a³sÆåÿöÈP(Ì >|_Zú¡žQ˜îÂzKÿ¬€ÒÒŸ¶[`ë)KyìŸ-ý³ªçê!p…8–~éß¼´UÆ“êÆãõ½)ච0 4Òv+Ùk‚´‚³XìŸMYÕsõÙ38Ô.ûÝq°Âb‚ÆjÙæàõC÷(o·Ì™TJ8ãÆþ ¯ê¸î8P†8ü4ç0‹óá`l28ì §€B‡²vG ¼ô6ØAÿƒSõ\=à&8!9†÷/OJ #,9Ì@aæ{fý”0¤íÖ0€Np™øgfUÏÕa Æ ¡…ßþy²~}ü¤º9{yÿ,i€/ë‰ý«DÚ®@öp„§• +kO8R#¬Ìò ´à8YNä_‡Ótµp„D¦YZwíI…ÛÊ_/ŸDa@‹Š“UäžJä_§ÒtµT@ +»”(Vcû­¸pxƒmTÿÀl +Zhœ¬‡&ò¯£iºZ4X#†k´ý† œ,Xÿ³COd'oð˜E¡sÌÂέŒo‚W3b Žó¢Ý%G® ‹ŸÊ뺄EöÞ ‚Ž1{™#WŒ{͡@_èiÚj™ã ÃP¿Eæ)'êXz8XÀ~EI¥ÚÛ Ž„’ÅPEÓ x¼¬\øÔcÿ* Ž«#$õx-A+…à~„$¬L÷5 ´9YPä_'Ôvõ„œ5eQ™TàÂM ‡ó•Tl9˜  ÆÉz`"ÿ:˜¶«Ãw*õã~Ƥ™Ëé-:NV.-wt"ÿ:¶«£cŸžÑ’MGåÛíÝõå_õA3½~ññúêsÎGiK·Ñ¼{þñú! (ô4kwúäUf°w4ö9 ¸) §êÙR9ÝWÚÇf4c*ðùúáêSN@ÃR&¡rõ!N?„…®díV hd0O;˜U=[O@R(@µ |ÙÞßmoÿ:"âp{›“0 +aÍ.´CÂé‡0 Ð¥¬Ý + nG-…CIÜ„„Wõl= ‘Æ,"qy}ýÇÃMa0ÀÑ[Ó ³~Jƒ!m·†À^22•v EàT=[€i¤´ŽÖƒ?¶·ß‹ÓÞ]H:Œú! (O‡¸Ý‰€*MÆeÚÂtU=[¿bÚG¡ËVÄÞ²™)ûùàøìT÷ºÖˇ@_ègÚjm±PIiìžÂq¢Ž§gcáóSgábYÝi{lìóSP;Åp€/ëá‰;PåÓ±u€ì#QŠÌ÷0¥µtPR"iñc1¨  Êɺ ¢ÔAµm=(Á!€³|©ÝŸ‡Âêå„‚€!'ëŠ:P'Ô¶õ„ˆùù×p%Þ!âD#ÉŒXN(hr²ÚJí E¨jÛ:Böé)çOîþ³½¼¼øzõõ¾Îç~{yµ½/œì„F =î=Rt?Vòú! (JÛ’‚=•t 4«z¶"Àq¾ëp€nEH{»¤— +Z„œ¬K(ê@PÛÖâ +I<ÿºËDèúáþ‘ˆ˜@Â`³QÐBäd]DQêˆÚ¶eH¸ƒÆ„èæöúÛÍ£ÙÏÅ%YNh§ošUZçº×ñ4=ñCn>›Ntîî?ÜÞWw±.û™±`d9œ0 AÇËzxâTùtl= £ŒÌ–Ü}»¯ïïöE{ÒþÆôËÃíöIñ@Á³Ÿ! Lºg!§€RÙ™¶;íc&¯¹ – :í@Vsͪž­«¹ì'Þ\K¶£ðéúª>$„úÞ Ì¬Â€Ò LÚn%}g` KAÒ¬àšU=[Ÿ>3ˆ+¤·-]¿(Ž0V¾—þ¬€Rúi»µô¡470”“¤é;UÏÖOªr:çÿ²y{àðázøöáëåôË£x SKÃÔòMôæì€Ò|HÛˆèüÀÓd×0³ªgë‰kÌüH^º*Ôw«,,«P·I;·1,\TöϾ³~JËjÚnmÔH8$cv 5NÕ³uŒìœÌ¿Žî׌æÚZgC”AÌtŸ1ݱ l¼¬Ç&î@•MÇÖ³‘ +1=?Øë”}Ù@‘äTËÙ-6NÖeu Î¦mëÙpûl"Ñ›û÷…Íês¬éNßK’¡¾”}Òêô;GùQV„!$vÏrŸD=OŸ:Å°ÍÏ¿è´9Røp<Š¹%¶~Ûm/í†o ÃÂé‡0 Ð±¬Ýéd†óO!ÍYÚìd6«z¶ž‡=§Ì»ý|*m,®¾¼.ðÑ°Ïi²ìQ¯n?W´Y+yì]1¥­gjf ¼ÏˆâòŠ¼‰½JxÌaÿTŒ†Âhø—b$2Ê^äOGÄ>"=ÿÒÕ‹íÕöfߧi ^_M_qÿyeGäÃü œØ§¯ø'Ê~¢xú’Óÿ>Qqx};}óp2#š…ÿþ>}=¾þß÷/Û«”¤ý‹®kŸÿ‚øLendstream +endobj +5274 0 obj << +/Type /Page +/Contents 5275 0 R +/Resources 5273 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5191 0 R +/Annots [ 5277 0 R 5278 0 R 5279 0 R 5280 0 R 5281 0 R 5282 0 R 5283 0 R 5284 0 R 5285 0 R 5286 0 R 5287 0 R 5288 0 R 5289 0 R 5290 0 R 5291 0 R 5292 0 R 5293 0 R 5294 0 R 5295 0 R 5296 0 R 5297 0 R 5298 0 R 5299 0 R 5300 0 R 5301 0 R 5302 0 R 5303 0 R 5304 0 R 5305 0 R 5306 0 R 5307 0 R 5308 0 R 5309 0 R 5310 0 R 5311 0 R 5312 0 R 5313 0 R 5314 0 R 5315 0 R 5316 0 R 5317 0 R 5318 0 R 5319 0 R 5320 0 R 5321 0 R 5322 0 R 5323 0 R 5324 0 R 5325 0 R 5326 0 R 5327 0 R 5328 0 R 5329 0 R 5330 0 R 5331 0 R 5332 0 R 5333 0 R 5334 0 R 5335 0 R 5336 0 R 5337 0 R 5338 0 R 5339 0 R 5340 0 R ] +>> endobj +5277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 714.8637 149.1082 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5278 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 690.9534 149.1082 701.8573] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 667.043 149.1082 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.97) >> +>> endobj +5280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 643.1327 149.1082 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 619.2223 149.1082 630.1263] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5282 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 595.312 149.1082 606.2159] +/Subtype /Link +/A << /S /GoTo /D (page.98) >> +>> endobj +5283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 571.4017 149.1082 582.3056] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5284 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 547.4913 149.1082 558.3953] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5285 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 523.581 149.1082 534.4849] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5286 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 499.6707 149.1082 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.99) >> +>> endobj +5287 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 475.7603 154.0895 486.6643] +/Subtype /Link +/A << /S /GoTo /D (page.100) >> +>> endobj +5288 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.153 451.85 154.0895 462.7539] +/Subtype /Link +/A << /S /GoTo /D (page.100) >> +>> endobj +5289 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.7359 439.8948 118.6724 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.130) >> +>> endobj +5290 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.9536 428.6569 172.9088 438.8436] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +5291 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.9911 416.7018 162.9463 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +5292 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.2028 404.7466 165.158 414.9333] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5293 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.4332 392.7914 162.3883 402.9781] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5294 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.2774 380.8363 185.2326 391.0229] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5295 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.5426 368.8811 194.4978 379.0678] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5296 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.5739 356.9259 175.5291 367.1126] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.9163 344.9708 182.8715 355.1574] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5298 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.7045 333.0156 212.6596 343.2022] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.184 321.0604 202.1392 331.2471] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5300 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.3957 309.1053 204.3508 319.2919] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.3958 297.1501 172.351 307.3367] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5302 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.2549 285.1949 207.2101 295.3816] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +5303 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 260.5673 133.6163 271.4712] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +5304 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 236.657 133.6163 247.5609] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +5305 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 212.7466 133.6163 223.6506] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 188.8363 133.6163 199.7402] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5307 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 164.926 133.6163 175.8299] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +5308 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 141.0156 133.6163 151.9196] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5309 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 117.1053 133.6163 128.0092] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.6612 93.195 133.6163 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.1425 714.8039 350.0976 725.7079] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +5312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.1425 690.774 350.0976 701.678] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5313 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.1425 666.7441 350.0976 677.6481] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5314 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.1425 642.7143 350.0976 653.6182] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +5315 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.1425 618.6844 350.0976 629.5883] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +5316 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.4249 584.4129 394.3613 594.5995] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5317 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.9641 572.3979 399.9006 582.5846] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5318 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.0846 559.6657 413.0211 570.5696] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5319 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.3974 547.6507 404.3339 558.5547] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5320 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.4062 535.6358 399.3427 546.5397] +/Subtype /Link +/A << /S /GoTo /D (page.107) >> +>> endobj +5321 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.74 512.3232 371.6765 522.5098] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5322 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.74 488.2933 371.6765 498.48] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5323 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.74 464.2634 371.6765 474.4501] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5324 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.74 440.2335 371.6765 450.4202] +/Subtype /Link +/A << /S /GoTo /D (page.106) >> +>> endobj +5325 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.74 416.2036 371.6765 426.3903] +/Subtype /Link +/A << /S /GoTo /D (page.107) >> +>> endobj +5326 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.5095 381.2149 374.446 391.4015] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5327 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.5095 357.185 374.446 367.3716] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.5095 333.1551 374.446 343.3417] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5329 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.5095 309.1252 374.446 319.3118] +/Subtype /Link +/A << /S /GoTo /D (page.112) >> +>> endobj +5330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.5095 285.0953 374.446 295.2819] +/Subtype /Link +/A << /S /GoTo /D (page.112) >> +>> endobj +5331 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.3786 260.3481 409.3151 271.2521] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5332 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.1173 248.3332 391.0538 259.2371] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5333 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.0113 236.3182 389.9478 247.2222] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.5899 225.0206 411.5264 235.2072] +/Subtype /Link +/A << /S /GoTo /D (page.108) >> +>> endobj +5335 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.7687 200.2734 366.7051 211.1773] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5336 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.7687 176.2435 366.7051 187.1475] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5337 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.7687 152.2136 366.7051 163.1176] +/Subtype /Link +/A << /S /GoTo /D (page.109) >> +>> endobj +5338 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.0858 140.1987 370.0223 151.1026] +/Subtype /Link +/A << /S /GoTo /D (page.131) >> +>> endobj +5339 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.903 117.9421 378.8395 128.1288] +/Subtype /Link +/A << /S /GoTo /D (page.110) >> +>> endobj +5340 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.4819 93.9122 384.4183 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5276 0 obj << +/D [5274 0 R /XYZ 90 757.9346 null] +>> endobj +5273 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5343 0 obj << +/Length 4208 +/Filter /FlateDecode +>> +stream +xÚ¥\mo·þ®_¡à¥ùþÒoNìÐÖuÔ"mZ²t±‘uêé®iúë;Ü%¹|Û«ŒÀˆÎzfγäp†Ç5;§ð;wôÜ(CœúüöË=ÿ ýÝ ¿à÷Cøæêìõï¹;wÄi®Ï¯~=hFgüüêî§ ®øå?¯¾?ŽG©?þ¯ßÿñí»ý/ÎÞ]%÷] ͼóýôOz~£øþŒá¬:ÿ>PÂœãç_Î$ñÃÃÙgN~¦_Œ½ ½(D£ð3WâÜpøÁL¡<ßo®·OÇëzèL9¬sÉ`$ö¿ÙÙ|ÈðaÔ^ý0c »‘„ Q±Wa'™Bg 56‹}wâ‡Ü 3”Æïbü S¼@#@@a´Iª ¥Bg +<íw_žz +"­µ³ ¦@À¹AOÚï¤o`9‘‚›jµ…ÑF´“„2'3ž7ûÞüWÄjÎg lüôV@íwIC‰¥º@3 +¡…L¤A+*Դ曇ÇÍáÎØ´ÁKE„dz¶A‚ø!7èßøƒmðšn•ªPQ­t¢Š|W÷›Ë+zq|ÿaúáêÛ¯ãÏ Èí/¯zÓ‘)¡’#D2|GÚ«žnÕpc~*ääµ´NéµP–P­§äsØ~ÙìÛp¬&Øð 7À‡ß ·ö:=}Ñ° ØZ•®ØëxãL+_¹…T‘¢¾Þ\2uñŸ§í~s÷ª·ü´4³¢@€9¾3šÚ«Œë$?€Q§+ö&ùFš$"|1K°ß~é¯ægm48a5°q5d «¡ð» ü<7~5ü½Õ`ÆհΚÂ÷­Ss.¼Ý=>.t«Ð'ø)ݪïšsƒ¥n5÷;>{ÞíVUÅÞëUʘ‡=zD[¾¹=¬¤ÁhqrÌ ÖÒ`>’…?¦Á‚9 ®³¦ø¹$Tâß>nÝï(”¤ Ž/ù?äý5_úƒ·Ýï tF%gÑ(Œ5Ï8¡:4¢cðOK˲ˆÐRÎ&Ø)eÀ¹Aö» €ìi%}sL90Î>…Ü`\ª ¯65/%1êÄÆ}À¹AïÑ×~Ö¼œ‚r¦äo}@a¬1vn!=85‡¾}>ô¢¿œZðX ð!Ã÷ò]åuá¡Ç/1 ò&ßÅoD×)SàFÆèœðž7Cyè.¬er†cüô"¯ýŽ¡»Þ×RVJVñw¾–Qk +ދŵ΂?lŸ¶wË_Ê'‹S¿•Ï V¾–/FÒ‹p +lJþιüˆÂXSüŠ&ù<íý·’¯úýôØ Ž-ù€rƒÞ’¯ý.-yÀq*+þfÉÆš‚‡þ›);×·‡Ûåtµ¨5f¶ÁÒ}À¹A/Ý×~¿œò +üM¾(Œ5)À-ä +9¹Ç»§ëÇÍ%W¿v +K¬n¶Â +ž€rƒ^ÁSûgmŸà|7Tò7O@a¬I¦§˜i°8 ,QʨÙ›?ä½YPû]Pºâ”WüÍ,(Œ5)@ýî£æÎÿø¸´û¥ (šœz;'7X¹S ¥7½£’ñvÒ:«£ã÷ûã)ôxáÍÝÝ~óü<}ø¸yÞ=ÛÝãôùÃ~wØÝîÚSî«M7ûD|Èñ3€Úë¨L{ &™©Øë#€ˆBH½2–î° enžž¶·7³?oý§Î!¡S‚¤š=!s%â‡Ü 3W¿~„R÷e3¼â¯‰(„Õ+y +– /öð”òÏÇýIªøIèž¼aGE?ä½£¢Ú¯¥0íQ‘ Î'Å’¿9* +(„Õ«».g¦™(þäìßþ;ÎÍþù¤Ùâ4Ç’?l²øá{s¥òêG©ÔÂC1%y3ShÒK ·Ò–šÜÛê¿··á +ÔÝ~;þŤ>o8Q"gçؼ ø!7èÍ›Ú︚X;o8‘Æ™Š¿™7…°z‘'Â_â-Dò‡ Û›‡íO\L &'ã³3L”€rƒž(µßQÚŠ8MÉ߈P«…S"`3,E¹ú6üp¸ß‡éó§Ý¶é0wî{—ç| ä˜e³glS +ø!7èíJµßñ«+×nKPYj*þf[ +(„Õ+D-‚§#Š×·Ã l×7Ÿ6ÏäþU¯q’Ì?Ëh‰•,?ä½’¥ö;^©ë•î’¥ê4E[@!´ ÓDH› ðüëöp{ß ^IXFFü°bD3¼V‘ûÃî”j^˜öu´_ºøý¶‘FÀjTëcZ?ËÊ;ö“8U„dDsØN»`Ÿàë—ݯ“0M&°{(#ØêûB8SÜÌnëyV<=ïnéÅ® ÑƺÙ >â‡Ü 3’Æï~ÓË ÃA&^ Ž?¢0Ú$€¿„®™ž8tŸ<‡†v»Ç}À¹AïÙ×~§èeO~&jþæáO Œ4ÆîïŸ3ªÓ!Îëñ²Ë¥Rä¶3 ÑhÆf+lüô&@íw’ ©Ë$á/I—¨5ˆ(Œ6‰0^èf¢#Â}WÇ`­&+\„?ä}J¿“¦'‚Õ¢@G„…Ñ&Œ‰I§óœ×ðgxÜl?ßÚ-NëÏÝaî&cD‹ˆrƒÎ ¿“Í©¶pŽø^£ä¯¥ Œ4)¡¬¿@æ–•èÌ +«ü<ÛbBLð!Ç÷t¨¼N24u‚¤Ð:W±W2DÆ™dÚ¿§a ž¡‡ïfG 9\ù%­"~È :£iüŽXÚ>hFœªPO…ˆÂh“R“ :¡·À›fáêûˆÇ6‡€rƒÞæPûÂo+ÿ²£’õš¤Pm +ŸC×a”,Âïí°ëh+g<~À¹A/üÚï~»7ú[ÀŒ×hÂ(Œ6…ϨÿZ@äá_ßì»õ²O¸Ü©Ì[?ä½Pû5p´—Œ¹p¼@³ +£ø êR+ViÐ]&“³ ¦Àr|O€Êë» ¥Œ«è›ê0 0Ö¿…rš:×Äß*97ÛàŒø!7è+Pú$à= ¬¿§R #ÁˆÂh“Fú´Qì»~‘¬Üôzu2ÁŠ£€rƒ^qTû­Ò‹«ª4 +F›Ð~ßpów½7P +tn«ùbìÍÓ“?}j%2Ú_Ü×ãE-%š+#~È :cmüŽOmùèß'1œWüMš(Œ5)$,ÑÖ‰R¡Þ *ÿ—F\#Я 32ƒ5"lÔÈ.kTð/k´Îš4bPÖúF7itûË%£_­åÄraOW)3XS)Â0• +þe•ÖY£JÒQè\¬ž/Óúï¾½zÿ×w×úðî«Zõîàû«`Òø“Gô¾U¹A/)Õ~ǃÌ6'iíß´SœÆštò·´ó+ã•óUu:…›¿êAÙø¦¥]h?ä½Â­öÛ¿ˆè›ÞñØ’¿9Ô(Œ–¡¤Z/;PiÒBó%Û«^É̵ÊÐØnðCnÐÛ­k¿ã×®mÍjÇ-¯ø›­* 0Ö4-#Ôq[ßÅéÄ&Œ>}bdk#Âú7³ç‰Qð/OŒuÖ$…†Â†wªV/ê¿P.ÿÂç'œ G¹rƒ¹¬‹? Qò/Ê…°F¹üe@Íw| îõ¶ëÖþ©Ÿ„%$K?¡C¿¥Mø!7XHÂ…ßqB™n¦ÒUü½$ìQkR +SßÎ'ÔÇ×xóã¸g}×E줽ʷ¾c.;u¯Ê VöªCöª’q¯BX“L¿Âd1‘vÇÃWL#.ˆžÓ§Qf°6" ›Fÿò4ZgMú@èJ²r¡M§Ð/Vˆ;G”U§/´Ü`E¡²‹ +•ü‹ +!¬Q!n Ñ‚ mJ×ß,æëÓV7Šh£N_i¹ÁÊJK0d¥•ü‹+ aM:iAŒ¿Éuúæ£OEòÿz›·ß¾ùáêåõ3WŒ­øéJekJE¦TÁ¿¬Ô:kRJøcì-­ðŠÚ w~ØN!éNÞùsƒ•?ÁB©ä_ÜùÖXAûþ¬sé^g¸´Ð‡*p@Õl„õ¡?ä½>´ö;ö¡²÷Ý‹ã‚UüMPkšT'å܇~ã{õ¿ü­W×sþõ4wzš¬¬¡CÖPÉ¿¸†Ö¨‘¿øHExá{ÔèoWÐ¥|ûîãWH¤­ë†.Qf°&Q„Ée‰ +þe‰ÖY“D@Ï ×T/ƒ¾0Ëø»qÌ¿è}j–É V²L‚!}zÉ¿˜eÖ˜eü-΄:­OOèSûôÜ`¥O/FaÔbŸ^ò/öékšœ®ì\ß>ìž7_w8Þÿ¢èÅàù 07X9L0ä °ä_<DX£BåeµIŸ»Þ?ÖÊ[x“‚_¦§¢éÅÿŽëøÏÍZ¹0²;×Ä8ê'4JÍÓPü˜¿Û> endobj +5345 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.1937 726.8189 175.1302 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5346 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.175 714.8347 180.1115 725.7386] +/Subtype /Link +/A << /S /GoTo /D (page.111) >> +>> endobj +5347 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.4925 702.8505 183.429 713.7544] +/Subtype /Link +/A << /S /GoTo /D (page.112) >> +>> endobj +5348 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.8659 691.5836 171.8024 701.7702] +/Subtype /Link +/A << /S /GoTo /D (page.112) >> +>> endobj +5349 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.3453 679.5994 161.2818 689.7861] +/Subtype /Link +/A << /S /GoTo /D (page.132) >> +>> endobj +5350 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.1573 667.6152 193.1124 677.8019] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +5351 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [115.0158 655.631 131.9522 665.8177] +/Subtype /Link +/A << /S /GoTo /D (page.133) >> +>> endobj +5352 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.6507 642.9296 181.6059 653.8335] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5353 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.7314 631.6627 170.6866 641.8493] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5354 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.8185 619.6785 176.7736 629.8651] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5355 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.9906 607.6943 162.9457 617.8809] +/Subtype /Link +/A << /S /GoTo /D (page.93) >> +>> endobj +5356 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.0354 594.9928 158.9906 605.8968] +/Subtype /Link +/A << /S /GoTo /D (page.91) >> +>> endobj +5357 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.941 571.7417 146.8962 581.9284] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5358 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.941 547.7734 146.8962 557.96] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5359 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.941 523.805 146.8962 533.9916] +/Subtype /Link +/A << /S /GoTo /D (page.92) >> +>> endobj +5360 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.941 499.8366 146.8962 510.0233] +/Subtype /Link +/A << /S /GoTo /D (page.93) >> +>> endobj +5361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 464.7047 151.3298 475.6086] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 440.7363 151.3298 451.6403] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.4992 417.4852 147.4543 427.6719] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.9724 404.7838 167.9276 415.6877] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6073 392.7996 174.5625 403.7035] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +5366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.4604 381.5327 216.4156 391.7193] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +5367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.7047 368.8312 156.6599 379.7352] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +5368 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6173 356.847 174.5725 367.751] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5369 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.9911 344.8628 162.9463 355.7668] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5370 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.6073 332.8787 174.5625 343.7826] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5371 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.9136 320.8945 156.8688 331.7984] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5372 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.3681 308.9103 182.3233 319.8142] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5373 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.798 296.9261 155.7531 307.83] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.2123 284.9419 165.1675 295.8459] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.8852 272.9577 161.8403 283.8617] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.1937 260.9735 170.1488 271.8775] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5377 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.4615 248.9894 157.4167 259.8933] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.7915 237.0052 186.7466 247.9091] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.8977 225.021 179.8528 235.9249] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5380 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.5613 213.0368 189.5164 223.9407] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5381 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.175 201.0526 175.1302 211.9566] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5382 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.8828 189.7857 236.8379 199.9724] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +5383 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.1583 177.0843 206.1134 187.9882] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +5384 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.0152 165.1001 214.9704 176.004] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +5385 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.0528 153.8332 205.008 164.0198] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +5386 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.5208 141.849 213.476 152.0356] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +5387 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.255 129.8648 212.2101 140.0514] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +5388 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.9218 117.1633 239.877 128.0673] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +5389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.415 105.1791 185.3515 116.0831] +/Subtype /Link +/A << /S /GoTo /D (page.169) >> +>> endobj +5390 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.4811 93.195 170.4176 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.170) >> +>> endobj +5391 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.6329 726.8189 357.5693 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.171) >> +>> endobj +5392 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.6827 714.8637 373.6192 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.172) >> +>> endobj +5393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.1908 702.9085 358.1273 713.8125] +/Subtype /Link +/A << /S /GoTo /D (page.174) >> +>> endobj +5394 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.3649 690.9534 370.3014 701.8573] +/Subtype /Link +/A << /S /GoTo /D (page.176) >> +>> endobj +5395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.9228 678.9982 370.8593 689.9021] +/Subtype /Link +/A << /S /GoTo /D (page.177) >> +>> endobj +5396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.8008 667.043 400.7373 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.178) >> +>> endobj +5397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.3588 655.0879 401.2953 665.9918] +/Subtype /Link +/A << /S /GoTo /D (page.179) >> +>> endobj +5398 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.6549 643.1327 383.5913 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.180) >> +>> endobj +5399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.6142 631.1775 362.5507 642.0815] +/Subtype /Link +/A << /S /GoTo /D (page.181) >> +>> endobj +5400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.1721 619.2223 363.1086 630.1263] +/Subtype /Link +/A << /S /GoTo /D (page.184) >> +>> endobj +5401 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.299 607.2672 385.2355 618.1711] +/Subtype /Link +/A << /S /GoTo /D (page.190) >> +>> endobj +5402 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.3177 595.312 380.2542 606.2159] +/Subtype /Link +/A << /S /GoTo /D (page.191) >> +>> endobj +5403 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.8757 583.3568 380.8121 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.192) >> +>> endobj +5404 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.9043 571.4017 375.8408 582.3056] +/Subtype /Link +/A << /S /GoTo /D (page.193) >> +>> endobj +5405 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 547.4913 387.1685 558.3953] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +5406 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 523.581 387.1685 534.4849] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5407 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 499.6707 387.1685 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5408 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 475.7603 367.8111 486.6643] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 451.85 355.079 462.7539] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.2693 439.8948 372.2245 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +5411 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 415.9845 355.079 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +5412 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 392.0742 355.079 402.9781] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +5413 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.846 368.1638 367.8012 379.0678] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +5414 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 344.2535 367.8111 355.1574] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5415 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.846 320.3431 367.8012 331.2471] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +5416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.846 296.4328 367.8012 307.3367] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +5417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 272.5225 367.8111 283.4264] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5418 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 248.6121 367.8111 259.5161] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5419 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 224.7018 355.079 235.6057] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +5420 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.9642 212.7466 386.9194 223.6506] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +5421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 188.8363 367.8111 199.7402] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 164.926 367.8111 175.8299] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5423 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 141.0156 355.079 151.9196] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.2693 129.0605 372.2245 139.9644] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5425 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 105.1501 387.1685 116.0541] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5344 0 obj << +/D [5342 0 R /XYZ 90 757.9346 null] +>> endobj +5341 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5428 0 obj << +/Length 2842 +/Filter /FlateDecode +>> +stream +xÚ­œ]S9†ïù¾„ª±Vß-Í]& ©²ÝÉÔÔÅ`\l¯13“¿R»¥–Z­#ŸrÁçè•tôÑ~ ™`óL4ž4¢Ašq9¹{<“{óã·G¤{{jÞŸ†?]ýë Õ´¤rrý¥mA$(¡“ëÙoÇç§gŸO~¿~7áX!,¤iÈþœ +fztví[ïÄ“Ķý¿£ß~Ç“™éÄ»#Œ˜Vbò·ù#¢5<qÊÜ7_®ŽþíÛÙ½Ñ&ŒA66 ‚`óÚôpÒPó¢Ùäy±¾]¯¿ âGz1lÕö‚«D\j$5Ö±ø`Ð>–´¿b~MD*7æ›»Õr™Ž˜Q„%%}xaÈ.~&ŒŒ9i×vƒ0žt€7c9ìÀpØ.ª$ëáX}"ÝèÓÓI¦š>²0p? Fz´k{Ðм‰Ã„ô‡ãvQUóû–š#‚¥ˆ~ßó»m[³¤Ã2%i!h‹T[bµX‹³=MK¬ŸÅRPuÓA6v…1ó§vð µ+@˜,QGÍ®±~v€Uí¬ +QnB³b>›ßÁ‡KD•Põ|‚ˆ +¬‘±~ž¨jù0Žû*ýÏùÇ›×—W`ͬÖÛ” 7UcûE©y!x‰‹‹Ÿ† #\’vm'TºŠ +ǘ蹸¨‚ªåB0â3?of·ÛÛ¯ó%H¦8k„VˆKQ_Ua0k|X;ktvÖÄúÙY«:BI$°î«j¾}¸¹Í6?ŒmoB0Õ§”&F? Æ&Æ°ÝÝþ*Ó±SÄu3ì@2ö.ª kÇÞp£ÌU4ö‡Ñ¡3Dæ}Fiè]ü4Lú°ÝÝÐӽĬ}¸áÃ$EÑEdíÐ %¡u¿X¼9ÿ|vzÂññ«ÓÓOû/ÂÔ¥ä¼~Ñ€EÇX?»hÀª–SH*Íb>g×?¿•¨aœÔã  <.¬„'ÒÏãU-ÂQÓ¨~Õ¸Ÿog»l€lÌŽýå„Šãñ¥ÕLÉFËf"0EŠ²b‘¹øi˜0)i×öf¤Æ'̯<ÖBrQU‰kŒ”T2„ô°zÚoÒæR)L0ù°¦X?‹ Vµ˜¤4£W,Ä´œooŸþ<%!Ìu‹‘zJADÉ…µ”TžR¤Ÿ§ªZJf«À¼é+nq÷¸6_F·+³Hfn¬>©tHéâ§aÂØ!eØîn»=C¢‘ýdð» ‚¨;#kÚïÓ‹åbßË 7)fƒ­¿#‡ ÀeЇµ—A•½ ÆúÙË`AÕ]9nQ”»q[0£»¡'ûèòîÓÆOÄñÝ'n·=³â±ÝGiBú#»OUP5ói(ퟙù°~Þ‚·ÀÙÜ.eÏôfúÑ S ™fkÎômü4L?ÓÇí¶|ÈØ™žs¢ú#gú6ª jù41ßóYËšMÇÿ2ˆ¤¹[B&ÌŒ‰IÒ—Ó.~&Œ-§ÃvÛ‡ éÑßœgicöÚX?YQº¨‚ªEd.K :!&7ç£zBADÈ…•EúyB ª%D™¹GI: DÀ2«Dd²'¤Q!ra%D‘~¨jQ­‘PBÑÌ"ªì¾‚ëë,Lù°Q“EëgÁªQ#lÄ°ÎØ!I†Šë -L€¹°¢H?TµˆAÃBã(4Ê4R×Z˜!ra-"•Gé窑9e)Á‡…vcŽÀ‡˜HD˜“‡þŽZ  J.¬D)ÒÏSU-%Ìæ\&”Vë‚¿Ñ&Kéúš T>¬€*ÖÏ¢‚U *¢0ÂŒkî¦æÒYƒIÚqº¾î“ k1é<¦H? Tµ˜„DÄTç¦ÃÔá™nÔ×^˜‘ra%R‘~ž¨jI1Š(a" u÷ðçÓó#¸Šç¯©„bD…âÕ×Ô0¸¦ú°Â55ÖÏ^S ªîšJ°B ³þÓ•ÍÝÃÈ5•£Fñ ºtMíâ§aÂØ5uØnû1¶H¯&Ž›[S¬Ÿ\S»¨‚ª™Z"|¸Ð}äJ2lN˜..PKTwÓ>2dTîn4ƒH™ٹLÍn[ç ñá°M#iuÜ+À >¬h:C|PAÒxà™mímÿ„ˆãùæ/ûúvó”‚0÷h%ÍáµÒ0âã δݶؒ{?ÓÌ>@f°_ÄG•T±¡¡Hê¹ùºxÚ>îÌOïŨ%a0M"Gºù)ëg'JAÕ͔Ȳ|Ìˉ(Ö²Ö;âã .Ž´ÝqóSfãm(…½#>ª¤ê¦FdÙ°Ÿj½?¿º>»øxùéDâãëï7 0s@PÂöÓ™3 +œ\ü4LéqÒîø[Lš8b–ÄXÈÉE•T=§ÐºÑrzÿóÍû³‹ðqæŒj>AÄ'4}(‘çéçùÀªžOháh—˜Õ=xÐÙ8ƒF5› b?”ʳ‰ôól`UÇ&2p´sçòíÛó‹·ûÏJ¿EÏ6>¤íæh·èùT=ŸÐê`ù|xõy·ü|~"gg¨F$@ˆB›„(ÒÏ#‚U=¢ÐìÐ!ºúõ TWhÞÔPM)H€(…f ˆR¤Ÿ§«zJ¡çÁ.BOO{yºü¦ì] µ›}˜lö‘["õtùm<ÖÏnöUÏ'´;X>ËùâþáÕfÜÞen‡æ²ÛèZû…/!Òvw'¸yŸR¢aÿ…*É: ‰ cÙ~ø·u¾lºT0úé[!Òv Ó4`ôÓ¥ ê9 mëùf±š-î@HÐçªæ„`d°¨õ`øø‚"m·5rˆ6qÔ¼ z0|TIÕƒ:1¨Ö|ZÎíPM+H€h…. +Îò´"ý<-XÕÓ +}v/ûhÎBÖD÷úòâÍþ~¥•¡ßÊ`SAÚna+­ ýVVPuCÃzõõë^®v¿ˆTzúÅ v¤í'ÐËÐ/NUhèh°€To•–†¾Þ`sAÚn¡Þ@KC_oUO*46ØzûtöêêêìÃOïOÆÇ¿î_r•Æ†¾ä`‹AÚn¡ä@cC_rUÏ)´7ì8½>;ÿïÙÍ/秗'Lÿ²ÿA»Òà ­i»-*™GT°ªC•Ø6ó§íífû²ÓS¥Ã¡_ `¯AÚnûd g(ÐáÐ/PUÏhèsØÌíÓç/ÅTçr0~ƒ´Ý&Èå`‚U=¦ÐëÐV]{§=!êørÿr«´9ôåÒv åÚúr+¨zFC³ÃÓ|9Ûóé}¥µ¡z› ÒvÛ§÷:ûô´6ôOï ªîéýÐàP.—P] ãÇ@ Z7É3¥íÓx9PO8uQ%QÏ)tItœæÛ‡r–ˆZPA<*4Z@ "õ<(XÔƒ +M¨—ÿŠ“³DÔ’ +âR¡Ñ"©çIÁ¢žTh›èH-Ö‹}—åJ‡C¿,Ã^ƒ´Ý² :úe¹ ê–åØç0ú'LØ[‰Ö‘×ب»hØð0hsü˜lkè˜ËÂëѦ‹™RsÇã‡l¤‰òEÿHû¿•˜UŒ‘ªžH¤­ÏÈýwˆðî‰ÉÛùr¾¹µãnú†WËÝ×îÅ;{Ê|î¾!´ûŠ¤ìGŠwß™ÉÝ«¶fW›Ý7Ïç»hÔþñm÷õtõÏ·ûÔ¬b?^v] øü™ºô±endstream +endobj +5427 0 obj << +/Type /Page +/Contents 5428 0 R +/Resources 5426 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5491 0 R +/Annots [ 5430 0 R 5431 0 R 5432 0 R 5433 0 R 5434 0 R 5435 0 R 5436 0 R 5437 0 R 5438 0 R 5439 0 R 5440 0 R 5441 0 R 5442 0 R 5443 0 R 5444 0 R 5445 0 R 5446 0 R 5447 0 R 5448 0 R 5449 0 R 5450 0 R 5451 0 R 5452 0 R 5453 0 R 5454 0 R 5455 0 R 5456 0 R 5457 0 R 5458 0 R 5459 0 R 5460 0 R 5461 0 R 5462 0 R 5463 0 R 5464 0 R 5465 0 R 5466 0 R 5467 0 R 5468 0 R 5469 0 R 5470 0 R 5471 0 R 5472 0 R 5473 0 R 5474 0 R 5475 0 R 5476 0 R 5477 0 R 5478 0 R 5479 0 R 5480 0 R 5481 0 R 5482 0 R 5483 0 R 5484 0 R 5485 0 R 5486 0 R 5487 0 R 5488 0 R 5489 0 R 5490 0 R ] +>> endobj +5430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 726.8189 170.6871 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5431 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.0658 714.8637 148.0023 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.134) >> +>> endobj +5432 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 702.9085 138.5976 713.8125] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 678.9982 138.5976 689.9021] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +5434 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 667.043 170.6871 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +5435 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 643.1327 170.6871 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 619.2223 151.3298 630.1263] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5437 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 595.312 170.6871 606.2159] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5438 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.5575 583.3568 163.494 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.136) >> +>> endobj +5439 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.1342 571.4017 159.0707 582.3056] +/Subtype /Link +/A << /S /GoTo /D (page.137) >> +>> endobj +5440 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 547.4913 151.3298 558.3953] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 523.581 151.3298 534.4849] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.8004 499.6707 173.7556 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +5443 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.8004 475.7603 173.7556 486.6643] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +5444 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.8004 451.85 173.7556 462.7539] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5445 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.6358 439.8948 174.5723 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.138) >> +>> endobj +5446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 415.9845 138.5976 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5447 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.9323 404.0293 151.8875 414.9333] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +5448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.4829 380.119 170.4381 391.0229] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +5449 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 356.2087 175.27 367.1126] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5450 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 332.2983 175.27 343.2022] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 308.388 175.27 319.2919] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 284.4776 175.27 295.3816] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +5453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 260.5673 175.27 271.4712] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +5454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 236.657 175.27 247.5609] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 212.7466 175.27 223.6506] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 188.8363 175.27 199.7402] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 164.926 175.27 175.8299] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +5458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.3149 141.0156 175.27 151.9196] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +5459 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 117.1053 138.5976 128.0092] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5460 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.788 105.1501 155.7432 116.0541] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5461 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 726.8189 355.079 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5462 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.8644 714.8637 394.8196 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +5463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 690.9534 355.079 701.8573] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +5464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 678.9982 387.1685 689.9021] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +5465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 655.0879 367.8111 665.9918] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5466 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 631.1775 367.8111 642.0815] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5467 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 607.2672 367.8111 618.1711] +/Subtype /Link +/A << /S /GoTo /D (page.88) >> +>> endobj +5468 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 583.3568 367.8111 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5469 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 559.4465 367.8111 570.3504] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5470 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 535.5362 367.8111 546.4401] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5471 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 511.6258 387.1685 522.5298] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5472 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.2816 499.6707 403.2181 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.139) >> +>> endobj +5473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 475.7603 387.1685 486.6643] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5474 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.9642 451.85 386.9194 462.7539] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +5475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.9642 427.9397 386.9194 438.8436] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 404.0293 367.8111 414.9333] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5477 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 380.119 387.1685 391.0229] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.9642 356.2087 386.9194 367.1126] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5479 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 332.2983 367.8111 343.2022] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5480 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 308.388 367.8111 319.2919] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 284.4776 387.1685 295.3816] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5482 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 260.5673 387.1685 271.4712] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 236.657 367.8111 247.5609] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5484 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 212.7466 355.079 223.6506] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5485 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 200.7915 387.1685 211.6954] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +5486 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.2817 176.8811 390.2369 187.7851] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5487 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.2817 152.9708 390.2369 163.8747] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5488 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.2817 129.0605 390.2369 139.9644] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.1238 105.1501 355.079 116.0541] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.4136 93.195 368.3688 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +5429 0 obj << +/D [5427 0 R /XYZ 90 757.9346 null] +>> endobj +5426 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5494 0 obj << +/Length 3664 +/Filter /FlateDecode +>> +stream +xÚ­\ÙnÜF}×Wô£ˆ5µ/yË؞ęqâ‰eÌA (RÇb©5­V–¿Ï-6Y¬ý2Ö ˆe¹Ï­S÷ðÖF6ÛPømÝeˆRo®ïNèæüóW'lúx€Ï‡ð÷‹“¿ýƒ»#Ns½¹øylA3¢8㛋›N¹’g?^|³ŽG©†vü?¿þöå«ÿúN^]„æ'v%4óÿïä‡éæzñÍ %ÂYµù ~¡„9Ç7w'’‹ù—O'ïNþÚ9~0Ô’PLÔ²Y~5Ç$žn.·‡ûíáîêñ—1Ÿr 1FœRw½»ÿùŒ«ÓŸŸî¯Ïó™æÄ8m6†YB™¶Çþùö&Ì÷QO~ˆÊî–íúÞWðÀ)'2þLŸ€BX½HTª™^Tzøt{¸Ü=ž]F`)”ÄRá6ÚI¨V˜@3~ˆ*íúnØR %‰ÑZgü¹@3 +a´å„ù‚ ®ú”špC´°f£¯öãØèi2ã‡8 ¢IÑ®ïá¿e2ãÏ5™Q«×DYÂ%u#ßû×o/ß]œ9qúåcìôâõ»‹×/ÞÕ$b³D»‡ZåÀˆ7Ш–šp«Ð¡5ã‡8 V9y»cåè²r'„Êø‹Ê™P«WIH€RTÎc™· DRã<’÷Œâ€JÞE»¾ F)¼"B1›u O|F!´>qÎAq%ÓÄ/Ï( ¹p*Ö—DÐ+‰6–„i—DÂß.‰.+(£œ%R/Iƒ2»‡îdrõðP_ˆ”#†[¾QVEä™ñCP‘¦h×wD•E£Ñ$LùsifÂê¥1’(%mæpýp ÙûÚÙ^ögÜní(XZ•szuíÄÚ 0¤vRþfíôY½@ÕRÊ0é^¼x{ùæÝ3&Z%,ÑÖ­Uq@O™†L´)[™.«W†kb„dqé\üåñéî3×iÅ`{`¬[½NÇu:À|´k®Ó)sFXé”·¢œX.ÂȺÚ_¬îÛŒ•ß·ø!¨ïÛÒvÇ=ŠªîÛ¤vmßæQ+…„ãŠÕVÇE~¼ÙŸ× +ÒZØâ…l.ðCP›Kóv+p¹AÓ +’ÊL;PL¦ +¡õÉKÑ\ñúÍ«Ëÿœ1NO¿|}1þúÝû‹ÏŸT¥Ö¶ë§Ž8 3u2u¤üÍ©£Ïê…RŠP*¢©ãön{³CŽ>è¢,¥ Tšõ‹rÐY” Y”Sþæ¢ÜgõòF¨ãv©£‹=£h +f¯õ+qÐ+š†MÂß.š.«W…Â,_ö·O7ÿŸ­ŠpŠpnøj‎@6 +d›¥üMú¬ °‚Àç,è§Ûû›ç*aP½«GUÐU†Œª”¿9ªú¬^ š™0ªÞ¿|{ùâëW/þùîý›gìç„4pâÓëÇWÐ+Ÿ†ìtSþvùtY½>B ››¤|®w÷÷•Òy¬‘KV~ˆj¥‘·{\¹EY°ÀXâÓµ1¡ZŸ;DÂïIî÷[Cò·ne´w³J²õwâ€În6ÀÆmîfSþænaw³Ü9¢¬r«g°vÖˆ:³FÒ%š³FÊßœ5ú¬PÜzÝ©I*ãa»¿ÝÝÜ^wKãf,Ÿ_›2ÁÒ1Šh£ô +™FüÔeJÛõ‘U™¤d6ã¯È4¢V/“p}¨¬Ê4Î"ÝEhV0=­øz­¢€žV3lÔJ¶µJøÛZuY½VÂËhºNï·w»3ø?¶Ï[±a—@¬’aìE½±7ÃƱÇÚc/áo½.«ŠÁÑ˹tì=nŸ»¡áT'¥^/OГg†aò$ümyº¬ s~¹tɘ{Ö f)¡BòÕKVÐY² Y²Rþæ’ÕgõÂhK¨qÉóSÐöúp»»^ñ0¥ ƒ¼ºxâ€NñR<)³xú¬^#) 蔌­æAüÝó‚¥~„1¾–yÖêq¯W™~-QNeìEâGÂéóœp&Ô’÷ý§ÛÇÃöþ3·yŒS••ëÇLÐ33 3 {ÌôYçm£–*þÂp˜V‡( 7âŽ(Ù {8tY¡,œ&B.7\ÞÿÕË3Içg«ÇǬY…óÑÝ8‡Yö@p}<œeî‰ÚÁSÀжŠó€íKàC„¯ô oµ~êp¦² ÒHÈó„gBI!i£6q_ŒcrÆì釛«ÃÕ§íçMØÂh©ӋÕ‘iÆq@¥ÓE»õ [X˜€×3áÏ•šQë,UâÃXÒïJtyõÓn_©#ÊH¹x-…füTúZ´;î«ËR2€&£Ïš@ç<~OFÈ}{S© • {„•î€G|e»cö¶¬ÀIfúî€ÂXCþ±GdÌÿú—3FO« +ÀJ(¤Zb0&üÔÈÛm)WÔ–ñ +L(Œ5(ûM¼ןvÛVõ‹µ¾—€G(e»ìÇÂÖ®ï{ (Œ5dŸ»_Æìkß?÷Wz­ý%àJÙnëâŽÁBßu¿ÆÒÏ=0Ó¶¿Ìߟ!,œ=C’ÿŒâ€JOŠvÇå¡xöèmT•ñçùÏ(Œ5ä;k¢ük`,)N¯uù<â·)ÛmT€œßpt]>…±Î +^ŸiQ†X#Ø€ ?ĵ·;æïJý'”Éø‹0¡0Öl òùO7•ô©·w¸µN¦€G4¯¾ÉØëWß ¤!óØþå3ßoWµ}¿Ä9£Öѱ„•íÖìúÇÔNSÖ7¢ÆòÏíhû­¿•þûÝí¡ºûq°!ßýŒø!¨ï~Òv[Žk“ñWv?# +c ÄF·ã»÷•…_"4_í· xÄùV¶[DçHÁâ· (Œ5$ŸùíF“o%yE µn­á.àë[ÙnãÊÒ˜êî +c“/mw“¡ê¼ºñæv­én†#æ·¢ÕFöN€˜¾ã. 0Ò}컋/çµ»2F¬B°ô'üÔòÏÛm 8ê…Jø &ƈý{™}¡¢òG ±ÖMðˆ¯¯l·1þàà`ÛwÆ4È=…åSÕR +ØSk +‹lF¤˜ñCPéTÑný&¡¤yH-åϤ(Œ5Hûãç¦çµC·v­sr†#Æ¢ÕÆ-R0ågƒžo2 0Ò}ìž,žþ—×À£ÙÖ—`†1¾ìMÑj£À¸0{^3 +!]$ˆ­™ñC®óæ1l¥Kt9õýše»õ9þ‡fÞƒÝs‰Æ(¼¢É…óZ7œ‘K6áCŒ¯MY«­Y`"îu}˜Péü¨ ±ŸN/ tr^^ÝÜ^=/Hµ¸KñÓ‚¿GÃëg…¸Íñ!§¬$ƒeÊ]9)Œ(Œs.ŽÄx:Þ$Mõ{„NºµØ€G¼¨e»õ—3Æ» +T]l@a¬!ýØëÓ¿}h +`ˆ•°Œ…|yñCP_Òv[ŽÂ—òWˆ…±bcmòâÒyí.׎­5ùîu `O¢l…ͧ~ˆjóiÞn]H €÷ü&üÅ|:¡0Ö Aì ž4˜¾ôä¼zÄR½ÖÎðˆ±¸lw”À–N +Þ·3Æ$ÈMÍàM/Ì-1øM˜?Äõ›0i»uüíæ¿Â&å¯Ü„QkP vGO +ÀPhŒƒñÁ®XkÕxÄ4]¶Û*Àù§i]«v@a¬A‚Ü°ýØ æ‚£V„( 7âÞ4‚ÈøëA ¬AƒØž~REA„‘z­%=àsxÙný{$|,„/—ž%= 0ÖyõÌé°zz3å¯}§Ú×þˆþÝ·ïªëdáï>®“¸Q¼hu<ëÚ³"aàÂvÝé…‘Îe’xÔ?v÷•ÇÔŠg´Y°˜ÓsÂq@Íê™·;~1By³ZFSÆ_˜='Æ2îÇó§®OÓ&x¥å>l­ûÞ÷¢ÕÆeŸ7Í]Ãý²µFHCò¹í_õÜG•YkºxÄ_¶ÛJt^ɾí> 0Ö~î¾?¦ÏÚ×~X{í#|çÚÇÝè]û„½}íû¤!ùØÒ¿$ÏÛɯ{·`I¾kò/Z“oŸ)»oDÉ÷ICòÙ›Sò¢üº7 –ä»ÿ¢U,ùÞ{Qò}Ò9ùèí‚%uÙL=~§O¼û^AÚ☴m&]¾ËØü¹ù˜2W„ÓúÁ‰3ÓÇãg åø]™°† +Ëê6Ö,ÿXÝË +Róaðsz´ðÕö~»¿:loΠ‡ôvãÏ7ó_¾ñOŸ¦_Ÿ~Ò/¸ø‚Óão–>þm<ëïöÇ_ž^¿ÐdþôÇñçËÝï|8¾Ÿë©ÆWŽ]‹TúR«ô]endstream +endobj +5493 0 obj << +/Type /Page +/Contents 5494 0 R +/Resources 5492 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5491 0 R +/Annots [ 5496 0 R 5497 0 R 5498 0 R 5499 0 R 5500 0 R 5501 0 R 5502 0 R 5503 0 R 5504 0 R 5505 0 R 5506 0 R 5507 0 R 5508 0 R 5509 0 R 5510 0 R 5511 0 R 5512 0 R 5513 0 R 5514 0 R 5515 0 R 5516 0 R 5517 0 R 5518 0 R 5519 0 R 5520 0 R 5521 0 R 5522 0 R 5523 0 R 5524 0 R 5525 0 R 5526 0 R 5527 0 R 5528 0 R 5529 0 R 5530 0 R 5531 0 R 5532 0 R 5533 0 R 5534 0 R 5535 0 R 5536 0 R 5537 0 R 5538 0 R 5539 0 R 5540 0 R 5541 0 R 5542 0 R 5543 0 R 5544 0 R 5545 0 R 5546 0 R 5547 0 R 5548 0 R 5549 0 R 5550 0 R 5551 0 R 5552 0 R 5553 0 R 5554 0 R 5555 0 R 5556 0 R 5557 0 R 5558 0 R 5559 0 R 5560 0 R 5561 0 R 5562 0 R 5563 0 R 5564 0 R 5565 0 R 5566 0 R 5567 0 R 5568 0 R 5569 0 R 5570 0 R 5571 0 R 5572 0 R 5573 0 R ] +>> endobj +5496 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.8004 714.8637 173.7556 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +5497 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.8077 690.9534 155.7628 701.8573] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +5498 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 667.043 138.5976 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +5499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 643.1327 151.3298 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5500 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.4116 631.1775 146.3481 642.0815] +/Subtype /Link +/A << /S /GoTo /D (page.140) >> +>> endobj +5501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 607.2672 151.3298 618.1711] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 583.3568 170.6871 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5503 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 559.4465 151.3298 570.3504] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 535.5362 151.3298 546.4401] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 511.6258 138.5976 522.5298] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +5506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.788 499.6707 155.7432 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.885 487.7155 166.8215 498.6194] +/Subtype /Link +/A << /S /GoTo /D (page.142) >> +>> endobj +5508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 463.8052 151.3298 474.7091] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 439.8948 170.6871 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 415.9845 151.3298 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 392.0742 151.3298 402.9781] +/Subtype /Link +/A << /S /GoTo /D (page.88) >> +>> endobj +5512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 368.1638 170.6871 379.0678] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.3746 344.2535 151.3298 355.1574] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.9911 332.2983 167.9276 343.2022] +/Subtype /Link +/A << /S /GoTo /D (page.143) >> +>> endobj +5515 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 308.388 138.5976 319.2919] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 296.4328 170.6871 307.3367] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +5517 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.4829 272.5225 170.4381 283.4264] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5518 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.4829 248.6121 170.4381 259.5161] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +5519 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 224.7018 170.6871 235.6057] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 200.7915 170.6871 211.6954] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5521 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 176.8811 138.5976 187.7851] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5522 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 152.9708 170.6871 163.8747] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5523 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.6548 141.0156 169.5913 151.9196] +/Subtype /Link +/A << /S /GoTo /D (page.144) >> +>> endobj +5524 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.6425 117.1053 138.5976 128.0092] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +5525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.732 105.1501 170.6871 116.0541] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +5526 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.8559 726.8189 367.8111 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.2133 702.9085 387.1685 713.8125] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5528 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.5781 678.9982 380.5333 689.9021] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +5529 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.9828 667.043 389.938 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.2382 655.0879 383.1934 665.9918] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.578 643.1327 380.5332 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.5593 631.1775 385.5145 642.0815] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.0886 619.2223 391.0438 630.1263] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +5534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.4933 607.2672 400.4485 618.1711] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +5535 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.8768 595.312 388.832 606.2159] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.6937 583.3568 381.6488 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +5537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.6067 571.4017 375.5618 582.3056] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.0513 559.4465 393.0064 570.3504] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.6068 547.4913 375.5619 558.3953] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +5540 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.0012 535.5362 384.9564 546.4401] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.9678 523.581 385.923 534.4849] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.3665 511.6258 378.3216 522.5298] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +5543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.7126 499.6707 376.6678 510.5746] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.5318 487.7155 395.4869 498.6194] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.7439 475.7603 397.699 486.6643] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +5546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.379 463.8052 396.3342 474.7091] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +5547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.6094 451.85 409.5646 462.7539] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.2917 439.8948 398.2469 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.7647 427.9397 418.7199 438.8436] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.6563 415.9845 391.6115 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +5551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.9777 404.0293 401.9329 414.9333] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +5552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.4537 380.119 384.4089 391.0229] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +5553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.0986 368.1638 391.0538 379.0678] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.8494 356.2087 398.8046 367.1126] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5555 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.2728 344.2535 403.228 355.1574] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +5556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.2816 320.3431 398.2368 331.2471] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +5557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 308.388 390.4959 319.2919] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +5558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.8393 296.4328 398.7945 307.3367] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +5559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.2816 272.5225 398.2368 283.4264] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +5560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.5903 260.5673 406.5455 271.4712] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +5561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.4843 248.6121 405.4395 259.5161] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.1757 236.657 397.1308 247.5609] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.051 224.7018 401.0062 235.6057] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.4843 212.7466 405.4395 223.6506] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +5565 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.3784 200.7915 404.3335 211.6954] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +5566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.4177 177.5984 375.3729 187.7851] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.9805 165.6432 363.9356 175.8299] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +5568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 152.9708 390.4959 163.8747] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.5594 141.0156 385.5146 151.9196] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 129.0605 390.4959 139.9644] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +5571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 117.1053 390.4959 128.0092] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +5572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 105.1501 390.4959 116.0541] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +5573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.5408 93.195 390.4959 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5495 0 obj << +/D [5493 0 R /XYZ 90 757.9346 null] +>> endobj +5492 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5576 0 obj << +/Length 3800 +/Filter /FlateDecode +>> +stream +xÚ¥\kS7ýί¸¡ÊRô~äìµ±®cg³) +õC-–GÿûmÍÕH©çŠ-*UñN÷‘δº[Ò_0ø/<[Xm©—Ê,οm±ÅWøöë-Là礼\nýðJø…§Þ³X~<Nµàb±¼ømûðhÿàÓÎïËŸŠ9Ê´GáûBëðÝ­ƒeòɵ4<øþïÖo¿³Å âç-F¥wzñ|Á(÷^,¾m)!Ç/®¶N¶þ™ü¬0`sÐ\b“Å$8ƒÏBË…ðÁ®gòxy{zy{vqqwzþíöE=zîf=Ú Üá'w_#ä¸E‚“Œ¤öF¢]CîA +ý”¼šxu(Óä¹¥Ž3ÛÌþæv‡³íJ!U¶ìiñ¤4ÀD¨ýΩ ¨p=SþF†ˆê±&˜¦FyUëðíìþ?ˆŠ2gL¶êiñ¤4À4¨ýøVÀ)XSþFƒˆê±Ž/©rŽc`«A0N…<n–!áIiШõ‹Ëk† +¦lÅ_ÉPVÈLÆqˆAãF.V;Boÿùåñú|Èn< +E¸ Ü@Š…ú¼#Øöã—6P”¦–ÁDŒ­{qá¤Ä#¬ö†¡TC®á©i+ö:JFT4E dUÆT‘/¯oÚ©kI9+à©G8)ñÈ(j¯ÃÔyCn$e€©Ø멨išºRÔ)(…ãÔoWw—7—çíì¦Âؤ3ýOJd(ßAÑð[À ï+þZ€ÕcMHAa‘˜F¨××HžôÔpí³]/OF<) °DT5ÍžqÈÉ6×ÈW‡ŸöC>ØÝß?FÔ_˜õòÀNJ<–*¯3?•Ñ {“RQÞL:J §Jk7•à`ùª€€.Òihº’Yg ŒxR k ñ;#‚œ€VrÊ_‹0¢:¬Yk©ð*Ç7‡'˃£÷ïŽw Û^žà¹@ƒA²|B.xRÌä‚‰ß ¹ <Ü)?– ªÃšu0šr)sq|óæ§Ó7H¯8¬4Ø‘d‹^9ˆxR`å ö;Ì_ãÇ€FTüM9ˆ¨kš¿Ô[žÏ¡®n¾¢gŠŒîoœ<) ðóÔï0w‡mœ%‡†oÊlœT5Í]±p«eò³÷úõáÑkäøSɬȽó·ˆ'¥vWûyöžC{ì)sQ=Ö4á–Ló‡=ÂzùBÂßQͬÍF½ðxR`á_û ·>«ò7áQ=Ö$7á6«Tàä×£Y`ªÀs2ëUÃ'«†•W\ÎU½ÖSò¦FP‡2ÍŸ©pY—»Á÷ÿ¡BSôê¶Qóú¶dÖ«…OJ¬Ö~g$€“¡Lø›ZQÖ$‚ðá HçŽðø`÷ääàíË7°=`Û¿¢µÐqØÆ$Ë~-ð¤4ÀkáÔïŒP嬅ϔ©…ªÃšup,\àñB‡½ƒpxòñðhØ.~l¥†Jéx6îH1âIi€HÑø¤0 ¿\h§§üµ#ªÃš¥06\ååÄ°N ;Üm¿{•'æ` ’¬zçªOJì\µö‹kî3™‚ÖÊßœ«FT5i.µÇ{Á ÁÉúôd‡s¾½„vñpï½­ÚÖýÛÊOJü¶rêwF 8ø_ÅÜV¨kÒBÉémåýÃÙÃ=v´ª<3• z¡°†“EBåuæ\ÕLS±7Q=Ò4yÉ'W•ç·§g··A‚&Áúí)ìzU2ÂIǪdå— ¤PÞ‹›7U2‚:”IîóÅ`X Ë=hNNÐMZd‹þ&aÀ“Òß$LýÎD?¬欯ø‘M€걦ù3.*s\¾…ª°ÃÛÞ=\_¾ûÐ# +驳¶pÐ)#ž”HqhüÎ8’Á„¿Ž†ÕaMr„wœչN.—o^`— axF÷2AÄ“ÒKµß¹¢ Âí—­ø›\Q=Ö4w'ÂU¬›ÜÛoL°ƒî6ö²AÄ“ÒKµ_|ë(à¬ð)“"ªÇšd°,\Íæã“ûïO÷~:ØûÇɇ·Èá‰àr—Èv½.)âIi€uIµß™¬iÎxXñSþ¦KŠ¨kVA‡Ýχ'Ž_¯Ï×=ÂÐ. /¿ +¦²uÿÝ×'%õuâu¦D­0¿);òæë€êz@+³~ý+.ˆûÛ«ÞË äôæñ}å/¼Ç,<*©Âm¯yÊëÑOJƒ™÷£'~¡él#&kÈO mÕÞw³èˆ'¥2äÆïL³ û7èŸM=€º-Q=Ú¤”fÔ(¥ÐfŠ?Y(éž^>]¨Â`“P#l¦âf¡&˜j3m +Ö˜•j¶}^PAî´Öù§kUlÒj„uµš `^«Í´I+^w“n¾e}–ZÊ3êúGoY­Ò`ƒZ ÖSk:€Yµ:´£ZÊ:ê¹T³]íóÄ2ðîéË°4Ø$ÖëŠ5À¼X›i“XáÒIÞ6¾ÏSIIÊ”}ú, 6©4Âfz¬Òdó*m¦M*Ép:#ÜLoü<©Â¥¤´ÿÇê+ 6I5ºRM0/ÕfÚ$³”;¡fÚçgI%}øÝóþYf’ª4Ø U‚ÍtUI„éf¥êÐŽRI;+°ûy2YN%7O_|¥Á&™FXW¦ÉæeÚL›dÒžÊpi;•i¸‚EDTI/²UO„ˆ'¥&BíwA!}¥£ð`ë4"DT6‰ ìzK‚ïDž/¶Њ<=^ +ƒMñ2ºñ2@}MëÇxFQÉð;m¶þ‰yÖˆþŒ•^¾HîPImè¾ÖÅ +¶¤*¦Õ׫ëÕÝÙÃx§uï´ÞŽ~—ñ .â¿ìG!lý•`̬?} ×]7wÕµžõ‡Ïß×ÿîßüýýëêºS$ë¡úüH7endstream +endobj +5575 0 obj << +/Type /Page +/Contents 5576 0 R +/Resources 5574 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 5491 0 R +/Annots [ 5578 0 R 5579 0 R 5580 0 R 5581 0 R 5582 0 R 5583 0 R 5584 0 R 5585 0 R 5586 0 R 5587 0 R 5588 0 R 5589 0 R 5590 0 R 5591 0 R 5592 0 R 5593 0 R 5594 0 R 5595 0 R 5596 0 R 5597 0 R 5598 0 R 5599 0 R 5600 0 R 5601 0 R 5602 0 R 5603 0 R 5604 0 R 5605 0 R 5606 0 R 5607 0 R 5608 0 R 5609 0 R 5610 0 R 5611 0 R 5612 0 R 5613 0 R 5614 0 R 5615 0 R 5616 0 R 5617 0 R 5618 0 R 5619 0 R 5620 0 R 5621 0 R 5622 0 R 5623 0 R 5624 0 R 5625 0 R 5626 0 R 5627 0 R 5628 0 R 5629 0 R 5630 0 R 5631 0 R 5632 0 R 5633 0 R 5634 0 R 5635 0 R 5636 0 R 5637 0 R 5638 0 R 5639 0 R 5640 0 R 5641 0 R 5642 0 R 5643 0 R 5644 0 R 5645 0 R 5646 0 R 5647 0 R ] +>> endobj +5578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.215 726.8189 191.1701 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.3271 714.6576 193.2823 725.5615] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +5580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.0903 702.4963 195.0455 713.4002] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +5581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.2458 690.335 212.201 701.2389] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +5582 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.7047 666.0124 156.6599 676.9163] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +5583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.1068 653.8511 164.0619 664.755] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +5584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.271 641.6898 176.2262 652.5938] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +5585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.6196 629.5285 200.5748 640.4325] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.4741 617.3672 183.4293 628.2712] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.1963 605.2059 196.1514 616.1099] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +5588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.5449 593.0447 220.5001 603.9486] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +5589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.798 568.7221 155.7531 579.626] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +5590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.9136 544.3995 156.8688 555.3034] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +5591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.1937 532.2382 170.1488 543.1421] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +5592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.6051 508.6329 148.5603 518.8195] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.6238 496.4716 143.579 506.6582] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.0594 484.3103 214.0145 494.497] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.6172 472.149 214.5724 482.3357] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.3295 459.9877 211.2847 470.1744] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.5275 447.8264 206.4827 458.0131] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.2499 435.6651 187.205 445.8518] +/Subtype /Link +/A << /S /GoTo /D (page.83) >> +>> endobj +5599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.6981 423.5038 211.6533 433.6905] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5600 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.7045 411.3426 180.6597 421.5292] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.0967 399.1812 204.0519 409.3679] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.8625 387.02 223.8176 397.2066] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.6582 374.8587 211.6134 385.0453] +/Subtype /Link +/A << /S /GoTo /D (page.84) >> +>> endobj +5604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.6573 362.6974 190.6124 372.884] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.3559 349.8188 156.3111 360.7227] +/Subtype /Link +/A << /S /GoTo /D (page.88) >> +>> endobj +5606 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.311 338.3748 192.2662 348.5614] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.5114 326.2135 189.4666 336.4002] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.4366 314.0522 209.3917 324.2389] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.9782 301.8909 224.9333 312.0776] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.8175 289.7296 211.7727 299.9163] +/Subtype /Link +/A << /S /GoTo /D (page.85) >> +>> endobj +5611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.3418 277.5683 237.297 287.755] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.0895 265.407 166.0446 275.5937] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.261 253.2457 200.2162 263.4324] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.0877 240.3672 169.0429 251.2711] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.1772 228.2059 201.1324 239.1098] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.129 216.7619 190.0842 226.9485] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.881 204.6006 250.8362 214.7872] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5618 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.2028 192.4393 165.158 202.6259] +/Subtype /Link +/A << /S /GoTo /D (page.86) >> +>> endobj +5619 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.947 179.5607 203.9021 190.4647] +/Subtype /Link +/A << /S /GoTo /D (page.88) >> +>> endobj +5620 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.739 168.1167 232.6941 178.3034] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5621 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.2077 155.9554 193.1629 166.1421] +/Subtype /Link +/A << /S /GoTo /D (page.87) >> +>> endobj +5622 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.2346 130.9155 191.1898 141.8195] +/Subtype /Link +/A << /S /GoTo /D (page.89) >> +>> endobj +5623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.6932 118.7543 172.6297 129.6582] +/Subtype /Link +/A << /S /GoTo /D (page.196) >> +>> endobj +5624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.3796 93.9122 248.3347 104.0989] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +5625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.106 727.5361 370.0425 737.7228] +/Subtype /Link +/A << /S /GoTo /D (page.114) >> +>> endobj +5626 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.1585 715.581 372.095 725.7676] +/Subtype /Link +/A << /S /GoTo /D (page.120) >> +>> endobj +5627 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.9849 691.6706 420.9214 701.8573] +/Subtype /Link +/A << /S /GoTo /D (page.115) >> +>> endobj +5628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.5614 679.7155 416.4979 689.9021] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5629 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.4954 667.7603 431.4319 677.947] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.5824 655.8051 437.5189 665.9918] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5631 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.4181 643.85 425.3546 654.0366] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5632 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.2814 631.1775 403.2179 642.0815] +/Subtype /Link +/A << /S /GoTo /D (page.117) >> +>> endobj +5633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.2935 619.9396 429.23 630.1263] +/Subtype /Link +/A << /S /GoTo /D (page.117) >> +>> endobj +5634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.9572 607.2672 430.8937 618.1711] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.1568 595.312 407.0933 606.2159] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5636 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.5338 584.0741 426.4703 594.2608] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 560.1638 386.0624 570.3504] +/Subtype /Link +/A << /S /GoTo /D (page.115) >> +>> endobj +5638 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 536.2535 386.0624 546.4401] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 512.3431 386.0624 522.5298] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 488.4328 386.0624 498.6194] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 464.5224 386.0624 474.7091] +/Subtype /Link +/A << /S /GoTo /D (page.116) >> +>> endobj +5642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 440.6121 386.0624 450.7988] +/Subtype /Link +/A << /S /GoTo /D (page.117) >> +>> endobj +5643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 416.7018 386.0624 426.8884] +/Subtype /Link +/A << /S /GoTo /D (page.117) >> +>> endobj +5644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 392.7914 386.0624 402.9781] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 368.8811 386.0624 379.0678] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.443 356.9259 389.3795 367.1126] +/Subtype /Link +/A << /S /GoTo /D (page.145) >> +>> endobj +5647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.1259 333.0156 386.0624 343.2022] +/Subtype /Link +/A << /S /GoTo /D (page.118) >> +>> endobj +5577 0 obj << +/D [5575 0 R /XYZ 90 757.9346 null] +>> endobj +5574 0 obj << +/Font << /F29 499 0 R /F23 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4977 0 obj +[474 0 R /Fit] +endobj +4919 0 obj +[474 0 R /Fit] +endobj +4902 0 obj +[474 0 R /Fit] +endobj +4878 0 obj +[474 0 R /Fit] +endobj +4857 0 obj +[474 0 R /Fit] +endobj +4670 0 obj +[474 0 R /Fit] +endobj +4576 0 obj +[474 0 R /Fit] +endobj +4531 0 obj +[474 0 R /Fit] +endobj +4521 0 obj +[474 0 R /Fit] +endobj +4495 0 obj +[474 0 R /Fit] +endobj +4466 0 obj +[474 0 R /Fit] +endobj +4447 0 obj +[474 0 R /Fit] +endobj +4403 0 obj +[474 0 R /Fit] +endobj +4354 0 obj +[474 0 R /Fit] +endobj +4324 0 obj +[474 0 R /Fit] +endobj +4316 0 obj +[474 0 R /Fit] +endobj +4299 0 obj +[474 0 R /Fit] +endobj +4282 0 obj +[474 0 R /Fit] +endobj +4258 0 obj +[474 0 R /Fit] +endobj +4240 0 obj +[474 0 R /Fit] +endobj +4219 0 obj +[474 0 R /Fit] +endobj +4205 0 obj +[474 0 R /Fit] +endobj +4182 0 obj +[474 0 R /Fit] +endobj +4150 0 obj +[474 0 R /Fit] +endobj +4123 0 obj +[474 0 R /Fit] +endobj +4104 0 obj +[474 0 R /Fit] +endobj +4075 0 obj +[474 0 R /Fit] +endobj +4059 0 obj +[474 0 R /Fit] +endobj +4037 0 obj +[474 0 R /Fit] +endobj +4017 0 obj +[474 0 R /Fit] +endobj +3985 0 obj +[474 0 R /Fit] +endobj +3956 0 obj +[474 0 R /Fit] +endobj +3905 0 obj +[474 0 R /Fit] +endobj +3890 0 obj +[474 0 R /Fit] +endobj +3700 0 obj +[474 0 R /Fit] +endobj +3699 0 obj +[474 0 R /Fit] +endobj +3698 0 obj +[474 0 R /Fit] +endobj +3697 0 obj +[474 0 R /Fit] +endobj +3696 0 obj +[474 0 R /Fit] +endobj +3666 0 obj +[474 0 R /Fit] +endobj +3665 0 obj +[474 0 R /Fit] +endobj +3664 0 obj +[474 0 R /Fit] +endobj +3663 0 obj +[474 0 R /Fit] +endobj +3662 0 obj +[474 0 R /Fit] +endobj +3661 0 obj +[474 0 R /Fit] +endobj +3660 0 obj +[474 0 R /Fit] +endobj +3659 0 obj +[474 0 R /Fit] +endobj +3658 0 obj +[474 0 R /Fit] +endobj +3657 0 obj +[474 0 R /Fit] +endobj +5648 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] +>> endobj +1228 0 obj << +/Length1 1642 +/Length2 9543 +/Length3 532 +/Length 10417 +/Filter /FlateDecode +>> +stream +xÚíteTœí²%Ü»»»KÐ঻ÒÐÝ4¸{‚»‡@pw ‚»OpK0äûæÜs×™¹î=¿fM¯õözŸÚU»ªž]o±0èò(€a¶U˜ ’G€—_  u¶uGÀœuaÚ<:0T t<`"¸,,Jp …¹(‘I€  P†€‚‚ \€ÌÕ µw@Ø L8¸¸¸ÿiùã°õúò‰€Ú»X^< N0Wgˆ òâ¿h€Ô Pz¦g¦¡«`WÓ5¨A\ ð‡&ôÜm  €6qA@8v08ÀéïsCÿ´†à}àR@€„+}ƒx‚ ® n€+î E ÞPÀtA>Ü€º€œÜÁ +x°ÛÁþ*È{ðp~ÀÈô`$‡º"Yõ”Uÿ®éDþÉ€>À˜Ýƒ'rÿÓÒ_ØÍŠB]$Äù'—-†"\€^¹È\áпÊpG@]ìÿY7±ÂÁNâæûÏíü³OÀêèêêäõW4ì/¯ÿ¨ŠD@œìxqr‚¹í¡.¸|æEÃÅàÿÛvwýæÿuAìf†ã¡ æâäCìpùtaȇ”öÿžÊ¼ÿ>‘ÿ ÿ[þ·Èû?÷_5úOñÿô{þWjUw''] óÃü½g‹èxØ5mÀŸeãî ø³o  ÿ#è uòú¯bÿÕÛòwÑŠ0'ð¿bó+¸Ø?¨Ã# Â+ô·ŠP…zBÀzP$È`tz¸¸¿ìÆ.`Ü êyø¯»}âçÿÌÈ +rtù£„ÈßÄü¯ ±ò\îñ>Çô~¹ú½¥qú»V?Htøº‚ÃW“&<À@àu<$-p2‘Ñ›9,œ ×!ñ^T×}žE-ÅIëµÓºü´Ÿ¹ÀÄÏÜŸ´’˜ìZß>?—mÙL™ay3NQï•ÙŒU†È1}—&Ʀ—9Þ:è nÞ«ÿPGÑXKb—fÄê~M½í{K$øÉ: ›Œ0Â!øjìÛ£*”2â,Á6^ qLû¼ÔBž¥cÉõ>Þ©;7!u‰ûâh­zèo»SÏõœ7ML˜OëŸhÐÈNAQ"©wõû®})ÆÌÌ×1°Ù ÃááÌŽ”¹å1W èOç›Ã„ßèA)µhA{‹àöY+(R” GB9sRÄÆ'ýÔ&»‹Œ¥U7H?^O°27ù6ÓòÂ%*Gü©­¬øг¹Ÿ²¿JˆÚ&JD Ú›EõaºêÇ¥Sß +Sú™ë§)[£*³Ö(AB¾i½Ä‰½'ü#ÇrRmB[À“ó@6ϱ®O¼þ÷Cg—ò0²Ö°Ü„pWbÑH×G?NÊ _¡±C@qRÒ_P몵o5M¥$`CžhrAñŸÊ¼6 “ïÂËï”|Jã<Üû[¯8J Ø”{…NÑ'2éqGÎt¼i‚?^oã½­4v4^¬Nu5Óm蛼ãZ¹Aøc‘Ös¾›6Ý!À"Bäí,r0A¼–Œg_@Œ?˜<Ù}2ÐÈßTm“»”lÔä„Ï°Øz&iî›ð¤†2ŸE‹Ü­¤>ÝzC°)º ÞEô±éÉQ׎®VQ+¶‘L˜ÿ±®)Üƶ-ë"[|B°G™&~©v„f_çù}ÆmVõE¬‡ˆk—F‹Ì¤f?®®"ëÕáôÒ7ÔQV ÂGÑ8=V?B&,'¸{ÚÒt¦‘#©˜{*øei£†Æa+= ¶²ì"»P>ÓEèäbŒP2¤ +ÐÕæQÄ1j…[b’ùN미ÆbódäNì”êÅ϶lÐk3¡-Ù ØPÞIšD l])H‘Üf`é„éÀ]Ÿ4V{ÅJÏŒ%59°¹¬ñ“u^°½ü©é A»žæ1wóúÌ’ö´æ¬\ìà5 SÃ÷ÀW‡:.+CÆÄ ÜzŽ‚@®¯£VI¾‘*(Õm(ÏÛý¢¬ICÌÌ â¢&-ÃŽÚœ±Ô†œtÚÁÇ·|´sÊÞcùzŸ-XZ³²WøÌ|cµðÓbM+?©-QMãYë1/Ö(ì‚sòÚ£Ô>HiN:WöaÆîƒx÷ò +ªÞŒïqv†.=«ÆW—ûMJ~™xaÈ:Ü·0æ ®éΖ.ùerH5Ô»‚yåLl´ [–rxzO.³:ׂ¿ÊŠœEl²XiˆÏb¡’ü×O>8¾eaùš™ðÌφíNý„oÎÍn2ñ>R;Ê*±´­bõŠ 8àÿfj÷G,ö㶖T̳ÇvørÎô ;Ahò;¯'Sª‘²2äAÁ"TOü ³/î¨ʼn(»,Õ>Q­æ;’6d+ +J UŸÇt:–I#ØÆù…-ÐÕ„ðÌÎÁ¾|;");üâ!×^Žx‹Þ Zø +: +v +zÖ'®uDÞ]Á1Ø +­q'lw¥Nß]Ðùh4T)&ŽoŠµ9/ÌåÒÉ=µRT½é{ׇ]óK¶äg1:‰¾u17´‡ç t§²nѯî!4ðé&vÑõ-Ù×3†P¢j éO{åËp¨ÏX6©ÝŒŽ•×çÝ…‚€É„ËÃÔX;¨›GåÂx­šw“E`èð4ÍWL¶ø¬ œÑÃÌÖ $¾ÖŠï6ë%S¶ŠþmF ·õ‡ Ú„òÜzR0Þ÷# ]o&…¡yKUübÚ“ +[¦®dã…ç ®ú˜× êLßÀàÊ°å¾W²Mï³äã²v#ù_[i5 >ëé¿4 ÉÆ\“ý*NÛW™=á·°eþf¥â(ÕäÕÆlè ž~¸w¨%åÇŸŒ›vœ±YëO|¶ö‚M—û$´Lce÷<ÞÞÇÚ1D:<{y öûl)&DÙAÀ¬0µ@.lFΧßûÙ;šö­áXî%ì‡!³0â·>{§“ô?oehqcöÔhBÅá—“Ã÷öMKy…ëkg¥¡¦Úõ5 šk© Fùã{òÄ‚) Òg³eí¿'Y<¸{y$Ä‹8;WûŽ&·f¹¯ wLù|ÃDì¢ÔŸùzCdãÔ8lç;+è°JoI/¤°.kÐö±ìM¼4Iß;ª–eȨÂçqÈ©å`Õ¦M/¥Ÿ/ÒØç/«X'Õ-ÝŒ™&󎯲Âpö­µ&ö•¨ ¹$Gæ¸f( +·Rmë· úô4WŽ¬Øy +óÕ]~Ö;¿ª¥/ö(32uô Ñq¿o}ïBă_#«QŸ5lîáýÙ¾öUFµÂKQš¥ÙÓ†ÆSe~ÝnÚÇëxaJé/ÈSØÀxš­ªe¨*N3¶,®xßQx±_ðç}Ôys=téþ”l’>À‡Ý¦g#ze©’ÿF°µñŽõEª5úQUöëq¬Žr&g­Æ±/i=ª3h²¶zÈ7¸4ÏÝw˜xì” X±ÅÎàî°GUÜ“¿¢É”¨U™¬Ÿ  óSµUè'âw­ÚTž¥¸»‰ºP>ûKNI÷ó¯hC%> hC±‡5£n {6xŽ K+µ[¤2É^•×´Í—Òú“(Ç6|>¶®»ña\cÑMñ<¢L¹ç‡âyx=í&S9•>ŽÍž³±øjTœûŒ_XqÃÌÀÏÙBÏUúâ ëaÚÛ×øØK$òvÕwXn"Ô¹+ ãÀŸåE*Ƴƒ„ã÷ó‡´Žøt\Ù\ò¨¥…ì³á!eÜZŸÜ‹÷® CܨUc’XÇ~9mZ + 2Á£}ŠK¢8z’ kšl¤„²73_¦lY9ùŠO[=ö9Œ×->?%ÈÈ¿ã>ª®&[îj÷×ó.#5“<–‡·gteùÚº‘øë¿\eU‰Ljšì/¿ªžT(zV¬Iû/3Ï^$|Ÿ~º8§Ó&\oâeFïÄÀsœ8;q¸‚¦ä¢‹ÑPÈS ýX¶ËMúéi¹ׄíeSßÀŠpalÚšcBÉ{Ô,se艨Ÿžo±•…æZØzÆ8<Ã0ï\xg° +(ÌŽê˜iÀö˜æ$ŒÌÆ™ê63àìñ!Cʹ‡uæH9ËpTÏvÓ ¿* :Å$/“6RÖq µRZ3ƒÈ¶Ç­â ôyÁ¼aÉ"/µN’¼,í.ô*/¤Žñ"ÿW4šo2ª²ñ¥õÖe -¿'™0ó‡¡Q{ª¤®ÏÇÎóVæÑÍ•n/ì^£›lW^™›Ë–†(¶ÂÏ­ž ¸^ó4;ó‡Ï²(ØÕ­èo¬:œÞù2•òåw±|¡Hq]x%`ßÁâÝ/{5²ý%¸ª_"qÉuÓ§nÌH:û£n€&f!cèµMìïS]Ì!æeK‹ß6 ¾1—“…yËdi#¢Oº†ÒšìÝ¢pË5פì tráMs°¯§)ß”ãŽûì <ýC0ŒE¶5_Žr”ÚRŒŒÊWQóÏP(5¯¼\L°ÜåuEU3þ^S“÷NU£ÐY,µQÐZU|Ý,=ñ³_?6ÛÁÇz‹ WFXR®­àøJ[þM^{êúµ~|zÏ»_¿®½­·s–2Œ†eÍå0_gÒˆnÏ™ƺ`jÝèBq>Œ` 7ÙíâÜÅ'8KGÑñLxÂeÌô[Hÿå9º ²6¹¯›à$L8/Q&׳rѪøb$sãJÕu/½AÕ:`P&bTíƒÄkÁÍ9i‘K¼±³Ü~C¾úVwÛ¡ îäÜûæ•ôœÍÊ=”Ý"c{.)­Ú2¥‘GˆS=wÉ$ž½WÙ¶#fèÕOOfZ^Š(¡rGÝkò¥qd$ÂiÁúYÎTµïÝ„h&YÊ!‚†@•OhC‘}×Fßætz^O ák|ìé·Ñv!wÞ¥}ˆg•O¸—ùuTi¦ã[ô˜¯k&&æl'@à­s8‹Ã›‰t+˜îN¾’ó$ÿ¹×3 7ï¢ÐæÓå/?a—¦ Z³½™ȯý˜}DUoþ·ŒPr«ô铯‘}?¡¥rêÉÒÒ¨l ½ ËÍ)$²AE°mØc¼ O£È²MÁ2l 6)믞Œ”±¬"úG,Ï^°oÄ4°{Ó"Cõ`ŒG²•ý°[Ÿ ¹øÚ¬-¥v +m‹Ïz`åþcæF¾›W?Øæt8Fd³°Q»º¼@¡#ôEruÈ he_HÙÕý£³†¥(aa¨ s G‚_=am#;졽ߥêø´´Ãþ’${<\( `ÎÏÝ¿€™Ó•ç~ˆ|OÐWÉ>u<§â ‡~™–`izå‚xLÆç¦nØÏT¯BßÅG¢¼4ßÀdiÌš@µ‰ž¿:ì×z_{«"tŠe}]Ò“ïVÂÎ-Æ ©È äáíõ¢·É zÉ28pÔµìFü*ãðÍΣEþGÏ/SÄÙÊ£ú¼*Ñ‚pñ¹ýŸ%.Ÿô‘²c- ^ÚsI=£]ÎUº=IÔañ3àºÍ ›©}Ž,®âuH._›Ÿá˜Ôq­þ_CrrÿÜ×´¿Ê&àÓa™Í™föÕ¾ŸXÌ¡Áž{•”Tjè>t%Hw†b +@ç­L&¾úŽ 1b”ŠJgK.£”œÔK­pÆU¨jRHM–œžTönúŽÏJÚó“+}¡KM2˜Y€Ð¨DŽ­Èò-õýòkŽ_¸à°"“.S… Ô>ÙzŠò®TRñ·ÕSÙÊ.ØöDí&ÒGOgB ŒG–™Ã9`­›ˆÑ㛫Ǧ'[|$”d@ðnyê‚(ÑγÔÂÇøWž¼m½;nõê%Ê~LKM_nÉ_¤ pîïq"¬»bíÿ~ãg2PÁPwƒéà'Ò‚é^9VzMÎr. w´\3Ħ¢ÿÜ…—|JÞ¹ò‰¬¦8)lca™mcÕ1ÑdÕ{“âØù ŸxmîKI6WbíËJ±bÜ Ù~´ãpºã¨-žÌ+Í;mÑ +iKšo¬ŸJb½1|ùÁÉè@°}vP‡–¿žë¸Ý,÷}üó3É<) Ÿ<Å+pÞ0Y„óbB@——(pH種èîjk· øõTÎ,bÒ#¡@L]QÈS.3oïÒMâÂå5ëÞ+z±FÌ™}ùI¥v«`øM˜7Éó`†7öß¾W” +Û²A5Z>:Áo¡àE±Í­/o}½ëFLOºî&~™œzïšó9)‡‚´©60†ò¸›®ƒH$œ#æH†¥I3(‡gOPŸÊ(Äå¸5C¾.Ë–éødøO}Ÿîx^ÿNEòûÄ +W¯¨“šõ±¥rÞ¼å^_þDo°Öž}— ,q8$<®´Šjf•‹Xm`ð‡®±êÝgr‰ŸÄ ];á?.öÔZ¡ðwl'–o£iqMůƒ<ÔQ…ߺݿ'YEIÜv­#’4«×| Õ¼]°'ò^S™ú­•0b;;ßqp¦P3ؘᖠó/Ó®å&† Ô=¯{å툜4ñð7°!\H^.³âÉ»^ûN¨Åþ#ÞÞ˜„²¾°BF3õ•-‰ØÌ9úg©kº.± ð´>ì^Jí=å˜ZÁ;¢¹¨–!Û,N–\H-¬ ³±Ž$¨©_ÃiÉVÆÔæÍóÔÓ¡•ÕO`Oíì&Aõ“ý³~ºýSôñß!ߥRª‡PkŽƒ``ì¦)<ïKÖƒz\³S>ɨYÖÑ»ÇàÅ©Q?uýÀ!c”Ü”>p8‘ñZ{ó ‹/Ú›á|ÜÄœ}ÅAËÃÕÆþ§tâ÷ŠËÛkI;¼a¯~.v1ßgnÚhE`züvzÕ»<Ïž»ŠX`!üà¼Êî¦lxöAƒRlØÝh¬÷šF~ëî&ºÅ¾Ç6 +ÿÎúëB·‘0šìÏå»gñüˆ;þëÏbrâè™ ä•­?ùzè&\j¥º±®XIb4ˆ³{…õÑ\E×~î{¢cV~«(Y[3­/¢%C{\á"~B @”¶Âß)ªY∰˜p,TëY°þÌ©„—ÂûvDq>huïÚ‚ïè\ÞS˜…ìH›M‡ÓyQÝoÛ¾ÙÎ/ÜPÑ(Àïþæj[ÇØìsyä'Áo@í³yò4]nì’ö¨°²”(†] FuÒ<„¹¢Š²c‰^"j\ R–XÇ"7Æ$½0Ê°Ñî‹,ÝT‘ ÓdÚu2*_"Íž_K-–ÙêT®¯ ó`µyäžj`Œ[n~£X襾z~XK`8p`Ý©ÆUÔÏ`'«ÂÊ,á+2¸~y5ÜÔ«…ÖÉ-ŽŠù¢ðF¾NtM5ÞdòñâŒÄŒqÐSl³K¥léõåcVnƒ «…öÚUò^.#¼©­ucrœÂú4 änºÜ<…N¡¼<5ºÄË*ÅVƒ”BâóíÙ¡wì îØ>1j$µ±@eÕñM–IŠ„§¨¯qe™Š8ûév#(µ~Û)tOë üð?KV景£•ò{œÏ cL¾t vœ-øæ†D›î–xµ.d±¼äÙwlë74H]Ü‚OmÅ™‡ö +á Û—•¿ÍXKµ è·uvü»”d›Ëåx +ÿˆgëŒkù¡™ES÷*‚4+dððüu©³ây»†ÕúÛã·;ef]‘ª>WhYšñ3pyšûƒáM¿ÓˆgÞßœe[Xž½ +¬Fô#Íd[Bì… /mñÇè0ñô[ôÂM/xº‘óéW$¶)Íž~±þl`Tse&½—œ9´÷gCܾ¼>”ƒ¦ µM0¹YÆ׸“‚²™·Ã;N8èMIJså( (tfL†EhK ­íDÕÝLÏ©ºèê©S OƒG%ÃD: ÈN§Óöoµ•ÁS*COý^ôâ,¼™pVŒä/Uל¬Ë¨ß®îÕ¬Q¸ܬïsÄøÜ‹ ¼Õ¸3Šs6´I¿jwÌEåÑvíªË#ìYú±á9¹”Ô´ð˜°<¬»\1§]§„¥²”¹#}sHP=p©ÓÎÏV÷Ñ'ÀGÉ hZ!ûŠÐWk eý¦$à½@ŽgpŽ4IžÕYìZï·WÔâAë;½›b8LbÞüW„›‹Ãýô†1Uñ'´×ËæÙ/j™GšÃ¹w,x%784/TÖ>@šSš–@nÆsª§([üÓ}Xnnɮխ ìŒng™ËE>¿Ñ #¢*’Mœl×F(¾4·mÒåNG€]ÁR¯v¦U&'HË lœQ…Š³¦¢ÝI=žämÝ[«ætßœˆ¶LÏ=ìÞ[ þZtP!éÁ#gýIšÄà)ËÖ9Â#7¥#°ºÇ&_ð¶ÀLC¯‹ãÒ2¡OIÚ´ÖÌ#>ÇTî™®9õùò,åO_³ö´Å 9‹CÙ_Y-š]÷üHä5f'ϲÎ^iá›Å,ž?@ͼÖjéc­Q¥ݥقÓÎ’–yÜ"‹šÞð0>™-âø:OYÒ®F$Hã ­\A‘{¤ôãéÚó/ÈVJg\¶–(âK¹äƒ…jG÷™´÷«I„|'ó‚/S>_Ï»›™\ÉjC†ÎáÈlø¬ÔÉS6 ,óÞ¦g”¸R²é#£m2ü<-NWŒoMr^åuº½ŒêmïPIæÉUŒQ"~G»ò}˜‘÷e‘qƒ’qä÷Ûí`SÐ×ÖYYE“íUóx…yŸ GáY¦ø—¼\k¿†È‰ã®øÞ¬o×EinYÙ,©Ÿ!ñyóeXÑ×r/koM0GaتIEƒ2X»”¿ +AMî,p}jo- +?JÕ5¸N—gÑéiÞ­c%ÈzcA=¡=rO»+n‡Ú‹«m÷©ÔÈkŒlX•ßešº’ F=Áù`¯–¦¹E}Ž™{Ò[Þ“¬©×<¿—ã‰;$ãO´ê®E±]GMkþ¦]Ý~…‰ý1P¹u¿îN§u)±¥Ú­}ˆòui³Ýº˜[ቶû¡æ°Ö+ًƯ(Æo›î³×EÍ^³ +>-$0âU(§É¨.ÅKÑQŸôaÔ¬_G†Hù³¨%˜0JÔ¸jËÍ+âEµ…›‹*IÆð|4îË¢^X2J¶tc÷ÕÉÅ8Ã_­‡‡ò¬ï3‰9sü?\{<)ædú|cLѵ$©²$’´ñHÚˆ¿M…M £“˜m¡ %ïÝ =osè»þ¤¼g/âbüé¨n~RM³š3Ø—¸úñtƒ¢ëX,K’YÎ6œÓu×é—‹÷•çÅõ¼HSÆbVꑤòBŒ!µ6ræÇdùöå¦ÜX–64cå Õe ó'iüýôd-†ó× éþj…̬Øé¶-žuï§Öüœ2™ûÞ“€›­ñ3®Ó°MÛ4Çß³+XiI6´Â:ÒC ¬’Ïïàž9­Âc/`@L­†ÉJý¸ØLï#66›¾ÙÁßtg@vœõ|C·gßWkžGò~.=jèá ªÇ5/À¸5#´4a#b‡Ž¹u¾3Ã9†™„àcá‚{Jn-v,~Y’y^/^[…atðCŸùÓcŸ;fD¼{Úd(ùšmöÀ±{Ù¼ó€›ãÖ”zb¬“1õŽ˜3‚¾SAöÖé£ç2>ŽVÁg«3ê‘(¥ ꥼþ‰à ³â÷xñ,º“eô®¾¶kߘj÷`Æf¤Q>Pa7œ×ÑÿæÜâ5á³Sü¶e™Ãl)6âöÒڌȦwòb\¼‰h¥ÃNÇi‘  ØÊWËv²«êÁΈFÔJˆÑH†Õ²Ñ O»Âq¡¦óÀJž5¦šl.4® nOLÕ!×äÔ'½XŒqlã?Lj‘/Abטf"I©B²§¬¾[.ŠO}hšQ':·,ŒeÅæ¢qÛÜ¥ˆ¦}~3dÔ Æ³9î÷–» "{,ìiør•þvõÒ¡ƒB0=nèÜ%Î*&•y¡ ¨Xv´Â6¼˜9|q…’’ô4D¥ÇE„÷8¡Äïp¨ÕƪD¹§¶xJ(8p0úì=»½üøVú ì'Öævoöž« éÖk8c\9¥©.Ì ëµüºí£s³âéy†«ˆw}€ÓR¶ŠqY2¹úM¦dm8·Iä›2‰uæèÀìVË Ò)!Á~T΀í+ïJHìIlÎÉF¾ià>~[ðÙW澩«ÙD‘Thɶû¦z¯‹/bC¦#ð|Ôæ—ê6¥¦Å—O+»³¹~º*ãêh:AŽÜöƒ©,¿~|~}ÅÎ;+Ãøu.pÿd‰"²`‡IßVòm{6媂zî¥ÒÁN,Ê÷à ®á#‚{7¡šåñWt5‰¯Ä;Þ܉lö2ËnmxÂ!òÖMF¦NŸÂÏ£å³EÈ… Í$ná9…fŠàyca#1Ç›‰uî› úVt]¦ +”ÕólÜó‚©ýÂ9Ù¬+fÉÐu#úQc†¤O•Ó·vdÌvÁÉ.’ÔÛ< CK‹R3ðã•ÓÑ ¥Ö;wÐ"ÆËÞÏVV|™ Î#[¹?÷û‚×ðö|Ö«¬,d:ÁyÏRÄ‹–² šqÅJîÎÜÆöÅ]oÅ–êÈ®¼¹PëÞ)=yáWÝÚ'_Ûl·EaÓdžر©Jø¥ŽŸœ'VÝÒI‹Æíx+Èa{ç)ܲ°ãt—7±~<À•I6½˜_˜s½ïMöØiè]» :2 ÂL*ƒQ8L;ÝÈõEKÃïÆ/q´ ž©l³¾w@¦H" ,çxÝéoÅ\;_Ù(ìñ@:Ú ·©žÇ0ݵlÍßúÞïäÇOÞC}C¤–…Á›ììÉ¡û.•VU¿ÎùÄhöÓu[ïÐÐ&ɾ +Ÿ”¼ðkFx®’‡2¾&?ë6}™ë¶ÜWöC‹Yl.ÞÞ×íNUÍây‰ûe³‘€ì}:ÃY`5üÙ;-ýgWc ƒ/µ.Ñ[ÚOxÕ÷·Àø‰ß}£1ú6«íeyUGŽ]س©L¯±êßãôk]wkP^‰(ز•Pùr8.xôü³¿húg‰¯£Â 8ÀÊ4˜S~ +ù¡(4üê  R…1E©At;|ÝSò;…Lðy±[²þ¢íµ•û´¢0ÍÆ¥ûz?6ÞÿU‘,¶Ç–·ÌÍ,^ê7¼ž2R8?5«Wìˆìm¼°Ð(½Fú†QŠµ4Ô»Jsæ1 3júÓù”àSZÚLú²©½ùäûdJ]<”øU­7¢›f\ÏûÈ¡Bt÷ùÉ!G6Ý~Lýì#¡Ù5F%Aýºrâ+ÂÖKšCÊ©;ø™$~¢°ª¬V;ÙFÙ|¾4RÖ„mˆöFŒž®Žµ:ûˆا–v:dä@t÷ﯪ7¬ŽÕ˜ &zðÀ˜ì{øj>¦ï`²P^«Ù²¢ÜŒ¥¾éþÇC½LÙ˜Ýð•C;bêÇUjï-â<€{Yº¶¹óï$µ,>ôyÃׄIYêÇtÖ=„ÒTBž¿-Ue ª”Êmy¢â4 hùìD1¼e-}üã³~ÜÊð¨¦ÁêìG-zÒš «6ìÔáÜ,Ì^`²½âò5ƒÖ·—qAï;ŽÍÔ›ZÐi玡KÕ…»äº&j΀Íàj÷Á m®ß”¢8W¯™TD{ÅŒS“–µEBæU¨˜ w¯«tÖ­ µ¾ 47Å‘MÃw ëèæcES›+Ôñ ‹*µ4„´˜¸dÐU'Î?•âç à8–] Ð-ŒAš¥nÙùF‡xú ,¿ª[®Gíì¥O)£ßUqéáZ/p«™'˜‹°VC~ÌÅçºgË5š»Šäóÿ¸ÿŸàÿ GÂœpGÜÿ{ñ«endstream +endobj +1229 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5648 0 R +/FirstChar 2 +/LastChar 122 +/Widths 5649 0 R +/BaseFont /NUDUEK+NimbusRomNo9L-MediItal +/FontDescriptor 1227 0 R +>> endobj +1227 0 obj << +/Ascent 688 +/CapHeight 688 +/Descent -209 +/FontName /NUDUEK+NimbusRomNo9L-MediItal +/ItalicAngle -15.3 +/StemV 120 +/XHeight 462 +/FontBBox [-200 -324 996 964] +/Flags 4 +/CharSet (/fi/zero/one/two/three/six/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/z) +/FontFile 1228 0 R +>> endobj +5649 0 obj +[556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 500 500 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 0 389 389 278 556 444 0 0 0 389 ] +endobj +1171 0 obj << +/Length1 1647 +/Length2 16082 +/Length3 532 +/Length 16971 +/Filter /FlateDecode +>> +stream +xÚ¬¶cx%\³-ÛvVlÛÛ¶mÛvǶm§c³cÛN:öí÷ûÎÞû<ûÞóçÜýc­gÍU£ªæ¨YÏ"#RP¦4±72³·s¡c¢gäÈYÚ¹:+ÙÛÊÙsÉÐ)™š»JºÚþbl0ddÂN¦†.–öv"†.¦ÜuS€ˆ©1€™ÀÄÅÅC¶wðt²4·pPª*©SÑÐÐþ—們ç #-Íí丙ÚØ;ØšÚ¹ü¥ø¿T65¸X˜Ì,mLÂò +š’râJq9U€¸©©Óß&\l,2–ƦvΦT3{'€Í¿c{;ËZs¦ÿË%è 08;˜[þ 3õ06uø¢8˜:ÙZ:;ÿý °t˜;Ú¹ü½{€¥±«É?üµ›Ùÿ« 'û¿¶±¿d +öÎ.ÎÆN–.€¿YDÄþ]§‹…¡Ë?¹-ÿÂ{³¿ž&öÆ®ÿ´ô/ì/Í_ÔÅÐÒÎàbêáòO.#S€‰¥³ƒ¡çßÜÉœ,ÿU†«³¥ùU@ p257t2±1uvþKó—ûŸÛù¯>ÿ[÷†6žÿŠ¶ÿ—×Ö`éâljcFÃÄü7§±ËßÜæ–v0 ÿÌ‹¤™=€‰ñßvW‡ÿÀÜLþuA”ÿÌ Õß" Mìíl<&¦f0 rö.S(ÿïT¦ÿŸù@âÿÿGäýÿ'î×è{Äÿßó§sµ±‘3´ý;ÿÞ3€¿‹ÆÐðw×dÿ,C'À? ÇÒøÿjhkiãù +þïÞê¦ÿ®úqþwøß)íÌÿ*DÇÄFÏöo³¥³˜¥‡©‰‚¥‹±ÀÌÐæïåýË®jgbêdcigúWäÝïß FÆÿ†©XX[Ûý£Û¿!S;“ÿÞÃ_ÝþÕƒ¸Œ¤ ¢8ÍÿaÛþËYáïT¸¨x:˜þW&uY{“ÿ<üC%$dïð¦cbçÐ1s0þ}ŒŸ#3«ïÿGÚ1ý×YÖÐÅÉÒ ÍHÏÈÈøûýŸÿ:éþ7Q;c{“æHÙÅÐÎäïèý§áØØÕÉé¯âÿÚ;ÿó¿©©‡©1ÌÚ²½1OˆUzV†K=fÞÈ”ˆö@èH¨CY“Jqa@­}¯zÄ.W•ÁG](}ó ÷W‡çÒ¹Ãç¡õÑX† Eoªéuž/ U!òyÍQƒ^|Æ…zŒ÷̘͢;£ÚÑÞ”¢’^éþL‹ÔÍ3U‰[aé“‚ŸqZcA(Îû +†vì+Ê40?!,«§y¸E­Œ äMÔÜC‚¨Œ—TN®Åû2Ó¿ÇEZcþ£sÍÚJ_o²œ)•³ìKÙŠ„v‡Î B.s¤°3ï/6š~mˆ1íw©Ô ¡„Qj„Úw`D\Òß(úíý¶jø/]^e[_)’ump‘BBhyÛ‚™h”‰ˆ ®òó¬3MÙÔ`}ÖU^‡ñÛÃàší¬n!\x®Ðát*JC>°úÄtgù×u×Ø+©ßZ·µW¸C¡µ{Q—º89XŽ[Åú7µAÑLXéÞ²¹¬:£‚yÇzÊÍà«Äòw»¿(±ç ž ÓQ4Oó~®@­ˆqjT*ºfå«\cBñ.Ïœ ¾Çõ:0LJö¾y$·‰ÿ¤´&Ìã?1rÍßífšÚ8•»•LüìMÑcK>/2u´†e£7 MþUâ…vóÚAd(‘ãÓ8ð“A¢æ;!ÊR:–FóZÀg믬Nõµ‡ ä¯y8A,ÉîÈ1¡ÑJ=ùl¡‹H?Ù«X?T£Ýçd2MzzÑö~ ÖSñ\ ÷\-Ò® zÒ}½ü‰â2èâ¬å\?sö‚_NáTÚBRæ|õ½ÓßX$÷刄~ñ>eˆdR7]ù÷"+ç=ŽXÏ8£Bê?$7Ë´°ùF +S½G÷ò÷™ó¿Õ›Wpݘ›¨“Ì —/®ÈÆ÷={C-’КC¢¸‘ÍÚ9¶ +²‘ôhÂ<†áN,³ú,Ë{⃜(nš<-Øì“"Œœ£[ªÖëÔ‰÷if9i^GÍ#e@p%M›È({™¡×áŸQoÄß{dyŠ*Vq¸ËI¥(h1&n¬M¦GaC{+÷z†.¿šbTT²|ió”º9˜œËé‹åJ<ÖP†BZ}¡ì¡ù „ê$ôÑ4fŸRDô9\<îG“¹\틇”›~{ QÒËî˜/¡5It*âÇÏ[*…]´›ÔWqÚ( s¥œ9-œuM8! kœì%¥aÜ*Žß¦@¯p}ë»ÿ ˜‡ ¬2÷£ÅTØ¥›‚~YGx½Áœ—»^ÝÏø®Jh$ø±è§M=¶…À›8³Ë@¸Xé@1¤DÏV·]OhÅM#i‰+üN(™p ÐôrȼœÉXqFúh¸=YY®³ŠãHç—ÐÞö!”‘L®bC&OÕo€×}h¨*þÒ竬MTõn÷ :·Î¬»Ÿ½—;¤Å*TA Ec) +ªƒmù|hŒsÃŽMýH÷Éß°F’+P#;=E@%óôëÙ«š‘;©ý)h:§ñÝÅJÎH{¸P7a|zBÛ³˜å™Œd{Ú)gíh‰±q£ôëK…³‚^á \éZ îZâÃ-¦V(¦h´¯­ß¤ºYËeµlaŽo€ùÛÛþ³ ßÚiÔÓ¼üÍÅRÏ¥øB+†8Ã!·N¦¶mL;c%Ö9çáh¦³m„øÕ¥h+ f›©fÁa‰Sšu9fPª”T±ìJÚV»h“ºL0zh»—Ä5„ÐÓ*úæ|öÄñ¾ˆÁÅÉ'›Z·Ó{‘¡hôc\,Ø5«ýOâZ:¼•—¿BF@Á¬Çንâ}5逛¥Âÿ]랈´*7ö†w@ͺ˜3‚E‘Wm憇ÎdKžÚuíZ¬ãÃ2—TWÕKØ7Ñ ;ÎãÔµ´Ûf$?¼ð;n3ŒzAÚ‚@ž+¤Q×»¤ÃÉ6)ÝU³p”“$Ò”µÆ{‚„;|“U^iû\Í/òàJ#ÙKXv-uŒ“¥`¨4Ôoê(Ý£ÀÞ®iEÅý+–¾¼“@´ܯ8«›z°Bòþ¤0fåL8…—¨õyV +m•Hô×;VÓ—9‡Ð·)/³|fÖhÑ€Ûw,NÝc,ÒãÙvðga!Â3b@6²3Yé=%ðH–½£Q¶ÆÕ2)çÌ07,]Qçšî3¯¤&L_Z ‰ÐÑ,ÁÜŽã?)¢RŠ¼Ç~˜Äí’ÍX-{©¥##Uî6¾ {]K^È·•iųk ;CŒçz×hm\Oð¢s 6kôx%Àqš=b~,ܧ'bÓߪïrHb£îõO‚Áä¤o,Èrˆä¼ a&$»æ3´‘2ºoþúv5;%×ÚðF#xÛÁÛ$…¸<Ìö bƒVHL~Ï ³áÒîÑûgÕÁ Ùá\o4I)óm)Ï<[x{×0ºÅߤ\×tžÀ!B'{ݘ£ ™%ñÎÂs7&ŠqÇ`co•b+`fŽG;Yf2ïFøXAö—âQ±?¶gn!ýŒZi€æÆPj$éÎ8ÿøa©fi‰µ® Ôc¾oƒ'Z@{’VInâ!ïGŒÒ‰îû¹Þ8îöÛvM\NsÐœÜP/ôžßÉ/÷P¹õœKa;*F”óY­)€{Ç–Ð^lÐt}¶Î}µòO“™.yn÷9~¦/ˆDw&ÒLñ{¿UæÚe æå6´^†[Eç*zdâï_îYBW™?×kö·3/)íwqðD_‹m}^Z Ÿ’‹†é€ª- ¨«PÜ‘<£lüÑ°%G­Âqq«.ôžÀ™"¾F†çkì ?tÙbýsÏÀè"> † ¸\r»Ì]ËŦ–±-´XQ»É?˜ôIO†,¸{…þ³¿HIçyã[ x¨?pÞrn7l{cÙ»§j6K!'Àw˜Íшà¼>¼£Hx±“aðwÂZ‡.Áúm"¾ß5t´‡»Ë¢Jº.þÕ^›Þ´¿Ê½}SïS¿­Yt¾+Ýç„ tjDùÈ×)YÃÆ ?ÃÈœ ÒSvA;0¸ÿá¡ñÚ½™U‚Ü¥3NÌå(×pe N{IªY-¡ÁA%RšE¶¬ˆãÑš·Ûµ/9¹ú8~±rZ}Úú—J¶w­‹®ªÖu¢¶óJŠÿAM¥À*ïÝn* +ˆõãÔ=ò0Š0Õ=F>(Ô}ž6Ü]Ò!´b‚× Dou,¢aÅ¡¤$¦^WV&3ÑJ;×F öüOº’„g¡à„ÖÅ_k³æ®%~”À5ø%j+Ö'¸3«Ý÷'¾¾Çѧyr8º¸ œ)Ž›Ü¡\0£<‰T0o“ru +N£)¡}Ày¤¯´.õÓT@ÖïGë½I#¸h•ña×Mõù˜ ߪìŠì% H lþ¤?£À¬¿Ïðw[Uöø ë—V^5Ê ¨•f`ÀvŒv È‰Éñ+4Dó­hò±»Ô¶~Ù;þ‘pŒ(ë|«qË8rÞ·–œŸ¯QIÂÄ+*Îæ SîÓ ;+œa7(Óòƒ¼Eùh + xwþE›áƵÊFŒ&^,Ù²šƒxhbÆý\ «Nù³3Ú1@*–¬%@àá5†ýĦ‚“ÆÂ.¥ébJêvŠZcÅÝNƒ‹ßOÞÍf5Œ¼6cþþ9©@Ú»äPª× 1&•`çüB·±ñUxé…$’/Š¬pwû¸ëâJ;ñÖŠˆõiz1njô>´¨hF›lEKˆUa®góú…¼FØ2\a7b#ÛD cÕ8QUGolß FU‰ Ò2…b0_ǪN5vH=òÖPóCé_w{äG‚¸×F!3úk²êUþò¥©…ŠI:!êFU@ù>õçP“ZÞcã{ÀdÏ[^0[ÅRÚò{{ËZcˆÀÍ&FßõÀózÆ’ÕíÆÍ‘vJ‡Í‚;ƨ×e%0«TÛLßm`¸7“ûÕõà¯éL¼´5ÄøöÔ%t ¹Âþ§4ÇæC_ÈópõA&«‡9ˆ…ƧŒM‘ŒvóÆäÌ7êZÆÅãÊF—zó—ÆK™×„a+pžòÏ’­´ ú8ü=l’W¦GLi£_Xtáº*{†…ýø§†ÞNsSovŸ$Q,J“ µó™ÂÂWQn¢@-FÆÿÑb÷ô›µE)ÍTŸ.m=ײ ö~'°ùª/þ¶ª¡ùËŽÄéÄÕXæ­ç °•í "°ÛÂŒ† +„BJ–òóa2{eÂô7¯dRÆ|µ6Žû-HÛ-ÌÃ<ÕbŠp—¡{Û6ï¼ÐR3”YÃ÷©’^?¦3Ï/ ZA’ó†|¼õP¶€ã»V¾ÂÜÖÅ”XÁ½òãü^üvõ;Û]³VÓ+EH²œ¨¼§N¶YüãØ• Á¨á_Å • ~e÷1Z¨™5…ÌǤÉIoXr¼– Ñ—ô:„4GÔ2°¨ô\t©;ëj3™ Ua–¥ D 6,ÓÉ9#‡#H^þ‘e›òû,øâÍÛáGa½”éÓ™ {*”a>ÅS|1Ióâ2ªÊ>n©ÒÓeÃWxJ›òiÑ'ê'O×ònýL¦dsη^;û•÷ÔÕ`ë*ÈFæÔF†Þ:¾–+<|H¾ryÚ—dûÓU~ü4ó9vb “‹y2E©^‰ÇÔ§”o[î½—›jtuj–®ùš~—FÕÆRœàº‘¸â«ÀÀË`ºÜìþ„ÀBð6Úç5ZÒž.7ºÁÞWî/´|69ìð¾‰Åu³y±[se[*zw¬RýšKDš}†¼4¡ð;ïŒfXÝꉢ£%QEô¤w-f*!]È›¶7ÎÛQJ6ae9,«—ElA;ògÌRR·Ê&|wPÝ°?-vþqžšZCLMÂ?‚•QCŒD}w³ 1"ý v ÕNR²ntM; ]X¤¯¬s>ÔÚ©T6½b›x¸Ÿ?S„´f¶° §J?JÑäêº{ú§Q¬g£[ŸÏpY]eaÂnO†©Ýëu@aR;E[*ÿàÈcgt eϨÇ™gkNMØPT±Yß¿ w8,T%d½Ã’CÆœ¾ÃWª ŸïŽGIBÒå<‘ÊrM+¨ö(‘2ù ŒjŽ´Uüù ¸Ý hð%Ê4@®‹xÒ3퇀…­‘_w Û# .?¯„–~Ä&êì,N¢(­ÿ¼c‡ìPÉ>W–ªÚçðµr<™Á¨9èZJ–õùÏG!ëçKÍ…*MÜè f QêCB¯PëT:Öœ¬Äah™ g¯­ÉÙ€f%Fnbòyqª;Ì@Éö¶™(éÌÔ8Ó@Û?AÚozöâ½Þ ½çafM„Dˆ2IJ¯$ÖïLæpÄ!¡?ັWv‚ ³~iŸ$›v‡Y$—_ý‘ƒ+öȾ¢Ÿ¾ +ôý¿†ˆ}Š4gr4eŒÕŽ¿sËDQ]ø”VÉv +Ó&E°IîDlij©„ÛVUåü\â*³‰r–ú¼o€¼ÏœªK•‹mÝÖÄãÝ' NiÒ‹…}}ŠheRcuü煞\Ð ( P†’³Vû ¢zßÍqZKÆÀÅ“šÅÉ¥ äM?%-–§ñk£¥¹[ îçLJI»‘ƒn{`éðɺ~‹3ƒî¨-öwqÔ-ð8;ÔÕkÌQ'N#Û6l!ó!¥`c¯%ÿ1Gö²§bæÎ&˜užO #3¯ßa Ó,oËï2Þ)kÁ™ Ôo¸Ä O©ï©¥Åôß»Zšd…ò¸mbT­•X¡ë¯; ò +_ØÚÀ‹¹sèª3«’B$x`Ú÷î˜óûª+_ß‹b^…ßuÎâªG/ºDJZ«é¥ÐT¤›H vt|hi§¸Àr›äV¤ë]‹Žzk­ÃÆÀþ/Îç~0܈æOqùEÅ‹ëmkÉ…YO–Í2@Ba¼ª¥*ŒÇ^·.鉔¨rnC^Ú²†rþ^;Æ÷*†Lk#cÜ¡ÁÜÇ8=?OHÌÓsEÚn¥È­’–ãZ¦¢ÐJÞäs¸ƒ¡‚íkdŒ)Iº­¿OfV›@¼ÊTÀHlŽD²DkÍçç/†}ÇÝ;•Z£ ‹¢šíW0"[Š´¥Tø6O16cVºGÛãÙÛ5~?Ké">rãb/PX®·UàˆÕhn¨gè?S«(‹*‡yu^ ïUH ›šmIˆŽ —J =^<Î9ááð#B1y>¸\Qj;³sÿ£ïºÎß·6’uM$¿7e†M©0GYƒo>¾§˜ š÷ÀN@f>&Àbp´{çæÔØSFëŠ$Þ2Õä¬í§×PwYHAYC¨w–Åñ~gÍûü *‹VŒw„²bóA+^6B%Ý.µGØœðq™{Ä&Mçe‹N?+{+Ç#rßHÇýš67M¯ÄS †ÄŸ‘—'ÚÕZ)Î)‡þ}ÏT9(ev#`zÐsP=‹ÉZ(j}'¿HiZ/Ï~ò7ëp½»s¸]Ä¡æ>îT4Î0SQÏãÓ! 6±ÎÁFéPÄ8,ë˜'¨Šdƒ&~':ÖïëæíC¢míFïxí ž!ômäÑ…øñsßgKh¼úxþFt40#õwô +áÑ&Â~ ¶…ÆB>D„#³±'V•y•Îk ,¨º*¡ì›ïÈŽ(¾×%A„×m7ŒâAuÌiXœâI.âzL5‰fáUUã³€z·¿ Ðñ„Ïó¹·W´Ê®5°‰Ñà¬Þlj•‘móãÞM¶E¨Ýš÷½ƒ\0˜Û‰ÈK\½ò>§cµ‰©ëù¡5• ¶¬‰TQLo“uc5ÏÓ…õuü¡ì-¹|–}­;v€-ÓÀ6?1ôæþHÍ qêu¼ËO†ÆŒ3˜füjºš»Œ«~prSðÝMôH0;~’Ú)×¢èaªØ¦›!Ì>©H±>H…E¬}.ü¸ª| ûÝg ®”& zúKCÍ4Oì[´o(³¢úÕË#€Œ–WB¿gÒk-(ü¬ Ïô”9·»Iä¼x$·2Ó¤–¸ÿç*xâÄJsáÿ®ˆ¢¥¾[¯?báÚU(“ñЩܼGI8³ñð{EŒVÅœ^k±f¡É³oPe™P®€M3ì +¦,,ƒêæËÝ Tí˜Ê<þ;‰£Ìþ]FJå$Nfx}·“½[m~õxåâ®–%oÌìH^¹î“›â÷Úð&ÁŒqÜ}ûîKå&H íèø•x—7£fK½{Úqóc/O%äa|8v!F,é"'øt¼–2˜¢µAAïùÈ<&NÃôÆ&{;v!×™'@7 +ú.iÙvèÞ{±üX[»o˜sŒTÊ¡w9ή*«-ãÝžõ˜ l‡+ªÓ]†öâ·Ãzön™pŽÒ/›7¢Êæ|Æ ¤á˜8¶ à7˜µu›ºaãæ_ b@hvŠ/¬ŸœÃVÙdGÏ+]ÓÍÑZÈ0¹¯îk'½J¿¥År+Õ†È\/‡xx1³6]µ€o~ä +UyOjæë‰HeÕŒwsÓÖç¬iýb-Å eÊþzq_Ž–¡Y•úÛ C+f]9)߶âVŒabqtfEgéÌ|@Âg–”>-î(RòÂýZ°×e{ È=qÛ qÑbZ®B៪,m±îXX,Ntå÷$“/«á‚Ï 6iìE1§%óÂÌs‘ü¯0ã®s‡LØw&9ÜiLÍVCNÍzx¾^óØ´< Ï$¶’$dáԞ–ÅËæ‹ZE "zôUé +Fù¶Æ_Ü• ÷£½WE{º%íkζ*´EÓIùqă§ä;ŒÞso»  ÛJB(8Þ +&©Cqˆ”K%RŒ«;ÒÅ«Lª({‰ ?•Á}¥îÖœ}<¼Öu-:‘ÇvºA[ö9§ÌEw‘M(ù~HXÍ)IÒ&Û 3"ÉüÐð–½C¨ï[×'xÀ ôؼÜç¼³M"@rñ z–í_ÝêÊ?Ád·Ý¿2êx e +;¶„9}óU‘F‡Ë)ŠYu"ý¦t#ƒA¼áoMaá{v`Z®ŸÚŒbîþêÝÀX¹7ÜDö?ËoP*¹ßtg‰_âW¾Ÿ©ËEݬ› DûúyHXWôŠ¸%½7…·í¨Áí&é‰tvqé_9©>õÆ 1 .¬¨ @ȳªè¶–š”a?ayF>€v–_yRÜÌËÏM#¿vs¹ëÆCI/$@¯†õžŒ*Îxû}ã‹`X†•]d}ÉBzž~ž)Ç'ƒlýG¸›¤FjŠ³TQõØ0 øÔS4J'b=P<@Za:Å÷h 63£Ùóö“õKbÿÛÑ|ì’PÇëu|÷ÅÚ”‘Z«8š8æ)n”Ûâ"9“CW¾ḵçFXî,|{ëÖI¦s°/äžcþVøC5ø}û›•Òø¡ÙºÓó +Ú…wž6¥øèÙ˜BŒ2•uï„âë²L:f‹¯[ˆH—w¸ïI,i»ÑÙŽCw~ÅÙÎe +µ…¸ãKE¶XÊhÀwgé¬ÆŽ’Opê$ÒJ'xïΙöO²«ð=½K5¼Ó|ßS4T8«9|¾°‚%XŽÕ÷1"«]ßÜxÒJ™¹÷Î>+Ä°îÂ[œõjN[†² ðó)jÒ:š†ðô›Ë°kg!ÆÌÁðÕçD[Cæ`œ„óS¶~ê|>϶hlé%ŠºØò3[V—Š¥‰Æ!ÐE’¦T.=[숡‡Pÿ†öÛDƒ£9íSßÜBOapßΠ½YÆh0ŸEngψÚQÌ«›±^qæV§2½gùr¨q*YÕ@Ãmû|{°ë…¸4}òÁú&¾Z7®ÖÆQ }SP ØÍW@Eï~zÉydjn篶Ší,Vg‡=kÔ6Í)£;Ä«]µ™}Óà°Ô—Jå'nF½£­dT-ÔbY± ¬˜“ ‰|A½ìµ± ²ãäˆn(/„îTuhgbȃèb`r2?ðFxIù †F¼<´|ê´¸…46˜Eo[g8qÉ›9eNå ¢^ÙÚ±'Õ¬ Ð´‚÷IB1W|€·q,λçmé3©&…¼I•žRÍ÷Ó;Û$±™Ÿ‹ý„¦ða¯¾ú+vkU=uz^ñÌ\°ÃÏ$…+¬C=ÛT?Ü­5|¿Êê‹JSs|Æi¿¼m¡}¬êßóîcúØB“M—ºñL[DžŽ¢#1É&¦Èð.@¶¯DK.äïí¶{ñ6ÍÞûxA#oJ‡ŸéU+êjÆ`Aj悘k%œ}ƒ*3}¸áãÅ!ë«`"øÎ&Òn°×íÏ°N`¥ËÌõa§P%m·²ç0 ³L§¨—üHÚz–¹$•A,DC±YqB±­òî Ø3~ìÈÎ/Õ†©¢}›º¸bŠ¤Rá&³8ÔøÀ{ßâ®´Î/;>J±³1¼©+‡Ãî(<LbGÞü>üêf¼—ME!7¦À”óY,[¾}¡ê8Ò𥕨Œ„ ö…½Íõ¶àF² Ì Wž©2"¹·u À ~ÄŠƒ®Økï#yÞ K_MóDyŸ¯–™MuƒàèEB×Þƒ;BZ¤ˆ>GžúÅ‚üT1h8­ˆÕ²ÕtÝ;kóI¢ÊJŸÒè7Q[0€!Â9|I»UTm‡²,Òñžžê‚ŒcÀ´hHêz£$ŠLp†[Û³…þnš¢Ÿp ¹j=ÕÜ „©´ëɧoºº$ŸFÌ£­LóúŠç×ãt^XqÎ,J… [˜¸:þŸ¥pVs’ß󶚞ýÔ‡Ö'_gnÝ\$¥á $¢˜µYtz§×Áí´Xn»Ü]‚׬œ°˜˜¸w‚ƒ@#2,s@N|‚E'OTè¯îc%MMý3Žw8 …í|á„ +ÒòS- µÀJ +ÕªÂ*­ï¤“*—#ÒÅÝið×^Jø³'&ŸÛ}Gåž¹¦R±ñ3¡÷›„–‚-8™@}†áN!ÈÌ0.â"©¾bï…by¿BŒhñ9y¾ª‘À±; fÅ&0=•½)>!Õž›yûõW,!VsýFbá} pK>ãÙ&‘{;^2k­ï^ÇHe÷$¸î·Q %‘ iµCø{÷ÙÁ˜°ÍéKœñ… ?òk©<þÈ îŸö>”^Ð2ëÔ-4ïó­7Èd[Ÿ•‰äI¢mi¥cóÄH´ˆ‚ õD~Ý/OÔµ¬—Ø Ñ²¾ã +}Lkèr<òbd”à½QE[3¿Ö¿Õ`øXY>ä¶+W™OQ3n»ê«3—½aÄpX„ÃLÎ^ž§– 7½º91c +>ùl–ß(ïwôë4!ñ„zQÂg¡êØÍMòç®ðòMLJg µÒJVâ}bD"óT¼mJ½…æQ_%ܘ—„Ê=5ó”,¢»ù<4ej²ÒCåC'üm-2z÷$ˆ`Þ  ñ\FB;6=èkÛýJè=®¸®©œò"±n>É©·¦jW\Þ¢îú•]¡J@ç/àdˆn%pH^1 pHûÞÊ€ï‚s^ÚÃí%h;œ§ýAß%˜ÿG8 ÜWÀ’ù”ÛÇó­“ﶼ¥°¾ÉÅ>;ž´”r¯¾³ +Ç”d—W,g,t¸©¿´Š޲앵46ì²d&¥`Â`fVB¼°©¨)wIð3™ò­4;ÒÊ>¬h E^uvxYsh“2 }­®ÿG2Y‘íT‡š½¨ô¯äú×’j~’KÇhšnÙÒ“onh+nѯÝ|Ù½¤ä,¥µddܪ®«vaòÀ^aç­+ËöÔ|¸áÕ’ægXIŠ–EÔB¤€Úè1©½„Áتò¼Si{ö&AE„*%mýöSäY!œ““™ C·…?`õÞȘÞ®G3]o‹~ïã$;¿è5õ¶!9#¬'³Æ;!Ëurk›2kˈ®:hæ7 ¦ðtE® 0§¥ÿôÆÐôÙÝÞx‡¾:ú "áŸJ’#”+]ˆ6[)‚&´w:…ŠºÔ׺0ã´)CŽÈÛ‰ºßÄKN[ú£ç€ÇaëMÛ²Ÿ?ÓÁ_ŒCö©Xä‘x^\Å¥•ŠÜ>ˆæãÑœ¾=ÞÛ[T†O;Ãö½O˜ùÕ¿ñý¬ìíÐçë²Òˆ|J‹Ô `ç¶`öC’Ä"Ù#6/8vK=Æ(,òåìïÆžFòL“WxIA(“ní—€ fÏÌŒJy·3N'xuDÃw½Åo©7«,eßç+ƒˆ¿¤¯9Ùœ—ò_DǬ‘Ne‰êj0ÎR†:”g2„i/¹Ã&ökDÕ^KòL e¶ùÈK’<SšŸüm’Ü»@cà€–“‡é ¨ÆaÀ›¡èúm3­‘1·ºqýá\o²¾ó/'>·F1ÊŸ5¯ï)@kç·Ž¸ü9w2?Ø.~{¼o›LÊì•Ž+sìíåØÃá$쀔ë.ÇŸ)”ïâ®!\¼ ß[Ñð~ —Юn<ûõÒ¯ý$A£†2Ž“=±¢ óOY¡Ž"brÿþ=•X¯FÿÉý+}6“÷ÞZÊiÐXÔÝÒ}OÐy|æz…¤ƒ/±ú$'‘\yñM¤gÖ7mÜdØâŸÞç‰GQ¼Un財KÄ›Y†^÷C!Þ¹«ý¼¨ÿãÎ1mC2€{¨ð*…G¢7´ƒÆÂØñƒ™šÜ¼j .Ã?bz/{°T™‘o½\II|0¡¯²á‰¶âØTlW­Ám9Í%æ Pw-¥7~Œ©N.›×l%~§EØÍéFóðý0Z鳟öò€©²º¨ùÓW®NÊHÚ”|ÏÁ1Oüs_i‚¦{»ê¢‰ü`4¤¦LM—3+Ö1^ù"ÀCuXR¤Š÷Ž`“ýzïYU±Òy‹¼U2߀NÁp$ú©•4zây…ØÝ­—dĬ‰£\g«‡¤y_µ¶3M>9™?5÷*Ÿ{°¿|Õ„È,X÷(‡Ñ¢û3þ@•Hlá¤,vÔôKz« +óÄ÷A"¼­pƱ¥&œ-ÈéµQÔ¸{ž‚§{ë\àÊ&8YêÍ‚MÄt©+×GÌ Ò£XäÁ^(vÝÚïÇx2!“¥¦¹Wzò+vúð"Dñ”nü_䕲p÷8†o‘ÎíÒ°Çkz¦º‚Úž³?ÍîÔþt]Ù;y¹\ŒD£§Xî¤\•® ÝÖÅppçZdCti×»‰¸«à€a4ŒÐ(¸$•H-œþŒ³œ{E´ÁÏN¶1ad/½$1}‰xôÿÒ Ú¼õì¨L OBd`ñ]L5[ÄId‘m…a§tnÄt#à‘QíÇZŠÃKfÕVÏ)=naƒT÷_ gÑ!¬ÓpÇPr¶#²'¿ÈŠ\·æ“dx5î/BÅäw4¿½gÇàÎ#IûJ6'Š“=ÍOÓ‚¸Ð¿ =c{Ž õ0a°p£9z¹à}´SÈ6<˜ Hé²0ñdX†_¹eã9Ñ@Ëï:'ßò‘x27µN¦Ý¢OÞñçP_ú–<6%EXIi£ËªÍ›P¡|)Ux,M¤?¦˜<3éPq‚jdç ÎOŠ¹ÐÇu‘Çi ™ USõίUV¼p±«”Kà):¨Þr}):QW ¶Týr¡¬ƒÌ«R&³)0$óLó™Öô½Êãì!0—Õ¦^âym v—è Á˜q¸Ä]øšxi2äJ°Y°è|0MÈmD3J¤p<Æ£YIÇpÉÞþZ b'T}1œw²©)/áIÁãMó Ž—\è;ôŸŸ(-˜.!×Z +.zo•µ”ÐÒfŠˆÒ­a Ûï³°ÌóRížzK“ ™‹a'! v‰ ä@Q²VŒœewŒ‚Öñ" ×¿&ë莂uœ"ÿȪ6ܦ_D¡$8„ØÀ#O©ÝÄew^%PÿO`QI6¾ócfS î…Š‚š¿–ççç­ö×ö©ó~v˜×õשL¥NÊ®@M=£šA4š¶ñ·2¶ÀNF!-œ¢j«»y$<Çî…t››²M-à4¹ÂÓ­®fíy?±{ñ©”§|]¨²tÝ åtm + sBW„ÁܘEÌ$(mâ€ÌšM‚m©ÿd/ωlöü†û[Ú>žJÑ—é¹»Ûö\ ¯2mƒž‘ +`{r슟ÍyÙ{yù„Qä7’NïÎé_ú&IÍúªWuÕ£©ï&£—-N×7ڸŠ気w8KCg Ás膮ðf‹U„qw"Yø™ºBÔj <¿íä-×/D2J?s#$Åá°xîÁ7R˜ÛÀba§ùÊxä' ±„õ3TŇÁdz¿>tüXÀôalY(™<¡tì,ÛüÒÐñ)|Œ¢€Ä‹šçgÎD +{ƒ.½c¬H÷½Àü “šâî·ç>jÝ\b´­$Q²W Iò ôlWàÛJÐÉÒíaûPß ¿C¨¨[úŠ¢†áfk샿«?õõeµì%;òúHÐÓVèã›kt¸"4!å™sÖÉß/—·ÔÞj/sCR«­'2¥°èþ ôDÃvQdÅsêÝJêNxÍ6¸†?âM_¤ hžŒ88I湯a’ÚÉVOlsªP¹‘¶¾Û…Ü ¢Þš$‚fIÒr\©5ËžFP†6ž˜qRÓ sáùImÊGÇ×)|4µ>1Ñï +É­?’pp¼¹s=˜ÝÙ÷‹hò™à·Üã‡{(œkÆÂ.Öƒ£`dÕÇóíÊÚSØÅýV&0ç‹U›Q)½¼n—ëžÍ÷…("õœ4öËzSlþñ‰ÈÞÔÈZزÀoôêAOô©¤ÌÄg{y¦ñ®ÜÏo %¦Ò®«ÆaG™D2ï”ð1d2´øâBFz(üPã ô›œÄ '>ÝD¾>ØóûöÛj>ty˜LÖ¬¨ýá#ù ª˚¯¬}¨ÌtHÂNIç“vQ›ÚªwnóŒg4D“펣tB„È ;îÄ¢´áÀõ‚ [û“é÷9‚o¯…ÇYþR¥¤Ã©Ã~Âà«_Ú°SdYO +k);dç¾_„A[},/$3'E+‚ºÓºbÈtÇA32ÍIbº‹ú)¨@6¢Üé Û«{Ùk?PUNâësÏA¼2Ìp™’ 0rŸb²ü¼K;Õìë¯Í%·¼SÉUOÒâ~-lNÆðÝ”¢¸Y…Œ"’m¦] ë‚ÇŸvÖ"]ê4UÓ¤cn0x†Ú»µµ¦3u¸ËßNµ-“’­¢*ûyžΩšC£C\‹»Zéi+‹ÈŽ°-núø½Æª»ysÈÐû¹oXøôêŠ}iŤ )§‰üêDªSu’¤Ob •…JNBÚˆýL[Ø™xA³_¶åG›‘„b ë) :8¨sH>‡V˜'4I™>.ó}UáQ„BC–¢®;¹ösqpùSÕ#aÔb;GB ™Áý:mH]}ô7Ý—cÉ#5­x=TÈvÌ.Ë“·ÄC…K^b°£Lzǧ:u x¸ÝßW‚EïÒCÏ” Ç÷í(uäÕ¤tææc耄Ü,–|\²74ù=w"”Z¼v¢ÙÚ"¤åã>jy n}/%oøFŽ;”Õ¨Hf~1 -!ÛU3ù®L냾X–ƒßÆÔÜÔ`ö{!t([›æ‹ü`CÑn‹®é(yFÍ<¹;ØWé¢:V/ú0RÌ“.½sô»›%"=ÝÚ - ?pʼnê➇Þóuö‰m’G~7ûcƒS¡0©Np_”µ¢ƒ,M˜­Që3&Õ‰¹†DCéË$švÒó> êQ'¦XÔ\èß©K­t^«^”T®h¿©Î„\óZöU£z,¨;ß+)L=çàðCóÅÿëªÛÅÆnqÓè™XjøZþwèVäƒñˆ¢hd(_£u%L<Å%¹OƒÕMZŠhf¸¢Ä4X¾>~ì1’}x®ÌK{ íCÝFX‚Ë9ȹò×¥DMaÜM”¤Th¨ïÿ^‚‘C»Î4{Zÿo-„PÇÙÚ··Nî‘Óý*½r´»|(ìoýür´cêÓ•h m:Ê + ŽªÞ– >¢QU«PjPÇd¹Ô3•*ç?sXkÒÈÔçZE3³ä˜Ø!t–å߀œSXõÕÇcŠ”ŽŸêˆfP2Ái•q³)á÷ùxùpƒ–p_GçÊÂzÙ—#\)ñÖY;Þ¬æråØF»Ï]¿¤jãkÉp~·ÏãûÑm+æŸý2ö¶LÑH'BÙ„”XQs„¶ »æÞÙ÷ö™º¹/³áCš |V*lágڌӼ¥ã¦VŸ’¥kw¹2 ŠGü:ýS9þº†Ã_M…Þ°WßJËQÖòéD]ÜRÛ¼–ÃÉ/~þN ­ÆÂy‡/—ªZÔ¹ØfžLó{~žÔKæ)DÆh8#Å5ä‚0‡j^*#ÂoJuЂâˆn¬Ÿ"";ݺÔá"V ¬/t"$ÐV=š´ÏCü| ŸÕöJNGþ½P@FÖÚ_¡§X#ˆýY”çÑ[°é÷Çäщ_<§ì«% >1QÔ¤¢©²×•Q~KöŒõŠóô­-©¨®— £-¹Gý`×Æàè°ËhâëKÛµ\p·ˆša4LO6ź–TåÊŸ뀭 6ŽØf´“«sµYÏßx%N;ÈGø¹Ó)¥Ýÿ¦ù¬¯ÑmK×â2¼¨{^Ýu}Ť{e +X_–ž•`è‰?¸Ë¼'¼äÈÍ¡i Rï¤_’ñ3êstŒg« +|*ÄOœ\ö*NÍ/ecôS±p\Q0?‘™iB˜çb&É’‰mâ>x÷ÉcÏ.ž÷30¸RfùNÔY‰¼%8‚X÷^ VÒ/3pÒßhžÚ®·ÿŸÉì ý{3#â)«å ÛsBû_º›í{$òþN{ñ2ŸTvɧ֊:6Âæ‰;}Ò½“ã(§éþ7øû„’Ì7^>›æõ:÷àçÒ’K~B¥úm¶ß¾Ù|ùcþã5‹ÅO­Üû#õ©ÁíäI,tù*ZïHê¼tØ8/È´–ÿÄʦMKž¬“œû$ÍÍäÒG®–Κîl<î˜r]”oîSG¯ƒ“þ4~zÛ§%6áfœË"¶×Ç> endobj +1170 0 obj << +/Ascent 668 +/CapHeight 668 +/Descent -193 +/FontName /GLIAQG+NimbusRomNo9L-ReguItal +/ItalicAngle -15.5 +/StemV 78 +/XHeight 441 +/FontBBox [-169 -270 1010 924] +/Flags 4 +/CharSet (/fi/fl/quotedbl/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/six/eight/question/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/W/Y/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) +/FontFile 1171 0 R +>> endobj +5650 0 obj +[500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 420 0 0 0 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 0 500 0 500 0 0 0 0 0 0 500 0 611 611 667 722 611 611 722 722 333 0 667 556 833 667 722 611 722 611 500 556 722 0 833 0 556 0 0 0 0 0 500 0 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 ] +endobj +704 0 obj << +/Length1 771 +/Length2 1151 +/Length3 532 +/Length 1712 +/Filter /FlateDecode +>> +stream +xÚíRkTSW‘ª¡¬òRIÕzX%2yj   b,Þ/‰¹7ä–ä^z¹¤D|PIU–EltÉST” +«Š@} Ô«0|‘V†°©Z_sÁººJÎüš5çü9ûÛßÙû;ßÙ4HCaáP %&G‚¥R ‡ È3›M¡Ñ‚qXN "'`!à>`µV ¸+›/ä­òøÆ2ô8’¦"€W0}’Ä" Œ# +9 +¤rBkÈ +¹È0z&©Õ`ýäL°΄ñ,bR8! +l„Ó”šÔ$A•à¿…!mÆ»TŒg’¢€×”L: EBªÖVRXk1²LjùoÈš^?—ëxÓOQðG¿9osþ9îT:ñ Ròú©§E9fƒŒµ­×ÙìèF¯Ü/›õP1œ”2ãry{Ûšƒ;îY[3š¼þìùìnÖyûú5÷9ü*êHÑÌÚ[7_=ÉKßÔÙoqøò*¥$—ŸY³ŽùçÝâ«°jÌRsy~Òþg®¯-Ô¶;=é·Mc¹Ôî†Éÿå6]§è¤p¤/¶Ä• VË„³ú\©0›ý=Lq-ÍÒ_gvÓƒ¦÷{$¹¥á±’èÑÇ*]µ Ôþa5T[¸¡-¡U€^,´6¬+pIoèâú—p2šöÒÖ§Ž¿¢ý¶dç̧É/^ô=c¤¶>T{^ú ýTmn9â³(Ï~hË‚ô]ÌQË ¾¿Ú¨KÕwùÖ4ÿ8oÙ>(*‡±n_úñÚˆÚíýcÁœ½Ç 8v9瞊šP–ãÅ Þ+bÓ³åôvÚ†+u §âÈU©L<>ðlkŠ£Öã†,îÙO6ðü’Ò^÷Y¨Æ°{ÓÃÇ·V.Ú±"tèP3ÄŸ—æ½Ù:Ú¦up7w$ZÐ{ÇLw~ìGƒ[ÎrÖzúÇ}³4 •Zác«Ö1¸ÎÊ([ï]d;0AƒZª4un4ÈÍz9Hžæeq7K]¿—Äš±*!*[*9­^n3ãÎ̱'¥îÖgøæƒ×Âù» ÀÛ•‘ £•þw»'´ù®WFŠ:9³Bª”¾I”íM¯ÌÖëºæe7w—-pªÐ3¼¶žùÄð%÷«ÓƦÍ6óðµ’Hè;[UÇöë®WÃc5œ-±÷ùѸλ÷s‹VS©Ÿ¡Æ¥õcºýõáeÖþ£;/eGXh¾ëã^&.}mS?Ôa[žt˜+tiR45÷\¬*qü8FŒ—E(Úo§lY=,­o<±Ûaç*§¤{naˬ…;7ÿìöxY–¬òë„€óü‚¬˜s¡¼þÀ9ß{..VPJîÉ¡bqÍÁ´{âÞðœç?|½g2ºäIìYSQá «ªïŒoE‰døJ—èVÛZ]·º¹¦¬ptn­Ë†÷Âœw\^sòßÝQÒÁû¬}œºŒxù:ñÔr·oõ©Åœ㣰Ö5Ùz¤ q\Û×äÒÈÌÏ•ußØ5¢Jiì¼^žÿ -k¤N´WïŸÃ‰Îg´Ï ìfÝÿèjüçߥÖðÇ.ˆ[“¯õ~9ºn'ÿ¥%™EO.fȉU=¼y–O³#TSëØÿá¢ü¿ÀÿD…–㦑ã锼«Œ›endstream +endobj +705 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5651 0 R +/FirstChar 60 +/LastChar 62 +/Widths 5652 0 R +/BaseFont /PAZEBY+CMMI10 +/FontDescriptor 703 0 R +>> endobj +703 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /PAZEBY+CMMI10 +/ItalicAngle -14.04 +/StemV 72 +/XHeight 431 +/FontBBox [-32 -250 1048 750] +/Flags 4 +/CharSet (/less/greater) +/FontFile 704 0 R +>> endobj +5652 0 obj +[778 0 778 ] +endobj +5651 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef] +>> endobj +635 0 obj << +/Length1 821 +/Length2 1061 +/Length3 532 +/Length 1656 +/Filter /FlateDecode +>> +stream +xÚíRkXTÕÖ<ÀqV˜ŒP# pò‚sÙÀ81&6 ¢ˆ ·ëÆ-ÏK­Më-½iêYO;|˜uÉ Âü[gž¿Ñµ«^#8~À _~p«,¤`ä„Ž#>ã"Lm)È3\v8öÜÒ›³Šêw»Û»Ï¿5…u* Ò}¿¾øÃ@`KAåü;vüE¹½óŒæ VR;GÓCrkmÿƒšÛ×»w¯0„BR6³ƒwä æknÔö„/ojTÞ-`+ƒ4YC[¿muÉ¥¯ýîa›Síúû_©Èc[3-åéþï²sŠ¢¯»®ó£Sg=l6Žw7¢gbç/ú,ϸ9,Çr`¶> Ð¡ïïÎožæ{¿ùñ„2Ã;|¤ú‹îå:›¾ljh}­þÜaÜøîÓŸJ#"ºÎŒ¨¸¾#ËZhHnv#†sÛFÞ}ïÁý‚£BŸµãZD&vôàþŽñÊ–êº5ÞíG"l‡Ùbä_ÐkN­G+ýusÕñ–âÔKpÃEb§=²ð’äxùZïMÍ~ÛöÛ|'Ñã¹ Ûsu¢‚`ÎË9UÙ{wF·]²æ"¡°%b°ºàð@¶çþ Kò†í˪ªbeŸ›Úy»‘¸‹Ž}>µæ–™m2~üæÊh!ßw¤¡kÉߺÓê¯L®W}•ÞòÔ~Å©ÂW¶Û°“ô¤•cÖ1OÛ ·z+ÀUY[ÒI-Ë1°"úÎgJè6…C‹ùÙºÀë5»ò•Ã=÷Òi¿Ã%÷KƹF:üÑnNîåmÏ\ù¯µ&kË™ïÛÕsOì/r^{ÒûDý’anjèÍŠ¥{ì$¡qŸ|ä+éÜû]tDOÈ$ªÌê]ö­¯^ͯ—8¢-G“ ëß(]mõòèù¨(Ù¬ŒÇ¹3§­Íîý1Þê´‰9ù.6¥"P¬ïÓ_¯ó4‡® ]\ïPíÜú͘ùvZžÅi´´÷Ê=Ö‘ÉG#LÈ ÇÆTï!'[¢hqÌsöIkKãþ”ô±ÆE±ú:o³­2‡¬Öïy$­H2ÂC?Ž þÏ…ü%𧫠FѤ£â‘ŸÇÏ‚&endstream +endobj +636 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5653 0 R +/FirstChar 3 +/LastChar 110 +/Widths 5654 0 R +/BaseFont /DKDCMS+CMSY10 +/FontDescriptor 634 0 R +>> endobj +634 0 obj << +/Ascent 750 +/CapHeight 683 +/Descent -194 +/FontName /DKDCMS+CMSY10 +/ItalicAngle -14.035 +/StemV 85 +/XHeight 431 +/FontBBox [-29 -960 1116 775] +/Flags 4 +/CharSet (/asteriskmath/similar/arrowright/backslash) +/FontFile 635 0 R +>> endobj +5654 0 obj +[500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] +endobj +5653 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 3/asteriskmath 4/.notdef 24/similar 25/.notdef 33/arrowright 34/.notdef 110/backslash 111/.notdef] +>> endobj +498 0 obj << +/Length1 1626 +/Length2 16798 +/Length3 532 +/Length 17712 +/Filter /FlateDecode +>> +stream +xÚ¬¶ctå}³&Ûvvl;Û¶mÛ¶m›Û¶m³ÃŽÑÉôýÿŒˆ}®jƒÏºPúæYî¯Ï•K‡?ÇRÔ'ãý6}i¦7…x¾$TEÈ;ä]4'A zåð™¿Ôc¼o—eöÀ´ØÕN¦•ôÊ>!ðg»Xœ n_¨HÜŠÐHŸüŒÓãÑ»‘šPê‹/‘'Ÿ¿šC7]‘Gm¢è†¤ƒ¼w¿pÆwß~SÜ]‹_.<Š³+*  ø¢/>Õz~‘4¼„áº6 0$á¾ãžê’ç’WÉÂ9yÄ¿ ø›ˆÐ7Éj+Ú±ð¡ª÷õWc”ÆMnKÂvH» Õ)Ê››À¹S&ÏóšÕÜ©Ñ) +`=üí4¹ûGŒóìÄܦ͔|¶ãE¨À¡3ÕýÊ#äɳü +ªþJ²>“ÙûÚß©éµO ÃÌýp°ðqƒ“!ìÚÒ‡HÚ‘ï6cámn¤áiƒœNM}ãÀÈšƒô[Ž’µ‘Ìì0E$ÓÆÑ×d~` ̵å +÷Nž/,È‘CÄSz­v +T¢½ W cÝý$Ä·«–ƒT1óSý@úoæó%œ|TÊQï¨Ëø²Îy¾’¾—ëφ!^ºAk¾‰DYsfvjJIœâ”'q8 *1|¬Í¨e¥ +ÙDqþs–2½µÀ†Ø³¡Šúz›G3? +(„Ï +#¢î¦ì;©Ç³ƒ}_ísŽsŠÓ–ÀìöA‰Wã‹"@¾­`Q.ên—y½Ÿˆ±{”–{°ëhÑFQ˜@i¹Ö ÒÎQLbȈ={¯ÐsFc¢0 Ÿìqa¸L·N\A®åqY¤#îWr¨†ŠœOjö6\¦¦Çî†OxE%? R#)sG@AR­_^hmqË"NrxTJv êúß9IX†AFTýÚF÷›ÄÃÄ8™™,›)š#|™3ŸÉ­íÛ~ãtÖñÅ¢ +/Ç ]¡AÂâçc÷‡Qbé&M\ÎpélKl5ðºe䟪€¢¤"PrwâÅA÷1Œoì÷ƒþᆫZtæU2]Tm Ó‰Ó!Z˜ç®Ò‹f!oÙ0±ÌDϺzã}?®A¤Êí¾íUë7îkÓFׯ\Ê_ŒÍvЧ5+[ßÅ<ÿ˜~Ó»—’’ +º2Mÿ<Š«¢bŸêÜ‹<¬A©6Æ3˜3GlREP ®ë½ +éHZÖ"èeMIž€¤l Š­kËøñÀ¥ð n³½ü x›ÆR4h«Ÿhî€Èç·“KtÇŒovPYýï ‡àƒÞQÔî)7n²\\|c«v"w±h)ËCK By0¿¦ÀF §ÆA„õÔC©ë°ø¬®³âmÛ¬'¿¢àè®UÂá:!ƒ;àSÎ=T±®ó8†ìãžMzaâ~¥Pd§²¹Ö`8.9#!nxâ‚ß²S’køì”ôÂöËv7ÚˆzV‰™D»Ô§U¡‰Ïx¾{…€k]ŒÜÀŠ˜ü8[r¢â+ÏÞà)ŽbË;¸€ëÔǶ’Ï92~ O®%†÷ñÔúÅü$Èny¢@>¯Z!¯$ÑqûdDz £Y8§R™6áKÖUê &’U~¬ÂÌ]9 +‹Üå{ýõ‘œ?©máa`†³ÏíPŠÙ ß³æÂn.×ß2GÐÇYÓàHûq«ê@Æä“{VÅÔ =s„\¬ûa­Otq=žAxªèeuc¦#fudâDŠ¬f²Œæ"ŒõEØE¸¯7?C¿‘šÏ$.¢¿¢éíg ÖH—‡HóAxÀÓšEó‰0¥‰ˆì{ìšÜÍ]ÈœÑ$óðJþ“R+õbçÓÙyQV*ˆeTç‚nÐ,¥Ýÿj…šç·ªÍ,>?%Ù3çcó +%. ûÂu/›^ñ‡JÜK§'™IÚSby[ÉY¦;ó'cD×ÿ¤–ÐT«>;>7±:VÔ¬ÌgrV¡µZŽW “:Þ4dOIe(N‡[rh^7šÁr‰ UcK¯&Ž”°ߟ)Ñî®béwHó³™RÑ–Q‰Bê±eÁÒÒÖû¥nˆx'ô· :f¡r׸DìÞ%6 +¸¾øyüÜ»é(o‘)x%ôײÇIŠ=¸™É×™mƵŒ …›G*Iní„YP²Ëñ¤ê´£ÝÕðFšþZn°Ä,a´1§ø®xœ‰‚¾(¨T¹›{w²*“2C¥ €RÍÀŽ¨1äè|–^AZ.1dÏvUóÜPÊ[¶4irïσhn–3È_ù5Bª &7ßKâ\^0É fŸÒ´ã²a‰$0/CRù0­iŸMéñøᛸ¡¸?Ë6voj+¨}ÐFd|@»b¨¤--û7X Âø Âáày 'ÕŠ¨“n)¾˜C¹O#‡NôÚÀŽrDo½:ã„VÅà9Ñ–#ó  ÎþÁÈ! ]àÒ¬*®<ÄØy0¹O–·\3…БŒ^lš–z™»QÔôTÔßÎv#r$zûñ<ÞIwŒ™‹­ ÞH¢ôÕwŸ"WðE‡@¿wÔ;Ͻn2L™·ú¯;vs\ò~õÕŠÛ)ÔF)€*èmþ¬0n‚<&rû]ò^øÿ›!h—B>´½†UÉ¿ó R.-â%D/DäÍzÍJ(üóu]¶Z}É<¾Üq¨bÚ]à× +Cjoú§Åû{¿ÓQ°cñ¢Gp©˜a›m÷u¤Ïч…%u8åùz°‡Å fâ_%)iÍ+Iø{¬Š[Xïè _B{غsɱ€ˆéo›e%ýÍH÷¼ãæµ–£çù {Mr‚§ËL$Ôål ê\­ÌbK ¼·<<{–õÄlQKËÕø-ë뜳u›¾A€è³”Øoúñ¸o¨È2©!x¢ÃU“Ñÿ~„“>ÇŒF?ôÎU»Vˆ\Ü{–1ºfÀfõß«Ëeaœ´ÔÐÁǶªp¢Ä׋9AfŸ»LùÎý9;ˆîõ¿k& î”k/‘Öî¾#ó[Úí×y„³í¨u‘œ'_ÛÇ֤ݬÑ?œ&9¿ò¡A®gõP´/F2ê8ÐOò*To~ÔTÀdé•#hÏ™×®`âÍè4NÛGcù阔ôæYp~íÙ*òè z³ô‚ˆO›ý¹æ¹.%oY…¦ˆ·BˆJi!]$Ý:ß4»Ï…0J~rÑø+1%]Qå×RÀÇ7Š™Ø +s†`î„°R­}ð﹂1³­G}"-æä¼\7(–ö®ù[¢ôï@•?‰’YÜŒO£ Í}Ò)±úbúßVøQºnîùŠD¤O¢!ò .°Ó m` Årôâ;¢Ã:›3ž5x.±f 4frÕ:cü›è¸°³ºÛ¬ZB{È´ö±µcÒÄž,<Ù¸—Ÿ™û´º$%Ÿ¥Óž1ØRôh$Y÷ÊØigÕ)ÕS²7TêÄýf97“7ÑŠ1û=ÚaùØ×Ôú=Í…cÛhÑ}Ù¼ësoÔ=DûÐ(Úg°©‹ýMÎ[o8:§£¢å]â€à@?B=B>ÁiÛü£Îôí‡(££w¸4¥dÀÝq >²dná+f“`ñG]fÌiðði—]ÞYï«ÃóYñ}TÛù*ž)þs\Ò%T¥ íìS,y-Ìl9ÀÀ ¤‹¸µ‰NYv.dJ +9îëVËœ¡)Æ(÷ÌÈÇ+‚ÕêHfÌczˆ …KJ“-j1­jœÌuG"Åïj É”¸6pœ2óÌhi^yDû¨•@Ä]ÙbräÐÌx5Z—Ý §˜ÝÞÑ+³œ>©èçel[´†“ó,™gžNfç'¼Ãª°’ª&*0_d•˜;ºé•Ìxù±Ëߢ7t² _ïë8]E9TþGôÜ>Cÿ§;Ž”¥Ï› ¹ëÒt)N‰ðtæOÞç¶ Z»'Ž²ßjcþۢʆükЧÿ$b®ÎD˜ÁDÍ`Íœ';Wö¢ºyêFâ¬^ÕXYS‡¯ßC‡Û +ã¬êûí! “®2¸–¥cöL€"³Õȱ\ÔugÌJ PðÙ’PŸWœ.ûsêÝ£V÷t„Sߊ­ž’¤x‰µ ¸ÁI¼ÿÊõpUo郜9¿µµ@ùQÍ .7”Z3{ ÊÝZk„]Ž[‘Øáòå]mQN%¶Zñõzܶ¼ÊL|`¿¡MÖ¬»Ž½Fº å9ôYÔU¦D +[)•›ý…ÊþZëôEš¦¹}Š}3 ™¿s¬ß ëä'¯¶8^­XäpYß-äê±?¦þ­†“ÌÅÖ@ïfc9¹‹hÂÔò'¦öaØýaðt¢@'ÛwC ìÆmÙs#PÂñ*%œR°«\Ë"uŒ¹#»Ì(˜ˆ•{ºVYPá‘O¸«œ`pSªõÖ.à(êDVmžôcéúb€<¨/Á¼ñÛÿ0V¹[«<¾¬mAue¸ +áMÖb÷æSo-º_Š©ÁYƱlj_Çæϱd“Šèíq~h­&}è;‘û-;u•M…U óÑÆè9Ì)üˆvÎë/·ä|Ø’×нüøx«R‹ï?öôØçFB3=¤è³²„>@w0©€Ed÷‰Ì§ãuŒ×±Ùþšh§MŽ/‚ÇRs8Ea¿¤ÝæÞ\' £Þaâ Ìa…Ë ã+XTÐ×-‡ŠÌtåti/ÜkÂÇ,–d¬i¡räÊš£ƒY|š0N8ƒW*k·¯Š|=4>²Ý©ñn Ǧi¾__…N$¯Œ‰»÷ÓšÆn†òÄŽ€okeû,ÒÜ«BŸq-%%6]uƒe +‡·л„>FUy®ª¥áÖÅïBs¼N´Nj¬ÃZ†ÚHÍž¼|Œ-€«÷XòßWZî±Ûòa/æAdýÇ_;â^¯%ƽýñ„æ¨`"èl­MŽQè +¦ÁIßµæLNFëñæí6$£+ß«^(R'?OC5®sŽ6Fø~QùQ†ôõŽù ìNKçAOæ¾wS°x[¤<[ŽøÉåáhùTI¹m18Ù³ÁbôR1ø†¼ÖóÚXÁçv‹’dôƒF|æáô­™ÂdÛ…&D õ›‹Ra^Úiܱ#=@¤Êœ™WgW¼{OõíÓ}¼9u¿x¹Š;þÜ¢o¢ƒÏ,¹«zÚ¬|ÍɱÕO3…ÐEšÖbìʶÏ+¸Z +¹ƒ}Ùr—ÑÊk!—; ¶þlØ×C•iÁט‹²Ó– +Òþ yé¸ïAu¥}N²ËE•¸uf6¼¨1í¥´äƒ׿¶±áO(5€Ž`ô¢¯éÿŠÂ·‘–þšÐN\u^ Ò^L­…ô™€?ÿcµjÏÓß`ô9à0§Ãy^y}©,4©Ôª_å¢Jjšj£§]‚ùÍZ­Ÿ‹=„¡¸Ê®¤Ê|ÃAÉŽwAd ¹ +ìâòH¼FÅÂoùIÆÁZüó4pÔ›’ú™V®°ÜŽV! OæíÕKÒ²“áGøH»O<)„ö*–¹´–ðC’ØK÷w¾c/RðDã¿®àÞê˜6'8Ó TÀäÖ¿ž"OªrFöáÞžQŸ¢Ù>§¥^biaßéîögŸN79Õ;üÜk5„O'à¾Xo„Ü÷ª×9ß~‹¸c\jè«ð†¤o.ɇ'”‚néù½>Ñ4ú’ o B³Tà ì²g É“*? à·"<ÑÏÀ}Û!úh!×úŽƒõÛq–5¸v8ªR %äfÏENë>`=°‘\$juë è‹ +%·QÐmˆ‹Ï%Q•]b~Í•eÞWdA³ +Óéžq’9G@ÜLú¹©KqXw:½ÞÈIð>ŠÌ×00<â²Ϫåt£láâBa™ ¾$xNÅJà%t²Þ!^ã3íäé œ Ó _¾,nV=p(¦ÁãÑ%ÐTõFª»XäÇYO,”̸F‰Ý}LE|¯ÞÜOzïë„ôñÕþYÖS!P7J"–…”ÌýýÈç«t,t ÌOA½¦B `™+c%¢¯¥¯ÐØ{ã]¶íóéÖtYDF +šÉþ¬BÅ9üfîlSxÚiDJ-Š=84 Ÿš¯íŠC²"&Zß4+ó:§P7µÃ#ÛÞ™$ χf‘”L^þ8jÿÎk¡K^Í`…‚x6ð£¤PæÈ +Ôq÷¬©ä—À<¥:Rݸð–5LŸØ ‹¯ [n³w}#/8^®ë í%ȨØÚÓ—ìQÑÏ·½½r©Âq§®ÝSÅ([HŸ ÒZ§ÙeÛ#Éï|çU §ìs»ˆ ^™bˆ§¢¾ CbÔ½>ô]¨&18J«5"û‡n -Äcwš` ËÅ°cLOcâïn¥<¯Û ÊÙªÂñnÖÌKØü-Ò¡Kléª åDVa8§g€I‘y*»;5!Ë;ÄjÙ™k_G9F;æCò‡@n· ™ë‚–¨ÿèÖ¤\„¡S(Ôç5l¬U,9žGmÖY~¨Cçëïÿ$;ã4ûDÔú´šþ,Ã<©uÿÁöe•§æבŽî•úâ ÆÊ=u]ÃþüCû<د–±µV9³šÌÌìQÂŒô ¯Ëuäò#Í|Ó—A$ïòb +èÆ64v½b±Cþrä4¡oð³¬.‰pÍ©Qôa5Ú%Bÿ8Éܱ«|9‚¾ž¯&~ ÿ]n‚O‰W§Íc²ŒCíc9ÓánzÅ„q#jÂ@ðnøZÂr‡fL¤’‡?ä'¹záìœÄ‘Q*€„XÈåwÍרHös÷ÄŒG••ý‚Îí(<ÎâºÌIÐ5+dºçï•M™«Œ€c ¾ãu´æýì£Ò廸MTóuPX6ɶÆ$¤A™åÀÛäÙo®Œ¡€ôú$/ç§0‰åc¥LÐþèíìÓù*ê_Lû´æ¡sj:“ËìFõ¨ÚaòÊꢥŠRIY’ØLýçT@µ +Þ†];¡Ñ{¤Ç-&ðÑ åꛫ*?ïF§€'GyÚB¹€ÅÓ%û³Ö´(V–VJ› +˜+|/›¤”ÚÒ-Ø CPI”Fæ_iË&T8ž®×©ú4¨0'e þ–}!À=¦Ë†6÷[p™r‡Nwt‹ÔOÃŒ‘g ÃÃÇîë¾îs '$dÝ„7#>4È D¤${´jG«U£z”PÈ 4¯ü´ÿa[6Ó7/„×¶í ŠÑ•lQì/ªF®‘E >^…ßht.ƒS<’žyöc©Éf)Êkóåúª®^Zû„™Ï”ÞŸ®3ÀЛ; ŒÝ€šÕÃ|ÛH%±„:úiƒG2à2Å@ï™’™¸äKôÙÔËMÕ$>:ºd§ðOëu}ÿç’m1#Ö ‰û*¼|ð+#j-˜æsÜ »14›Õܤ£i#|*|«™é/¡ø‘ àP¦]~ÁPfD½÷MD¢Ê +¯H\ìÚ½‘KU¥¯=¸XpÎéÇ¡«·&xE[ Ë›‡DpžÇ¾ Ìc‰Mƒ mïë1U§son“Rƒþ&Wxþü¸©”Ï×Ö^Õ ?7ýŽíe{Ⱥ7YlW‚ÀÊl± !Öh¸iÈáß'^ÞM¡ñTÜÃÓÛæÇ ?â•g•¡½mãŽz핳]}P7ÉÁ1{Éuíøl¯2¤AÇŸ½ãɃe&+¸´ˆ·¯,y„… ‰ÿbLë“¡YÚŽ +wM/C×®·ÔiW_[ˆóˆ¥{seO| â²€6ktáÚm:ë–YäЂާUu«ØÅ Ù_‰ÆÒRÿ™®ï +L̃T7ÔÔ)*ŒCÜpAÕç\–å¼N¯‘ » Tºö·æ6,Œ.8·r—›46'F#˜ä5]7vûâ¢zÇþúšçpƒÇ%o{møéK(¿ÖÏÜ?mÒ¶Œå ”Zåžë‘ôŽäZS=¦b3;ï(þ¨ù;sÛ£–&Èn)a—B’ mÂɃ±|‚%‘3É)*;Y¬qI ÁñÄÍÐb[Ø[)Ímçˆ$òÁoî;üqNL9ÛA»ßP·WªC÷áO9ÉáˆäG6„á¾…¿'QV©o®Ê^|WµCßÃó[?N‰+é——å§×$d %»Ö ÷lÛ¦wö̆ñY‚رr²+¾NÜ@0C9Ë¥u¿v5˜kŒß…óÔ Áð˜43æ;±Yãmuh ¶+šä2ý¯†©œ×E1Gqš3*,™>#‚èñÛO« ð:ušô=?•`OE"\²Y¡Ÿ¥ï­–R&,²I=~Ißwm÷†T¨ía±éƒ²'£J²é’pÅEf%Фº'ŸÉôid œÏ°§'൥Ñi“ÏUÚu/øÖöÐe»íO ßn\„Ô$€Ùr>.=ý?,¬f"NõÞè»~tV•'q»C¤N'”à|ý‚i{Y2áš­…ðÝÏù}ÄèÃOµ‚wÛå·âöí·øÏÇúûÐ, ñ¸hüÄwñWHJtJÚoÔNÀH»0äÚ†ý6ÁSÔOÞôg}’Òweˆ™ÚÃÙÄõü9r-¹ÕÒ„6š¶±ÁÞÁ;dô’~‹%Å-MùbÒ +p¶4ïz6p•¡æê•œëIƒ= ÞP¹ç¡²”¾á‘‡I·Í8YÇ„@ƒ†“xR«Šƒ±ƒÓVj äÌSmü8}MTÛøëìÛÈ¡4n, ú(MD%}HsMDÏ»ua?°‚ömŽ³±þIÙ–¡LþóáJP +È >Þâ*Ú—€Í­Å¯Ï&hëC*~´Bs`D¨;,§YÞ?n Ÿ->ú™ØwV?ånYÙ„«Rª©~g¥ÂÜQšÆ™ÃÈ<ÓŠªË©Ø “í7@ Àü(]]ëÄM¿Ô,6±úÝΖÐx_ÃÍ—+¦Ø ºZ`· ¶I­®W¢‡±IO¸…eüó;£½è?+÷Gä¿Û³Ë‰çzóõÑ„N—bq¡Å‡K;§Ï§Áï¯EaïJ8õ“ãQ1;‡wúÝKÈu þ5«Åš×áý6›Ÿ÷6ÊܧC•©bZšçïv^ɆÙ%ºŸ^FÝ-&ÒèÕ¥æ<Œ-wê–0)Í-ÎS7½×Çå¾Ý†7%Í ‹‹¼™ïG 6÷T¥p4-!GŠå1þêEõІybÞq£jð½P)a{„ª´u„ÜNʘ¾‘HÈØD’_ÝÜ@ù þ=æ[?+0ÂÁ˜ƒ¶¨BÑŠr&µþ  ¯‹«Â÷ßÙ.¼ò—"s7jQÛíãjÁØSÕš•yJ¬þFa´Â<ŠŠ.P“pDMx§ô˜˜á Í:`$”î1ú•uÎÐBà]§G߉Há­„3b½ ‹VïGçpRZ.$öcì…Rþû«C¹Ì,1…°)/ƒªâCÓÝS§ »X~ÿ|€×6%V'q}©e‹#îÌýÓÏ)­ºÜIrU®‘7&?  Xò8„Ò XŸŠhí@E˹[õtí&=QmPÇcŒY¡"¸ð\XOóÔŽú$+£*¾äŠC ¯a—hgVÉå¯y?³Ÿ5<Ó¡[Ë›1 Å9Ú®]ÌͦÄ*Ì“q€FYCõsêHeÇv4ü¼‘æ½Ú§Üõ 4Ië‹Åº ƒåè«Ã®þ£ªµ?UMÑÙ*‚û°ö±Ý(’ΗrKBÛô7ŒÑo:as¾¿¡@n“­Æ¨µMtH¡>ö^oT/lOQ÷Áî +B†mSp|U˜ Ô–ìÄû1ò<h*sŽþT\âÇi ¹Ìôúó-ÖªKñ‘ÐÛ!t/îȨƊŽðX8ÎÎönPwðÞ!tÔA Ð!6{"ýÔ…[o´·f{˜jª è÷°d9´ðuü¹C>ÝŠÏÚz3í¾ðàx%4E3›~ÜæóøÃw€ˆL­,b5£Ù¾ìJj>á(v<5½œÀmeJ!¥ß¿ô´ npÜ‚;5$›,ÊôhFìµ-·%Eš¢ý3‡°·Xlr„å 'Ÿbâ~46•å ï›_ÀÒ)v™†Ì7öôº42ó.Øøç+äÏ™Ä÷ÍL×aêl)M ÀܳSÈ< +’Æ>OÊ8R#êi‚ÉbcÝÂJ]–¹Åïiòñ9×üZÊ"ñÎ Ya‰Ëª†¯kHۜ՘‰Mý|?"®5{ë˜jÒœ4ƒiaoùü¨êÊ,ÕçЫcÄ¿GÙ)÷h8)e qE0*ø=ˆÂ‘(|ºÿs‹{º*<ôzc`ó2Æ(9,ã-ro Åét%ý1¿|Q…&À\€i¾¡S+w9óÀÿŒc"àw@¬žSQxÚÐÞï¸Rˆ83N~‰WÆ—ÒÏäG&bsñZ¡rÃ8â$g•Ô§C“ÙúÉ!›Óx¼mKP¬’sv_¯5á.…âV±¿âóOŒkøF"¼¡!*g¨ ¢g,ùû”ϹôËÖW-¤ÌáÂõOÈ£í§6!.Ô=0Ö Í\ðñ›="8­ž~ñ׆¯q…Ý}†l¬7OéCs/ßߘe ݪQMÌ“?záW cÃ!íÈ„ë'Lcžu`fÝæ¾ +†¡V¤ @ìbJXˆÎ-M_ qô#õS§~!"É2ϦÔ:kcX½Z2—¹.«nÝâÉèW¢•Ô¸©£,;fØÇg#iŠP²w’?q¶ê7=uFC±Ì +p°Rµ«r·/6¹_Ô¢ù’J]ŸR¢m¥HKÔg ƒ;R©†Ì•t4.dêÁi£qžV‹â±ëlyþ°ÀÊM‰úW3½Ýå–˜Ùr‘yK +ã„pÉ€Ù]~ek錶Ó¬|5ƒMÚþ$ûÔ ŠGzÃFQ€ÅgšKË©Ä«, (@¾›[:Žvˆ5™x‰0ïóMÈóŸÞEûÅß ûwvqåXˆ…«yFäyþ0ã†Àž·jð¯xlzÊc=T)Ü-^{òØ+3\wLŸRŸú“Ü–ížâÖFú >£(0³sp”zŒèZªŽË'2l@W¡c[Q…=o¢nÀ•¯{p‰ 9ƒ)iê)úŽWD6=ŒæèZ&Æé2EÒBvG»%ìRÎgµÊ³àÉÅ0œ$ål—ŧIƒ•ü˜ÇŸ!*XM¾ F£^ MÈ›`™ÚrTõn©ü­÷]_(oÉ…«v}¦µÊ«pB¥+*¤“pKàñÙeÁ(6Wb¨x2!Q7%ðŽIÍû›2êg™AóRõµóSw¦‰ê—«>°H)DªÂf *S䘽FþÉZRµWÚkìíYàòE>XÛCSUh]A\l%ô†½HÓ~ù†¬%×ÍLÞŸÌ!««<ãäÅ;ìÀ¿Ôz÷ :Ä»ôq^Õ¡oEÏ?i¬`ÓKÔß)?µšçæ°˜UeMÈœ¤‰U_ÀpÍÇjjíÞ74¡.h6ÆÃ\T²5÷›Œ+¦è†iò„ñÓÃÑ&wœ¢a?ÒUIªVòÝñip‹“&ñZð)£tÓ[(”x ­Ä—ƒ/üqû2€_©JM|U›‰¬æèƒ×H¡“£8ÎxÝDC=ß“üô:ªAê¦}_IÀ"Z£ŠKµ@ä]ß®* ;ÙZ Vu b½%켇!SaºµP—=gIIë.›GÚ0FŸìÃéîyò>¯M.´¼ö&yrìuå„Æ^âpÊê4Ë(ÓÞ×âȈݹ ^Aº±×=]p#R\?3Ÿ„³1½*Õ3'p§½ä#ÂöUŠ(Ä ù íïý~ †ïzç½ØäâÒóçœöœÎç{{á”3«u›ŒæW—ø¾FÆÖ#5½™SBå’ù¤ «’¤)Õ˜üñɧי„Å‘BÉþ[Ýgt„Îu´Ô­£i"ÁκNÏeó›ð³´‰Ê¡_×| 97ÈÐwü¾1n2M΂³¡ $n3È@"Ãë‘S†õîÎãݤÂ77Óðh¯h6k±ª…"~‘;7ĺóÀΞÿÈ4ÊÕ®·Sˆv†¿|Ó¨ÕÄ»º4¼.V‰ ×ˆRžªXôØRZÜ®VA(­5§â–;=&ˆ£'’wj[†n†¢>Bû“ž h48"‘nÒ¢¼ŸSšÇ– SåRâ^ç´iÿ•>-ÕXZNŸGÅ=ëþðCãˆ!Câ­„î±áZ££€šÐÚÆÁ} ñ]2ÔóŽß+û ËÕâ¢Pâ!Ã¥pÓýTj™‡×Æ“Vsʾ5¦âì5¯@7„׉¨ùS°$oôö£ý€7ÑGƒÐÝmnűw”‡’”’b^‰Ò™ZæΣß}ßVÚ‰P—mãíäSNú¥çM¾˜T=¿¯)ß;ℱÿžëçñ¤¤Å@”ŸQì ê}{BxÇÑÆÏ0í‘ ¯lR’¬fœ±‹N”BH(û ; µ’¸õq¯pS#‡ûo»ªF_èâ‡O¼¨;<Þãë®´÷Ù¹Ã'Š&ëdˆ`C¦)ŽhCTDyQÔ\jËmêFQûøh È2¡*H³i‰©C‹}óe›J}OT±‰»‹a@]ª€8 ŒOBh%“®]ÞRL4 µ." ^èßkuŸg-q“,IC©¾I»®Þ—¢ïL§”Äë×Oü´ fðA}F?”×Q°!cÀ`_¾Hx¦p0¦2Þ®!Gbª†&½Ãü*Ct½MHÎàf]y+‰ rÿí„ñåGf=¡ˆÕMĤªÀb6ŵ=ÕXÿ´Áˆ²­^h0óÑ09cËN`Z B£€÷õMwÁ^@Ä0•NŒP7_»ìá¼F˺öMgkd0s•+›*md±äxk•Ïý«;Ù-€‡yMN57Ÿýد†”yˆö*Ìd†ƒH÷Ûtúh÷—}f"´ì³|PJ±S¼#G[â;«>ÿZ“‰4]ï3A|…*KBz#˜ Uõvi4:8i,pLI¬Yu-9uPÔ>K\2MÒߪì/¡.3—,\»™‹‘ÿ ]Ûߤ´šÂÓ ”‹Ö(*Fd8N†tÎPê36äó‹F”õl`Å$ýbd¶k‡ÓÜ„¿aèN_ÓÑx ¬xo8ˆ‘ø3éÛ´Î=ûôÉò@Gýj«9žkÞæÃ^s>áÕX8'‚Ì/½PÒ2X^$0¡ˆ7Vÿ!øšFÊ<è{9ÌÍÔu‚:CíÅŸIÚâ*AˆáÊîþÍŠanÎFZÀܺEâmÊ‘•Ò°'ý¸¾Šê-zߥ“ö•bæN¶Ö]bD¸û]ƵÊ¿ïþª´Ô5¾@=ê ˯©W}aá)V%+ݦkð5ÁKS²«,êÔYó ü€ðD¨§‘ãÞŸq-´b&©¥‡pUf~¾*ê Ë®p À®‘6ï§u²¨:¼I¨Ù°»)¸e(+2t?¯«±C +»Š *«÷ÌlFHÿ)Ý@~˜ZɈZŸ°áæ$°~Ä™&g7S&äP³M–el“ÛðëTô¦B‹YF«,c¡èë­.*iyÍ¡ K{Ú@¡*yJ? ¶\5Þ@¢`<î3µ0ӤΠ­á5•Ì´¢´íf[Á°bí©8$šœm&û×(ÐcûqT²ŠÄoµ”a£¯|·ýYæeŸ :¾QÉÝÛÑ4ˆ‹K䵚³Í¯*b›aµ¶½’ÛÝ&©º>÷A•Î·tÝÐRLnŒ\0¼tT´Æj½›?P•¹!4²ê ¼l¦ÔÚˆx5å›· vŸÜ£CD¨ݵgOt>Eú¯„£å¤ÔøAá…¡-€*Ý5¼r%" +2“"b'úm0%î;f©Eþ³¸ƒj'dª,É‹g! oßrÐøؘºi n²1»+~‹ #¥æ¬‡# BÜŽ'ºâýa‘é“MÎòTçé‰Ìñ䇀äeöé‹ eé;t|öÁ+÷Þ Iõõ^J×k}ïo¤Ñ¬xÞ‚‡ÖžÔ(þ󢨦žÅ–Ø3R3©ßõžùâçϪE‡ª¹–ÎÎÉ,å¥î¿@×?Uä™ç@ÇÅqÞÛSñ°t²‰Ös÷ÊýùH0½6$ Y§E! c5. oMÖ3"³ä7%07Öþ€ûŠ9ÔB‰C©k¢WÜa{‹ÆŸR·(Ôgþt*³=?w +¦|&ó Tò7‚M%[ܧø‡p‹­Ûk{Îåͧ~¿•Õ4µÀL”ñKSSç9iر/Y‹[¸T_È œÝ•&³vzò`»l žã3ê®9&FGŽZ†[h’–Jð+Ô%áa'ˆsö n!¾)kžõ~Ä4®jòÔÑRœ>¶‡ä)¨‚IêaGUõƒéÓwŽk_ài– ñz¯á*”¾ +P€´@'±B1@0LQÌÍ-?n°ÐÕšåeÒÓ:xXŽüØ@¦ñ¦åÀõÅßXä¯fJàïë’ö¬µ‹aþŽìR5ñìk_’¨ï® ã© êrd[½÷É_î9•x%ì xAr|C (Dº°gÙi±5Âã¢CñyØÑÝu°# ä™uÿ° +ÒÕ LpÕt783ɉZföEžqé._r%X_VK^úiû¦B«™’¼ÍAV1ÉNY:pYf.Š‹¾ßºy-ñPîZ–SùtÏ ‹4û‰Q¼è±'ot£C"¥Õµ¢ÝÈlݲ¸Š5þë© 9vVä”R9fñ®4Lù"¯ß¶>‹»šÃÊÿcÕŸdpÖoÈ8É£Ô_Âyk‚'ƒœ€¶¡ý¦ ¶Ÿvîç¼½=⨧ÿ݇yÿD5ÿ +­Ú>—?($Þëñ•}BûÎEÞ°^ºÚ|ÆÄêŸþúÒi÷´‡ñ¢›LL›g¹ìŽ¦¹û"ƒ;ÚÚ‚–Øw®]ÙéÌgÇæí)Õü!ÝÒ ˜M:ìé–ä”y¬}Üžs§Ï8vÝ â¢èÒ—γ·Üœ9×ãPÊò€²×ZÿêW5¿™½jËj•ºùׄŽ—Mú[ óõ«ãî™ûÖÉÚï3©.dbqã•Î”ãøÁ׶÷ÝÁþšøÞP˧3yº-7„$ ùågkÄ™¸Å=Q²Ö/ºÛóÆ}cïÆe'Âäz.5LßöqÁ–åYLÿtëSÿ̪2¹çR¤uþõ‘¨ôov}‰_[% >ï|»xÃõÓ™UKv¤Çp%^L—Î|;]Gû±î/­ä½ýlÕe +Îe[×Ê48úß8òßúîF+ac–'Ñ'#çJv›*V®_ ’~vI©³Êé[{sÃ]òêX_=›ðˤú‘œñ„-|iÛ7m\â¢pX1µ$!øž¨sÛ‡üɪÍocŽ%_~?§§JwÓ·LƒÎ©rnŽW›ñ¨H¯í~’-ÑÊ_˜/þ:…_æøu»¥Å‹Ïl(¿|gÎÅ‹¾ß™–ëÝý~ášUµíÉ,s®¹»gß®fÞ»¹7M¾ê¡gìqéG«ø-S³Ðï'ßlÝÄaËw€?#t}áñð«÷ +Ÿd´é[,û±žJ±÷ž=Zg;¼fçÏUìö`áu8ýó¤¥ÆÎxΠlO/i­N¢gË‚þoÿôñ]Ï–‘ ú&ëï®M?¡×³9i=‹ªÎ¡~5þ¸_w×s¯Ë¬nædh¯û¾øÚ®w> 6½n=o•}êâÓ[?¤nÙû^×Éòý­^/%ýÇçËVU0E¼^h%œ/Ä Ö ðu‰qâéGbíÓ9ÜlïrÌ_°·87nnGùêÇV÷t½s/]49_Ëk_¼SÁ· k‹¹ª™7=4íº¤×Ë-ú²ƒÓѾGa©·Ë‰s Þû&Íõ¤Å`káÅ{ò[nÊ_º¤ò¸àÕ¥{öÔÕܹj#›a~iÍç}^·¥ GŸ¨w}¥b_dz~ûrá­JÌm>-~XécÿæûîENòä6È7Ùe/<÷âADVàj9Ù2¦øüE_ý ]æ·žzÅwí¹µ73Ï…;[¶9¬<ù©òé±õ}Kf/hÚvñ;¯™w¶t[…Ù’¨§Ú–ͼ(#¼cK‡|vT¤ÿéǯ~”ûýÁöTZ3~¾Hø-™ðjÃ;³/E†ñ mõ™*Sëäà>}ËÑŸ|Ç“"_ô¾†'mºä²Ók£öb“³ïK_÷5uøc@!à5`Xœ“šXT’Ÿ›X”ÍÛ•Šendstream +endobj +499 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5648 0 R +/FirstChar 2 +/LastChar 151 +/Widths 5655 0 R +/BaseFont /SPHROT+NimbusRomNo9L-Medi +/FontDescriptor 497 0 R +>> endobj +497 0 obj << +/Ascent 690 +/CapHeight 690 +/Descent -209 +/FontName /SPHROT+NimbusRomNo9L-Medi +/ItalicAngle 0 +/StemV 140 +/XHeight 461 +/FontBBox [-168 -341 1000 960] +/Flags 4 +/CharSet (/fi/exclam/numbersign/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash) +/FontFile 498 0 R +>> endobj +5655 0 obj +[556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 500 0 0 0 0 333 333 0 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 0 0 0 0 500 0 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 0 722 556 667 722 722 1000 722 722 667 333 0 333 0 500 0 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ] +endobj +484 0 obj << +/Length1 1612 +/Length2 19242 +/Length3 532 +/Length 20154 +/Filter /FlateDecode +>> +stream +xÚ¬·cxeíÖ&WX©ØÉŠmÛ¶mkŶ]a%۪ضmÛ¶O½{w÷××>}þôù~ÌëšÏÀ=pg¬5I ”iMìŒLÅì€Î´Œt \9K[#'Y;  ­’©¹ ௖”TØÑÔÐÙÒ(bèlÊP75ˆ˜˜˜Œœœœ°¤a;{GKs g…ª’:%55ÍIþ1yüOÍ_O'Ks €ìï‹«©½­)Ðù/Äÿµ£²©)ÀÙÂ`fic +–WД”PˆË©ÄM¦Ž†6#Kc€Œ¥±)ÐÉ”`fç°ù÷`l4±ü§4'º¿X‚NC€“½©±å_7SwcSûT4{SG[K'§¿ïK'€¹£!Ðùoœí–@c“ø+7³ûWBöŽv-lÿêþ‚)Ø99;;ZÚ;þFUûwžÎ†ÎÿÄv²ü«Ø™ýµ4±3vù§¤éþÂüÕ:ZΦîÎÿÄ22˜X:ÙÛzüýÌÞÑò_i¸8YÍÿ+€£©¹¡£‰©“Ó_˜¿Øÿtç¿êüoÕÚÛÛxüËÛî_Vÿ+Kg'S3:XF¦¿1ÿÆ6·ÂÒÿ3(’@3;#ÿå&.öÿSçjêø¯Qü33”“04±ÚxLLÍ`éåìœÿ†Püß±L÷ßGòÅÿ-ÿ·ÐûÿÜÿäè»ÄÿïóB‹¹ØØÈÚþ€/Àß cü³cl ÿ_憶–6ÿ‡ÿ4T7ýw’ÿ8’Ά›!4ÿKÿ…–Nb–î¦& +–ÎÆ3C›¿ú—\hbêhc 4ýËè¿š  ed`øŠ…¥±5ðŸÖ³þ[e +4ùÏäÿ’ô¯ÔéU$DD…©ÿs§þËJá/÷Î*öû¥ÈÚ™ü¯Ã?BBvî/Ú¿7–‰™Àö7 #£Ïÿ!Ú¿`ÿë,kèìhéÐþ[2ã¿ +ÿÏtÿFhlgòϬ(;MþŽ×ÿü£6vqtüËê¿nüß‚ÿçù_ƒnjênj »²hgÌlõ;=ÕùFöจvo7#ø`ˆ}qJAž•]—ßïðmÎrƒ÷êºúI®Ï…Sû})ªƒántò®dÓË\\bÊž<¤ ²6vêƒ@z½b„Ô3õh¯«y™--6µƒqE%½¢w(¼É6fGè«'Jb×<T’Gûï¾Æ)µ±hí?êAÿ䟞‘%?=’÷ tÝ@öìãPgÅÂr»B Eù;dáðk©–{EPB¥6ÀãÜ´^}¨wzéå’`“DÚʼ*˜ç®[eÞ“ S[ùye%š÷+4Яg'£x'9g²¿Ö\HE0xp'‚zo§­I‚¦Ò¿Õâ>€]Sô:…{ý±­¢zíùž=74¥Ø^\ëÖµOÊ@;áRñ]¸ÙÞ‰ÔSgIHÚÂô½$3û«ÿq^݈·­{ƺúLÆ$[×ñO:¦ÝicØ ÚI[¾aýHß„Ì`Põ–ܘqᙢG›ïe”k/I|©;ô#c”†6\åï{úúbÕö&™9•§¤áÎÂÄ œ…àLQ_ÎDøp’8âïèFs£aÚ_§}Giî›@äßå'ž'¡.ýèD°Ósù¦þ—ôTe¹$6‚¶ômdewOÌÕ?¹J“ cª Þ†FW¾Of„óðÆ¢Gë…¶½"ÂêÔYi÷Gsžçˆü ­ß´G­_¿ƒ{~1‡áiOúó©ƒs PŒŒv±$Ä‚»œ­6Ê÷#Žšî@^g:t< +®;Ë¿=ÂOMlñäxVHôý‹»ü4û!¡bȪÖüã•à©Åä4.„ +íÓçuÈæ Öztð¸º/!J&ªcd>9ñÎŒ>Õó5 ÑTõò©LÂj×öwÃíùÙªíPÀg‰}ö¨ðÕ[[ì _gÝ­ŒïsÖû*ªU/dÑwÔÕ$˜Û„˜šü*Ÿ˜êþ^¯p‰ ãËx›DE—tLB4ø1%¡@%cȬQdº±¯uPTƒx>Š§‡·‘¥—ÇDiÞŸïØñcȱÖíz zz^N&^_öfÔÕm¨:¯¦[¼Ííün5QCòÍE8¯Í R—u¶??‘_íô.¿WA3`ø ‰’"ö=2¾s„Šj®•Ò®ÒŸ%“QR²°vIE¼ | ÙÓÜ‘þÆÍωbòóÝSO*="Û&QMWñ\5lÊoaõs2o-Êór{úÞÝݬiBªï$¶}16·às11Ç®f˜ö6–‰‘_~Z4¨„ik¡Êùã—³5K5Ú#Cü@–öËQ:šÍR®ÐÚÉ€}ºƒRñ׶ó»”Ø[Íè0jX,<†Ÿ*õzzão–L§ªv¹8KJ.(!Tl‘ÁÏŸ<<`¦:êé·8Ê3ì©6ä¢ßB†häÎÄ_õœ²`6¨›µd&a )ðU#4;£ÚA;³cèpÖÃøó–¶fèéë&‘eÇ¥’Úß(‘Æd°¸m‚8ìpÎugðàÎ B:ÃFpJø’µ%0ÏO\¤wÖ´ ¨Ã*Ö¾Ø2Ð=ÇóX7©'´€¦Å;Ý@ÑðÕ—²cQòEm“53OØgxCöä‘ÂW’†ŽÚ¿ù$ø²åíÝɹÈÄ,Ÿ’:LBŠƒÌ…NÜ !²·7Ã¥%ìÛœ]¢<šàš· ¤d§‡n+¡‹!Ï­uš¿:ÔOîI¤YÝƤ¦x+Ánt)C7K"µ°T›¢á6'yTG‚Š74˜æ³Ž1HrÓÚ|rܲ±‹Š}t…¥`¸}É‘y+ è5ÖÉMy“À5Ú@êÑ[U»PŽªÙFQ€Á°%¿gžQ‘¬¤÷ûk3Ôwåß`,PX{Åñ¹!_é Éxøöjhã#;b¶nÂzvh:Ï~_¦ä }`Ò‰=½Éeµò”\g9ßØ.:µ(d=ß…)¥¼ÎqB¤´zµ¸3fnuxª<\¶QÐ’Iò ~ii¿&íÿJ,uP°§q؈éêsHÚJ„@ýŒî–"…À­kT/”IòG¥% =Ó]9ï9Ó+J]Xé­p®ÒÛ+q>1÷¯2cw7ÍL á!YÅÜÐÉ‘È¿ºUþÓmóhµ6}ü~Ë·áÒ7·)ãž¡5 µÿ¼×Óá–tØH¿Bêè¢Aj+—z(†¹£*yå»°#~“ÕãÅP¬è¼œqPŒÌB Ï Â)T‹®|bxY³«ûɧve…"! ÜÃÅ~•öç@‘õÂÖ ª¿‘åñ‚…³·ô*ÃætTªot‚Ú×5BcV¶þ•º—õC»A„ Ì¡W{`!y•JÈÚÕ°YéE‘ŒÚ¡2Ÿ5aRŸ4Ý`RÊ52vÏñªÕù„K¿ ®Îž’öã3jA +’¤òÞîSurx±­š@}Æ0DS'0÷Jho·]µKAÕA@·e›I*ßTP[·ê§í ~¥O\ ºo‚Ô€DHž$jë _©–ô –Âk+©8~WÜÙý“r¸)fýhéΠ&Ôè}f¯ú"BÓ;ÕËðk‹†üts§PÖ:à|Ø©t#9÷üHÝ´Ù}†N¶t'̪_ö•vè@@ÁT¬lè»W`•_iÔ©äý‚Àׇryµï +„L¡µ\œH^-Ÿ·=]òý¡¼5f’yÄü¸¹>ïâñAÉuåÂÓ¾PŸÎPàm-ˆKò9¶ëì,MáD¿´Ò€Dò‚µ8p¶4ÈÍäæþÓsR™VDÎ+›È®ï}ô¸0ÄæW+ON -ZJÜÝœÔph•öOcBs¦a¨2U$âåeÒ²‰nÅÇVýÌ;=2|ÆQ áRb=Wy5Äé8‹ï_FîBè½EK᱈ßußS’i%Mâ°ÅÇ阄w6N&ý„µ|Þ°XÒ0&Eš}[Ï1Y¥Bþ‹={¹…ãæYLîÙ.îˆÁÐ4ƒÊ9?fd[ƒWAã °fà‘, üTqˆÅ ázër±©±CkÛytnatM}ϱF ¡`<ƒ@Ë£Ïô*à {'«ê…/+éæÇ„3”Ñ\êõ(c_@÷[' +¦gkÓʵš· +/†`ÏËJ 7yØŒä8ZŽas¤± +¿ÄJûÕ+öó5üF3Z!^ Nà½th ªŸ4²DOc}= ~< ,Ç’q/lñŸ&¬;óH +¶Mæv?¢fŒº¡ôл1€5§ŒŒO÷vدí˼Ì:~q\²Œ c¼J:,úÄåÝÍÔ4K\¿] +²à*94´ˆ¶ÀÄ2üúmÕ´F÷ u<‡À:È]53ôúÏŠígRÅÏ[ðÑèk¹¤9óæëcÁè]g˜îÒë?ŒäÑV±Ãßƪ;§w†Ø`ŒÄý¡Ö4‡¢6&H_j´Â%/±Ê@^ùò{G€`¥rãÂE°}áûY J +öþº70“hPÝýˆZŸ,>J_Ƶ6Þ˜Z–?1EÊ~ü2‚HJÊT2rÅÐòE˜#ñn/ØÛR6Á³å¤j7Ö"Ú¶YθóúÚŠô`õ]Ì2wv£·LOx*Æ”ùXº³kΉž8h­sB1ëkp„å»=ëcFŠŠ†étn½Š¹i“Â'ŽÆVt?×85"°‹4ž~¿CYóx©0ÍÇnÚÿö»€9Ëʽ•|"˼o~ ËFŒz:DµsÏû!Â1Hm*€_U£Bâ°ÂÄŠÕ‡´™Á%Ö¡ã‡0›öª.^êpæôó›åþw»ú+1‹<ŠÄ`¶ @æª&©¦ƒâ³1SJ(y*58Fá‹:½w 4Y™_ ÚÃ’ÿ)ùMó(\þ†-ß×T%ÐjÙ5³±g‹¨âXÌ9`ùø`À4K +2iVÝ"ËÁ ð—8‡QðÛGÈ?I }áÜÖMaÿSƒãóºï$i i}°í‡;«¢r_7.¼Â& +Ïk®sù°ªÌ[«×í¹1t̪Ù£»a8‚—·vÚ­.—52‡~²>’²TP:T”ŸkzŽ»‡~ ØaŠG¡:A7X˜ +Eq#;¶ÿUO. +æ£\s0V‚ÑÙàÖ±Þ¢vœ–7SN‚•v¼m› k[žØñtù“þ“T‡¨äϱÂ4uñU+ÊYeÆv%"úÅt¥d{ µÐo¤åQ­ÝtåDüÚúyIïJáÓYÌóAç{Báv %í%¶&ŸÞ¨wßNfgqñ—«fRnc‚ +&P[³)2Z˜«áõNUy7o°(‘™ôM¿´ù7ò¸i:}É{Ö¥N,kŽv,F Ñ›Gòó}€vk$ܽ Œ¿_š+Têî n+j¼ÿþ|¡˜E¢€ÒXGÊ +ZÇã¨ñ‘u‡plslü|!aÍQa‰ÜP ÛhÉ\ ¿Ùwû6!½ïçP¿8Ξ>œâ$!ðÜ^6ˆ…kû'"‰?õRÐù൮õ®D(‹œG[Q`ûè0~ƒ-ËC ˜¦ÜÂ’ªýYí“[Èü÷ûN}R>ÁwÉ­ˆ[ÍÖßxd€tå³:aXK³ˆ_ÉHn5š‰¬ nXФµÖ +!ÝÒLz~m¢—Ü#Hru~X‰®¬KØŽœ9àqல?Ƹ5qî‘Êbu¼¦nùë8V5fxJ*êm©µÍõBKuÞ”Só°o%rIt.Ù-¢®¥ŠaÜ‚è)¹§fI‡ã•›w ¨S›ö™‡Ž3k¿Vˆ·Ý¤'½‡\!_Z•ÈÞ<((kšOs• ¿ÜoârÔø±+D”.q(ù,UÐÍt—Cgþ~y6¢l¤7§Þv¸ÜÞ0&^KLpËQU NýuV›oÇÉÇÎ)“5.5°B‰èº9 éÚîþ!œû<ŸÈ¢äÒ {º»ÄA óÞM¬»U·¬b ’s¸°Œ/¤ÂÁÒªÉåÃõBwE7eôï†miD:\“Ž6GápýIèÏ¸Ò +·YìDï+ªZÜ‚Ã$8$Ÿµ=’5TùXâe öíóáUDd‡|“ÏÍ›¸d…ã%,ófµÍs‘ÄSC>>JK>> í.Å*VÚ) IšFrÑkrSÉÂæàÞeÒUÒÊ- Ðõf@ãYDÆQ¶‚Kz–:p6ª ♘îaöîKG:H²t¦s,Z³ôÞ•ŸÔ¬¸¥¨‡@eæ£'Ô³Iðnp·^ªTÅcÿ$€YAœ{(Â+k áš ÅÒ#Ù‡EJz¤ÐÈÝŽâÙ—s:>^2ɇèjžàî±¹HÉ–*eüÝ¿(#E¾v¼Îv± Âëùg»y×ržž¥À‰DâÎÄyjôûm“§Ó¾;_}I•Z3ß’Š[i±N\ƒÇ®U>ÿœWÀÓ"Â!%ccg&:›§~9êlÀÜñtæéƒäxä–˜ª?u™ÂÛЭPrå«2¢¨ ñ½£h8¢Y-FtȘ2_ A‘§ÈXÇíõæq“ÊõÚë-þh•qˆ°NåçÏù;6æVðê\÷W#Ëâ³ï8é›ß‹eG~ý.2Kî²UpXMÕbhF•š8E²yqT-͘”ëÆΩSí'fÕ‡‘.âo׊n?³¶ÙíXüÀxJºˆ‘‘ñÛñš±cñ£`Œ­ÞVWg Ü«ô79϶ҸEƒ¥¥d· ÈÓÔ~íÍᔉl ?Ø^dÇ­/À¨’µÉÎÖ{CßËbV¯5[’z0†#™Ÿ` ì{¶e}Æí—f@€ôÀÛ~«‘ÎãQëm÷]sp¡c Z½Ø³]p|ŤÃÜDTba#€³eðOhq=Gª3G8,µ7ܽ=;i-‹þ"YáJ8íéíÒÿÄ}t¹±u¬Ó9½“­ÀˆÄ[&…¸$È{Doï‹Š Ž,Ã>ƒôh _Ë—Ž$ÀãÈ‚¦é;>ÃöÕO$ ”!TÿÂ4ìcÈŽÇ+±Êô±ƒ98Ðð'œâÀ dðÖ³‰YøáÛý# Ú^¥+ù ‘+ !¬MÌþ’ÞS! w?RÃ9†ÒTvaͯì)ÏYóÍçþu*·î×Þ‰³RGõ Tu†Ò@\˜ÄÍÏ°.ºöpbÏY1…h”}ldVD\Ñ­FGÎï´JÍ#&[<ëñxùr´¢SžÎ$GùÞX Ùþ®{ìµ–ù×ndYf4<(^Ù°´þ­s]Üî¦Òcç¸\àŸ@*//¡Å»½ˆlãH¶|ëvœ»À=°” Q‹A7\…_t|õ0 AKZy+?`6ÅV9Í“Ö(~RÑÆÏÝÒ1냹Üñ¥Ý¢Él´¤£fØzVúm®C^§6Âé ùFŽüâbu¯å1 ÎM¾Sfη+§Éýµ—òÈÌrr,‹Ñ¶Žáñùˆ·&¦HKó°ˆ%XåM€³cûxØ9Ÿkª·^m òfzþ‡ëW1¬¯­ª¨Ÿ(v€ÛöÉÈ]ÕðŒs0Wê…ehhVò˜XPÉ>Ñ}„šZÅ ï„9–qùÕç;I‘hËO]2J¿ZáU¶§^ÎB€«"ÕoÂbŽ½ðE´/yYÐ%ÁgÂ0aÿ ˆð¯—wŽHRžhódž½~é²o +æ{æ fÈ©HgÖ—B7Ôç©þ~8ì(PþNS,}ö‹—Éz +˜ê™gw jÑ {Òí–äBŽË&1«‘Aò)Ù‚WR)Å#¡øy?\»@Fšïdþž æe§§ÊâÊàí,•ù·Ð¡’x¢QM&ó&4b2iCy5’›&e ÍkVZÄTð­dî·XÕ`!=ªåŠÀÊÞß¡¾¹ç6 ë{Yú=⿲òT”»®’{)Ídˆ(¬ÜÉϺІÞ×Õ×â¥ÿˆÁá5F¢È$IWRm³ßì-û+ ú4Èk>nE&з®Þ/L ¯û* ë§ÌÞ­ub«#ÐÛ +çðáxxí3Ý—*˜ìâf÷«eð–wíRÌׄ½”Š5‰}•úóŠÑIfkž2;ƒ›‚2Ϲï¤ãë¶ÚÛþ4E6xhJõ-8;|“w?H3YÒ–ÎM1?ž )’À6óã¼`I 0ÅŽ÷Tž1UV·?W¯"”ºubuDãÍÁrnå}.‹w²ÈC¹È»á¡âêyŸ9µòý¢­I¡NíGÃçkmyÝIæÕ“m÷»:,{›*zM_Âiy´þª»_œJB—tdM`9YÆ)©:59¾¹NIrKC6ƒë­I¶rÏλóq!\S¶É·ö‰3þ]R€Ì0Qê[Xô !<œvyó¨ÚøÐJ£¥¤k8§eÁç-!65˜Žqñä­qšc Q.Ͷâ9 3Õ€Zàx:ÿ¡Ç}-ÍÇÑ¡»w¹#ûvÈŠÓvjÊaq‚2MÔ=ú©ÉÜ,+¦øŽ#±1€Œ JeC°Õ½+”£ ª•V«lÛº…ø7§z1Áè<µ‘“"GÅ<öFÅ«ê;ûx<Æ“ +ÏàÐt5è^8ë‚yŽ…·8ÿ9´Øe0Ø¢‡Ð%4BE:æYÌ\pɳ.…oþî@" žu%Û®Ñ6cÅ\j^Kq ô¢>*}-Œ 0ÛªóŒ#‹öLØVøÉ° %p&˜<¼;ËŽóBí¸Ë8• 8®f¹ìâá¦S}¯ ošñÓWܦBŸe*²½ƒôŽ²ê‚K©kçÜl«?W¹f<³Ø&Ðqi2¤7ÁÃ+PÊ|SuAtŒM`Êã¼Q<ïƒ6)õ²´u‘‘ëyM+/Ó –„s^ÝÀ âaS7Z' ©"“¡E4sZï2Oà:店*ZQ:Å õ°]Á˜÷û”› !쥷Kak¯œQcÀþ´@%Î|‡ÜPKz${ùbÒ˜¹/®îBŸÊ©@aú4zgìUù×!ÝO!®!ë·<-ŽqimAŒñ÷ †¼¯‚àj¡x‹šótsrÕ“ˆºÄ°÷•šåçVF.—h –ñöXRµJŒ>~üb«!½ÃÆ€ªšoȹr^?K +;ˆP颔‹ž±# "yûèûEÕ×O¤îæBÙëëèytHô[4†¹eé(28BGušANSìèKuUAt=z úÃ'óX~Q  +ußq²üÐȵ¥=M·‘Rº^Ð ïœ +6§€i“8jJô³I}YÞbNT-êO[HUÿjiŸ¶ôê$7Q¹ËÈv/æËBtœJÈîÓÑÐU¢ÚÝïÚ9…nï’°ZF<ã¹,4XsEX‚z“Ûè¡„ÔjWÜœ"ÝkiW>|‰\à‚Á‰Òrü»x²d¤‡brÙ/ã¤G‰g^a s¯ß¾ÒO¶f1Ðüšƒ.H‹ßk¼2äXï´ +/ØóÀýÐê— +õoÓÌoB¯átvLÌ}k’ñ/÷´µÜãç)-ÍK§“Û]ÿL;ž¶6ºÄ”dwôj®¼Bäƒ%å·Yú.®ûõÌ¿Âk•éÞxgú¤O&)SO»÷ûÇ.íN4F6sÐú?Ÿ&D¾—¾à~K6ö÷Ûö#¿2,ܼ*p÷vg?€ÍÝ€­›þa9î%.X÷èBà£S=X—̓g92+,C.fÝDƒÏc®*ÆŸµ!Ãœ¶*Ø*m…X¦ˆ1n÷JšÆ_ÇáUˆˆQ4øM—¤eêµ°]ûhæxô‚ñ:y¬ºj €Ô¢ì"„·"` Ëw´ænƒ¾³ÖS£ð9¢ð‘ Õ 5Ú–·$ýÄ€³"‰Ø!¬Á7*ÂÁÛhu›@±Ã-ˆºqíÉ€ 1KP×,H5ÈéZœdM` ¼;´“:9@0XƒÉ|1è§#BõVó#gš{u@äqc)4˜qî?ºÌžD<Ø9¯rAX®„Ÿ‚÷™#ˆF.SOyNKߦƒ,,_¢ò](´°Û¾H¹c1²î“)ŒöL 2Ï+eK™«A#À7õ¤ÚßÝÁÑ}Õâ ÍY‹ûñ=Øî;s%8½¦j¢WßÀ1é–Ê2·‡áHÆ”õÁ/ÑÛÆeMGÓz¯ÐzÊ0I]²ûÏ«‡ºWPÒù—ñšªd!î¥Ì5Á%v ð±û5NÌîŒè?>!Né¡Ê•ìÍÝâèø:ÎÖ¯þd¢â?åöšè¡k—¸I”ÓÙ÷¿^gxô ê†Ì tü;Ä3ñI¶Ì¾‹ óH ÛŸ£´ŒË•• x I„<óºŠ7CKv{]¨Ñ£°L”~c|γ„¯»1Â6]’]oA Um.½Ò¢¬tR¨uIü— #”}~` +¢ÛºÌ/ﳎrÐFÓVðåçË'®oE»^!s"èª/Çrw#ˆ)òƒkôsõ£¬µZó¡Ä³8·p?0¢XémÅ'$kþÞ6FïÖŸ[<ŽÝÎèþÉä;MÞŒ_#f¼÷¯pf!Ý5C_IhnŒ”‡­Df˜}Éš:ߢêzùå^@Ö¸Ÿž×XwK¯0°!bL[¥´:퀟oD3¡;»°ë|LŠê s‚Íø‚ß`SS¨*ÓÃSZ~Ž™Ïd;¼v·ñ“{î-Ì:–ù€Ý:…§êuç´LOx=3a»-›&ÿáfäÈS¼ðÌmì‡õÕ¤ˆ·Kœ“gÈ$qQn÷0†¢v¼`^}d—<æøì¾—•ZmU)™6Éy«ØÍHG@ <ªóÁˆš?tQ ·r&¬@ý äš£®AFfézá%JÙ`ÚÚðõ*Å…yÊü,5½tNºÛXñqx\8<6L×ÐBÀD&$î:¡†Ä½5êÛµµßÈ~ÚÁ)>Ûw0äSQ( ¯xy²'æ©9¸¹`—©½¥žXGÉmúá Ô®/Ds`A|L`Ô(çêÜì:Oz’Q¤é4–A4PˆÏÓô¥R«ëô–ÞEDi&Ó^•µ ³ìÙ4Æý¯ö"û}|yµ~ÌÇZU¹ôF,v_tdZ> D%òåí ²åâOÌCP’,oÊpƒ¦Ë)Iò|Ë[3f·ÞèýØmSÜa`h§D”˜¯zŸ ¨JΣ&Í,àÝ`Í:Q×O;hã%¨ØãTbD±ô&„ µ<;\/Å6â}"æ/»#9*Ú4YV˜£Sêš| =¼&ûá·,åi +^ËÜ€íÔÂq-‚qu2W‹bp+µ‘^NÈ«ºØ¨dWÏÝ¡÷ âŸÒDþ· HãîÅRÝý1už¨ÑóŸi?oà©‚÷Z‹‰øyL6¤Ìðï@¥}T«¥( Éy½ V]ÚÃôµón¤e[ŠžyNSÊø%éñ$âK fpòcs°¬—¦1?< éûrÃ8†©¯GŠòÈù!eÔ™{Á"r°äa xÌ/.§?HÂòe]º8L‘‹zâõåR!êZ¼›š.Ú l|FV¸€¯ÍµM¥Dð1á?×j›¯XTui7^Šµ8R4›¿ÐÏÉÀÌY‰ÜŠ.9Êž3²”;á£õµÈ¸ê|ƒ©+`<«îEV{›ø*r‹Ø óT}æ²Åº¼5$YtÆ2^et,®=ìë}fMüj©?¥¥^(Ð2ë=OcJÈ¥V©ÜfäŽ1LÞX¶óg +öñ"¥ß@»j=1O–Æ+Éçèª{¬þCÑÆ“º‰Â·žm߇íªÐi]Òäá°æ}»‰b´ +×n!ø­¤Éàë>Šç$)Ðyñ›œÜöé­»-´pìè䳞ønXÌbÔšUcÁ[9K5ïO3S-ÆaÅSÛçå~ñ ¤{ýÎîÐ95qÈ£I?ÓR@­.KƒÒGгŒë¾›Ò†’òú†Ç2Õ&¸|q$šöe31Ÿ£Tó룄.ZôoÇê¦/bBñ¨¶ÖÃ&J©È]€¼‰LcÛ²%½†È«0³/"%­Û`½¿¼ñw½pM-:ò/„æê}~árŒ=_÷¢“ÜÔæNþL~“ÔwÎmqþ !HëAßð§]22éØK–?ñÏ\«_Ô|b|óúÉó©§Cb~ÒDiÆ=·(ëŠõ;'ß 9‡µ}ÆßJ1_í¨½Y\¥,ÿA¡1~;å­]ÉkcBÑJt$®ÈÝ$­«êpU@ž5£UØïõ÷æã—Æ`ÃZÕLû# V åý;§Îd[ý0ÒƲ6÷Þ$ØCZ_Ÿ¸ Ûô«j]k˜¹ÿÌNñ ¶þô@pi,z[Ð"-v[|"FÐìô듺‰Àå™”‚X<8#ÊÐ^Íû+&"·Øûp +œïX4:T_HÑN®çg?=,erO•xJf»é®ñ§`anÌ¡Ëô8‘ŸYw£E•‚˜m®@¢lBB±£Sgö«ÚLÎÝ2 Ž¿IÍ÷ÀÌG +A©R‚pñã!Xkc“jÅøêN]ÞxqˆðÉL*߈ˆ^¾cz¡‰dxågmMíѧâ׺nVX&î$Û¶w™þ”‘ 8b®Õ½Lûäì‹^韮¿ÛËNŒ¶jG¼¬¨GJ¡~fý¹"ÝäþÓgfàÝ(´XƒÿX’Ò”Ûñ¬]nDYÄÎJ{6gÙì˜ i|ºƒÚ~ÒnÂZš`êÂÜéÎôºÅÙI:süöc7¨ #C]* Ö~ç…%çÃP,…Ƥ£ÅýTLV£i2\b™{8½ªÞñHNLjÉ5+¤Eo{ðÈú RóQ°/O«FeµÛL~ÄV:~"¶Q¤$˶#œtR͈—¬Ëä#²ø$iXøþYïWádCÙ˜å? iFŒø Š3O +j®2pŸ”%Ð5§A”hðÚt)—|,ÿËÁËìox¡vc×]ÒïÀ—Â)»<»óY‰­¯ÆbÍÂ!f1¤Bˆ)L‡æ:qÕï[RKubù\ÉÕ*ËÔÁæJÐP?·Í˜J6ïWÖZ„ñ¼[ᵎu™±ÁÀ­}‹”ªþWm‚dÌÂ;ºÀ{­#ëåsLÁfIU‡‡ú5*Þææ]Gñ 6œgd[¯$"*ˆ“É7iÔ 92wÕ‘|5*…[¨þ)Í×k¶bŒœC6ºèò˜Ô§cˆ³’ÎÕF{ú*´©:|:påVqr°‡"3Ð/;]3äg¥"}]Ÿ^Á¸ðUB« äCÛßX2zò£%ï+ç('SÀfÙã®q]‹`DŒ´ù=r{.ŽpË%*™ ° Gé›éóÈÐZ|‹k¿[©'èJ ß-tÙ%%»T6×Ä?[Ý{e¥ð,3`Àˆ ®bÛãÜ?¢+œÚWÂH%8 løžmpµûÈÊ`ÄÉYÄF™ÓŠä¦z¾'ÊŸDMª¬é~z—h—xBóña=÷ˆí¬—Ã,žþ‘0Ñ9‡§pŸ-Œ¿Áö;R“&cþ”ƶ,PÙ£N¥¼÷'Àû“pŽLÅÔgi´œúÛ¤˜ÆGJ}ý.)¯Ýâ|!ß+ׄ„žãÌž÷çÅ‚l¬=àòठ·Û….Õ§þ-–¨x‘N·ßŒ›#‚]ÇüÌ%儤ü([‡Ìðé¢ä3ûRyY+,èÓÁ½Ú w¦ãBž4–¶‚ˆ„‡Z÷(÷†sÈ{‰Ä¼©¶EŒÀ°œv5^’ñ äf‹Iª7CešÑz·ñFkò° ¥w›'_~Ùdîα®qÁÊ‹dwF20È—¥¯)št+ž††é·ª9 c'’¤Û dù³ácz¥Ñ¾Jì±Ñš² õå¢]™³RF<ŸR™‚ŽJÀ¯Làòêò´–a¸q±]+ƒ¾èºÏCÝÓ`íѺLàò „p®U*ÞÎàž'Ìü­­9P¥mûïUÚÍpõ,Š4ª‰›ú¡¹µ ,ï +r?´$0ò}ðR±bò²ozíC©Å„S¿¾«|zÄË­€m~.a  ¯b0Íz¾æ·x³ùGŒ"ÖxzïúÊšËe…À©#:¬¡>­ p1è8f'QZñ¢ÖÄ.ØK+d螉8‹]®ìë~ ¼¡;>ÿf퉥3«t2%=àW±‰» +‰zÏ&06l2£40aê}Ü€ó@ƒ¡@ ’ƒîÂv‡šÔ20úŒšámÒÑ·“/.‰«6%«Ö¨7!.}܆l÷pu °æ!ý¦·;¹gè4‰¾Už–P™¦z UîÏ«úl×¥NçⶂÀë$üÕ{ðïÚÔõyö@=Üa +›¿l ¢gQƒvƒ£*\fñz”+F`˜ÚWÁð»yŒŸí@ŽéÀC-æc =Ø]ç°Ø{dÙªTã!üÑêY™¨,Æ”6DºL|œ¢Òͺ‹´B÷@m‚k°yi.¤×CÕaA…p˜•ÝÄò§E' +ëðÕmò±ê ’¸– ìêõ µ5œB#fðºSßÊnÓäxÞn¥(˜ ’ÈKë/T]vÜêK7”LäÔ+ dDw4’çFsÛu’G Ï0'r"8·bßW·½•ÉÁºMÔÍîi2­‰kiÃc¨qè˜Õ`._î§àRG¶GÍ9hNµÁ¾¼?ëBò’°ÖNµ $8M9bMJŽ—½ùawÙ!÷ÑAû¨k Ì:øMÔÅ 5×o¢ZjþPà5&…¡ÅõÔRdíÄhÁ×fÊÍ º5w€Ëyé° Ü¡•èÔi’‰S8x-ƒk~d@ØCPÇ’ˆ•¸‹O¹ºp”óHÅf§zš0n\AUðÃ6Ðæ—ëU&”ƒ%¶¾÷¸nm=ϲ¸(ï ˆ[fs£0<æ2,æw¢§çÃíNÁX:ÁÄœ¦á' )§½ݱ„)–fýtæiPšè U2Žöá‹pv¢»eô–ߥí¥lü¶$ÑMAÊÞÎ\¬þ0…Hzª=¢KïþêjîÜ©ý%1”yÐVl¬…ÍN[I[ö¶rŸ±}ç§weÞ`ô`}ß!£ ÖàÃ:Ö'߉œcµ}¿áMèY“Œ¼ëïŸr8ÄÉcññ TfžÐÀ°+`ÇÔs:²fƒì ‡Ò=e-a~¡¾©/‹‡ŸLÿ;/þ’ù¦Ë×>Šçæ½\b¦ ‹IãDϦ{™þØ’£è2ζÃÊÓ‹&›^("þ²î&py§%'}ΈÉÅxž‹â»íšÓ„&vÈsë!±iþ•/c·)õ“‹©ÿÈ£‹ÿ ‚Jvu‰/G"Ž +™tÿ>=ô¤¥!aÎÜB+Âml±•òfUM?(Óv™þ5=F%"Ⱦ%±‚àȳþúP!ݹ ~ ¶ NqzÌ'KJ îKaå.ÎkOµ–]#°‹µ ÉNÞw³³D»®H(ãM7%®xa#VCŒ¼¢¦¢î°eglS·’Ja–xÆU<Ò¹²¨æí€ÝƒÚ˜d:ÿn_˜ $s/`©Ó^Kµßgù@Þ\šSY$ÞoÇ +lîšKï—ôŒ­8¼€õ·Ÿ)ÞÎ2D½ÃàÔ1õžuêýÆTÍ>ׯŠqùrÚª8qû=ýY¨5îqx o’-Cƒ™^…Ú ¤6=('œ£‚‰ +"†Tƒ!8Ä—Py2 84`nñØö[n¬’RfÙO·E+7 MrÉšGƒ˜ݪEõÝV’OCF€/®“rñVyŠ AEhÞKóI¸÷/…åMè<'l\žšzŸ¯ngÈ"誤&Ÿ¶oá25)5“ð6—¹¸çä ¯PµÙUŒÜ¸;Ú¶v¤AZŒ}°^–óæ.UhéDg0áäêÔe§2þOú†Å–7°Qµ‘õ‹+§Ââr®q=Ût< ìßYZI!r#ñÅŽ*yT„uU]ì=™û,žo³&¦L£ê»ŸþßLa{º<Â)ø<{`6zÞwóá’Z_HKèÇü§“x~À'öbÞ›M Æ N3fÕ[Ʋml¹o&ÂW%Œ² NcäªâhVÚ/ Ìõ總ƒ–ëí·F¿š—™¹…KhŃåQè@› ƒƒ‚.çSXЮrÛÝò Þß o΃"–•Sùa‚ܽU”+kõÆî¯ó2 ßô=Î>6ßdóŽìÂP뉻™{ÊœJKX…),?mÄâAò:Q#zâûRÄ@TJq ³t&s¶o(ºãôØÂÿД3Èy¬XV C_›¨Ntùg|";jæ:n~Á I^°íC^2(Ê·œRpXÄ?ÙÇK†FЖ lmògaã?‚@'U¸'M­Cí Í´ÓUŽáId‹ÚUånXï :`¤K¦gçRm‹ôÇÉ°kUPÜæ)¶.*kxDyZCúd‘rLdŽÆa@`3Â6ü­©púŠVƒ—<\ÜCùÙV‹JA mSýŽxzñ­©A‘Éÿ´™¸Ô¨†lõr©YϼäW½U®·Ï.9A›Ó°¥úš.t¨nf̪ªO‘ЭÅÖŒêfY<*IæcìƈŠ`;åÕË„pÖÿ3³›:1êh" R‘íµ¦|g<0:A%à±ÝÓ¶O+7)È$´¬(½$-Mœ±R9[Bhï£?-Þ®èjuäÌȧYQ¸AFØ}É¡mr9pr‹7ÖŽ…ÕF,<ýå+Q‚y¢€Îà­ÖUy%ûk&Z·þ-*†8öV-%¶xËOïÅyx‡¡N¯ƒdˆU# dé5[pûWîv‰‹Ìy€˜Ç|³‘ņ4p;éîg$(ÁÚd¢èÊô”KGüÞ¬±/óÇkBãGáÒ«€ó‹¼´YºuH—Hþg4{GŸ[Ð× ÷ò¬þ P~SxõLͳÓTª8‹ …Óý.|å} ï9q¸h`wã÷-oìÃì~¨%‡\þÿi×>ûÙ`ŒÛ{ÜAíT¨±Å,jUK*±ªVc¥Dmµ·JmMŨ½ÅM©Ø[Ûˆ½W‰½ê¼z>ÁóîüÎõþŸàÂɤ9câOËOÞ«™¬3º8g +üUüs +·ûK{Û0G’Û^Ï{¢`y.õ3²MOÙ³wêJû4WtÊÙmC%%ÝOõ˜¸¦ÇF¹HF,ðïœÅ$2oMð†ÿÝÖðaõ UËø°âÓésÉõøYCqßasZ§CQ%XQvë ò%þ‘òUo´Ø°²ôñ¨?Õ+Þ³®ddªÉ9¸$Îjœˆ¡Î>†Ü¬4xqƒ¥+‡å)&Ï¡ÓBªõÅÄP þš®ËŸ•oêˆZ¸9Z_¶HÎQÆ:ñv‡íôÎm"*O¼m¬EBüá—zDÇv€-›ßHS”ß¾%Ol9ß8²î]a€áÞ–é)zë¸3ÙdyÁ¹–é–Oß!* röqæ`›®˜Õ‡El •£çU¢Æ–v¡›œ§#ÞxïŠ3óÀJN¨\¼_]¸T']Y©OÃä…¿] (J÷÷¶þÈÚ²þ€³¹â4Ð|ýn¢«øfÚ,”˜)w†£î½Ú§“:EÈSšÙø˓ݶi{=zó¢?/õ +P›ÖûƒÐõ{ÌAîŒ~n@åìÀNºƒÒ ^äI¯Ó“*› +KFp¨‘í(œ£ž¯éÿkú)žx¶3æ ×8¦ˆ íOã4VÙ¦Êg©–|á¶w„ÚSê#«<šßiF¤Fk-\)'×PHߊÅ\OÂg+J´ ˜¶ßâtâ‰j1Iß„`¢n¨ûþLäï…ˆîÞrQ)ö^æ”^—ê´ï!†&ïüjOÉyÍže˜Æ-§!Zâ/¿x¹µ‡ÊY!Çeçsl’{³u¦ÙãÌ+µ__†[R}AÌ e0­.&¤I¢‘æŸ'³ù:8gXgóÍœ;Ü+Aü{³*fÌ"òpb3))·Ì I\Ñô2S`.tÐO«§<ˆf@7'„†‹ø‰Ão ×瞈¦ç£¿ÐÇ‹­W‰¢â`¾Ãí{ ß»S%Š&'Ëv4Ñüχ°7ÚŽ'AŽ¾œLVõøÀ1د¿*£ÉXt2zõï#´Û]9òí©õYÛe±cÕôkŽ¡Ñãxä–æ“ö\õ€JlçÏ£Œž¾pƒ(’º1U´žæ‚õ®‘JJÝY¶Ö=«¼Q·±RÞL’¸³ÝÇ(–ê!RÝÒôú˜ƒÈ7›˜ –l.nÛϨ'ð( +âBÙp$³˜BÆBr£JÌ”ËR²qdpKMSàë@#˦ڢ6)¸C˜ÔbBÎÏÙ ¨ÞØFv‘@‹®-‚ÄÍ#`ü ÙTºªö¶Dµ&?ðæcn~–pNüEèÇ=é•r~ÒŸ¹ì;o£àÀóÂraªŒ¯Ó¼jÉ{‹Z³è?†K鮉”"u_ÚlÔFEü&„çi\?Ã>ý¾ïœeè·Š[§ ¢;VQL² «v'µ®èÔŠéw0[ŒÕu±{?Ý^)^Î9&@çå]Ó›¯ÂS>ì'¢\K¤ò²{¥Xz5ëË’äé"1oS!i;’ Û×M–xWtÏ‹­Þ, rcÆ’ijHcÇôBKˆœDԊ鳉a"Ciä‚¡àÛQÎljQ@?¿)ãI‘Œù“ÕnâåKNÈmÿ­ì2mÔ8>x¡u³‡5Ë}f’buyÏ™"=¬„$[Nz…‰ÏVW\O#eP!P®Òc¤~HCtæ c7¯5ÒýŸyD`€’%¨UK…´Ü¿—cj|âŽyÑŠµî IC÷q-ö‰5zhvz´ª­ëÒ?*|‡ùSEv¹Ïðëo!'…Eæûð”÷ç®ç®¾!/œ¹ƒy8FL~‘‡V¼‡º$9lˆ°Ío–,ÁPL:£ž^ücøü屎O=ßcÔ=†‡Ó]â„oûÔÁwQx +î+KÁ¢æÔÍÃñˆ‹ÄIÞjé“n]Óa d f`åÌhhñÍ*õó¬Ô|pÿkÊv±’ѹ¢-¡š[µÇq,Þ7`À¶?ÉRí +“9œúÙœù½5>º—D ]în5w#÷ €'?†§°DÔ¥rž2UÛû4­Ù0øúŸ¼‡^4¥di«Ü«RI9­âë¬ ‰¡{þê’+¨d§Ü­âýÕ¤ŽŒ›a£Ox Ó°œ¼éߣÛl[£[éù‰ä ŦL/°Ü ôÙ›Ä*¥OqåÔY©»|¤DgLÿA-Æj•sRF‚ëP¤I™‹t0<®`_‹%«Èõ…w'È°¾ä Çu2_–ªÔ>nÏ¡Óë’õö¶iš«”W8mh³Æ=˜œ +VxÙ3_w4?î<&ãl‚í+teÈ vrü>ì¤v[e?‘DÚÿ•j]<ÝÝ¡ÿŽ³Ð6“áè ) ‹Ä¥ƒE‚ÎD`­G‘¹*2ÏûDŒÉuª!‘ŠbðfO žÇmß@I¶A2ÑgãÈÁ˜É¥_€g›ôpÎik„•P‡-ÍYÌС~ösJåpÈ;%…ïý•)e2 w_”Ò¾— +%©ÖŒ‚³6W‚ÂÚÉ•gç Q'Úaƒ[W>Bc5 À‡ÓëEFà" òc [.6{ç¢ý¶·¿æÔKdÁœmßl’cßsÈõŠBûb³9(˜ÒƒöÍI·£‘ç^@C„€AS²^¦eBààÆ@q:ØÊïŒ)š?į@¬"íù¨&5’±UH·M j´ŸÖZ5)¥ád8VÈã}ÌHëݪ`àÆêdÞ•’C¸/†/Ãwîs~ûïÍÞ/Ž˜ãVf[HT‚ í‘ÓæÅ™º„=×;š¼Ž|ÁØš+þEÝĘü“)o*,¯î|ðG“"︥ÓJ»‘yjßšÝ^ÄÈ¿rú Ñîõv@£ØÏN2C²ñ£·»ŒûHG T‰‡Úí=½%Ô˜RG4¶œp¨}OÚDzX«‘IÀ¸iGqI·K6Î0:ÄäÑû¡dm¿4ýó DËfaé®·³nŽ=^ŸyãòH3D¤àUd”¶àZ™4ÄëYÓ§§«xË0:Oa}ÖXé¨Þ§}…CQÂý*ÿª²µWa©_®Mõ0;¸¤({nŽ"X|`KÇœxÛ_ͯ‚®O4TK±)×vÔ\k"VwCI.}»Vž¯ç)¦…LT¿Xg¨-,¹¯3DŸ÷&q”~ƒ½ÛQ™Ð·RJˆŸâ[ù%]Ú¢ð×Æåù÷~ÄÖCW¡¨¬³ŒÌ_lwò"„»­ÜÈ÷"õìáPVÁS;‰­é·Åÿ<¿cæÚê”o®/' +"¦~ëqp~€R)…k&˜hFG#ñ_r¶Œåì!ø3ï˜`p}á;ÎÛÐd¾Vj½ Ë©©3gþ7Ÿ¶™ š+Z³äÇʼVùíS¼—&s¬"=4Ñ“ÊOhœüßÏ?šŒ¿³8kCþC9àºõ²öJ®+h×;Ï]É-œô¯»²¸)~±‹‹¶æ>…›QTä))Ä&QV…ü3QOå`Ê­ËGašá2/Ç‹‰ •î$„?ŒÒ\\ (ÃÊOe5Œ¢•ylÖuÞØjÍtô;è×t¶ŒÞ6ÂQ½¢ûÝBõ¾ï›c1Q„h퉄¹aµÔ!p9µß8•eãþqÛÝ—a ýÔø¤k᜻ÓÒŒ"R;Ý eâ¿l“G\f¼Ñ\w_Ô‰F;(ݶø°¸0µÓI:ðЊTÜ€èÚ!Rÿ hþ”/_\Ðñ(ÄùRX páÿ@¥ä +|«ö•>i§2$”`Læ=ð9í٢ΆqÓwªÆ ˜Ã§ŠË)<]úêfj qÐ\EëÚˆŒï«Tcã¹¢NVŽ)ƒr+õ®Hq–®­ìÕMpö÷?=ÝÇÉG«ë ¡S‚æü•rlWªÄ÷™QþºGŸ;º¿Œ*¼—æ=öw›~hdP«¥ ‹Óø—¿Wc{ÔìWóô’ k½=2D³v%¸Îôš–¨¥E^Cb:;s:ßrO™êj®ê{µ÷îÑ-þ'õðYÉ!ï`+¯p§Èë÷TÖ,Ì'ØÞ¶ˆâ„¿úï +n¾!f\¬ï¦X°’dþ¡—éÜî +" £ÇO§óÚõñ®¨/ÐQh³l ×™ªÞ°ÓÇÓçíŠI +&|<û•œ¥N ­Q.¾SÚ¬ƒ'~Üá.N]b›oȪ$g,x¾ÈO?}¢¬³Æœ>{}¬(ÛßÝœ(\ýy w²Îôè’Sû¿ «ÿ`(ëXfS¥$¨Af…IñˆÖ@k•ÛÌG[¼FQ$Toà ¥ßv¼éåžW(}P¨i ¿ö‹×tGÁ +›{<\)… ó¬S' |³k¢uªˆ4“ü?{¯›æuÆí_¦¸Þf¯IÚ÷zOæù•ìù$PÚAIýÌ4…Þ4ú(Z!%ð°-Ã6h­#ç’.ÂÞV]`®m†` Gm.1qDŽ4Ò½;Ãs¤Ã ç5~‹æ™ýjîm«GAó.š”]pm4NaâM‡“ç¿«ºÈ(èFƒÿŸÑüø¯Üí}ü<Ýí}à4ÿ>[ Ìendstream +endobj +485 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5648 0 R +/FirstChar 33 +/LastChar 125 +/Widths 5656 0 R +/BaseFont /THDDQC+NimbusMonL-Regu +/FontDescriptor 483 0 R +>> endobj +483 0 obj << +/Ascent 625 +/CapHeight 557 +/Descent -147 +/FontName /THDDQC+NimbusMonL-Regu +/ItalicAngle 0 +/StemV 41 +/XHeight 426 +/FontBBox [-12 -237 650 811] +/Flags 4 +/CharSet (/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) +/FontFile 484 0 R +>> endobj +5656 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] +endobj +481 0 obj << +/Length1 1630 +/Length2 19123 +/Length3 532 +/Length 20039 +/Filter /FlateDecode +>> +stream +xÚ¬´UT]í¶%ŠîÁY¸»{pww]¸³pwww‡àÁÝÝ!‚»»sóï]§Nµs«^ªÎÃlmëCúø9±¢ +½©½1PÜÞDÏÌÀÄ·´5vqV¶·•·ç–¥Wš»þêÙáÈÉEœ€F K{;Q# 4ˆM,,fnnn8r€ˆ½ƒ‡“¥¹@¥¦¬AMKK÷Ÿš\Æÿaùélin øûã +´±w°ÚþBü_ª`fiˆ((jIÉK¨$äÕ@; “‘ @ÑÅØÆÒ ki´sRÌì6ÿ&öv¦–ÿ´æÌðKÈ`pvšXþ º›þ1Ñ€N¶–ÎÎÿ–Îs'#;Ð߀ì–v&6.¦ÿðWofÿ¯‚œìÿzØþµýS´w9›8Y:€³*ŠŠÿ»N…èŸÜΖÍ{³¿ž¦ö&.ÿ´ô/Û_˜¿V‘¥3tý“Ë0µtv°1òø›û/˜ƒ“å¿Êpq¶´3ÿÏ +èN@s#'S ³ó_˜¿ØÿLç?ûü/Ý98Øxü+Úþ_^ÿ³K3ÐÆŒŽ™åoNÐßÜæ–vpŒÿ슔™=€™éßzS‡ÿ°¹þ5 ªv†úoF¦öv6S £¼=èoJÕÿË ÿ}$ÿ7PüßBð ½ÿoäþWŽþ—Güÿúžÿ+´¸‹¼‘íßø÷ü=2Fv€¿w øçÐØ9ýÿbŒl-m<þOQÿÕ[øïrÿ`R £¿c²3ÿK Ó¿•–Îâ–î@SEK‰ÀÌÈæïÌþ¥W³3:ÙXÚÿrû¯±è™™˜þ‹MÕÂÒÄÚîØÿmÚ™þ×þÒõ¯úåä”d%Äiÿ7ö_ŽŠ¤êáð·¶ÿÑœ½éÿþ¶wxÑ3spèY¸˜ÿ¾¿¿q³°ùüoRþ ˆù?e9#“¥;@çoßLÌÿêþ|ÿ)éý1;{ÓVGddgúwÛþ§â³‰‹“Ó_’ÿuþvýò¿ötšÀ­-Û›ð[¥ge€ê¾å OŠêô÷2C‡8”5ªú×Ø÷ø¥‡oqW¾Õ†04Mó|´y,8¼ïIÓìöbÙPö¤/ +ð}H©û +Q7(:8i÷õË3N5¢½.eÿ@is0©ïoO*)ë—¾ALw°:Á^>Rû“ºúc=8 ùš¤5Äav¢4¡ÕœR$=>PŽ õ\éÛãÍûJÎë +…Hå'¨­Vé‹Ió}?^(QêfoÀHëi_F…Ìb×X*îŽ[×úPt¤ôŽ2^œù§o_œqþÌHqÝG™Iñ#H²Ä¨:†’øò©Äa‚U¤“hžÕ›¦Ò¿W7ž²n»ÿsˆÌ….ÈÐ7Ïù4èJ{•˶¼;â†ñ¤K†˜ŠlßÜÉ’‹ÆÔ¶¿œ}ÏŠZà‰ +òÜ1A±ÄZ=6 oБ®­ãõ¨lÓû¥%Tœ¬‰J@ƒÁÚ+bìû,ŽÈ¢ðA’d `û#**¡&¥Qö{$ÛYl• °¥F@€œ,Ô÷x>Þâ‰PÄéNþ¢i¹ûBîY½{¡Õ/8Õ‹¤áÕeŒëNÞÉÕP•ýz½ÄÜrÇË!I8W¸Äì5*Ø»½ø|¶ÕÁ÷’Ø7¹ì9…þœrõ¨îëã¥m^ÂaÔËa—E,Jãzæˆ÷æ‘D…Üè™;¡?Å™§¡¥‘Ra +ù +Çq.x×Ħ¥F^âʼnŒ¹Æźi™ªZ‡™Þ ’ìa[Öíá²}Ü[4úóJÁ§gŽÁc•·¹Ç5~X4k!¿d ^x3T½°ÁWsµìb&:0Â#DZçìÞwÒ¢ç^­ɲ~CÔŸ[-óÙýy#”‰ï%‡K«±Ïq9í©©*²ÜÙª¡ú•¡È…[Ë#ƒ2jU˜ %}œDâçëúÁ«°«“ØÁûkmëôªð[H{-0í¾&hmEÄLãPŽâˆ[cD,"H„RÛÜŸ[â!Þaߊ绬ñ’Wp•¿l7²f°ˆ6ÚúX»t‡3ík ©ø½ÆfɱS;,WÑÈØ©K…ôÄüê®ÏžxÔCu…9Oˆ¾pÃZëÐËÅ>r ›L}Tù”¢ÑL½ã¡ˆžý*(ÿ™G,6e༈þ¯ï7IpÞXOÉå ªß [âÙ8+Ì×DÊXìɤåÚ+ãYÑZ¦Ú1Á¯øß<Ïó¾ÈYL$lÎ*“ý.Ë ^×è?ý+L“¢X¸M×;o˾s……\¼åE^˜ôr7y/O²S/´$ä7¸oÍ §ø3n’" «ÙW1H‰è]sj¶d6…¥ýf½¯ª5›Ä n(Érü.Á8`Ï53»ksÌL§g”à÷k{–êKÉøe*ï«ÃdÉ9r½ÂǨYA ;Þ]Ää-§»8<þ§x¼%ýïƒÈÄñ—2‹ì©‹9øCë!µafôêj®GÏɃâÄ…¡)^ý/è%ßgG4ôÔÁ €Íò=p<’wˆôA‰dm$Ïòë›j˜£ƒêÌ=Ù£?“…Z@gÐiŒoG‘ÛúŒáBIÛKïý‘‘~ö¥g`îXڸߑžZíÓvk༿]ÃBN…ŒJ›±µ°ò¤V&f¥²=S0áƒ1G¢¹ž*7T yi¶‘Lq¿®kÿ|7ì‰G¾÷²‘P£ý•iãÂ0ø9ÔÒ8+RÏ”—‹rêŠÄT…Ç&IJ+8;ôšnÚ#½Í‘"ñи¾ÈYCV–ûî–÷RÞ—J¾cé™&…AelétºhÙIS£Š,~Ù&UÚeíªE\Nï[hR\5mi”T$`r¤é»h:âšù²ZE~HúÌ—R>vCjJæþ--jí C% Ø«$¶FcŸ3Ûç…á$Ë÷Èþ3º"ªŽÛ{÷qfn§h ’¶^q^ç×wÃRòº¨LL5“.ƧHb¯KD +%Ÿ0M­ ïY;qÍ€Cd¿Ï€JDF‰êÝÞ¸Ó;\~˜É2FæW„cœ hHqÍ­-Œk<&î•JzÖÈ<à¢\S×o Ñ<´gåÎbãÀ…íè`]jÃx棄.Ê~§™_ý¾1))ÓHþ8Û?'Š/õN)õvt~¢©ÿ¾í½â Õšbïí¡áÊä8°&›–`çMm¦i£ÛV\qÀZ^qd'ÛN[¹êvÄ/³VŠ‚tùB¹)bN1fm”l^~M…ðCúÇLJauŠç‹ŒŸ‡ìMeÆ#J^:$Eµ]bjÑŸ-ð_Ù#Làq¯Í&)[*w¡û§d7÷4­êTN[¼r8퀖¶›B‘^ãøØ«¦£ÈÈ·Tî™™÷] q®6à©8}?Ás0ª¥kðØ;2Sy[%(JW³}T¶‡`Ø(ŽÔŸ'Š+š5ƒMRb\³û„ãÎÖUÙk›0t¿ÈÂ?È£%®YÄâ¿»ÑV¢X×ÒA|?Ž–µ3,ûÄP‚£5¸‘=!oÁóÐ*nŠ‡ë +n®2/Îèq©Ž¡[í؃ ²×K$hÆ>`_ÝÈc¦ “æ f}½ªpÜà- ዯ¶™Óœ}³÷åÂFk@â벡>¹ö綑 Uè€6× áœRxaÃô)Ò¬;-¦_u%ŲaõTŒÐ"ØàUuZ»ÂS™ÆÒˆƒ5‰‚Õ}œñgQAV Êüš×høÏ¡‰o¸!__—e¢%5\nøÙ…ŽÝñü +0æÛ„wãñMáÝ 8%Êñ<˵|žúúcÕ•|ôß_¢û T;6§V‰}‹Àó\&Rp¬­n¶pD*£fYZe±, xè÷Nõ¢œæýÞ¿xÃœ$‡.>P|·N=2ÿ²{G.ƒýÈw¦ãîãÛCe¥±fó“O˜÷È+™ÆU¯ÒjºùuÚÓä%pÜn­){„üÂ~—´"ÞÈÿ¶‡À(ºØùT)[/nä’m®Iö,;§4…Cµì´Â³žÊHl•¶Ý!N”æ/P ПMä…F*½(áÔË]ë=ضûsæMš‰è½9—ywg<Ï595ZÒ4ñ.)Ùø@‹”—׸¾Z€„ ¶42Ü$B=wV—ÆzŸÛAoÈ?V)¸­;¥ +å*¨zwÄäE[®m[Ž¤5º÷¢0ìA$ [^9'oYÇ4š•Á4&cN®ÙIå’<ñàj2ðäîl”££œÑî%Aw ú-Jѹ•ªazY5r…ô”ÝrdŒéÒ+EòJgÚ—ªîÛ™u„3˜›0ºïótW¹9 x¼mm–c?ååd{áà +<‰Ù`FèÊíå­óܵ•ËVgkã˜ØK-oàìZ﵌ØT¤™u8©".»É¹éœ4Ý°Pߘã†Á1ÏÊ´=Z–Ñfˆ^ò!jИ; Þ}LÈöêM9Ï–}ò8ÛSäø©:‡ÝÅïµ±xêulSÕªi„žS ‚)å(CP¥_É>­ZŸìz7¼gÎkéÎÓŸÌÐ&•ÚHÄåõe;wÔÒŽÊ7¥Šmñ y)aPøŒ6âBï‡áºuøß%'æU¿p +iý1gƒ&øUn™D±ë‚=ÔR·€[ÓËáb%m›u‹åÎYäsÓay³ÀtƒÇsy§wQm’óºÍh§Hb½ÁGEYWªmH…oKº„zÓwYº×Â+PSÅ©Ž¨çŸø5ðl«@@êýHšðŠO·j€ Ú€y°p -*3Szœ¬@|íyœö«£¾ò£ûq¼õùqÛßX<¯‰¸쎛f:ņ‘Žkû¬9âË3ß'o%’å$”ÉTBi°„)SÙø‹ Ó^¿L?Í.·I&)„Ä_(ÂEÀU4#(¸b<‘7(\×âMÁ`®tðFh1ÀX;Fò4‡Ý&„CnêKw¾™¸CbùR]+'v©Í…A¸I[Çé±`}‰—Ä|H ÷;Í9”eÑè +VD†â‘:‡W,À½¥C ²ìˆ|J(û-oÝB¨®å´pm»2Î#¡P„­w°¦$B=`aC‹ÌÙ:þ‡*ÿz);¹"Ú>•ê;Ðv`IÖÊÍ¡·Ý+lm‘‚·ˆ >Îݺž³öíöF,™ÚFÞ +£W3†ÑÛò«¨%‰†œ^lu¼5ÛËSê‚ùÆgAÔJQý´Ð7ÐÂdM,7slm®Ÿç“0;º†ËŽ´ÖL\ø¦~`s·|OZÈ÷kv„ãe‘. +¢‹x+DA =šö éØ*a/Í~¯»ç耤o9Í>ð–Ãi¦.SÏ6ëÃ@ŽŠaS⫯|†ñS0¹/h݃ÑÚ‹(|™Ÿ65qŽŸS‘­á–¨»vh©Ä]¬1 “;Hêû <šSØÊ|-Ìö‚ßuýYÞ¶šZYî)V(¦›>@yï'Jž1¬žcÝÌš’Hâ]ÏÄ\?iJ¨Ðo¶àš8ƒ¹ALêæÓžBt&»2úKÝï Êà ðgÍ•éƒB•êOÙ16D:§y/çÑ@ã¨*œÝm½óÅdV–ç°¾ýpE`iÓðTsÐMöO:Æ`Í@âðXÌNRR ÷¬ÑzòGÑøÈ_\ÆT^¸69¢¦‹Œ³ÌÃ"™Á+Ϩá§jÜcàuüE¹ûœÒ+|úQÅب†ñVqR Úˆþ„•<ªmß/ÐÒI üîWäL¦£Þ|QœÍNãQÑCÓUGñJ÷)édYÎq§³™~uñ)JçPÂ4Ê£o]NsÈÍB³\eŽ¸QcpKª}ª oÏ–¦x“ˆ'^8æ¤û&‡8–f;`˜s0¦%3#l;̪½oÖËÈ÷ê»ý‰Ê‹ ÕÔõ0ìÿ”öî)ÊÍ$»ßx5m[be‰=A|Œk.ïfš¯¦JX샄»N2¡½ZSX?o+ÚM¬…å§æ{¦‚ðïøë$?/ ¨Ê…Ù2Bi9×%wU؃³Î£òs’ôãT¸çj}Oé$,EÂ"¶JfæF½¶­s8šaÀnË:œ½Dlc0äMïÌEc * F“ýË!‹hŒ'Úgmæõ±5—8ë E™]úá=¾VP¡ñ¸R¼b%EÔ–ŒeAÐÊÛb€*°#Ò+výðPƒo辶®ØB4mº4Š¥VÚ©Ú¢ 6µæ†¢ %§Ÿó©­_ãçðªQ\×\?|óqž˜ÍÂfä€Ü«ºD§èÆâÒwŒÊÔZÁßçøxf˜† ’ËUV–¾¿\ ÍD$slrðpÕRíELJdÏïtlâY ±¿ÝMm05ò åri'è>œÍAÿ˜£(Ef +{Y€L[•Sò͘§òîЪ$pŽÎ¨€­ŒJHƒ¿P³KšüH¬,̲'ê+ÃЋ„ö©L²ÙÅ}ÖYŸY˜)¤ \ÛèÀéu–«Û9Ô;o7íá.’·X£¨¿É}û.«çįo‹H%²(Ͳån¤s"aN!áïEfT©îæÓì2‹û¡‡Æâ¶ÇppÖA²óVÒ£%¨!؇Ê{lCÈÕjBwM[¼hoƒ;¡Tû8Žž?9¼†„^ëùÇÔ®|ž:ë“v£tyƒK»¡g/åGY#œŽ;ÂÝæÙ/|¶Äkrp­2¡Ð*®ÁXá=Î:rê£Pú‰°÷GøÓ%N}º‰p—=•_}’oQ +zQ¥‹Ú_–Hd~Ó“›"âC7-XpT‰îÕ&€l§·6‡Nrá ãY¾4z¢~w¯…?é÷—g°’¾£Ü‹Ò@²©ØªxT¨h¨àÐzƈLAú¦…“ObìœÖÏ8³Š†•kNÝA!_Øß1qÞfMÚn,‹(É7‹Ý)»w= Û™¹>&XѨ4ÓvæÙWÓVç²á:ãH?EN‹5š}©êäm« 42i¯€Tèóú²€¹‚2‚ø£¸æ\¦`OIS|r¯uʽ^’ïJwÁbf{À;ææ¾È—ù0/]Sp¤¬è,éë•”ø‰ ºâæóB£P[Œ[&—…÷Xn¼Åùæ@/yý þƒP…Ž•r?ö¯}S jaBºÜM[ñI–ÍtËâ?J‡ËÞè<áB~ºh¢º}îë3¡>|ájn®eå3.ˆ)jÀþŽÔÕŽ .+:ÌÛcÆÔh®É)q¾Psüf¯¯|ü”,ΰ(æÊÔu—˜ñk‚‚Þ“Äý‹ W/ HùGþ}16H=êÛÂ6Ç0ëqxú”UˆæÏÁ‰àgËm³ƒ¾—V—Iª¶ fͳâÄb™½Š:í»1ÇM@SE_I¿ù_ø7Ú¾6;çãuîD¦Ì,õÏW.³ÿòûøÖåp?ˆìífQêJ`Ðî‡Å^1CÎEtžR,p56ø¥ NY+™Ï«ø{M½»@ŠTËabýk Ïçeò;í$´áÓ/‰™´ÅŽ|hgî0Ÿã¦…sýU䣲–QÄß…ù,h-á^µÞ%¶¨- -SßôªN÷áx¡P1„î°Ýz PMåüxrÞçÈç˜Ûxa<¶f$þEMJÑ>ËîŽCèæ×sN7À£FS (Ü¥ÓÛ!йs8d‡àìb3USK.O@ ÈÄ’t¦\ç«’€à1ç_¥Ôx§òêâëÂŽãBRaÆ»h(U([ÁÛ÷¨ Ò!÷ܺ¿ #­kwQa$¿šŸ±{ò·ƒ´Màwü#Ž!rö™͘Áà{Ê<öpÌÚ[Ýi¸ö½ÚáΈbfm«ªÈX¶}2®rveñÒ¶Q ŽÙ“?F—-¾Ý»ªVcWÁØóû" Íx3¼£ÙÆÖçîžO%ÂOvÜ ¶ÎÎFG„•âžÂ‰û™¤m' å +¡’Œì£Ié2o 8^Uâ`½íŠLæù»ú<͹yô‰YTÙ(©0¥ÔþO¼»ErR÷Sϧéž­×_àX&rOnLá´j h$åôjU ©þ»u…R×~îrºÐܶpˆˆ>u ï;UÊð’ZÄëLjÕz0ߊôä¼7VšìÞØt,4¢‚œnÀ{ëm?éÞâiZ»[D¯”‰÷3›Tz¼MÝƦN’JtCüÞE¡Bº¢#X…†3$꽊ö†,ØÄÞӻƭš×·ð¤euÙîÒ\%¼ûB8ª&ç/L6»{ yMpW Êt¥*¤†$~–Ì(¯µ½cÇ?^nj=/7F9y<Ï¥Àk¤ˆÐ¿+žE ùUp2wýÂc*YµŒûcZë!ûâN|sC6M„ËÝ,Ÿ¤`5ŽN ­¾ùK:”7SÝUgD2SR]¾‚ØŸÃ+Ç$ˆÝŒp ³: l´kr±Îô§Q™è«š:b5›ä]ÇÛ²ÖÁ›ÛLiùä¤u;A—^Ð…Õ-ÞeóУÀÍBŸ[Ž³  +уÑè¢ñý“ö3ãzr iAi/ ‘\.%a‰öÑ +¨q›Ð®Cÿ{ÿ´âëâQ&øãà'…`•‹˜q̧è2÷ˆ¥bËÌ"—C|jùÎ{¬]ˆZƒ•ùˆX"§‘‹Fùˆ$ÌWóqÖg;vuµÉdøÓð‡.¼LY9b¶É‹ÓTçy¹ßĪ$nÃW˜$åç#¯ãÈÞæ…ý\z{ªî/OçN0æY‰f¿‹ÇX¾!Q½þôæ=ÊXŸsIǹ‘°ð ŒŠº'?ý‰brcìR_yDød®ÓÈš KƒÄºî‰Q*ô•B%źN¸ÂI„Ró1X«¾¹ºÁ‹®á@°…ù.š ïKž'Î6òÇ&ÂxÆ+‹Ù>!râ ¯é^(; +JÚãúW8T~a¬-æö7ÉN±Ø š(ì%i›U®}B®C=;žžo¦Ç“Vb[?¨táÝÚ$õçm$ùãñ‡Þ‚" +âçŽTÒ»%è{j±E‘3‡ŸÆ'Jò“)&›¥À¶<7.Š)Q’^ßé«Zí×´‹Rô–Y˜šúiòE=Gs½¥»~„×4ÆBPÎàn›9kNÓ&‰BáéþáŸp©٢ȫ`÷=JØ#‚ß|¤îžÃ/~0ü”e}ÁO*ƒh7Áxd_¦µð3D÷Ïyh‹yË¡G(…¸Ù¢rUoÃpVʈ`À‘ê.>IUù›ò8± +æç&:éò0̘ …_”§j¦±á¤ $ì¡OÌù×ê=VÁ¯ÄÈqò4wÕ8GýªìAâk Ü[&ü55@D{¶J^³-i&î+z–:N^+U>×=­U~ç*HnVV‚^ÚG¤ìŒ`ÕF‘KôÎoÊBJ Ñè”ç—£‡¡ðÊRŽ{Ë@ŸÆÎù­æa>óÊüÔK+Ìi›§ëÄØêwýÍÕW,ÂyrSt+¨TÑ,ñ) âç ˆ›¨–ÜIª}p¯»ùÉCKòKÚR-´L’êÚ–#ÿ÷@ ö›*ÝÛ¡]¹ä1!ez9_wŒÅøØžÂq»Ä{õ˜ìB=¿%ª~)Jí<êjlÇùîL=í§`qòýë˾”~›À(xY&dÃÌcÑ ¹Ý&®aaï)³ix¤cƒ‘§ÞV‡ŒV¿¶€uëλfq\z$Xåe4+ÏõÕ1£÷ED[˦3VËHô,–Qóaÿ=xÛ·ô㈀4 +\ç…YÖ¤‰:8 Þy+ {ÍáŒ>®÷çi=·i•üë®Z?wJ©œ@ŽÙWO)w:Ê8QýÔ”kø}Ÿ½’ñv£¢zbà ±ÌÕñmÇÊ€é7Ôãïša"Ç<Ë#Ó8‰_ôpÑM6YwHÉËšV4_Ç Á¢“wßÝ ,™Hn!M Ä0B2TøgÙúÐoÃfa§:¬J¹Q/ו.˜2X¿`2ü±Ä,Û®ç3æÕSuµM#Ë65hqÞ§¶þóe>qýd‚d¿Ó"Ïs¹e_óúxh]6=¼ $4,ÃB :ãƒÀó´ºD¥2Z¨ ú@ã·ÿø’H _ßJ3úÄcYR0AAõ4Ê™A̲mõTk QßÌ-T=s—ßÓ›fXíeT½´‹Úk; pb|a[B?ØþIñ‚W ì +™ùuÚpª]ÜÄ%âé(¾ögzÌ7j[Eb ‡’•ÍxÆû\ÞÐ/r÷ïO\êúp±/ŽR-÷i>dŽÍiã ¤ò€+` ;(CžÝò\™ñî$K9›3œ'Ck‡Óï¬u>’]ð2 iÂûÛ»µ!ÎÒ¡§F{v†±d§ãO¹SÛ2¦Ä›”åf¦Ï?á‘q~‘9":_²`âåi]9t”ËlZs‰ÚxpÍ‹ hËÚ=¢_J(½vËqÏÆK« %|u Ë&£Õ8ŠMá‘]zU!Ÿãä"Éb©ÒIæÑuöN•˜ìSBäÖÚrjÓ¥=»©pÈɵü­ ‰Üÿ$:ÓY¢2Lx˜b}îtÙ¦]†õõé‘Ò†zõ+ hÆ]ÃL–&+šÙŒpgÏ }FÜ·¢æ¦Ïÿ,êò5 °ò@LÛ³s8¬Y]zhttÏQ[†‹ë.í„F?‘òƒ©<Á«šuÔ“³îW÷ AuR&~ä ®ÿñãɺhjžk hmÏcÖyNXM• TkºKïˆ^î:µÅ«Ñ#"å?Y /\sÿànê$µL×ø$©Û4çš_&ckù }–ÒGVHßàakUëöxÄ&²j`U„~MîBŽEÒ¼qdN‡ñ9EŠt2ezI…(ƒà>ÁY!ÙÁ£^ÙÎwÎ5à®ÍØ:l9)ã'–ÇõöׄȺ®ñø(\¤CªcX VÒ¹£sÂ%˜ÿô½êÙhü‡ï–ÝÈt¤K¡åyÂqÇ—Òß·ßîCrâ3#Nð…ãm1wŸx#Ž&œðFeq³)©CFQÂwžÂk¤}*$GP¿:jCäS CŠ·@È)3„èäd°™Øîµ0šSsåw¿\9­æíòZûƒ´ä°\•~üÁ€Ûö966)ý>Ž%lFÚx„µ©7êEÐ,¢ãûË$ ^‡wWÇi#M†¶Ú>îjÁøÌ×æ¨ÃŸ‰Œ–ÍÂ" žWϼ,þèÇwy1–DˆþüOLƒ‰¼¦÷ÏQ W•q•PK•ìßz×ÁA.ÐÓE®A}Úˆ||¿?¯Jwù+ÜC!ú×TG‰Jº÷¶abÌÙ-9͘ÜzFD°Ÿ® ti:Zßq¹f|B‡7É]1u½C# íD0õ›°ã¡âO“lµ]Ê«¨eÂv´‹IPø¯‡Ò¸1sk­íûŒ>„ϹýXÀ`s&Ž²Szbè~´>œŒòOömïÑ7h‚ `*¨ÿòS:iëÈX6 ̪Êeã3åÞôÔ³luRô…¹Ë£e„ÉE¾i‚ª3\+Þœ¼3í60GÒì¬u…øEÔ\Šó\·„Z¯~DøpCQê ´¬–ÇÕP$£¹Ã羚áÎìú—d…üôC|CmKâyé Æ©ë0¬u\m²Íž³ØºÔ]}Æo«vÓø b2t¯Ä„ƒpÒEýw;²G2÷ý`D£Èc¸uí‰RÇ??¿VËòßÓz͈/@Lø„©‡G™»¢H ëîø5†µ0˜{¶É“Ü:Í“Âßµ›R=6ƒùÓÚÒF:êóO³BWOu( …ÕKn‰!º¹!j·>˜±(òg¿ïŒï»ä¯í72ü®Â—sCøH(xZ1ìcywƒPð„“nÂL5—±Þ¦U/?¸0èaðÏð¡~½lASåô×óªòÿ3p=ªÏª÷V9Yˆn5>¤¢QÎA¬A +áÂC¾˜ûLŸ&zQïZ$hÉC þÐFŠH-ÎN’Z¢Ï|óˆÌÀK7ú85á'\)ù°ì¢¬qÅÿ:½›´Ï¦Ÿd*‘³‹Lì›$Ë1üؘ +]Æ‘–š­83 GÜÈ ‰IOòô¼¿Ù^}¶‘Ï»\ºŽFïöœŒ5x¢ZqoÁ¯J:(„M?Õ·FÝ%eñ±¢î +n$[}+Y{"ù4TëAœño£ý#îÒþ‡•P½€YRy¶§% ɦ‡! f"/ýДû`èÎé§Öõš²Eð—“¢8~Ù§Ò(dþϼð+Æ–8ÿ½Kyìß#·X1³z±m¬Qá†0Ù½šhÝ¥Ô>§`¥OÓí9YÞüªhêûž ¯mrµ w¬žpL Ï®@’tƒš•–‚Élu³=ð×~YÕòBB1áÈ´¶‰Ñ‚“-‡Œz“0q‰±`°Æ¼¶YxwÿÃ_õ&Ù……¶Úª5>^?b4wΠ’Ôe¸î‹ô—[¥'ŸÈ?lÆU·Îyž§gš&l4IÊÁêà½g_&Ú*îp[)8»†Q­ ¸[1áuÁ2m/û—/Uj$«}-usÓ¸¥6xŸ¯ŒzçGPYhâÂz¸ŸíI«Ô°vb;@·½å8ÁDsoˆ>öή­Ãé’½dɱj<´ÓŽ“'mMÈ0®COþZ°MýÙF’”‚…MWÖU´cž?6! ’ñª¹[)ã´jh]Ÿ™˜ §<ƒú憦ÑÌG¤Mª>!ÖøôÀ½KIºö;-3,fw?ŽL±Ÿ“µ8DK(a•$-Kó&%µ¿Už‡˜…áÙvƒÉ&íÏà°RÓ=ù”ø{$â'1_p‹˜òyXçÇô&Ÿ{»Ž+…%Fî2Òx'›Ëç^,¥0¶ŠÓü¦Ë|.ÅO«Ï•äî@9BÒB1ì^?A10|E-ÅåþÀ¿Gñ œ©Ì‘v·ÕnÁŒbLÀ)ü¦xŒïI8Prƒ Ÿ—¾iÓ |¿u}º–ÂwËÖo`àŠ„»‚"#õìy¯f€=¢@ж»¶Ö²U¥±üû·j‰߀ŸŽ—·Aëšoø¹P|ÒùÒ¹AË…‹H(iy+Æ9Åó¯7Hb§%«Íã.Þ0š>wêVbBMÍh‚¯°U3Òè²emJ„]è%K˜ÞsWïÅ fÌ­üŸ¢KPòåÐ}„ÆÈL‡Uæ£{Ó* í–ÍG†Ârí7„³ù=áõi‘ø7þZøä1¹TÊ—7¦œO¼âg—žëó‹ßO¹çT@Á Ï|½ +þ4.l¹MW†!jÈÆ^Û"²É›¨C—: Ÿ«‚ï`ƒÑü»³ô–ü¶;ÔùSXq}^DÌKt¸÷Â,[ãú‚PÝ Ca ï´E;õu}§ó# u²¾@Žþ)œÅ‚c)¶Zz,ãgC8ò‹6®i6Q¨ÍNgÅ«ý哽IîóÚì’FíO¯x#.Ñ÷_Ó°(¬ý¦q®ýjzæL"¾àÖ%åÁªÀ´3à—ÌiH=³ÌùwÚpHßÄÞ»‘Šû›…a&læ<}Ñ¿å†ÂúU›PÓŠ€{”œ=ašøOû%©  SêóÒi5&H5Jê$9!ø®Ë rû˜‡*­gÊ4±öCŒ#>ÆøUê .>ƒÙŠ¿ô’#T“Gß.dõÝÿ:¶Ãõ̾÷^kkô–mFoÏ’†Icû¤jùýu-?/ù†·Â?ŽäY3ôçµØ$¿ô÷‡'ÇÓCÅ8F$¿ä)}‚kœ¼A"ÔŽú>påÆh •°ïP1<]¦à¿Î™2Ü£¡ü¸d8À,O3¸H‚QÍ‹eÙÜ¿ƒ*&Ñ\Gõ°‹ ’÷›”Uæ£íaô¡„øÍN ¥€Br›’Ð{Åêø`#<ŸÏÇA'E9°FCK‘1ÐÆ•÷ó⺔5d‘ûèó¸PQ¹Iz ÃdÄI—q1írÈŒhìÚÊq(çQI¿:r`6®*\JãÞàvï[Ľ{÷é Â=žˆÅ‹Å£ójCÞ!:9j–Œ”k¸‘jì€þÚ¹«*äÚ³8ÃÆ` q/qÅKáOÍšüêuÒ²Çj;=„ñjÎxïFä­¤'’QC™EK£”D6ºî¯ÔNv½]¾ó¢hÃÞ3áø˜r¢±9Í» +Á, mm o_Ä¥&ö¡ƒŠóñŲ£j ´ÄµV¸â´øeŸä×ý²VÇ©Zµ€‘·ƒ“Ž}q„U_ús#ë¦g›Ð«‡f a“î,®ÚÓ±¯Ñ +ó´j8Hf )»»¶Šº‚aÿ<Èü7¿…שÀ%›+ÜɘÜZ?,Ÿêë!û|opÒLhó¡Ú¨!9â9¿ÞXYödz/5 ›·ÒK|ÔëUá3bÙ²<ö¯Ö(åŠïó ž[&œ¨YtbÖøþÎY•Ä @]óÜ¥ÍtÓ-0 ¸‰ûN;v?1`e©©ôÔžNVð=Sv¡m¹Ù‘ò¼%Æè5g)Wú¼<(A­~ã÷¼ê’ÝÈ¥Ãéb[îöaÑü±Õ¥xòÕ§ ØÀ÷,*.}GšgÚ.´GùÇÞ"¯?÷LÁš#w Ó¤f®QºëÊ ÙHþ“ü7§­ÇX2Áì:@ß˸µâf7ÊDýLDÎUxÂvö L6ó²îºßC—*£š„¤0X¹úçÑÈ=…›Xã‡bºUªÖË”wK&ŸØãPyá#Zª›|ï¥cœÌhK´Wsÿ\[4û„ª<¿ ³t¬ ÅéÇUé(ªÓ9«×®(ô§ôìð*¾Ø³aÞÊê¤Êô€7Éd‰Û›×*—M§ +ð.ÛAݯ5µÇ 6Òc±¹P»8 ®JXKŽDƒmÊ0õ‘˜a¦]Æ{ü*ñ&&ã„œÁ¨!ˆÊ‡%:s=êXú\¨®+å•V1›\þ•»mwœ˜<ÎÑ£®ì½É=†åróé…žiÈ[U¬ÑxAïš[ºkë؉º¡ã¶gžOƒ…úäN»3\•QZ÷Nï¢"‚¯ìÏìuþ•,ÅS¦e¬ÎyÝè­­S'…`*ð÷É•ÍŠ®¹éÁï>ˆ]|'Í؈vr­($Œ]ë`4ª®öæ•Ù“HVUHTRÓ2GMj¢ú:çŽ$°‚¬“ä~i.3 ë⤭_¢ËŠUø»Xü¾Øí¼Òƨ~ê/ia¸Ž¤ŠáaöWÿŸ§Ò$”°,VâžTn2Ÿ-¡6õ_6ƒ¡èúüÌr.”¸„aئgáP7[c/îÛqCN&[õ‹XäÞs ?©ßg­)÷éègÊÔÍM¢-ôµ%Óë#öÌ.­ÞÓ¼ãT ‡|_„NµØ8‡cku¨gÂU2Èü} aKÛ`'L–ï&ä$±Š©.åýyNŠÜ—³‘w_J‡einµ–y¹µo©ºµgºt£kžpGníg!¤i´‡0†'BAº†¿CóPU¤z?¡œø‚{ós63J‹d^]7-N +†^Ø_'®£'t§×®Ç->ü„o0Â]Gv&«ÖH,æ\|i±×çýúL݇ßpÊ›·|bãhá’¨=C0;…'…B@¿ùÐh'Ò|¿ƒêscµ—ÕêD„’ɨWÅK)”‡bs…y†ôÊg±ßDå# ƒay9ÍE«Œ ÃíýºAkO[Ý" (<À—ìªk~ÀGó§ÁËöñŽªØá„éMßúÉk6Á‚Ѷ´Qn¸€µ¼)ÁU(hó}+CÊ{%¡ +gÜÞö‚J^úyò¬ÿKØ“zvÎãßÉ2R¥’ጛµ)¼ôÿ¯gâNUJè$YÇÚnõ†ÉQ'Ú[wZc∌(\@®Õ´s¤Fòão0¼v–Á@Žœôò‡VzNý»%.*ÌÜ7¦X–†xFÖB§g‡F·°¡÷j2@­Crõ2¨+²Eör£vLjTh±òcÞî} ºš{[`:9ªm¬‡Þx{$²Ô‡A¾ !´ᢾ• ²±X§ìÉ·ö-ÿ¤j˜åá0çòoþ?¸±jèਠd“í Ö¹eta2°-i2Z’7R°Uc*¦Cªè\Çí=DoOÖ>…À <ÜX‡“ï×[gŽc{ZÔmfÞò¿wás²Òe™UÃ,m¬z¡v‘ñf¨– §SÞé X½wˆ.7æTž^B.UqÀ·¦M«¾¯F/Õ˜ßP•XÜ鼿ÛãIÎ |Ø$ÊOÈÙ¡)>7 º89Å:A9I3‹ KÙz‡ ò)SIûB°^øõçÇñðÔ÷o÷^çþ.ˆÝ¿$?‹ä±–;Ö´ÁXPŽèpxÊÇ7‹•j¤fÃù½²·ÛIÇ虲´'ä¼K"ó€.ù½ÉŸQâßĶ0A.?§ìlÓÿÏR®Š ÐÅ%N«ºûô3˜Ë§·Fò9ÞbË©¤²‘<Àc¥¾ä€Ã±æ”òšßVyžþpéØ"MØ+¥ƒN ˆoÇ–_ÂÕ¡”<ØÅx ÿsù¦v7ѽ{ây…ȼkOQùÇ!U/³WSÁio(Oï«WœHšJ†g'x-çË·Ð4²ÓÏ0…¼g³Å+m‘‘o¡c³_œÛ—1ýMt 觩yxq¤S³g`(ãÄZ‹G”0°1¡pÞݧ"¨ 7Çiém´Ós¾<£ýDá+1rlfI¯(•‡¿yU>„É7ZÑ£°P­ÅÕ_.—¥ª“¬^ŒÂË‚– ¸JÜè>]Úw9S0E›inhN÷ ¯k0~xp„&^Àg]°zxÐRh-_ø†½Y÷tN£íYU[ºÎàc¹'#´¶ï¸ œä;*Â(2uÛxZ€ËFnX’¦(îÇÞŽ½Ò0Ôòf'éØT÷ØÃiã² "o¼•l1j”ÅQXÆÛ©?ãjY{ã•JH÷ 9Îroø‘z‚ê…/~÷¼:ÈhGW†EI=¸¢.ƒ0[¬GQ•SÇUÿ°ŒU0Kë§Ã÷ýµÀ…ØÕ±šýÚ“£~k/,ÄI„A¨~Ñ?,4@*`7ðí ºù®3€d5»Xˆ3ÁõC WÒÎóñ| gŠ`ìz÷óš¡fÊc+TتV¹;ùU[ÿwpýþˆ8Iîp¬üý³Y(WÊൃ 2jn¶é±aí‹‹’‡ÕŽÃ&¥ÒB(réö›7DkóbÙg7¡1ý"øžýìÑ•Fgmý2ÚS`^Ý ÀœŸ`î3²vÒÍ(ÕUuãQzįkëÿ‹xÛ¯²uqáFn5šª¸–Iù ó˜'ªî8â2J'>5hš†f½óõ.û×=CD¿ù…|DLÉVˆVËì¸YˆÏ7uî\j¸¬nFŠB­ŸQ^‚5bIØÝb–¼ç|ek3²Šá­çPYM +9Þ‰W‰ßƒÈóO{6D¥¸ ¯×ù0Ï‘øƒºHÞuâ´´Ÿa,kZdÑ0¸”h,ïÎX^p`¾ÿÚÈÞ(mBç|>³Öp)„ÎÂkõ2™B ˆ/ ’‚Úe©…>QX‡LBæh +óø³WE÷bÊbøµËkhcž¯™ˆS4>zŠOÎu[yåk88ɺtå\Èlçè 5¿n¿œ%ä *†WøJô5œêÏ…94=È»Á_V÷ŠËl»júQ¸kžÌi¹Ž§D{µldüO<!‹ÄotôÔÇþßÍ\:hY(Â!Þˆþ.ë¬]ÂÎhÀWƦ>÷9ûHV}9‘ècVú=šò&·˜Õv`ÞNÄ“E½Ë€€)ÉDQ\ëZÔ‰85 +ØÁØþ ÊÅz8öÁ|ñ1•eªúíLÒÊÛ‹w˜±S¹# L?9!Ò–Ž›õ-¡oá~OZç £ 0Ž&ýE· ,\˜…ß%DrEÝà¸Þ”QÛ„` mø¤T«v‘m§ô.cF›oÝ‚z?žÖÐ*tèƒÖ‚ !¢çy­ ÛkÈüÊ‚~º=Ü<ñ+dÚ}©ãtV´Å"ŸÝóz¸:¯,—éâ-ç+O® .@î´”ÚV/Ñåõ¤pã‹å °ÒLH‰ŸD—&ZܤÊ÷eý’Še‰!£3šô +„*éQÁã~²ÿ¤X hé¿öì¼HÍÆ `‚qQ#±®(¾…­µz’VÒÚ!‡Ã +«h…Šm +¶ÊÀÎÒ|gRºéÖÉŒq à DR#ò “õœ<Ñ„|?¦ï‹¡©,9Š³©hXDœ‘M +*ûþ|çÿ>`\„ +¶“›S‹"»íÈÚ¤Eª®üS’O`6MªV,Õ‰µ— Ó¯ÀÆïí¥3tð-R¡à~~)MñÏWr-%ì²8Æå0\Dem?‘„à ÌPÊÞ±4mïç9hîî@´[€i22ásǸABóÑñ_tx\hÀ»Uà ›Mþn-ë²d¸ù~ P\]ElS #éMÄÞ6Ç +›+OýÚw­£Ŭõ%@<¹‡Uf †ü;fó„Ñ·]VO ­¤.™wè@ \°ôlÔ¯ÙÄb;¯ŸúSUªßOX¼Ã¼¼öHÎjo@?X÷A{'ljÊZÙµO ©qûw?-u­Nó™q×·¦ÂÀž•¼õÉÇžFLöå;b»âô)ý{P­¹ó.„‡D«©de:µ·øAš6ÊyÞµßHÍÎ)‘6Kœ~lÉa —´¥s‰Ý0|ôþR˜AÇu`Y©u‚ì70¼sk»IUqbµa~ü®<«¶`PÇU²X,:³Ë °‘àá¼.²†3=)g7äÕ.Ô™éµö œÐwl'øóõiÙ6íV÷—2¢½cófvè•5A$î׫Ëj“ÄGȸŠçoën³fJ Ì_A+¾‰ Ÿ÷ˆÅœX…pëãaS jM$íä|p_wȉïlÛ]8 eÑ¡ KF…º7œyx  +ö¸µGö ¹»vëdi°YSTE÷V xd– ¸àÒÉ¡–<…ùõVêÓ9Ç'¿@\lêß±t">¡‹Y42O2OT$‰ØáWÐl/˨¯Âw³¸Ì’“  &¾›¶é%z6w²ÓBÞpæ£{U8·¸œ `²1ÚzkÒBѾO°xê-Jc`øEqqÙ%iŸÆ=|cpaÖ±9Ë83ŒçÔ¢ªJÆIgûùýE— Ì¥áYÊ­RšØ8Ÿˆá~Úœ #%¶ò b‘ g19æÕ1 ›šÏ÷;3"å)Ã7Òð¤DÊ>öí8 øŽÏ7 bŽjPK@æ—h@áVBá52—Ü<ß6òGh‘DÅEÂj®®xz•âï~DË¿Á êoɱ”cè’ìì)í4!%¼HeÖñ.b;m£åý4Ê“çî*…AAœgÍוúÞhß|(ÉÓÉœ-»Û/ñ#sÎôJx[ùŶõÉ;øêzé#Ýò{i±Ýž~Ûâg÷Ƙ×ï6Ç7k¤×Ü‘˜II4°t /à3À%B6_è.\íüÁoWE’ýñÊGÿ–yˆ6 +º··#­Å”Œ7m*Ýn…ê¤@¼êç×›ýåùÓ<ñÍò¡Ž[¤ ™'«ü×,:ü[é8äiøÊÿ×Î\¶5Á +Eê•îî”F*Â` t§Ò©tKHé£'1º&ÝÒ£Q¤Qrtv”Àý÷Û}îùÇ‘§‹6ÊG,H +JõSkphƒ„›•®”‹îÒÄüì™l~]@ wML-r Å%aNq3ñ¤>.ÎÂ[Ca’ª¨8<Ã8Ýî3˜\\;Ô—3Zéï1xûz~v>ÍN(è“—"Ys\ÛŒïa¾o+Œ.Œgâ›xÔ¤äšð&ÿ¡÷óÙÆa¯Ê^ì‡SúYæà]M¡9¼›¢œzoZm¦(M&]¼"=ï¤0‘§dŠùü«µ€ÅÃ%üÕ<­ÃHÈ)ÒBϾoþ¹W‰;By¾_à ëpTÀÖ)ÓÝdÕæÅ›Þ=a¡vk6 S+Ùç,¨…±•ZG&“5O…+0e¬‡q „[Gr÷ÎU(4nÿ¹½}娧±JWä![^&B VO#ÐÓ»ôo[ÞïÀIÿ’9z'óÅ]¡ SS`ØÝo÷Ö}ÔÝáAVi%sÙó!BåfR‰°öê¬Í+£:¯Q .ý×ñõòè1ø@$Ì¡Ñ?K™7J!¤Á*źôGlAøç³>K'õ ŸvRã FÌmo`Ø}Š…™zÖåÙ ª^êUÑHáufþÙ îgØlÙW¥!YyLj“« ó笿XEÚ„óínÒbêÀ +ur–ëð¾¨Ê!niˆS(Œwlx¨¯q8—:ù¬¾Bô +³ëÀu2K¯ÚAÜ¢VíªšåEg¹kŒP:1 Ò ¸glZ:]ê‘’ô%tx‰,\‰_¶ƒÙ«Š[þáÉΦÓÓ ^xœw&Ù¾nÀo½ËÎî…Ôù° Œ/ùùΆꞌñ¦G¼zʼnHPë@¥þö'—“6¾«:‹\î¤U¦€Õ¢¸8}¦hd(!ê›Ía†Uê¡I£Œ¢-õÙ$ÞíU;æRÕ—NN?îÚ2ñQ@e°Á¸ÝyA)BJ5|¿ýßí5€õtØ•qÑ3pŽVÇ¿U[ÂöGLRû¨C£ CòHר~íâ¶ah5=8iÿüüÁuD—Ô® +¤íxÚþë½ÂkY•…äkÈT`ªµ–ȨPúô1£/Èõ*¯"åHñaõ˜Q÷úÖLÅ:'&ž´‡nOîˆ"? ì­ÌE©$C…cª§rõÈ|Cñ²ñ3û¡lðˆÈhÅÛƒB£å¥æ€†Ç;Še•„.r=n&žã’Õ¾kdYåãâãaJó)!ÒPÑlS‡_À‚gp~ù&õòŽÏÏñIÜøß½7ß´´@a¬àz6îÄûÓÊ­;Ý»sw8KBúâRUßñµ¨¾«Äú6†ð¯÷ÛÔ¡«jG ìH?1¡îÉ®§Ù^ÞébS€˜1x$³Yù˸³©??ëˆcF…hk£ã~«•R‹p¶z‹î¸_L÷Y×õLɦ³<­—¥-'"!xbdßïñ›’ÝpKýÏZµó1’­®"ʺU§Š¶†6-çȉøy :±7å\l@w¸¼Œ¾¨& yëM9æàÁKÿê²0n¿À7ŽP$çE >n¾PŽöqÕÝüƒqatLÅUi'F7ÏjQHÂ:~¸‡k$ˆ¿E`÷^„xlÔv{·uÐây z½bÈijY0XoëRý`+䪬]‚ÎóVï˜~C„ǘ¸½–@¨ lcoŸx<™yy 8‚Ɖå‘mKxVš€ë´~E;±œF›½tžO„ØFËáºú9‡+ÞÈ@wÖ¥cŽÏHW”‹õŸC‹¹[Ù.é ¢'Ö_°:íÞü¨iÿh-$Íî§yâ/¼o WëA¢F¿½'ô‰½†â?[µU]qK*e®ˆ±5ØηùyEáúŠ"öW(É54uY#ydªÄŒ¥ˆ¤ÛvàV]*zÖ,ו“u;F=ð»_ •äv@Yߥ8'¦5û¦&8⃲­/Î<>!ãÙÏSlÅä]Ù`Ý,\5È›ØúZÂ=öZ{³|±©{êkû]mŸaçmìZKÈú=V§kp)¶Î.Y¯*ñ;áì"~OÈ}cÄ>•Ì'jý|Mç÷ï¿sÁ7]Œ#j@^f9&‹ÙF_ÓS«F“ö\¾.óOò­‹Oß?—ž‘qº͙۶3ž”ÅξҞu.-0:ߌÞj³c œäÉzmÜ„šHJ|ŒØp|ØäÄÍT-:ˆ¤]ìŠ×kÍÄõ¸Ô7×'¤Ñä«8ÕfèéÆñÓ»ù?dþï1ážÞ¿ ¾—Jh&;LfϽ— 쬿!%>P¢\ø:Ó&šâÓ;[‡§K8缆·¤ÅõÔ&ü‘íuõ1êr_(ýFSh¸ÒsµaåLÁŸ µ¨©íÒÒç°¿­Oôø¡šÜYAÌÒö¦Ìr¶qñd/¿1þÎ@ÖÙªŸþƒ©ÆHs‘˜´} ËM ¾íúv!r꜄§ñ$¸hBøƒ_]ª#êXzĵJˆììÑ‹Ùy 6WJà ÐúÿÞ©G€Š5'®øJ5^Ð5[ +|>]%¹Û_–Š«rp˜vÕêQ&  [ðh©?èP()¡½æðJýq¤’Ž«}ÅyR´TF/ep ñÃ+žOG +#ÁQHV:j böyiè‡E\’ä4aßèŒÙ¦ƒ&¶Ü Ô-âÄJ\xN¥º¯zzïH””k³{“` ]²lÜE»sýR:º6¶Ñ˜Ô¹ˆ%d¹K*uT…Zñ1l+’(oÂ1vPØŽé~+ÞÒ9÷`5/³­z—kƒ¶-a±ã\½}8­©òÄuÃ` ú:i5€n €ÑÑÓHo4g:§\ˆÙHv·Ñ.°dx,ò$<Ÿ*Zئ<¤†“$ç»åb|-÷c®ÞÙ‚_;yäE‚˜ï`u{Ø3O«Ê9ÀÝT+ +b¹pû¨þ¾y 7úviCÞõ›æÅPX—Mež]¸É\Nÿ5f“¹_MÊÈÔеé¤|ŒÏçÂHÑ|¹ŸÂêíUí[cÿm‰¸> AK6ÙU¦8ß6W[‰/Š–²‡ï°™ªCŠÍ#ù@7‡p_û9%öÿŽ½99ås)©jéMµYo™Ûßµ´üZäèlãúD24Xìó\]Ã2¬‡½ +çÏ””Î6,#TJßoþqL'?ÄvCßç ÏÙz9ÿÄÏy.I¤Zuìé‡(qüä¢6'ÖwU‹£ þnîWb$cT莓Ô6XEŠ¹ß0|Á§a ‰wÙËöMHvw¦½µnÅâRÎÐ >¨ˆ„¯÷ñ¦v,§¼WÀÕ˜L³²ØQ—æ¶MUq_¯>é…,ÝT2ØRö>«Aª]’£Iaizp¡3{:r3ƒŒÆ;›H‰g }F:3ø*Ö§UºÂ‰ÍºžÉ¥''éþNfÿ‰`LÑzO†r¦"l{s‹í(ª)ˆcó˜¼Õ7`‡IHÄìP†P@%Üj @ Ø»µŒrb>Ú€¦9Ñ3{²aÇ&µ‘þzr¸Ìþ âßÉvµÊ‘N/È<êdYúÐ.z?GòBá5o¢ûýS«Üð¤Â¤‰I÷ê€I¿ Ñ­Á +ñ~íŽVå5`O¾ÖŒ·ÚRð'LoS¥‚† Ίǫ¹ŸÐìc{ð—Æ”¬Säg´/d£Ôë2Ý4}‚¨µ£#Š=?md!ê¯$@…´ü̬¦7ëöqßbGܬ§9­sÖ…—géf.iÆ%nÀªž ó4ªÅ»0€YIhþÎwBaW£&¤þÊÙqÜÜ,Ö¬Ô ¥œ¨Ö¬®:KEöQ1”aY® y•¸Õðì×›W+QbÆeR!>Ñ:X ¼\u5QZ;Çߪõ£›ºÏÀ.•3ëz2¤`ý¤¯e`ÄÅþÆ3ÀÔMUÙî¬n‘¸Ñ˱5ö³,Ñy/Yc >"¸WC?‚&™Ç]Ÿûêfùã­S¼\1à×ÉÈ–IÅTÅõ3Ë©3ÐçÑ÷‡/GnÍGø¦ûXtl7)qð7~ÓÚ`#ÙøÝŽ`èOu¦,Šìn£ùƒBüdZáN±]S-ù½—•·v”ÝŠf/2Z¼ñÄÞoåÐÈÒŒ)B2)Ë_k>‹Fê +’‹'2̈ËqŽ=â]6d•i¹è·þj1¥Uz¤Ò&ò8¦VJúÄ>:Bò+¯»ã1Jöt­í«]÷ +¾tŽß+T¥…z²Å»…{â8>´Q¾p €si—\ýMÉ‚·O#Xìúnß28àqV4Út¨Ä"PÌ"N„HÌCª â”Ò µÙzB=*=6Ÿ›àtt)ˆÉ,Ð>vÒN_àÿt©kA«»‰Oû»†¼º#Óæ6–=ð½äãï†ÕBÈ^S-àÀ›ôQÞçÿrK’Èq%^ ð*ÒlÇ‚‚k×’%Jò'Zë±èóêO‰ÿ%ÒÿþOöŽo|üÞy¾ñq'ý-ùâÇendstream +endobj +482 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 5648 0 R +/FirstChar 2 +/LastChar 149 +/Widths 5657 0 R +/BaseFont /MMQLGF+NimbusRomNo9L-Regu +/FontDescriptor 480 0 R +>> endobj +480 0 obj << +/Ascent 678 +/CapHeight 651 +/Descent -216 +/FontName /MMQLGF+NimbusRomNo9L-Regu +/ItalicAngle 0 +/StemV 85 +/XHeight 450 +/FontBBox [-168 -281 1000 924] +/Flags 4 +/CharSet (/fi/fl/exclam/quotedbl/numbersign/dollar/ampersand/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright/bullet) +/FontFile 481 0 R +>> endobj +5657 0 obj +[556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 408 500 500 0 778 333 333 333 0 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 0 564 0 444 0 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 500 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350 ] +endobj +486 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [474 0 R 491 0 R 495 0 R 527 0 R 566 0 R 606 0 R] +>> endobj +648 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [630 0 R 659 0 R 664 0 R 683 0 R 691 0 R 718 0 R] +>> endobj +770 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [752 0 R 776 0 R 788 0 R 795 0 R 807 0 R 815 0 R] +>> endobj +829 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [823 0 R 831 0 R 844 0 R 857 0 R 868 0 R 874 0 R] +>> endobj +905 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [878 0 R 907 0 R 911 0 R 936 0 R 940 0 R 1006 0 R] +>> endobj +1063 0 obj << +/Type /Pages +/Count 6 +/Parent 5658 0 R +/Kids [1010 0 R 1090 0 R 1121 0 R 1126 0 R 1150 0 R 1167 0 R] +>> endobj +1231 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1199 0 R 1239 0 R 1257 0 R 1269 0 R 1285 0 R 1292 0 R] +>> endobj +1340 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1323 0 R 1347 0 R 1357 0 R 1369 0 R 1387 0 R 1413 0 R] +>> endobj +1437 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1422 0 R 1439 0 R 1455 0 R 1459 0 R 1487 0 R 1522 0 R] +>> endobj +1565 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1542 0 R 1569 0 R 1587 0 R 1600 0 R 1620 0 R 1640 0 R] +>> endobj +1674 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1651 0 R 1685 0 R 1703 0 R 1712 0 R 1721 0 R 1728 0 R] +>> endobj +1754 0 obj << +/Type /Pages +/Count 6 +/Parent 5659 0 R +/Kids [1740 0 R 1757 0 R 1779 0 R 1849 0 R 1946 0 R 2002 0 R] +>> endobj +2072 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2057 0 R 2074 0 R 2089 0 R 2102 0 R 2117 0 R 2139 0 R] +>> endobj +2163 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2160 0 R 2165 0 R 2196 0 R 2208 0 R 2245 0 R 2259 0 R] +>> endobj +2292 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2266 0 R 2294 0 R 2321 0 R 2353 0 R 2376 0 R 2398 0 R] +>> endobj +2425 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2416 0 R 2427 0 R 2437 0 R 2471 0 R 2488 0 R 2500 0 R] +>> endobj +2549 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2529 0 R 2556 0 R 2576 0 R 2587 0 R 2606 0 R 2631 0 R] +>> endobj +2701 0 obj << +/Type /Pages +/Count 6 +/Parent 5660 0 R +/Kids [2684 0 R 2703 0 R 2719 0 R 2736 0 R 2750 0 R 2754 0 R] +>> endobj +2809 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [2790 0 R 2811 0 R 2821 0 R 2860 0 R 2879 0 R 2891 0 R] +>> endobj +2942 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [2932 0 R 2944 0 R 2997 0 R 3023 0 R 3033 0 R 3052 0 R] +>> endobj +3130 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [3106 0 R 3137 0 R 3153 0 R 3170 0 R 3185 0 R 3192 0 R] +>> endobj +3238 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [3231 0 R 3240 0 R 3244 0 R 3288 0 R 3304 0 R 3314 0 R] +>> endobj +3357 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [3344 0 R 3359 0 R 3391 0 R 3402 0 R 3412 0 R 3444 0 R] +>> endobj +3474 0 obj << +/Type /Pages +/Count 6 +/Parent 5661 0 R +/Kids [3460 0 R 3476 0 R 3516 0 R 3532 0 R 3541 0 R 3556 0 R] +>> endobj +3615 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [3607 0 R 3617 0 R 3668 0 R 3702 0 R 3768 0 R 3791 0 R] +>> endobj +3875 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [3839 0 R 3877 0 R 3881 0 R 3892 0 R 3907 0 R 3958 0 R] +>> endobj +3984 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [3965 0 R 3987 0 R 3997 0 R 4019 0 R 4039 0 R 4047 0 R] +>> endobj +4074 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [4061 0 R 4077 0 R 4106 0 R 4125 0 R 4152 0 R 4160 0 R] +>> endobj +4195 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [4184 0 R 4197 0 R 4207 0 R 4221 0 R 4242 0 R 4260 0 R] +>> endobj +4298 0 obj << +/Type /Pages +/Count 6 +/Parent 5662 0 R +/Kids [4284 0 R 4301 0 R 4318 0 R 4326 0 R 4356 0 R 4381 0 R] +>> endobj +4430 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [4405 0 R 4432 0 R 4449 0 R 4468 0 R 4497 0 R 4523 0 R] +>> endobj +4575 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [4533 0 R 4578 0 R 4627 0 R 4650 0 R 4672 0 R 4697 0 R] +>> endobj +4756 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [4718 0 R 4758 0 R 4805 0 R 4839 0 R 4859 0 R 4880 0 R] +>> endobj +4918 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [4904 0 R 4921 0 R 4940 0 R 4959 0 R 4979 0 R 4983 0 R] +>> endobj +4990 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [4987 0 R 4992 0 R 4996 0 R 5000 0 R 5004 0 R 5008 0 R] +>> endobj +5015 0 obj << +/Type /Pages +/Count 6 +/Parent 5663 0 R +/Kids [5012 0 R 5017 0 R 5021 0 R 5025 0 R 5029 0 R 5033 0 R] +>> endobj +5040 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5037 0 R 5042 0 R 5046 0 R 5050 0 R 5054 0 R 5058 0 R] +>> endobj +5065 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5062 0 R 5067 0 R 5071 0 R 5075 0 R 5079 0 R 5083 0 R] +>> endobj +5090 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5087 0 R 5092 0 R 5096 0 R 5100 0 R 5104 0 R 5108 0 R] +>> endobj +5115 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5112 0 R 5117 0 R 5121 0 R 5125 0 R 5129 0 R 5133 0 R] +>> endobj +5141 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5138 0 R 5143 0 R 5147 0 R 5151 0 R 5155 0 R 5159 0 R] +>> endobj +5166 0 obj << +/Type /Pages +/Count 6 +/Parent 5664 0 R +/Kids [5163 0 R 5168 0 R 5172 0 R 5176 0 R 5180 0 R 5184 0 R] +>> endobj +5191 0 obj << +/Type /Pages +/Count 6 +/Parent 5665 0 R +/Kids [5188 0 R 5193 0 R 5197 0 R 5201 0 R 5274 0 R 5342 0 R] +>> endobj +5491 0 obj << +/Type /Pages +/Count 3 +/Parent 5665 0 R +/Kids [5427 0 R 5493 0 R 5575 0 R] +>> endobj +5658 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [486 0 R 648 0 R 770 0 R 829 0 R 905 0 R 1063 0 R] +>> endobj +5659 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [1231 0 R 1340 0 R 1437 0 R 1565 0 R 1674 0 R 1754 0 R] +>> endobj +5660 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [2072 0 R 2163 0 R 2292 0 R 2425 0 R 2549 0 R 2701 0 R] +>> endobj +5661 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [2809 0 R 2942 0 R 3130 0 R 3238 0 R 3357 0 R 3474 0 R] +>> endobj +5662 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [3615 0 R 3875 0 R 3984 0 R 4074 0 R 4195 0 R 4298 0 R] +>> endobj +5663 0 obj << +/Type /Pages +/Count 36 +/Parent 5666 0 R +/Kids [4430 0 R 4575 0 R 4756 0 R 4918 0 R 4990 0 R 5015 0 R] +>> endobj +5664 0 obj << +/Type /Pages +/Count 36 +/Parent 5667 0 R +/Kids [5040 0 R 5065 0 R 5090 0 R 5115 0 R 5141 0 R 5166 0 R] +>> endobj +5665 0 obj << +/Type /Pages +/Count 9 +/Parent 5667 0 R +/Kids [5191 0 R 5491 0 R] +>> endobj +5666 0 obj << +/Type /Pages +/Count 216 +/Parent 5668 0 R +/Kids [5658 0 R 5659 0 R 5660 0 R 5661 0 R 5662 0 R 5663 0 R] +>> endobj +5667 0 obj << +/Type /Pages +/Count 45 +/Parent 5668 0 R +/Kids [5664 0 R 5665 0 R] +>> endobj +5668 0 obj << +/Type /Pages +/Count 261 +/Kids [5666 0 R 5667 0 R] +>> endobj +5669 0 obj << +/Type /Outlines +/First 7 0 R +/Last 407 0 R +/Count 9 +>> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 407 0 R +/Prev 467 0 R +>> endobj +467 0 obj << +/Title 468 0 R +/A 465 0 R +/Parent 407 0 R +/Prev 463 0 R +/Next 471 0 R +>> endobj +463 0 obj << +/Title 464 0 R +/A 461 0 R +/Parent 407 0 R +/Prev 459 0 R +/Next 467 0 R +>> endobj +459 0 obj << +/Title 460 0 R +/A 457 0 R +/Parent 407 0 R +/Prev 455 0 R +/Next 463 0 R +>> endobj +455 0 obj << +/Title 456 0 R +/A 453 0 R +/Parent 407 0 R +/Prev 451 0 R +/Next 459 0 R +>> endobj +451 0 obj << +/Title 452 0 R +/A 449 0 R +/Parent 407 0 R +/Prev 447 0 R +/Next 455 0 R +>> endobj +447 0 obj << +/Title 448 0 R +/A 445 0 R +/Parent 407 0 R +/Prev 443 0 R +/Next 451 0 R +>> endobj +443 0 obj << +/Title 444 0 R +/A 441 0 R +/Parent 407 0 R +/Prev 439 0 R +/Next 447 0 R +>> endobj +439 0 obj << +/Title 440 0 R +/A 437 0 R +/Parent 407 0 R +/Prev 435 0 R +/Next 443 0 R +>> endobj +435 0 obj << +/Title 436 0 R +/A 433 0 R +/Parent 407 0 R +/Prev 431 0 R +/Next 439 0 R +>> endobj +431 0 obj << +/Title 432 0 R +/A 429 0 R +/Parent 407 0 R +/Prev 427 0 R +/Next 435 0 R +>> endobj +427 0 obj << +/Title 428 0 R +/A 425 0 R +/Parent 407 0 R +/Prev 423 0 R +/Next 431 0 R +>> endobj +423 0 obj << +/Title 424 0 R +/A 421 0 R +/Parent 407 0 R +/Prev 419 0 R +/Next 427 0 R +>> endobj +419 0 obj << +/Title 420 0 R +/A 417 0 R +/Parent 407 0 R +/Prev 415 0 R +/Next 423 0 R +>> endobj +415 0 obj << +/Title 416 0 R +/A 413 0 R +/Parent 407 0 R +/Prev 411 0 R +/Next 419 0 R +>> endobj +411 0 obj << +/Title 412 0 R +/A 409 0 R +/Parent 407 0 R +/Next 415 0 R +>> endobj +407 0 obj << +/Title 408 0 R +/A 405 0 R +/Parent 5669 0 R +/Prev 267 0 R +/First 411 0 R +/Last 471 0 R +/Count -16 +>> endobj +403 0 obj << +/Title 404 0 R +/A 401 0 R +/Parent 267 0 R +/Prev 399 0 R +>> endobj +399 0 obj << +/Title 400 0 R +/A 397 0 R +/Parent 267 0 R +/Prev 395 0 R +/Next 403 0 R +>> endobj +395 0 obj << +/Title 396 0 R +/A 393 0 R +/Parent 267 0 R +/Prev 391 0 R +/Next 399 0 R +>> endobj +391 0 obj << +/Title 392 0 R +/A 389 0 R +/Parent 267 0 R +/Prev 387 0 R +/Next 395 0 R +>> endobj +387 0 obj << +/Title 388 0 R +/A 385 0 R +/Parent 267 0 R +/Prev 383 0 R +/Next 391 0 R +>> endobj +383 0 obj << +/Title 384 0 R +/A 381 0 R +/Parent 267 0 R +/Prev 379 0 R +/Next 387 0 R +>> endobj +379 0 obj << +/Title 380 0 R +/A 377 0 R +/Parent 267 0 R +/Prev 375 0 R +/Next 383 0 R +>> endobj +375 0 obj << +/Title 376 0 R +/A 373 0 R +/Parent 267 0 R +/Prev 371 0 R +/Next 379 0 R +>> endobj +371 0 obj << +/Title 372 0 R +/A 369 0 R +/Parent 267 0 R +/Prev 367 0 R +/Next 375 0 R +>> endobj +367 0 obj << +/Title 368 0 R +/A 365 0 R +/Parent 267 0 R +/Prev 363 0 R +/Next 371 0 R +>> endobj +363 0 obj << +/Title 364 0 R +/A 361 0 R +/Parent 267 0 R +/Prev 359 0 R +/Next 367 0 R +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 267 0 R +/Prev 355 0 R +/Next 363 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 267 0 R +/Prev 351 0 R +/Next 359 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 267 0 R +/Prev 347 0 R +/Next 355 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 267 0 R +/Prev 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 267 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 267 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 267 0 R +/Prev 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 267 0 R +/Prev 327 0 R +/Next 335 0 R +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 267 0 R +/Prev 323 0 R +/Next 331 0 R +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 267 0 R +/Prev 319 0 R +/Next 327 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 267 0 R +/Prev 315 0 R +/Next 323 0 R +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 267 0 R +/Prev 311 0 R +/Next 319 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 267 0 R +/Prev 307 0 R +/Next 315 0 R +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 267 0 R +/Prev 303 0 R +/Next 311 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 267 0 R +/Prev 299 0 R +/Next 307 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 267 0 R +/Prev 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 267 0 R +/Prev 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 267 0 R +/Prev 287 0 R +/Next 295 0 R +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 267 0 R +/Prev 283 0 R +/Next 291 0 R +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 267 0 R +/Prev 279 0 R +/Next 287 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 267 0 R +/Prev 275 0 R +/Next 283 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 267 0 R +/Prev 271 0 R +/Next 279 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 5669 0 R +/Prev 179 0 R +/Next 407 0 R +/First 271 0 R +/Last 403 0 R +/Count -34 +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 179 0 R +/Prev 259 0 R +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 179 0 R +/Prev 255 0 R +/Next 263 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 179 0 R +/Prev 251 0 R +/Next 259 0 R +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 179 0 R +/Prev 247 0 R +/Next 255 0 R +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 179 0 R +/Prev 243 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 179 0 R +/Prev 239 0 R +/Next 247 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 179 0 R +/Prev 235 0 R +/Next 243 0 R +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 179 0 R +/Prev 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 179 0 R +/Prev 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 179 0 R +/Prev 223 0 R +/Next 231 0 R +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 179 0 R +/Prev 219 0 R +/Next 227 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 179 0 R +/Prev 215 0 R +/Next 223 0 R +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 179 0 R +/Prev 211 0 R +/Next 219 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 179 0 R +/Prev 207 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 179 0 R +/Prev 203 0 R +/Next 211 0 R +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 179 0 R +/Prev 199 0 R +/Next 207 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 179 0 R +/Prev 195 0 R +/Next 203 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 179 0 R +/Prev 191 0 R +/Next 199 0 R +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 179 0 R +/Prev 187 0 R +/Next 195 0 R +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 179 0 R +/Prev 183 0 R +/Next 191 0 R +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 179 0 R +/Next 187 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 5669 0 R +/Prev 79 0 R +/Next 267 0 R +/First 183 0 R +/Last 263 0 R +/Count -21 +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 79 0 R +/Prev 171 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 79 0 R +/Prev 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 79 0 R +/Prev 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 79 0 R +/Prev 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 79 0 R +/Prev 155 0 R +/Next 163 0 R +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 79 0 R +/Prev 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 79 0 R +/Prev 147 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 79 0 R +/Prev 143 0 R +/Next 151 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 79 0 R +/Prev 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 79 0 R +/Prev 135 0 R +/Next 143 0 R +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 79 0 R +/Prev 131 0 R +/Next 139 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 79 0 R +/Prev 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 79 0 R +/Prev 123 0 R +/Next 131 0 R +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 79 0 R +/Prev 119 0 R +/Next 127 0 R +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 79 0 R +/Prev 115 0 R +/Next 123 0 R +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 79 0 R +/Prev 111 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 79 0 R +/Prev 107 0 R +/Next 115 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 79 0 R +/Prev 103 0 R +/Next 111 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 79 0 R +/Prev 99 0 R +/Next 107 0 R +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 79 0 R +/Prev 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 79 0 R +/Prev 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 79 0 R +/Prev 87 0 R +/Next 95 0 R +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 79 0 R +/Prev 83 0 R +/Next 91 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 79 0 R +/Next 87 0 R +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 5669 0 R +/Prev 71 0 R +/Next 179 0 R +/First 83 0 R +/Last 175 0 R +/Count -24 +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 71 0 R +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 5669 0 R +/Prev 63 0 R +/Next 79 0 R +/First 75 0 R +/Last 75 0 R +/Count -1 +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 63 0 R +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 5669 0 R +/Prev 55 0 R +/Next 71 0 R +/First 67 0 R +/Last 67 0 R +/Count -1 +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 55 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 5669 0 R +/Prev 47 0 R +/Next 63 0 R +/First 59 0 R +/Last 59 0 R +/Count -1 +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 47 0 R +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 5669 0 R +/Prev 7 0 R +/Next 55 0 R +/First 51 0 R +/Last 51 0 R +/Count -1 +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 7 0 R +/Prev 39 0 R +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 7 0 R +/Prev 35 0 R +/Next 43 0 R +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 7 0 R +/Prev 31 0 R +/Next 39 0 R +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 7 0 R +/Prev 27 0 R +/Next 35 0 R +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 7 0 R +/Prev 23 0 R +/Next 31 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 7 0 R +/Prev 19 0 R +/Next 27 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 7 0 R +/Prev 15 0 R +/Next 23 0 R +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 7 0 R +/Prev 11 0 R +/Next 19 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 7 0 R +/Next 15 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 5669 0 R +/Next 47 0 R +/First 11 0 R +/Last 43 0 R +/Count -9 +>> endobj +5670 0 obj << +/Names [(Doc-Start) 479 0 R (Item.1) 1160 0 R (Item.2) 1161 0 R (Item.3) 1162 0 R (a00036) 1566 0 R (a00037) 3302 0 R (a00038) 1267 0 R (a00039) 2467 0 R (a00040) 1539 0 R (a00041) 2486 0 R (a00042) 1366 0 R (a00043) 1367 0 R (a00044) 1540 0 R (a00045) 2469 0 R (a00046) 1567 0 R (a00047) 2466 0 R (a00048) 1237 0 R (a00049) 2465 0 R (a00050) 2468 0 R (a00051) 5136 0 R (a00077) 985 0 R (a00077_1d2f2751b0865045486c9aa59d0d0971) 3275 0 R (a00077_20541305548441e5dcb2e1e7e6f300eb) 3278 0 R (a00077_2391bb18db5f620e0e9fb848ae5ba5e9) 3265 0 R (a00077_27df2817055bc099821d96eb60a40b34) 3281 0 R (a00077_31471b5e27bda51832d0fa49bd6d9b54) 3251 0 R (a00077_5361ef75bfbdb469b5cc31f0060a2670) 3267 0 R (a00077_564bab93ef6a268a5de2fab885c1d32a) 3269 0 R (a00077_5e16ca335dfd7394527f602da879fca2) 3284 0 R (a00077_7a520a57d7d0541524f34a7685635597) 3272 0 R (a00077_cfd36e02c7498d766ff802575e981612) 3256 0 R (a00077_e0b137a3875ad12a99e5e3e0e177fd12) 3254 0 R (a00077_e707c39412e09d3a47f0b3c5dad33725) 3262 0 R (a00077_e80af46ceef63eab3c786525370ae720) 3259 0 R (a00078) 986 0 R (a00078_4b1b1436b50ed7638aece35f41421196) 3298 0 R (a00078_4da86e9feb5e5835eb15163c2cb61116) 3300 0 R (a00078_a9825b5977b2d4dec66e6bd09e6ae6ea) 3295 0 R (a00079) 987 0 R (a00079_1513a9e88921750d2a611b518f6fc207) 3311 0 R (a00079_9a84c69ec5a4705ccb1ca99fcd120add) 3309 0 R (a00080) 988 0 R (a00080_16a3a3056f44b7245ce085b937a269dd) 3339 0 R (a00080_447eb700ea7a185e0f155934995d49e5) 3329 0 R (a00080_468c04fff28e784f93ebc3f0849211dd) 3335 0 R (a00080_4c6f843219271d25766ee5969e435d1a) 3327 0 R (a00080_5e274a8f8b5fb2b3999c54fe27c76e46) 3333 0 R (a00080_6df929b448ea98bc44d41f5e96237bda) 3341 0 R (a00080_78f82878f3fd0e7401c7d7d3b3fefbef) 3337 0 R (a00080_94fcc9f5c47f419040d849ce58beae35) 3331 0 R (a00080_9dd8edeece221c853a4c4516bf1b01c2) 3321 0 R (a00080_c39694ece9526b84012f90f2bb00af9f) 3319 0 R (a00080_e261f08e1556287d241764fb2e99fc26) 3324 0 R (a00081) 989 0 R (a00081_164124d48fe85bc98d9a300382a5245d) 3351 0 R (a00081_5595902fd42d874e35a70206fad8f6d0) 3353 0 R (a00081_b42c7af6114fde5d21206a2e18a7d3ee) 3349 0 R (a00081_b5801722740492e69bcc73687476009f) 3355 0 R (a00082) 990 0 R (a00082_17aacf7c5e2046c1f3ab50faa1b2f7eb) 3365 0 R (a00082_19b82696bd84a803250cbf9812f2f125) 3377 0 R (a00082_31f25efccba9fd043047133d0d0ba5ab) 3369 0 R (a00082_a408ca8630154ebd039f37a828399f7b) 3380 0 R (a00082_a6bfaf327ce839ba70accd71014398d0) 3386 0 R (a00082_b973f2e16c2883a8a0164d716cce5a31) 3372 0 R (a00082_c3d1bfbb1abde31973c015de97ce2f84) 3375 0 R (a00082_d6bd03239291629676e4c0286ebb650f) 3383 0 R (a00082_fda184638130452f3570966acc5b97f9) 3388 0 R (a00083) 991 0 R (a00083_20fae11b540a561c622a0d74cb4b9f97) 3399 0 R (a00083_5e8637b1514d03eb3eb12dc9a502e27e) 3396 0 R (a00084) 992 0 R (a00084_c3fa0fa86689e3e7c039a16c16861dbe) 3408 0 R (a00085) 993 0 R (a00085_04833004cec509a41c502429df308e35) 3429 0 R (a00085_0560495c60c68d62617ff1f3d0c424a4) 3437 0 R (a00085_0bb4f34164e7207c2db26b77f23ccfff) 3420 0 R (a00085_3592a1f5ae100db2ed9c0810b41c7bc7) 3423 0 R (a00085_503c2994a4e52300516e2b820f0fc65b) 3427 0 R (a00085_5ed2615cec9e633d90ac5968771976eb) 3440 0 R (a00085_668cab7d54ff0a2fc2a2179ca06b0798) 3425 0 R (a00085_68204df6bde3e3c27271ebde10579a57) 3434 0 R (a00085_a312da7b5f6441140721ec7e55f345a8) 3431 0 R (a00086) 994 0 R (a00086_cca775e46d4405b7775b328f7694f7e7) 3451 0 R (a00087) 995 0 R (a00087_e8eb428c05bc1dee022246a3063d277c) 3470 0 R (a00087_fe557d333c06cf65f52023f45f5b0a3a) 3472 0 R (a00088) 714 0 R (a00088_0cd09beee671e7e9efb0b4aced10249e) 3485 0 R (a00088_0ef3ae2764714bf90620075c374c262e) 3497 0 R (a00088_1df6aa054ef2fa634ac4c6f418228285) 3488 0 R (a00088_2d9732cf5752d30bd11cb25dc7d0c8d3) 3522 0 R (a00088_3347ef1b6e8581402445d1a0280c7a14) 3500 0 R (a00088_4289c59840b128f2f6526e9da2711d47) 3525 0 R (a00088_70297b3e6d4eaae7bd828cb50bd1efe3) 3491 0 R (a00088_79510aa86d3fa0a0fc6cfc49b1da7279) 3482 0 R (a00088_8f6b08a5ba2a8d75ca7279e2056aa8c6) 3494 0 R (a00088_97f9e1fda815bfb8b1f4577c355ade20) 3528 0 R (a00088_a5f58074435cdc180f17de69651beebd) 3519 0 R (a00088_db7a3fadb68df5fdd37e8b91a2c751ea) 3503 0 R (a00088_e3aa9cc25e45b663e6aabc54c013019e) 3512 0 R (a00088_eb9fcbd3c9b0a795dcd63f33c323d65c) 3509 0 R (a00088_ef661afb3aa82f0437d2ed8d3c20be76) 3506 0 R (a00089) 996 0 R (a00089_aacd5fa1806e0f0dd0bc96dd36507ad8) 3537 0 R (a00090) 997 0 R (a00090_1abbbe7bc5d7d033c727691528b85b8d) 3549 0 R (a00090_b684c17bf48c8e3b3fcf97b06b4c6ee1) 3546 0 R (a00090_c9273cc1fcdaeeddc523ca9f34977e06) 3552 0 R (a00091) 998 0 R (a00091_0ec6a6cbcbfd191d393738c16d54e5e1) 3585 0 R (a00091_266ea23d75c83f15b915ce54100e51c5) 3594 0 R (a00091_308463cc7b3d45d2dbcdcedd4cde9bb9) 3570 0 R (a00091_4619e69ec86a47f6abe945b39ec7f63a) 3573 0 R (a00091_55be3d5413ce49c5c4f5576def12d7ec) 3576 0 R (a00091_55e7764a9f6ed05aaa98076b9f6770a5) 3579 0 R (a00091_7d472d8b3c41618d39c93c4ca92fb3f4) 3561 0 R (a00091_805f8fd5533a6d4b6793e0645005da4c) 3597 0 R (a00091_967def494c68cfc8a08d5a6c4dbbc25d) 3603 0 R (a00091_a3f2d9cb20290019b2743e8df31a2f8b) 3564 0 R (a00091_a6d51f3fa5da9b7f9cd37ae69600c04a) 3600 0 R (a00091_b15853725b233d526b291db0347d4ecd) 3567 0 R (a00091_babb9c2be394477af97f79507bcb4c86) 3582 0 R (a00091_e27f4949613fe3c1de5a839af01d99dd) 3588 0 R (a00091_fa0fe6ca88f692d22af70ff007411252) 3591 0 R (a00092) 999 0 R (a00092_4dc3294d67d705f7248ef57e4259424f) 3612 0 R (a00093) 1000 0 R (a00093_0c816f34c0187f2154c91a18d3ad87c8) 3661 0 R (a00093_1deb2899508216804823498a69378118) 3622 0 R (a00093_3983b45977630418d3038231aa8b68ed) 3642 0 R (a00093_3ad48284f7a91f78bb24096aad89056e) 3698 0 R (a00093_494ea6767a8a8fab7abe96b799d6c3b3) 3699 0 R (a00093_4f39f0fe6a820d260fe6cddf9ccaa832) 3686 0 R (a00093_5d8996950cdf3d8130cc3ad340eb9dff) 3657 0 R (a00093_6157452bdc9921f44b2e22e4b5969258) 3662 0 R (a00093_7675e6b9adbddbd545d3aac8ca092fbb) 3664 0 R (a00093_7a58d95f7f7827789ff52500e3d16c34) 3696 0 R (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) 3658 0 R (a00093_8082509468b2ac80ed7746aa1a5bc4f7) 3663 0 R (a00093_8da121d6e50992ec55778f9b2141552d) 3666 0 R (a00093_b4622e2599ff3a592db09219b2641682) 3665 0 R (a00093_b6e9a75167bdddd561373bc5b6ef501c) 3697 0 R (a00093_b93e351c3abba0c700b26b7b07e9527d) 3660 0 R (a00093_dc69abadd5aa07c7d74f9292db2cd93c) 3659 0 R (a00093_e292b8977f6b81265bf14e1676face3e) 3652 0 R (a00093_e9205a565ea3c911a785fc4e87c91a58) 3700 0 R (a00094) 1001 0 R (a00094_025ffa46b799fa6952719c499a3ae17c) 3740 0 R (a00094_0f27e16ddcf7199d514968204966f559) 3722 0 R (a00094_2541fae506eb111ff1be2372e0919839) 3743 0 R (a00094_619d9755a5d4aaabdb2e5e6ea4c1e0bf) 3752 0 R (a00094_6af8a59d0ab8967aacea749d6e59ac90) 3749 0 R (a00094_71721395f1c7c42b8bcc111b339bea7c) 3746 0 R (a00094_7a59f0dad059786238d8ab604630e7f3) 3716 0 R (a00094_7f0ab3fe3bcf1e3ed9f5950cb4474ec1) 3755 0 R (a00094_85d7f35662f7be20cd84e789a290dd4b) 3719 0 R (a00094_8cf0ca17b115ff2e3071b3fabcc43b53) 3710 0 R (a00094_8d4e08d051b35b1c710c3be5b8bbfa05) 3734 0 R (a00094_a81fff4836049cb3c018304d77337554) 3737 0 R (a00094_af7a8a5310ad945de38f5b3ac755ae7d) 3728 0 R (a00094_c8f124419a231f38bb6cdf5041757a27) 3731 0 R (a00094_dc7001682017599549f57771f4cd1b9a) 3761 0 R (a00094_dde3cf9a57445814d01b3c67da08afdb) 3764 0 R (a00094_e1e60d56ea87dfa09230e25ca5ecf2fc) 3707 0 R (a00094_e45b31a0a277dd5325ad2a332358b21b) 3725 0 R (a00094_e57281f5bef284bc9545834ef8ed4a96) 3713 0 R (a00094_f4a1d8cfbe270393a2de02b0c743e474) 3758 0 R (a00095) 1002 0 R (a00095_280a0c2a93544e597f92bbacf36ee1dc) 3781 0 R (a00095_4da1d7815516cd2b5bda3a66fdf05198) 3784 0 R (a00095_8a661a2d544100b82d0d14a1985083d5) 3775 0 R (a00095_981392e295db4d024eea95805c51c371) 3778 0 R (a00095_c8afa29e0aa5e789d6929b366d98ba56) 3787 0 R (a00096) 1003 0 R (a00096_47140aa52cb9e6a2de38fdfc5da08df1) 3802 0 R (a00096_51bbbe3099c10ef26119ddc2aa51e35e) 3814 0 R (a00096_569382bc53aa64c227e57efe88fe13ac) 3805 0 R (a00096_6f8c65cfc8242197bcc3cb5b4735b16f) 3811 0 R (a00096_8587178a29882482be20c2822b402b96) 3808 0 R (a00096_858f970feb7462871c814953697a8ad7) 3835 0 R (a00096_a80e8d0fc768525fa3bfb3d4e4cf260d) 3820 0 R (a00096_b20096ae4953caaa42f6bb2373c4494c) 3826 0 R (a00096_be2c98748e180c1747823cd2fb8ecf0e) 3823 0 R (a00096_c92d2f194f096e84791f95d7e8f0ba92) 3832 0 R (a00096_e82f68cb91d8688a619d55d2a8572979) 3829 0 R (a00096_ed119a030ebd3bf7c30a12071c27d441) 3799 0 R (a00096_f1684ad96b8acf54154688df3883b801) 3796 0 R (a00096_f20186ef441ef5b600e8544a0f2d8d81) 3817 0 R (a00097) 1004 0 R (a00097_134ec55c3d5abaebfed4ff8edfedf1ea) 3862 0 R (a00097_2fca02673894f222b01ad2d3a4d7dd79) 3870 0 R (a00097_5960d82e7aca2986b8509a0d87d6cbc8) 3846 0 R (a00097_5a3116623c6a7da7c82db6c301ae0da3) 3865 0 R (a00097_606d2729bf411ade69044828403a72af) 3868 0 R (a00097_6925d46b2819adb474a5f0036f02dd7d) 3852 0 R (a00097_7092781c50dcad50f473888585c85b83) 3855 0 R (a00097_8ae6395641b7752dce47881e20cee970) 3849 0 R (a00097_a6487b9c1c773b32656065d0e19bf142) 3858 0 R (a00097_e87913860c6b05c6e6b060639b950098) 3860 0 R (a00097_fb60f42593d305ea36d9b4303722696e) 3873 0 R (a00100) 1064 0 R (a00101) 1065 0 R (a00102) 1066 0 R (a00102_2e52037249bb98d7bbecf42e275beb07) 3926 0 R (a00102_4350350ce0d4595876743d4c0a720bcc) 3918 0 R (a00102_55735650f879293d9b7b5fda6753d147) 3942 0 R (a00102_6a327c0ffd40f69fbcd5f01f12e5745c) 3922 0 R (a00102_6aaa9da3d0f8d4c0799516d46d939942) 3934 0 R (a00102_72d99b1623afa14bd58c667b748c2ddc) 3928 0 R (a00102_7bf0c086c7c41c12cc63324327932d91) 3946 0 R (a00102_876c82c946543cd70c141e41417138e0) 3944 0 R (a00102_8ee5e2c8e517d6e4f2198057f81e93c6) 3936 0 R (a00102_96eb4534b574ece96ed36806039f73d3) 3916 0 R (a00102_9f6c329c04baba17fe0f5b2a6597d713) 3932 0 R (a00102_bf4401501f1389872141a78b63f325a3) 3940 0 R (a00102_c72f8777ccc45ae274449ea7a9f3de04) 3930 0 R (a00102_dd685a0f8b5e76a2687cc0f306813bfb) 3924 0 R (a00102_e7250008b68d1909d54040515eef8ebb) 3920 0 R (a00102_ee60b8757bacab269b0ccd7c240bf01d) 3938 0 R (a00103) 1067 0 R (a00104) 1068 0 R (a00105) 1069 0 R (a00106) 1070 0 R (a00107) 1071 0 R (a00108) 1072 0 R (a00109) 1073 0 R (a00110) 1074 0 R (a00111) 1075 0 R (a00112) 1076 0 R (a00113) 1077 0 R (a00114) 1078 0 R (a00120) 1079 0 R (a00121) 1080 0 R (a00123) 1081 0 R (a00124) 1082 0 R (a00125) 1083 0 R (a00127) 1084 0 R (a00128) 1085 0 R (a00129) 1086 0 R (a00130) 1087 0 R (a00131) 1088 0 R (a00131_1273664aba3e6a2a46e87dcb1a5f19ad) 4480 0 R (a00131_1d5ce7047650f3ecee0814dbc8714099) 4488 0 R (a00131_5320d4457a472d8888ec1905bc0e0a1c) 4475 0 R (a00131_5f2e1fcf0055d20ce17664b1027bb9eb) 4477 0 R (a00131_692d80636342d564422ccd9296ad568d) 4491 0 R (a00131_88460bea09a462d0e22511cb567eee14) 4484 0 R (a00131_890e822616a6839dfbf51dcb591b8e99) 4482 0 R (a00132) 1111 0 R (a00132_1273664aba3e6a2a46e87dcb1a5f19ad) 4506 0 R (a00132_1d5ce7047650f3ecee0814dbc8714099) 4512 0 R (a00132_692d80636342d564422ccd9296ad568d) 4515 0 R (a00132_88460bea09a462d0e22511cb567eee14) 4508 0 R (a00132_890e822616a6839dfbf51dcb591b8e99) 4519 0 R (a00134) 1112 0 R (a00135) 1113 0 R (a00135_534d9e416324fb8ecca6b9cb4b1f6a6a) 4540 0 R (a00136) 1114 0 R (a00137) 1115 0 R (a00138) 1116 0 R (a00139) 1117 0 R (a00140) 1118 0 R (a00141) 1119 0 R (a00142) 657 0 R (a00142_authors) 1137 0 R (a00142_g155cba6121323726d02c00284428fed6) 1235 0 R (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) 1148 0 R (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) 1144 0 R (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) 1196 0 R (a00142_g7b04a0035bef29d905496c23bae066d2) 1146 0 R (a00142_g7b5319b5b65761a845fcd1500fde4cdc) 1215 0 R (a00142_g905451249dca72ce0385bf2a9ff178ee) 1233 0 R (a00142_g99e43010ec61327164466aa2d902de45) 1145 0 R (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) 1197 0 R (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) 1219 0 R (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) 1147 0 R (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) 1232 0 R (a00142_gcfae9053e5c107a1aed6b228c917d2ea) 1217 0 R (a00142_ge3c821e3a388615528efda9d23c7d115) 1236 0 R (a00142_ge469332907e0617d72d5e2dd4297119d) 1221 0 R (a00142_ge6bae7dc0225468c8a5ac269df549892) 1143 0 R (a00142_gfa82b860a64b67d25ab3abc21811896f) 1234 0 R (a00142_pt-autovars) 1153 0 R (a00142_pt-desc) 1141 0 R (a00142_pt-impl) 1157 0 R (a00142_pt-scheduling) 1155 0 R (a00143) 649 0 R (a00143_g41bf109b6a45328d5744c0a76563fb6c) 1312 0 R (a00143_g54a466311575a727830a92a6c3621cb2) 1305 0 R (a00143_g5eced097547fd3fac4ba2a255493d921) 1307 0 R (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) 1309 0 R (a00144) 651 0 R (a00144_g12b467f314489259dd718228d0827a51) 1341 0 R (a00144_g20bc87e5c063c3f4b01547be6e5a0148) 1338 0 R (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) 1345 0 R (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) 1342 0 R (a00144_g5323320b7316647042016f17c4e881be) 1344 0 R (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) 1336 0 R (a00144_geb79c914cf137e6d27fd7583e5a66679) 1343 0 R (a00145) 652 0 R (a00145_g22f140b02c354dfebcc7ad481c3bcd68) 1382 0 R (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) 1378 0 R (a00146) 653 0 R (a00146_g1024f8a5fa65e82bf848b2e6590d9628) 678 0 R (a00146_g2c64c8c36bc84f9336f6a2184ea51883) 1409 0 R (a00146_ga4360412ee9350fba725f98a137169fe) 677 0 R (a00146_gb81e78f890dbbee50c533a9734b74fd9) 1411 0 R (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) 1407 0 R (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) 1408 0 R (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) 1410 0 R (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) 1394 0 R (a00147) 655 0 R (a00147_g04b053a623aac7cd4195157d470661b3) 743 0 R (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) 804 0 R (a00147_g1a1bc437c09ddef238abab41d77c3177) 716 0 R (a00147_g26a14b8dae3f861830af9e7cf1e03725) 715 0 R (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) 750 0 R (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) 745 0 R (a00147_g64a238a5c02640a7a4aef004163aeb47) 1471 0 R (a00147_g79c4110211247df3fb30b8cf1c4c02af) 1520 0 R (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) 749 0 R (a00147_g8096b0c4b543dc408f4dd031ddae7240) 773 0 R (a00147_g81ac47cee1c18f6aa479044069db7ca3) 805 0 R (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) 1483 0 R (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) 746 0 R (a00147_ga20812098a4663c8a9fc4ce8e95391b6) 1516 0 R (a00147_ga87feebc7cffd4d8300e776cf64e4fec) 1492 0 R (a00147_ga8933ad15a2e2947dae4a5cff50e6007) 744 0 R (a00147_ga9de254b8aa308eb4aab17efdde622d2) 1484 0 R (a00147_gaa585784b0914cac1d37f07f85457008) 1518 0 R (a00147_gb5fecbc62edd128012cea0f47b57ab9f) 742 0 R (a00147_gdb971fb1525d0c5002f52125b05f3218) 772 0 R (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) 771 0 R (a00147_gde6634974418e3240c212b9b16864368) 1485 0 R (a00147_ge5ab69d40013e6cf86ef1763c95d920e) 1517 0 R (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) 1464 0 R (a00147_gef6c4140c632b6a406779342cf3b6eb6) 747 0 R (a00147_gf2dbaceb10c67783a115075b5b6d66df) 1515 0 R (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) 748 0 R (a00148) 1654 0 R (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) 1668 0 R (a00148_g165b603ec150e26efec7be199c9c2901) 1683 0 R (a00148_g210e629f7252e4bc8458cbdf260b3318) 1677 0 R (a00148_g22fa0681cd463191d7a01fe85d86996f) 1680 0 R (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) 1675 0 R (a00148_g69a7a4951ff21b302267532c21ee78fc) 1617 0 R (a00148_g6b16e0bac41821c1fbe0c267071642f0) 1678 0 R (a00148_g769512993b7b27271909d6daa4748b60) 1676 0 R (a00148_g87f0b54ade0d159fba495089128a4932) 774 0 R (a00148_g969d7fff37a979737da045e0d538a9bd) 1679 0 R (a00148_ga22b04cac8cf283ca12f028578bebc06) 1618 0 R (a00148_ge23534479ead15af8ff08ace26a47fb5) 1682 0 R (a00148_gffcd2fbe181e2aaefbf970551c302af5) 1681 0 R (a00149) 654 0 R (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) 1748 0 R (a00150) 1760 0 R (a00150_g013c3a06a8b58589a77f4a3442f89c2a) 1923 0 R (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) 1809 0 R (a00150_g04b053a623aac7cd4195157d470661b3) 1997 0 R (a00150_g1215163245304bad20d6c5608ad75ab7) 1880 0 R (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) 1755 0 R (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) 1886 0 R (a00150_g1320fd0006a2f70138bc2d0018dda829) 1872 0 R (a00150_g13dfcb4a5f920e108253ade527a66cc2) 1835 0 R (a00150_g1425d4a0c2760adb653a04c0fb137a8d) 1878 0 R (a00150_g15f2617f7dc1713f9d10282125c6027b) 1862 0 R (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) 1827 0 R (a00150_g17d111686f98e4c09db73a770ac3f1a4) 1858 0 R (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) 1896 0 R (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) 1900 0 R (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) 1519 0 R (a00150_g207d17b633cd095120a74bc1f2257b17) 1892 0 R (a00150_g20ceef9d0868d391c2f33041b02cb1f1) 1926 0 R (a00150_g20df5c82f2a15a508c19e505b5d9de2b) 2014 0 R (a00150_g210f227119fc972e6222c9cb452e15a9) 1981 0 R (a00150_g22f140b02c354dfebcc7ad481c3bcd68) 1990 0 R (a00150_g236d5c7872f59c8fe7b701c7252b976e) 2042 0 R (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) 1906 0 R (a00150_g266263ac78a1361a2b1d15741d3b0675) 1935 0 R (a00150_g28eda870cff3d8e3cf2949e6f57a502b) 1817 0 R (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) 2049 0 R (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) 679 0 R (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) 1805 0 R (a00150_g3237be0d9ec457de0177689ee23c0d5c) 2011 0 R (a00150_g359951eecd80541c2101f628a9da9146) 1841 0 R (a00150_g39ce739bd352d7e348e37395ce903e43) 1793 0 R (a00150_g42288d5c3cf4b10becefec657f441e54) 1902 0 R (a00150_g4309376690872fa4beb4f025f5cc199b) 1913 0 R (a00150_g44b3b1ab31a403ba28ec135adfcbefef) 1874 0 R (a00150_g499bb98a0b4ae9a98553ede81317606d) 2023 0 R (a00150_g4cc3e223b63f27b546d62e9a258dba5a) 1894 0 R (a00150_g517c770991459cc62dc009c0d3875c6a) 1843 0 R (a00150_g561b8eda32e059d4e7397f776268cc63) 1998 0 R (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) 1799 0 R (a00150_g5b5615dc240daed20949c0fded2b4679) 2033 0 R (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) 1888 0 R (a00150_g5c97ae587595b5444be80f5ecc1d3382) 1813 0 R (a00150_g5ca559def464ef20d8b1f7d32f2f160d) 1870 0 R (a00150_g6020613f5062417d9811cfa837215c83) 1868 0 R (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) 1898 0 R (a00150_g64d9affc680a445d708234e70450477b) 1829 0 R (a00150_g6832e4d2d046536b6472f7ac92340f68) 681 0 R (a00150_g691688604655ea8943d15f14c60027d8) 1884 0 R (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) 1854 0 R (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) 1791 0 R (a00150_g6f2b90c597ec23f39ec716ccec11233c) 1860 0 R (a00150_g7023a34ba9e9d03b5fbedbcb32924453) 1989 0 R (a00150_g788ffac72342f6172343d7f8099cbe1a) 1999 0 R (a00150_g79c4110211247df3fb30b8cf1c4c02af) 1993 0 R (a00150_g7d3673f52f5846b6961d23b150decd54) 2008 0 R (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) 1904 0 R (a00150_g85b65e38aa74eba18979156f97a94a87) 680 0 R (a00150_g88e60aa2cf23e1c65d630701db08c743) 1866 0 R (a00150_g8af482dec973db57d8b3bd3f69461488) 1821 0 R (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) 1910 0 R (a00150_g9c0814ed491fa452ec97910c0728d410) 1921 0 R (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) 1992 0 R (a00150_g9ebb4dac683163840eab9c6c41ad61f7) 1929 0 R (a00150_g9ee50a40597e67fce96541ab56c3b712) 2000 0 R (a00150_g9f1822e1d231235edacad691f3cb7bbb) 1882 0 R (a00150_ga05a3dde2048480fa3ab2a5961898d18) 2029 0 R (a00150_ga22b04cac8cf283ca12f028578bebc06) 1996 0 R (a00150_ga4c4310e54f18541b09e1e251fe7b22d) 1801 0 R (a00150_ga533c394b1fa0030205534befa31c525) 1825 0 R (a00150_ga5e3c856b86725125d19fccc34cd9eb5) 1819 0 R (a00150_gaa585784b0914cac1d37f07f85457008) 1994 0 R (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) 1807 0 R (a00150_gad0321f4c570f9983c6de81ece3ddc20) 1852 0 R (a00150_gae59b70658f28ee6e998eaaab05e423f) 1823 0 R (a00150_gb4ef6b00924990e7a293f66715b6d1d1) 2005 0 R (a00150_gb6683dd83fe1c8de9a24086d4b69e907) 1944 0 R (a00150_gb81e78f890dbbee50c533a9734b74fd9) 1453 0 R (a00150_gb9435261753469accec0c9bf8a5a2686) 1917 0 R (a00150_gb948296aea6b6b3aa1f156799c4d479c) 1856 0 R (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) 1991 0 R (a00150_gc84f499cba8a02fc0e306c10b2acabf0) 1876 0 R (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) 1833 0 R (a00150_gd58231410d58e34b455328b888a9e73c) 1890 0 R (a00150_gd605357e29affb0d3104294c90f09905) 1811 0 R (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) 1995 0 R (a00150_gde29ec025e6754afd8cc24c954a8dec8) 1837 0 R (a00150_ge0825474feee11b4e038bfe71757875f) 1847 0 R (a00150_geb533744817cf6695d75293369c2248b) 1984 0 R (a00150_gee37386b2ab828787c05227eb109def7) 1864 0 R (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) 1815 0 R (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) 1797 0 R (a00150_gf703683056d2bfa5c81fa157dcb20fe2) 1406 0 R (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) 1845 0 R (a00150_gf84316f469ce0726985c0702db49a989) 1803 0 R (a00150_gf848ce44c810492e7a35c2d23a429f45) 1795 0 R (a00150_gfff0ed43201bf1e2020de1a0d6cac070) 1831 0 R (a00151) 1777 0 R (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) 2184 0 R (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) 2193 0 R (a00151_g6832e4d2d046536b6472f7ac92340f68) 2188 0 R (a00151_g85b65e38aa74eba18979156f97a94a87) 2194 0 R (a00151_gb6683dd83fe1c8de9a24086d4b69e907) 2192 0 R (a00152) 1775 0 R (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) 2220 0 R (a00152_g058a8e6025f67b021862281f1911fcef) 2257 0 R (a00152_g06ba7b414e718081998f2814090debf1) 2228 0 R (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) 2232 0 R (a00152_g2d9d28afa353f662b9bb5234fc419f72) 2239 0 R (a00152_g3e1562e8a6de32268e5df92a52152f91) 2218 0 R (a00152_g499bb98a0b4ae9a98553ede81317606d) 2250 0 R (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) 1420 0 R (a00152_g737337d6a51e31b236c8233d024138a8) 2224 0 R (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) 2226 0 R (a00152_g902c4a360134096224bc2655f623aa5f) 2243 0 R (a00152_g9f2196e2705036869611962425e404bf) 2235 0 R (a00152_gbb558f3a9b1ec015e83c314aba694e35) 2222 0 R (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) 2230 0 R (a00153) 650 0 R (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) 2371 0 R (a00153_g15de27b044603284f68db05a378235a7) 2344 0 R (a00153_g196379ceb1219a99f4495e41ccc9bbfb) 2324 0 R (a00153_g21664b7441cfa37d280228d23316d609) 2370 0 R (a00153_g24aa5bc36939cc9a0833e1df01478a7e) 2346 0 R (a00153_g285a80366aed9428f64282b8d13c918b) 2374 0 R (a00153_g2bc3b489923793759526a3181eb667fa) 2349 0 R (a00153_g3001114ddadc1f2ada5cc9a780e866fc) 2284 0 R (a00153_g3090117ef3ff5775b77cb1960e442d07) 2351 0 R (a00153_g3589822ecb9d9c4145209756396b8a6b) 2368 0 R (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) 2276 0 R (a00153_g41aa744caa46913b3b3aedb2a4e78546) 713 0 R (a00153_g4910467b83a639f06739c82cd362037e) 2347 0 R (a00153_g4caecabca98b43919dd11be1c0d4cd8e) 1321 0 R (a00153_g51195ea7cd5aa387a87f9d3b23905b62) 2314 0 R (a00153_g51c1cd531ff0afb81620151f2248cd21) 2343 0 R (a00153_g529648ad3b0b327a43689b0f1779ff55) 2290 0 R (a00153_g5726142fec34f35fb9ea19e5a45975c6) 2369 0 R (a00153_g5b9dba2123705bce1ce95c3deca0bdad) 2348 0 R (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) 2345 0 R (a00153_g6836f92f3692f3a4429eb599db40cbae) 2388 0 R (a00153_g69646a81a922033c5281445a71f8ffed) 2395 0 R (a00153_g727459e5c4f777543c81ffffa3df3f0c) 2313 0 R (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) 2286 0 R (a00153_g77570ac4fcab86864fa1916e55676da2) 1385 0 R (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) 2342 0 R (a00153_g9069474ea570fd78c481aa164317dbaf) 2315 0 R (a00153_g92f3344ec8ca46893163399c89fafed5) 2319 0 R (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) 2278 0 R (a00153_g9dd44616d41cef74d3beb51d8be5ecec) 2288 0 R (a00153_ga92afb113e122f860392bfbd385f842e) 2396 0 R (a00153_gac0de06236b02659460445de30776e00) 2340 0 R (a00153_gb1455b27c06532a399cf06d2c1d6d08d) 2350 0 R (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) 2373 0 R (a00153_gb61381673de27f31848c5396bf0b338e) 2317 0 R (a00153_gb6e04358481bd2057524fb874cfa472b) 2386 0 R (a00153_gc3882366feda1cb759ccbfe98327a7db) 2307 0 R (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) 2282 0 R (a00153_gcacc406c3bf7d0e00412e4c946252739) 2280 0 R (a00153_gdcf372ff9748996f7c05e9822a615384) 2310 0 R (a00153_ge0f8cbeca9731af2171ffd37e79de893) 2316 0 R (a00153_ge6f4a2453dbd8bc60e6a82774552366a) 2372 0 R (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) 2341 0 R (a00153_gf963fdea2b75d27ef31e92d1d01359ee) 2318 0 R (a00154) 1776 0 R (a00154_gb4b17aaf20d630f30919b19937b966a3) 2497 0 R (a00155) 1165 0 R (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) 2513 0 R (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) 2526 0 R (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) 2511 0 R (a00155_g3983e0c026396d5c4506779d770007ba) 2524 0 R (a00155_g44311ecc30759ca38b4069182247bdae) 2509 0 R (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) 2517 0 R (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) 2515 0 R (a00156) 2532 0 R (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) 2551 0 R (a00156_g6d71dececfce707c668e6257aad5906e) 2554 0 R (a00156_gcb807bd57e5489b386b876af5c1f163a) 2553 0 R (a00156_gedaf3e48c2b04229b85455fb948468d6) 2552 0 R (a00157) 2550 0 R (a00157_g78ab77b57cf2e00089f0a3a22508524c) 2601 0 R (a00157_ge3ced0551b26c9b99cb45a86f34d100a) 2595 0 R (a00157_ge5b7160f2e653725ba5e2024c3cb7bff) 2603 0 R (a00158) 656 0 R (a00158_g10d9a9201cba1a6db623284c475c6cea) 2674 0 R (a00158_g26ae707402e494f3895a9f012a93ea29) 2628 0 R (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) 2682 0 R (a00158_g3178402dd725776415bf9745e7bf92ba) 2662 0 R (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) 2667 0 R (a00158_g4a264bb64ae706d53f572b1d9e4037a2) 2680 0 R (a00158_g4ab2de595d36e9e55dd61f6ecd139162) 2678 0 R (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) 2681 0 R (a00158_g5d56800f82bfc7bbf53bb4a659589812) 2675 0 R (a00158_g70d236d1cf34b4e21836edda60247b70) 2629 0 R (a00158_g84901a5aa60040e96d272a69977edd22) 2626 0 R (a00158_ga87ff36af81990e6ffe20d76d5e4606f) 2656 0 R (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) 2673 0 R (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) 2677 0 R (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) 2679 0 R (a00158_gd895ab98c54d9966ff554aa873151751) 2676 0 R (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) 2627 0 R (a00159) 2757 0 R (a00159_g720ac440c7b24bdd07c53ba146e36fb2) 2772 0 R (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) 2770 0 R (a00159_gceb952d27de8125d5146ac0bee325b8f) 2787 0 R (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) 2788 0 R (a00159_gf31774d02a69fd3f1c2b282454438cba) 2785 0 R (a00159_gfe5e93119035e14cc485760a176249ba) 2786 0 R (a00160) 1315 0 R (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) 2834 0 R (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) 2838 0 R (a00160_g3191066cf8f76bd00b6843b77c37068f) 2858 0 R (a00160_g3d768e989e308144190ae1a5ddfa9726) 2832 0 R (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) 2854 0 R (a00160_g6d9751d534453425c7a5a215d1d4414c) 2856 0 R (a00160_g7c5359305008e9183b18d6ab75f568bf) 2841 0 R (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) 2849 0 R (a00160_gdf916e0c752f5cda70d0bddb2be422ba) 2857 0 R (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) 2855 0 R (a00160_gecf13b8dc783db2202ca5c34fe117fc3) 2836 0 R (a00161) 1316 0 R (a00161_g029256bc17a12e1e86781887e11c0c7d) 2901 0 R (a00161_g17ccd786400fd08b941e11046df1668f) 2917 0 R (a00161_g28cf9765e4b57451af559ab988ad7160) 2915 0 R (a00161_g3212e70c55244608ac16316888c354f0) 2905 0 R (a00161_g34b924954ba5707d536df28d71a80d39) 2911 0 R (a00161_g37e3103b9591790d484a450525739661) 2929 0 R (a00161_g64807ba7c221ddf735572d05021539f2) 2921 0 R (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) 2907 0 R (a00161_g9e97c58fe35f750ad192774be9408ac8) 2913 0 R (a00161_gb1fc692a2700b7a51517724364683f67) 2928 0 R (a00161_gbc331f73107958428bf1c392ba19b6f4) 2923 0 R (a00161_gcff75c8c930abd6ff168e85373a4eb92) 2903 0 R (a00161_gf0349a8481565e80f55a751e2b408d6d) 2930 0 R (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) 2909 0 R (a00162) 1317 0 R (a00162_g123c95a7bb55143cabba92446ce8f513) 3020 0 R (a00162_g19709735f29dafeabb91e0882231f9f1) 2968 0 R (a00162_g26440a35353cb457747a4cea372c62e9) 2956 0 R (a00162_g30fe27cba3c14ae7f9a7f118144af43a) 2958 0 R (a00162_g3212e70c55244608ac16316888c354f0) 2962 0 R (a00162_g3318dec654781e9d6d8ec873636660c6) 2984 0 R (a00162_g3a4852e2372e34e1c0142d1147fbe027) 2988 0 R (a00162_g4647b76d0ef50a5305505041f5775a37) 2993 0 R (a00162_g5025948dd998f65a13a375a37aa5edf5) 2972 0 R (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) 3001 0 R (a00162_g57aca709a33690cd4fb73fe199fa1bdd) 2978 0 R (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) 3013 0 R (a00162_g6b2d00412304e2d95e7b853cce5858b0) 2982 0 R (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) 2964 0 R (a00162_g7e904ab59f7ee134cf3218a8219e7e29) 2970 0 R (a00162_g82ff99d50221f7c17df57dc6092ffc97) 3007 0 R (a00162_g86beee1f69d05b16022dfb430470e9ce) 3016 0 R (a00162_g8b600918f84783490fd791ce773175ab) 2980 0 R (a00162_g984c4a8b65a3cb35460b073a40568c25) 3003 0 R (a00162_gaa60ca995565b799bb958c806e933665) 2990 0 R (a00162_gaaaaf66ea67900c36d01136d5bad1168) 2976 0 R (a00162_gbfc1d8d15852318927cda30e1bc0470a) 2974 0 R (a00162_gd1f18f739da7703628c3663209463a0d) 3021 0 R (a00162_ge28f6cb60e86088d8886d0f804b4f37c) 2960 0 R (a00162_ge429c985be88ed048f382511c9ff00de) 2966 0 R (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) 3019 0 R (a00162_gf784a76fe619452eddf87e6376a4bf9d) 2986 0 R (a00163) 1318 0 R (a00163_g03070adbf8faab0f34f87c1270964306) 3047 0 R (a00163_gb97849f0d3ea858eee790b69591e6427) 3049 0 R (a00163_ge28f6cb60e86088d8886d0f804b4f37c) 3044 0 R (a00164) 1319 0 R (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) 3134 0 R (a00164_g1d34be506a61db90dd7829117efdf8cf) 3120 0 R (a00164_g23705efb9077187881f094fc9be13bde) 3102 0 R (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) 3135 0 R (a00164_g31be289fd8ec3fe09b0088165d13976d) 3072 0 R (a00164_g3212e70c55244608ac16316888c354f0) 3090 0 R (a00164_g38af81a4c9884ce89803fc3e52383112) 3088 0 R (a00164_g3caacabb2fe1c71921e1a471719ccbd2) 3116 0 R (a00164_g40fb1fb2d990ce04ae9bbee275627c03) 3082 0 R (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) 3133 0 R (a00164_g4433d3af16ea083a81576d0f18ba57c9) 3132 0 R (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) 3078 0 R (a00164_g5a5bfd7e9060903893481db90645187b) 3068 0 R (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) 3101 0 R (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) 3092 0 R (a00164_g71e1b022f7b7fa3a154f19372b239935) 3094 0 R (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) 3080 0 R (a00164_g8714af98a550f10dc814db92b08d1b0d) 3074 0 R (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) 3122 0 R (a00164_gc4357cec23abca29d2bb885803625a6a) 3076 0 R (a00164_gc4b119801e50cc1824498a1cdf9adc37) 3100 0 R (a00164_gd895686859ae7d178d31be04eb0a1a97) 3086 0 R (a00164_gda99954e0f6905091885934e86c278cc) 3084 0 R (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) 3097 0 R (a00164_ge28f6cb60e86088d8886d0f804b4f37c) 3070 0 R (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) 3103 0 R (a00164_gf8f12c820cc08da32aa62898bfc02db3) 3104 0 R (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) 3131 0 R (a00165) 1320 0 R (a00165_g14e276fa8e765f774f4162619f1c8fc1) 3220 0 R (a00165_g1dbc635a2924806f42d7e3273a6a69b5) 3228 0 R (a00165_g3212e70c55244608ac16316888c354f0) 3208 0 R (a00165_g648ddfb2dde2cc55034e4e0ea41cb6d1) 3225 0 R (a00165_g71e1b022f7b7fa3a154f19372b239935) 3210 0 R (a00165_g79f9a50c2cccb967d38a2eeb45d2fd75) 3214 0 R (a00165_g7d7920c1e51cc4eef80206ebd6fee3f4) 3204 0 R (a00165_g820fb27c50e7bb4ac6d9eae1b06630a5) 3218 0 R (a00165_g8a645f8831837320c4e0c704e871abcf) 3206 0 R (a00165_gc364305cee969a0be43c071722b136e6) 3229 0 R (a00165_ge3f8f7deae69854853b0c8ebb82c380d) 3212 0 R (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) 3223 0 R (a00165_gf7dd2757d1e766f65b01ba7c91c660a0) 3216 0 R (a00171) 3890 0 R (a00172) 3905 0 R (a00173) 3956 0 R (a00174) 3985 0 R (a00175) 4017 0 R (a00176) 4037 0 R (a00177) 4059 0 R (a00178) 4075 0 R (a00179) 4104 0 R (a00180) 4123 0 R (a00181) 4150 0 R (a00182) 4182 0 R (a00183) 4205 0 R (a00184) 4219 0 R (a00185) 4240 0 R (a00187) 4258 0 R (a00188) 4282 0 R (a00190) 4299 0 R (a00191) 4316 0 R (a00192) 4324 0 R (a00194) 4354 0 R (a00195) 4403 0 R (a00196) 4447 0 R (a00197) 4466 0 R (a00198) 4495 0 R (a00199) 4521 0 R (a00201) 4531 0 R (a00202) 4576 0 R (a00203) 4670 0 R (a00204) 4857 0 R (a00205) 4878 0 R (a00206) 4902 0 R (a00207) 4919 0 R (a00208) 4977 0 R (chapter*.1) 500 0 R (chapter.1) 6 0 R (chapter.2) 46 0 R (chapter.3) 54 0 R (chapter.4) 62 0 R (chapter.5) 70 0 R (chapter.6) 78 0 R (chapter.7) 178 0 R (chapter.8) 266 0 R (chapter.9) 406 0 R (index) 632 0 R (main_api) 685 0 R (main_appevents) 694 0 R (main_arch) 668 0 R (main_checksums) 669 0 R (main_closing) 729 0 R (main_congestioncontrol) 862 0 R (main_connect) 759 0 R (main_connstate) 697 0 R (main_delack) 871 0 R (main_errors) 734 0 R (main_example1) 768 0 R (main_example2) 784 0 R (main_example3) 791 0 R (main_example4) 793 0 R (main_example5) 802 0 R (main_example6) 812 0 R (main_examples) 767 0 R (main_flowcontrol) 860 0 R (main_icmp) 840 0 R (main_ip) 834 0 R (main_ipbroadcast) 838 0 R (main_ipreass) 836 0 R (main_listeb) 848 0 R (main_listen) 741 0 R (main_longarith) 673 0 R (main_mainloop) 662 0 R (main_memory) 676 0 R (main_performance) 866 0 R (main_polling) 738 0 R (main_protoimpl) 828 0 R (main_rawapi) 688 0 R (main_recvdata) 706 0 R (main_rexmit) 854 0 R (main_rexmitdata) 725 0 R (main_rttest) 852 0 R (main_senddata) 711 0 R (main_slidingwindow) 850 0 R (main_tcp) 842 0 R (main_tcpip) 661 0 R (main_uIPIntroduction) 647 0 R (main_urgdata) 864 0 R (page.1) 478 0 R (page.10) 797 0 R (page.100) 2738 0 R (page.101) 2752 0 R (page.102) 2756 0 R (page.103) 2792 0 R (page.104) 2813 0 R (page.105) 2823 0 R (page.106) 2862 0 R (page.107) 2881 0 R (page.108) 2893 0 R (page.109) 2934 0 R (page.11) 809 0 R (page.110) 2946 0 R (page.111) 2999 0 R (page.112) 3025 0 R (page.113) 3035 0 R (page.114) 3054 0 R (page.115) 3108 0 R (page.116) 3139 0 R (page.117) 3155 0 R (page.118) 3172 0 R (page.119) 3187 0 R (page.12) 817 0 R (page.120) 3194 0 R (page.121) 3233 0 R (page.122) 3242 0 R (page.123) 3246 0 R (page.124) 3290 0 R (page.125) 3306 0 R (page.126) 3316 0 R (page.127) 3346 0 R (page.128) 3361 0 R (page.129) 3393 0 R (page.13) 825 0 R (page.130) 3404 0 R (page.131) 3414 0 R (page.132) 3446 0 R (page.133) 3462 0 R (page.134) 3478 0 R (page.135) 3518 0 R (page.136) 3534 0 R (page.137) 3543 0 R (page.138) 3558 0 R (page.139) 3609 0 R (page.14) 833 0 R (page.140) 3619 0 R (page.141) 3670 0 R (page.142) 3704 0 R (page.143) 3770 0 R (page.144) 3793 0 R (page.145) 3841 0 R (page.146) 3879 0 R (page.147) 3883 0 R (page.148) 3894 0 R (page.149) 3909 0 R (page.15) 846 0 R (page.150) 3960 0 R (page.151) 3967 0 R (page.152) 3989 0 R (page.153) 3999 0 R (page.154) 4021 0 R (page.155) 4041 0 R (page.156) 4049 0 R (page.157) 4063 0 R (page.158) 4079 0 R (page.159) 4108 0 R (page.16) 859 0 R (page.160) 4127 0 R (page.161) 4154 0 R (page.162) 4162 0 R (page.163) 4186 0 R (page.164) 4199 0 R (page.165) 4209 0 R (page.166) 4223 0 R (page.167) 4244 0 R (page.168) 4262 0 R (page.169) 4286 0 R (page.17) 870 0 R (page.170) 4303 0 R (page.171) 4320 0 R (page.172) 4328 0 R (page.173) 4358 0 R (page.174) 4383 0 R (page.175) 4407 0 R (page.176) 4434 0 R (page.177) 4451 0 R (page.178) 4470 0 R (page.179) 4499 0 R (page.18) 876 0 R (page.180) 4525 0 R (page.181) 4535 0 R (page.182) 4580 0 R (page.183) 4629 0 R (page.184) 4652 0 R (page.185) 4674 0 R (page.186) 4699 0 R (page.187) 4720 0 R (page.188) 4760 0 R (page.189) 4807 0 R (page.19) 880 0 R (page.190) 4841 0 R (page.191) 4861 0 R (page.192) 4882 0 R (page.193) 4906 0 R (page.194) 4923 0 R (page.195) 4942 0 R (page.196) 4961 0 R (page.197) 4981 0 R (page.198) 4985 0 R (page.199) 4989 0 R (page.2) 493 0 R (page.20) 909 0 R (page.200) 4994 0 R (page.201) 4998 0 R (page.202) 5002 0 R (page.203) 5006 0 R (page.204) 5010 0 R (page.205) 5014 0 R (page.206) 5019 0 R (page.207) 5023 0 R (page.208) 5027 0 R (page.209) 5031 0 R (page.21) 913 0 R (page.210) 5035 0 R (page.211) 5039 0 R (page.212) 5044 0 R (page.213) 5048 0 R (page.214) 5052 0 R (page.215) 5056 0 R (page.216) 5060 0 R (page.217) 5064 0 R (page.218) 5069 0 R (page.219) 5073 0 R (page.22) 938 0 R (page.220) 5077 0 R (page.221) 5081 0 R (page.222) 5085 0 R (page.223) 5089 0 R (page.224) 5094 0 R (page.225) 5098 0 R (page.226) 5102 0 R (page.227) 5106 0 R (page.228) 5110 0 R (page.229) 5114 0 R (page.23) 942 0 R (page.230) 5119 0 R (page.231) 5123 0 R (page.232) 5127 0 R (page.233) 5131 0 R (page.234) 5135 0 R (page.235) 5140 0 R (page.236) 5145 0 R (page.237) 5149 0 R (page.238) 5153 0 R (page.239) 5157 0 R (page.24) 1008 0 R (page.240) 5161 0 R (page.241) 5165 0 R (page.242) 5170 0 R (page.243) 5174 0 R (page.244) 5178 0 R (page.245) 5182 0 R (page.246) 5186 0 R (page.247) 5190 0 R (page.248) 5195 0 R (page.249) 5199 0 R (page.25) 1012 0 R (page.250) 5203 0 R (page.251) 5276 0 R (page.252) 5344 0 R (page.253) 5429 0 R (page.254) 5495 0 R (page.255) 5577 0 R (page.26) 1092 0 R (page.27) 1123 0 R (page.28) 1128 0 R (page.29) 1152 0 R (page.3) 568 0 R (page.30) 1169 0 R (page.31) 1201 0 R (page.32) 1241 0 R (page.33) 1259 0 R (page.34) 1271 0 R (page.35) 1287 0 R (page.36) 1294 0 R (page.37) 1325 0 R (page.38) 1349 0 R (page.39) 1359 0 R (page.4) 608 0 R (page.40) 1371 0 R (page.41) 1389 0 R (page.42) 1415 0 R (page.43) 1424 0 R (page.44) 1441 0 R (page.45) 1457 0 R (page.46) 1461 0 R (page.47) 1489 0 R (page.48) 1524 0 R (page.49) 1544 0 R (page.5) 693 0 R (page.50) 1571 0 R (page.51) 1589 0 R (page.52) 1602 0 R (page.53) 1622 0 R (page.54) 1642 0 R (page.55) 1653 0 R (page.56) 1687 0 R (page.57) 1705 0 R (page.58) 1714 0 R (page.59) 1723 0 R (page.6) 720 0 R (page.60) 1730 0 R (page.61) 1742 0 R (page.62) 1759 0 R (page.63) 1781 0 R (page.64) 1851 0 R (page.65) 1948 0 R (page.66) 2004 0 R (page.67) 2059 0 R (page.68) 2076 0 R (page.69) 2091 0 R (page.7) 754 0 R (page.70) 2104 0 R (page.71) 2119 0 R (page.72) 2141 0 R (page.73) 2162 0 R (page.74) 2167 0 R (page.75) 2198 0 R (page.76) 2210 0 R (page.77) 2247 0 R (page.78) 2261 0 R (page.79) 2268 0 R (page.8) 778 0 R (page.80) 2296 0 R (page.81) 2323 0 R (page.82) 2355 0 R (page.83) 2378 0 R (page.84) 2400 0 R (page.85) 2418 0 R (page.86) 2429 0 R (page.87) 2439 0 R (page.88) 2473 0 R (page.89) 2490 0 R (page.9) 790 0 R (page.90) 2502 0 R (page.91) 2531 0 R (page.92) 2558 0 R (page.93) 2578 0 R (page.94) 2589 0 R (page.95) 2608 0 R (page.96) 2633 0 R (page.97) 2686 0 R (page.98) 2705 0 R (page.99) 2721 0 R (section*.10) 1207 0 R (section*.100) 3407 0 R (section*.101) 3419 0 R (section*.102) 3450 0 R (section*.103) 3469 0 R (section*.104) 3481 0 R (section*.105) 3536 0 R (section*.106) 3545 0 R (section*.107) 3560 0 R (section*.108) 3611 0 R (section*.109) 3621 0 R (section*.11) 1209 0 R (section*.110) 3706 0 R (section*.111) 3774 0 R (section*.112) 3795 0 R (section*.113) 3845 0 R (section*.114) 3887 0 R (section*.115) 3898 0 R (section*.116) 3900 0 R (section*.117) 3902 0 R (section*.118) 3913 0 R (section*.119) 3949 0 R (section*.12) 1214 0 R (section*.120) 3971 0 R (section*.121) 3976 0 R (section*.122) 3978 0 R (section*.123) 4003 0 R (section*.124) 4011 0 R (section*.125) 4025 0 R (section*.126) 4027 0 R (section*.127) 4034 0 R (section*.128) 4042 0 R (section*.129) 4053 0 R (section*.13) 1296 0 R (section*.130) 4055 0 R (section*.131) 4067 0 R (section*.132) 4083 0 R (section*.133) 4098 0 R (section*.134) 4112 0 R (section*.135) 4114 0 R (section*.136) 4118 0 R (section*.137) 4121 0 R (section*.138) 4131 0 R (section*.139) 4144 0 R (section*.14) 1304 0 R (section*.140) 4166 0 R (section*.141) 4168 0 R (section*.142) 4171 0 R (section*.143) 4174 0 R (section*.144) 4203 0 R (section*.145) 4213 0 R (section*.146) 4215 0 R (section*.147) 4217 0 R (section*.148) 4227 0 R (section*.149) 4237 0 R (section*.15) 1327 0 R (section*.150) 4248 0 R (section*.151) 4266 0 R (section*.152) 4268 0 R (section*.153) 4272 0 R (section*.154) 4291 0 R (section*.155) 4296 0 R (section*.156) 4308 0 R (section*.157) 4314 0 R (section*.158) 4332 0 R (section*.159) 4335 0 R (section*.16) 1373 0 R (section*.160) 4373 0 R (section*.161) 4387 0 R (section*.162) 4389 0 R (section*.163) 4392 0 R (section*.164) 4398 0 R (section*.165) 4408 0 R (section*.166) 4413 0 R (section*.167) 4418 0 R (section*.168) 4420 0 R (section*.169) 4425 0 R (section*.17) 1391 0 R (section*.170) 4438 0 R (section*.171) 4455 0 R (section*.172) 4457 0 R (section*.173) 4474 0 R (section*.174) 4479 0 R (section*.175) 4503 0 R (section*.176) 4505 0 R (section*.177) 4529 0 R (section*.178) 4539 0 R (section*.179) 4581 0 R (section*.18) 1401 0 R (section*.180) 4614 0 R (section*.181) 4656 0 R (section*.182) 4664 0 R (section*.183) 4769 0 R (section*.184) 4776 0 R (section*.185) 4812 0 R (section*.186) 4845 0 R (section*.187) 4865 0 R (section*.188) 4873 0 R (section*.189) 4886 0 R (section*.19) 1463 0 R (section*.190) 4888 0 R (section*.191) 4894 0 R (section*.192) 4899 0 R (section*.193) 4910 0 R (section*.194) 4914 0 R (section*.195) 4924 0 R (section*.196) 4928 0 R (section*.197) 4943 0 R (section*.198) 4946 0 R (section*.199) 4953 0 R (section*.2) 1163 0 R (section*.20) 1498 0 R (section*.200) 4955 0 R (section*.201) 4965 0 R (section*.21) 1656 0 R (section*.22) 1670 0 R (section*.23) 1744 0 R (section*.24) 1762 0 R (section*.25) 1765 0 R (section*.26) 1782 0 R (section*.27) 1790 0 R (section*.28) 1925 0 R (section*.29) 1934 0 R (section*.3) 1173 0 R (section*.30) 1975 0 R (section*.31) 2169 0 R (section*.32) 2171 0 R (section*.33) 2183 0 R (section*.34) 2212 0 R (section*.35) 2215 0 R (section*.36) 2217 0 R (section*.37) 2238 0 R (section*.38) 2249 0 R (section*.39) 2272 0 R (section*.4) 1175 0 R (section*.40) 2275 0 R (section*.41) 2300 0 R (section*.42) 2304 0 R (section*.43) 2309 0 R (section*.44) 2326 0 R (section*.45) 2337 0 R (section*.46) 2356 0 R (section*.47) 2363 0 R (section*.48) 2365 0 R (section*.49) 2385 0 R (section*.5) 1177 0 R (section*.50) 2492 0 R (section*.51) 2494 0 R (section*.52) 2504 0 R (section*.53) 2508 0 R (section*.54) 2523 0 R (section*.55) 2535 0 R (section*.56) 2538 0 R (section*.57) 2540 0 R (section*.58) 2594 0 R (section*.59) 2597 0 R (section*.6) 1180 0 R (section*.60) 2614 0 R (section*.61) 2616 0 R (section*.62) 2619 0 R (section*.63) 2661 0 R (section*.64) 2764 0 R (section*.65) 2767 0 R (section*.66) 2769 0 R (section*.67) 2775 0 R (section*.68) 2828 0 R (section*.69) 2831 0 R (section*.7) 1186 0 R (section*.70) 2840 0 R (section*.71) 2895 0 R (section*.72) 2898 0 R (section*.73) 2900 0 R (section*.74) 2919 0 R (section*.75) 2948 0 R (section*.76) 2953 0 R (section*.77) 2955 0 R (section*.78) 2992 0 R (section*.79) 3000 0 R (section*.8) 1191 0 R (section*.80) 3038 0 R (section*.81) 3041 0 R (section*.82) 3043 0 R (section*.83) 3046 0 R (section*.84) 3062 0 R (section*.85) 3065 0 R (section*.86) 3067 0 R (section*.87) 3096 0 R (section*.88) 3109 0 R (section*.89) 3196 0 R (section*.9) 1202 0 R (section*.90) 3200 0 R (section*.91) 3202 0 R (section*.92) 3222 0 R (section*.93) 3250 0 R (section*.94) 3294 0 R (section*.95) 3308 0 R (section*.96) 3318 0 R (section*.97) 3348 0 R (section*.98) 3364 0 R (section*.99) 3395 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.1.5) 26 0 R (section.1.6) 30 0 R (section.1.7) 34 0 R (section.1.8) 38 0 R (section.1.9) 42 0 R (section.2.1) 50 0 R (section.3.1) 58 0 R (section.4.1) 66 0 R (section.5.1) 74 0 R (section.6.1) 82 0 R (section.6.10) 118 0 R (section.6.11) 122 0 R (section.6.12) 126 0 R (section.6.13) 130 0 R (section.6.14) 134 0 R (section.6.15) 138 0 R (section.6.16) 142 0 R (section.6.17) 146 0 R (section.6.18) 150 0 R (section.6.19) 154 0 R (section.6.2) 86 0 R (section.6.20) 158 0 R (section.6.21) 162 0 R (section.6.22) 166 0 R (section.6.23) 170 0 R (section.6.24) 174 0 R (section.6.3) 90 0 R (section.6.4) 94 0 R (section.6.5) 98 0 R (section.6.6) 102 0 R (section.6.7) 106 0 R (section.6.8) 110 0 R (section.6.9) 114 0 R (section.7.1) 182 0 R (section.7.10) 218 0 R (section.7.11) 222 0 R (section.7.12) 226 0 R (section.7.13) 230 0 R (section.7.14) 234 0 R (section.7.15) 238 0 R (section.7.16) 242 0 R (section.7.17) 246 0 R (section.7.18) 250 0 R (section.7.19) 254 0 R (section.7.2) 186 0 R (section.7.20) 258 0 R (section.7.21) 262 0 R (section.7.3) 190 0 R (section.7.4) 194 0 R (section.7.5) 198 0 R (section.7.6) 202 0 R (section.7.7) 206 0 R (section.7.8) 210 0 R (section.7.9) 214 0 R (section.8.1) 270 0 R (section.8.10) 306 0 R (section.8.11) 310 0 R (section.8.12) 314 0 R (section.8.13) 318 0 R (section.8.14) 322 0 R (section.8.15) 326 0 R (section.8.16) 330 0 R (section.8.17) 334 0 R (section.8.18) 338 0 R (section.8.19) 342 0 R (section.8.2) 274 0 R (section.8.20) 346 0 R (section.8.21) 350 0 R (section.8.22) 354 0 R (section.8.23) 358 0 R (section.8.24) 362 0 R (section.8.25) 366 0 R (section.8.26) 370 0 R (section.8.27) 374 0 R (section.8.28) 378 0 R (section.8.29) 382 0 R (section.8.3) 278 0 R (section.8.30) 386 0 R (section.8.31) 390 0 R (section.8.32) 394 0 R (section.8.33) 398 0 R (section.8.34) 402 0 R (section.8.4) 282 0 R (section.8.5) 286 0 R (section.8.6) 290 0 R (section.8.7) 294 0 R (section.8.8) 298 0 R (section.8.9) 302 0 R (section.9.1) 410 0 R (section.9.10) 446 0 R (section.9.11) 450 0 R (section.9.12) 454 0 R (section.9.13) 458 0 R (section.9.14) 462 0 R (section.9.15) 466 0 R (section.9.16) 470 0 R (section.9.2) 414 0 R (section.9.3) 418 0 R (section.9.4) 422 0 R (section.9.5) 426 0 R (section.9.6) 430 0 R (section.9.7) 434 0 R (section.9.8) 438 0 R (section.9.9) 442 0 R (subsection.1.4.1) 670 0 R (subsection.1.4.2) 674 0 R (subsection.1.6.1) 689 0 R (subsection.1.7.1) 769 0 R (subsection.1.7.2) 785 0 R (subsection.1.7.3) 792 0 R (subsection.1.7.4) 798 0 R (subsection.1.7.5) 803 0 R (subsection.1.7.6) 813 0 R (subsection.1.8.1) 835 0 R (subsection.1.8.2) 841 0 R (subsection.1.8.3) 847 0 R (subsection.1.9.1) 872 0 R (subsection.6.1.1) 1124 0 R (subsection.6.1.2) 1138 0 R (subsection.6.1.3) 1142 0 R (subsection.6.1.4) 1154 0 R (subsection.6.1.5) 1156 0 R (subsection.6.1.6) 1158 0 R (subsection.6.1.7) 1223 0 R (subsection.6.10.1) 2168 0 R (subsection.6.10.2) 2187 0 R (subsection.6.11.1) 2211 0 R (subsection.6.11.2) 2253 0 R (subsection.6.12.1) 2269 0 R (subsection.6.12.2) 2390 0 R (subsection.6.12.3) 2443 0 R (subsection.6.12.4) 2484 0 R (subsection.6.13.1) 2491 0 R (subsection.6.13.2) 2496 0 R (subsection.6.14.1) 2503 0 R (subsection.6.15.1) 2533 0 R (subsection.6.15.2) 2559 0 R (subsection.6.16.1) 2590 0 R (subsection.6.16.2) 2600 0 R (subsection.6.17.1) 2609 0 R (subsection.6.17.2) 2670 0 R (subsection.6.18.1) 2758 0 R (subsection.6.18.2) 2793 0 R (subsection.6.18.3) 2799 0 R (subsection.6.19.1) 2824 0 R (subsection.6.19.2) 2863 0 R (subsection.6.2.1) 1295 0 R (subsection.6.20.1) 2894 0 R (subsection.6.20.2) 2935 0 R (subsection.6.21.1) 2947 0 R (subsection.6.21.2) 3012 0 R (subsection.6.22.1) 3036 0 R (subsection.6.23.1) 3055 0 R (subsection.6.23.2) 3128 0 R (subsection.6.24.1) 3195 0 R (subsection.6.24.2) 3234 0 R (subsection.6.24.3) 3236 0 R (subsection.6.3.1) 1326 0 R (subsection.6.3.2) 1335 0 R (subsection.6.4.1) 1372 0 R (subsection.6.4.2) 1377 0 R (subsection.6.5.1) 1390 0 R (subsection.6.5.2) 1404 0 R (subsection.6.5.3) 1449 0 R (subsection.6.6.1) 1462 0 R (subsection.6.6.2) 1512 0 R (subsection.6.6.3) 1604 0 R (subsection.6.7.1) 1655 0 R (subsection.6.7.2) 1688 0 R (subsection.6.7.3) 1731 0 R (subsection.6.8.1) 1743 0 R (subsection.6.8.2) 1747 0 R (subsection.6.9.1) 1761 0 R (subsection.6.9.2) 2052 0 R (subsection.6.9.3) 2060 0 R (subsection.6.9.4) 2124 0 R (subsection.7.1.1) 3247 0 R (subsection.7.10.1) 3447 0 R (subsection.7.11.1) 3463 0 R (subsection.7.12.1) 3479 0 R (subsection.7.13.1) 3535 0 R (subsection.7.14.1) 3544 0 R (subsection.7.15.1) 3559 0 R (subsection.7.16.1) 3610 0 R (subsection.7.17.1) 3620 0 R (subsection.7.18.1) 3705 0 R (subsection.7.19.1) 3771 0 R (subsection.7.2.1) 3291 0 R (subsection.7.20.1) 3794 0 R (subsection.7.21.1) 3842 0 R (subsection.7.3.1) 3307 0 R (subsection.7.4.1) 3317 0 R (subsection.7.5.1) 3347 0 R (subsection.7.6.1) 3362 0 R (subsection.7.7.1) 3394 0 R (subsection.7.8.1) 3405 0 R (subsection.7.9.1) 3415 0 R (subsection.8.1.1) 3884 0 R (subsection.8.10.1) 4109 0 R (subsection.8.11.1) 4128 0 R (subsection.8.12.1) 4163 0 R (subsection.8.13.1) 4200 0 R (subsection.8.14.1) 4210 0 R (subsection.8.15.1) 4224 0 R (subsection.8.16.1) 4245 0 R (subsection.8.17.1) 4263 0 R (subsection.8.18.1) 4287 0 R (subsection.8.19.1) 4304 0 R (subsection.8.2.1) 3895 0 R (subsection.8.20.1) 4321 0 R (subsection.8.21.1) 4329 0 R (subsection.8.22.1) 4384 0 R (subsection.8.23.1) 4435 0 R (subsection.8.24.1) 4452 0 R (subsection.8.25.1) 4471 0 R (subsection.8.26.1) 4500 0 R (subsection.8.27.1) 4526 0 R (subsection.8.28.1) 4536 0 R (subsection.8.29.1) 4653 0 R (subsection.8.3.1) 3910 0 R (subsection.8.30.1) 4842 0 R (subsection.8.31.1) 4862 0 R (subsection.8.32.1) 4883 0 R (subsection.8.33.1) 4907 0 R (subsection.8.34.1) 4962 0 R (subsection.8.4.1) 3968 0 R (subsection.8.5.1) 4000 0 R (subsection.8.6.1) 4022 0 R (subsection.8.7.1) 4050 0 R (subsection.8.8.1) 4064 0 R (subsection.8.9.1) 4080 0 R (subsubsection.1.6.1.1) 695 0 R (subsubsection.1.6.1.10) 760 0 R (subsubsection.1.6.1.2) 698 0 R (subsubsection.1.6.1.3) 707 0 R (subsubsection.1.6.1.4) 712 0 R (subsubsection.1.6.1.5) 726 0 R (subsubsection.1.6.1.6) 730 0 R (subsubsection.1.6.1.7) 735 0 R (subsubsection.1.6.1.8) 739 0 R (subsubsection.1.6.1.9) 755 0 R (subsubsection.1.8.1.1) 837 0 R (subsubsection.1.8.1.2) 839 0 R (subsubsection.1.8.3.1) 849 0 R (subsubsection.1.8.3.2) 851 0 R (subsubsection.1.8.3.3) 853 0 R (subsubsection.1.8.3.4) 855 0 R (subsubsection.1.8.3.5) 861 0 R (subsubsection.1.8.3.6) 863 0 R (subsubsection.1.8.3.7) 865 0 R (subsubsection.6.1.7.1) 1224 0 R (subsubsection.6.1.7.10) 1276 0 R (subsubsection.6.1.7.11) 1279 0 R (subsubsection.6.1.7.12) 1282 0 R (subsubsection.6.1.7.13) 1289 0 R (subsubsection.6.1.7.2) 1242 0 R (subsubsection.6.1.7.3) 1246 0 R (subsubsection.6.1.7.4) 1248 0 R (subsubsection.6.1.7.5) 1252 0 R (subsubsection.6.1.7.6) 1261 0 R (subsubsection.6.1.7.7) 1262 0 R (subsubsection.6.1.7.8) 1264 0 R (subsubsection.6.1.7.9) 1272 0 R (subsubsection.6.10.2.1) 2189 0 R (subsubsection.6.10.2.2) 2199 0 R (subsubsection.6.10.2.3) 2203 0 R (subsubsection.6.10.2.4) 2205 0 R (subsubsection.6.11.2.1) 2254 0 R (subsubsection.6.11.2.2) 2256 0 R (subsubsection.6.11.2.3) 2263 0 R (subsubsection.6.12.2.1) 2391 0 R (subsubsection.6.12.2.10) 2414 0 R (subsubsection.6.12.2.11) 2419 0 R (subsubsection.6.12.2.12) 2420 0 R (subsubsection.6.12.2.13) 2422 0 R (subsubsection.6.12.2.14) 2423 0 R (subsubsection.6.12.2.15) 2424 0 R (subsubsection.6.12.2.16) 2430 0 R (subsubsection.6.12.2.17) 2431 0 R (subsubsection.6.12.2.18) 2432 0 R (subsubsection.6.12.2.19) 2433 0 R (subsubsection.6.12.2.2) 2392 0 R (subsubsection.6.12.2.20) 2434 0 R (subsubsection.6.12.2.21) 2435 0 R (subsubsection.6.12.2.22) 2440 0 R (subsubsection.6.12.2.23) 2441 0 R (subsubsection.6.12.2.24) 2442 0 R (subsubsection.6.12.2.3) 2393 0 R (subsubsection.6.12.2.4) 2394 0 R (subsubsection.6.12.2.5) 2401 0 R (subsubsection.6.12.2.6) 2402 0 R (subsubsection.6.12.2.7) 2403 0 R (subsubsection.6.12.2.8) 2406 0 R (subsubsection.6.12.2.9) 2412 0 R (subsubsection.6.12.3.1) 2444 0 R (subsubsection.6.12.3.2) 2454 0 R (subsubsection.6.12.3.3) 2463 0 R (subsubsection.6.12.3.4) 2474 0 R (subsubsection.6.12.3.5) 2480 0 R (subsubsection.6.12.4.1) 2485 0 R (subsubsection.6.13.2.1) 2498 0 R (subsubsection.6.15.2.1) 2560 0 R (subsubsection.6.15.2.2) 2565 0 R (subsubsection.6.15.2.3) 2571 0 R (subsubsection.6.15.2.4) 2580 0 R (subsubsection.6.16.2.1) 2602 0 R (subsubsection.6.16.2.2) 2604 0 R (subsubsection.6.17.2.1) 2671 0 R (subsubsection.6.17.2.10) 2727 0 R (subsubsection.6.17.2.11) 2730 0 R (subsubsection.6.17.2.12) 2739 0 R (subsubsection.6.17.2.13) 2742 0 R (subsubsection.6.17.2.14) 2746 0 R (subsubsection.6.17.2.2) 2689 0 R (subsubsection.6.17.2.3) 2693 0 R (subsubsection.6.17.2.4) 2695 0 R (subsubsection.6.17.2.5) 2698 0 R (subsubsection.6.17.2.6) 2708 0 R (subsubsection.6.17.2.7) 2713 0 R (subsubsection.6.17.2.8) 2716 0 R (subsubsection.6.17.2.9) 2724 0 R (subsubsection.6.18.2.1) 2794 0 R (subsubsection.6.18.3.1) 2800 0 R (subsubsection.6.18.3.2) 2805 0 R (subsubsection.6.18.3.3) 2815 0 R (subsubsection.6.19.2.1) 2864 0 R (subsubsection.6.19.2.2) 2868 0 R (subsubsection.6.19.2.3) 2872 0 R (subsubsection.6.19.2.4) 2876 0 R (subsubsection.6.19.2.5) 2886 0 R (subsubsection.6.20.2.1) 2936 0 R (subsubsection.6.20.2.2) 2937 0 R (subsubsection.6.20.2.3) 2940 0 R (subsubsection.6.21.2.1) 3014 0 R (subsubsection.6.21.2.2) 3017 0 R (subsubsection.6.21.2.3) 3026 0 R (subsubsection.6.21.2.4) 3028 0 R (subsubsection.6.21.2.5) 3030 0 R (subsubsection.6.23.2.1) 3129 0 R (subsubsection.6.23.2.10) 3188 0 R (subsubsection.6.23.2.2) 3142 0 R (subsubsection.6.23.2.3) 3145 0 R (subsubsection.6.23.2.4) 3148 0 R (subsubsection.6.23.2.5) 3156 0 R (subsubsection.6.23.2.6) 3160 0 R (subsubsection.6.23.2.7) 3173 0 R (subsubsection.6.23.2.8) 3177 0 R (subsubsection.6.23.2.9) 3180 0 R (subsubsection.6.24.2.1) 3235 0 R (subsubsection.6.24.3.1) 3237 0 R (subsubsection.6.3.2.1) 1337 0 R (subsubsection.6.3.2.2) 1339 0 R (subsubsection.6.3.2.3) 1350 0 R (subsubsection.6.3.2.4) 1351 0 R (subsubsection.6.3.2.5) 1353 0 R (subsubsection.6.3.2.6) 1355 0 R (subsubsection.6.3.2.7) 1364 0 R (subsubsection.6.4.2.1) 1379 0 R (subsubsection.6.4.2.2) 1383 0 R (subsubsection.6.5.2.1) 1405 0 R (subsubsection.6.5.2.2) 1418 0 R (subsubsection.6.5.2.3) 1427 0 R (subsubsection.6.5.2.4) 1431 0 R (subsubsection.6.5.2.5) 1434 0 R (subsubsection.6.5.2.6) 1445 0 R (subsubsection.6.5.3.1) 1450 0 R (subsubsection.6.6.2.1) 1513 0 R (subsubsection.6.6.2.10) 1564 0 R (subsubsection.6.6.2.11) 1575 0 R (subsubsection.6.6.2.12) 1577 0 R (subsubsection.6.6.2.13) 1581 0 R (subsubsection.6.6.2.14) 1582 0 R (subsubsection.6.6.2.15) 1590 0 R (subsubsection.6.6.2.16) 1593 0 R (subsubsection.6.6.2.17) 1596 0 R (subsubsection.6.6.2.18) 1598 0 R (subsubsection.6.6.2.19) 1603 0 R (subsubsection.6.6.2.2) 1526 0 R (subsubsection.6.6.2.3) 1530 0 R (subsubsection.6.6.2.4) 1533 0 R (subsubsection.6.6.2.5) 1535 0 R (subsubsection.6.6.2.6) 1545 0 R (subsubsection.6.6.2.7) 1551 0 R (subsubsection.6.6.2.8) 1555 0 R (subsubsection.6.6.2.9) 1559 0 R (subsubsection.6.6.3.1) 1605 0 R (subsubsection.6.6.3.2) 1615 0 R (subsubsection.6.6.3.3) 1627 0 R (subsubsection.6.6.3.4) 1633 0 R (subsubsection.6.6.3.5) 1646 0 R (subsubsection.6.7.2.1) 1689 0 R (subsubsection.6.7.2.10) 1725 0 R (subsubsection.6.7.2.11) 1726 0 R (subsubsection.6.7.2.2) 1696 0 R (subsubsection.6.7.2.3) 1697 0 R (subsubsection.6.7.2.4) 1706 0 R (subsubsection.6.7.2.5) 1708 0 R (subsubsection.6.7.2.6) 1710 0 R (subsubsection.6.7.2.7) 1716 0 R (subsubsection.6.7.2.8) 1718 0 R (subsubsection.6.7.2.9) 1719 0 R (subsubsection.6.7.3.1) 1732 0 R (subsubsection.6.8.2.1) 1749 0 R (subsubsection.6.9.2.1) 2053 0 R (subsubsection.6.9.3.1) 2061 0 R (subsubsection.6.9.3.10) 2105 0 R (subsubsection.6.9.3.11) 2107 0 R (subsubsection.6.9.3.12) 2114 0 R (subsubsection.6.9.3.13) 2120 0 R (subsubsection.6.9.3.2) 2065 0 R (subsubsection.6.9.3.3) 2068 0 R (subsubsection.6.9.3.4) 2077 0 R (subsubsection.6.9.3.5) 2085 0 R (subsubsection.6.9.3.6) 2086 0 R (subsubsection.6.9.3.7) 2092 0 R (subsubsection.6.9.3.8) 2096 0 R (subsubsection.6.9.3.9) 2099 0 R (subsubsection.6.9.4.1) 2125 0 R (subsubsection.6.9.4.2) 2128 0 R (subsubsection.6.9.4.3) 2135 0 R (subsubsection.6.9.4.4) 2142 0 R (subsubsection.6.9.4.5) 2146 0 R (subsubsection.6.9.4.6) 2153 0 R (subsubsection.6.9.4.7) 2156 0 R] +/Limits [(Doc-Start) (subsubsection.6.9.4.7)] +>> endobj +5671 0 obj << +/Kids [5670 0 R] +>> endobj +5672 0 obj << +/Dests 5671 0 R +>> endobj +5673 0 obj << +/Type /Catalog +/Pages 5668 0 R +/Outlines 5669 0 R +/Names 5672 0 R +/PageMode /UseOutlines +/OpenAction 473 0 R +>> endobj +5674 0 obj << +/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() +/CreationDate (D:20060612102335+02'00') +/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) +>> endobj +xref +0 5675 +0000000001 65535 f +0000000002 00000 f +0000000003 00000 f +0000000004 00000 f +0000000000 00000 f +0000000009 00000 n +0000050642 00000 n +0001261026 00000 n +0000000054 00000 n +0000000093 00000 n +0000050814 00000 n +0001260954 00000 n +0000000140 00000 n +0000000171 00000 n +0000054400 00000 n +0001260868 00000 n +0000000219 00000 n +0000000258 00000 n +0000054521 00000 n +0001260782 00000 n +0000000306 00000 n +0000000342 00000 n +0000058977 00000 n +0001260696 00000 n +0000000390 00000 n +0000000440 00000 n +0000059339 00000 n +0001260610 00000 n +0000000488 00000 n +0000000524 00000 n +0000063433 00000 n +0001260524 00000 n +0000000572 00000 n +0000000628 00000 n +0000080583 00000 n +0001260438 00000 n +0000000676 00000 n +0000000703 00000 n +0000102655 00000 n +0001260352 00000 n +0000000751 00000 n +0000000794 00000 n +0000110315 00000 n +0001260279 00000 n +0000000842 00000 n +0000000872 00000 n +0000119269 00000 n +0001260154 00000 n +0000000918 00000 n +0000000957 00000 n +0000119326 00000 n +0001260093 00000 n +0000001005 00000 n +0000001039 00000 n +0000125101 00000 n +0001259967 00000 n +0000001085 00000 n +0000001130 00000 n +0000125158 00000 n +0001259906 00000 n +0000001178 00000 n +0000001220 00000 n +0000134932 00000 n +0001259780 00000 n +0000001266 00000 n +0000001313 00000 n +0000134989 00000 n +0001259719 00000 n +0000001361 00000 n +0000001403 00000 n +0000147442 00000 n +0001259593 00000 n +0000001449 00000 n +0000001486 00000 n +0000147500 00000 n +0001259532 00000 n +0000001534 00000 n +0000001570 00000 n +0000154678 00000 n +0001259403 00000 n +0000001616 00000 n +0000001663 00000 n +0000154795 00000 n +0001259329 00000 n +0000001711 00000 n +0000001742 00000 n +0000193044 00000 n +0001259242 00000 n +0000001790 00000 n +0000001821 00000 n +0000196930 00000 n +0001259155 00000 n +0000001869 00000 n +0000001915 00000 n +0000205317 00000 n +0001259068 00000 n +0000001963 00000 n +0000002010 00000 n +0000210149 00000 n +0001258979 00000 n +0000002058 00000 n +0000002105 00000 n +0000228508 00000 n +0001258888 00000 n +0000002154 00000 n +0000002199 00000 n +0000271738 00000 n +0001258796 00000 n +0000002248 00000 n +0000002292 00000 n +0000288517 00000 n +0001258704 00000 n +0000002341 00000 n +0000002397 00000 n +0000293232 00000 n +0001258612 00000 n +0000002446 00000 n +0000002486 00000 n +0000377976 00000 n +0001258520 00000 n +0000002536 00000 n +0000002591 00000 n +0000387992 00000 n +0001258428 00000 n +0000002641 00000 n +0000002692 00000 n +0000399293 00000 n +0001258336 00000 n +0000002742 00000 n +0000002791 00000 n +0000440708 00000 n +0001258244 00000 n +0000002841 00000 n +0000002892 00000 n +0000446093 00000 n +0001258152 00000 n +0000002942 00000 n +0000002981 00000 n +0000451263 00000 n +0001258060 00000 n +0000003031 00000 n +0000003064 00000 n +0000462282 00000 n +0001257968 00000 n +0000003114 00000 n +0000003149 00000 n +0000468114 00000 n +0001257876 00000 n +0000003199 00000 n +0000003239 00000 n +0000502385 00000 n +0001257784 00000 n +0000003289 00000 n +0000003342 00000 n +0000517178 00000 n +0001257692 00000 n +0000003392 00000 n +0000003424 00000 n +0000531752 00000 n +0001257600 00000 n +0000003474 00000 n +0000003512 00000 n +0000543323 00000 n +0001257508 00000 n +0000003562 00000 n +0000003595 00000 n +0000554956 00000 n +0001257416 00000 n +0000003645 00000 n +0000003677 00000 n +0000563002 00000 n +0001257324 00000 n +0000003727 00000 n +0000003757 00000 n +0000590334 00000 n +0001257246 00000 n +0000003807 00000 n +0000003837 00000 n +0000600208 00000 n +0001257113 00000 n +0000003884 00000 n +0000003940 00000 n +0000600326 00000 n +0001257034 00000 n +0000003989 00000 n +0000004040 00000 n +0000603631 00000 n +0001256941 00000 n +0000004089 00000 n +0000004149 00000 n +0000605400 00000 n +0001256848 00000 n +0000004198 00000 n +0000004255 00000 n +0000609814 00000 n +0001256755 00000 n +0000004304 00000 n +0000004355 00000 n +0000612585 00000 n +0001256662 00000 n +0000004404 00000 n +0000004455 00000 n +0000618018 00000 n +0001256569 00000 n +0000004504 00000 n +0000004546 00000 n +0000620396 00000 n +0001256476 00000 n +0000004595 00000 n +0000004644 00000 n +0000622307 00000 n +0001256383 00000 n +0000004693 00000 n +0000004732 00000 n +0000627362 00000 n +0001256290 00000 n +0000004781 00000 n +0000004831 00000 n +0000631195 00000 n +0001256197 00000 n +0000004881 00000 n +0000004934 00000 n +0000634149 00000 n +0001256104 00000 n +0000004984 00000 n +0000005026 00000 n +0000641477 00000 n +0001256011 00000 n +0000005076 00000 n +0000005124 00000 n +0000646798 00000 n +0001255918 00000 n +0000005174 00000 n +0000005229 00000 n +0000649327 00000 n +0001255825 00000 n +0000005279 00000 n +0000005333 00000 n +0000657364 00000 n +0001255732 00000 n +0000005383 00000 n +0000005440 00000 n +0000659751 00000 n +0001255639 00000 n +0000005490 00000 n +0000005550 00000 n +0000668586 00000 n +0001255546 00000 n +0000005600 00000 n +0000005649 00000 n +0000685418 00000 n +0001255453 00000 n +0000005699 00000 n +0000005755 00000 n +0000690785 00000 n +0001255360 00000 n +0000005805 00000 n +0000005860 00000 n +0000698518 00000 n +0001255267 00000 n +0000005910 00000 n +0000005966 00000 n +0000705116 00000 n +0001255188 00000 n +0000006016 00000 n +0000006071 00000 n +0000708522 00000 n +0001255054 00000 n +0000006118 00000 n +0000006164 00000 n +0000708641 00000 n +0001254975 00000 n +0000006213 00000 n +0000006278 00000 n +0000711484 00000 n +0001254882 00000 n +0000006327 00000 n +0000006392 00000 n +0000720157 00000 n +0001254789 00000 n +0000006441 00000 n +0000006496 00000 n +0000727972 00000 n +0001254696 00000 n +0000006545 00000 n +0000006600 00000 n +0000735780 00000 n +0001254603 00000 n +0000006649 00000 n +0000006700 00000 n +0000740603 00000 n +0001254510 00000 n +0000006749 00000 n +0000006800 00000 n +0000745469 00000 n +0001254417 00000 n +0000006849 00000 n +0000006904 00000 n +0000749092 00000 n +0001254324 00000 n +0000006953 00000 n +0000007008 00000 n +0000756051 00000 n +0001254231 00000 n +0000007057 00000 n +0000007114 00000 n +0000759655 00000 n +0001254138 00000 n +0000007164 00000 n +0000007221 00000 n +0000766391 00000 n +0001254045 00000 n +0000007271 00000 n +0000007332 00000 n +0000773837 00000 n +0001253952 00000 n +0000007382 00000 n +0000007443 00000 n +0000779421 00000 n +0001253859 00000 n +0000007493 00000 n +0000007554 00000 n +0000782070 00000 n +0001253766 00000 n +0000007604 00000 n +0000007665 00000 n +0000786980 00000 n +0001253673 00000 n +0000007715 00000 n +0000007772 00000 n +0000791134 00000 n +0001253580 00000 n +0000007822 00000 n +0000007867 00000 n +0000796289 00000 n +0001253487 00000 n +0000007917 00000 n +0000007962 00000 n +0000800130 00000 n +0001253394 00000 n +0000008012 00000 n +0000008066 00000 n +0000804148 00000 n +0001253301 00000 n +0000008116 00000 n +0000008166 00000 n +0000805832 00000 n +0001253208 00000 n +0000008216 00000 n +0000008259 00000 n +0000812562 00000 n +0001253115 00000 n +0000008309 00000 n +0000008355 00000 n +0000823125 00000 n +0001253022 00000 n +0000008405 00000 n +0000008448 00000 n +0000832696 00000 n +0001252929 00000 n +0000008498 00000 n +0000008544 00000 n +0000836815 00000 n +0001252836 00000 n +0000008594 00000 n +0000008640 00000 n +0000841704 00000 n +0001252743 00000 n +0000008690 00000 n +0000008743 00000 n +0000846631 00000 n +0001252650 00000 n +0000008793 00000 n +0000008846 00000 n +0000849074 00000 n +0001252557 00000 n +0000008896 00000 n +0000008946 00000 n +0000859493 00000 n +0001252464 00000 n +0000008996 00000 n +0000009040 00000 n +0000881877 00000 n +0001252371 00000 n +0000009090 00000 n +0000009134 00000 n +0000929043 00000 n +0001252278 00000 n +0000009184 00000 n +0000009236 00000 n +0000934010 00000 n +0001252185 00000 n +0000009286 00000 n +0000009337 00000 n +0000939281 00000 n +0001252092 00000 n +0000009387 00000 n +0000009438 00000 n +0000943710 00000 n +0001251999 00000 n +0000009488 00000 n +0000009535 00000 n +0000958897 00000 n +0001251920 00000 n +0000009585 00000 n +0000009635 00000 n +0000961041 00000 n +0001251800 00000 n +0000009682 00000 n +0000009731 00000 n +0000961160 00000 n +0001251721 00000 n +0000009780 00000 n +0000009807 00000 n +0000971633 00000 n +0001251628 00000 n +0000009856 00000 n +0000009883 00000 n +0000974077 00000 n +0001251535 00000 n +0000009932 00000 n +0000009979 00000 n +0000976886 00000 n +0001251442 00000 n +0000010028 00000 n +0000010078 00000 n +0000979044 00000 n +0001251349 00000 n +0000010127 00000 n +0000010160 00000 n +0000982262 00000 n +0001251256 00000 n +0000010209 00000 n +0000010242 00000 n +0000984732 00000 n +0001251163 00000 n +0000010291 00000 n +0000010319 00000 n +0000998489 00000 n +0001251070 00000 n +0000010368 00000 n +0000010396 00000 n +0001001910 00000 n +0001250977 00000 n +0000010445 00000 n +0000010471 00000 n +0001008669 00000 n +0001250884 00000 n +0000010521 00000 n +0000010547 00000 n +0001012312 00000 n +0001250791 00000 n +0000010597 00000 n +0000010626 00000 n +0001021683 00000 n +0001250698 00000 n +0000010676 00000 n +0000010705 00000 n +0001024927 00000 n +0001250605 00000 n +0000010755 00000 n +0000010791 00000 n +0001029296 00000 n +0001250512 00000 n +0000010841 00000 n +0000010871 00000 n +0001034310 00000 n +0001250419 00000 n +0000010921 00000 n +0000010952 00000 n +0001046200 00000 n +0001250340 00000 n +0000011002 00000 n +0000011033 00000 n +0000011547 00000 n +0000011669 00000 n +0000016126 00000 n +0000011085 00000 n +0000016010 00000 n +0000016068 00000 n +0001242506 00000 n +0001222170 00000 n +0001242331 00000 n +0001221173 00000 n +0001200724 00000 n +0001221000 00000 n +0001243568 00000 n +0000015772 00000 n +0000015908 00000 n +0000015988 00000 n +0000016558 00000 n +0000016378 00000 n +0000016239 00000 n +0000016500 00000 n +0000022817 00000 n +0000018502 00000 n +0000016599 00000 n +0001199754 00000 n +0001181745 00000 n +0001199579 00000 n +0000022759 00000 n +0000018836 00000 n +0000018990 00000 n +0000019148 00000 n +0000019305 00000 n +0000019463 00000 n +0000019621 00000 n +0000019779 00000 n +0000019937 00000 n +0000020095 00000 n +0000020253 00000 n +0000020411 00000 n +0000020565 00000 n +0000020723 00000 n +0000020877 00000 n +0000021035 00000 n +0000021189 00000 n +0000021347 00000 n +0000021502 00000 n +0000021660 00000 n +0000021815 00000 n +0000021973 00000 n +0000022130 00000 n +0000022287 00000 n +0000022445 00000 n +0000022603 00000 n +0000031940 00000 n +0000025826 00000 n +0000022902 00000 n +0000026248 00000 n +0000026406 00000 n +0000026564 00000 n +0000026722 00000 n +0000026879 00000 n +0000027036 00000 n +0000027195 00000 n +0000027354 00000 n +0000027512 00000 n +0000027671 00000 n +0000027830 00000 n +0000027989 00000 n +0000028148 00000 n +0000028305 00000 n +0000028464 00000 n +0000028622 00000 n +0000028780 00000 n +0000028939 00000 n +0000029098 00000 n +0000029253 00000 n +0000029409 00000 n +0000029566 00000 n +0000029724 00000 n +0000029882 00000 n +0000030039 00000 n +0000030197 00000 n +0000030355 00000 n +0000030512 00000 n +0000030670 00000 n +0000030829 00000 n +0000030988 00000 n +0000031147 00000 n +0000031306 00000 n +0000031465 00000 n +0000031624 00000 n +0000031783 00000 n +0000040835 00000 n +0000034654 00000 n +0000032025 00000 n +0000040777 00000 n +0000035076 00000 n +0000035235 00000 n +0000035394 00000 n +0000035552 00000 n +0000035710 00000 n +0000035865 00000 n +0000036023 00000 n +0000036181 00000 n +0000036338 00000 n +0000036496 00000 n +0000036654 00000 n +0000036812 00000 n +0000036970 00000 n +0000037128 00000 n +0000037286 00000 n +0000037445 00000 n +0000037604 00000 n +0000037763 00000 n +0000037922 00000 n +0000038080 00000 n +0000038237 00000 n +0000038395 00000 n +0000038553 00000 n +0000038712 00000 n +0000038871 00000 n +0000039030 00000 n +0000039189 00000 n +0000039348 00000 n +0000039507 00000 n +0000039666 00000 n +0000039825 00000 n +0000039984 00000 n +0000040143 00000 n +0000040302 00000 n +0000040461 00000 n +0000040620 00000 n +0000046161 00000 n +0000042649 00000 n +0000040920 00000 n +0000046103 00000 n +0000042943 00000 n +0000043102 00000 n +0000043261 00000 n +0000043420 00000 n +0000043575 00000 n +0000043732 00000 n +0000043889 00000 n +0000044045 00000 n +0000044203 00000 n +0000044360 00000 n +0000044518 00000 n +0000044676 00000 n +0000044834 00000 n +0000044992 00000 n +0000045151 00000 n +0000045309 00000 n +0000045468 00000 n +0000045627 00000 n +0000045785 00000 n +0000045944 00000 n +0000050870 00000 n +0000048686 00000 n +0000046246 00000 n +0000050698 00000 n +0000048908 00000 n +0001181090 00000 n +0001179151 00000 n +0001180927 00000 n +0000049085 00000 n +0000049266 00000 n +0000049419 00000 n +0000049572 00000 n +0000049725 00000 n +0000049877 00000 n +0000050030 00000 n +0000050183 00000 n +0000050336 00000 n +0000050489 00000 n +0000050756 00000 n +0001243686 00000 n +0000192985 00000 n +0000399234 00000 n +0000196871 00000 n +0000205258 00000 n +0000210090 00000 n +0000288458 00000 n +0000228449 00000 n +0000468055 00000 n +0000154736 00000 n +0000054578 00000 n +0000054214 00000 n +0000050981 00000 n +0000054336 00000 n +0000054457 00000 n +0000059396 00000 n +0000057806 00000 n +0000054663 00000 n +0000057980 00000 n +0000058165 00000 n +0000058913 00000 n +0000059034 00000 n +0000059098 00000 n +0000058352 00000 n +0000058539 00000 n +0000059155 00000 n +0000059219 00000 n +0000058726 00000 n +0000059276 00000 n +0000210507 00000 n +0000213343 00000 n +0000352804 00000 n +0000357012 00000 n +0000348138 00000 n +0000063606 00000 n +0000062916 00000 n +0000059481 00000 n +0000063370 00000 n +0000063066 00000 n +0000063218 00000 n +0000063490 00000 n +0000063548 00000 n +0000069322 00000 n +0000067224 00000 n +0000063691 00000 n +0000068779 00000 n +0000068837 00000 n +0000068901 00000 n +0000067422 00000 n +0000068957 00000 n +0000069021 00000 n +0000067609 00000 n +0000067762 00000 n +0000067915 00000 n +0000068068 00000 n +0001178798 00000 n +0001176803 00000 n +0001178635 00000 n +0000069078 00000 n +0000069142 00000 n +0000068220 00000 n +0000068407 00000 n +0000068594 00000 n +0000069200 00000 n +0000069264 00000 n +0000418407 00000 n +0000641418 00000 n +0000244942 00000 n +0000244692 00000 n +0000075888 00000 n +0000072812 00000 n +0000069420 00000 n +0000075284 00000 n +0000073042 00000 n +0000073229 00000 n +0000073416 00000 n +0000073603 00000 n +0000075342 00000 n +0000075406 00000 n +0000073789 00000 n +0000073976 00000 n +0000075463 00000 n +0000075527 00000 n +0000074163 00000 n +0000074350 00000 n +0000074537 00000 n +0000075585 00000 n +0000075649 00000 n +0000074724 00000 n +0000074910 00000 n +0000075706 00000 n +0000075768 00000 n +0000075097 00000 n +0000075826 00000 n +0000244817 00000 n +0000263016 00000 n +0000249100 00000 n +0000239531 00000 n +0000235785 00000 n +0000239656 00000 n +0000239280 00000 n +0000249349 00000 n +0000245067 00000 n +0000080761 00000 n +0000078469 00000 n +0000075973 00000 n +0000080287 00000 n +0000080345 00000 n +0000078675 00000 n +0000078862 00000 n +0000079049 00000 n +0000080403 00000 n +0000080467 00000 n +0000079202 00000 n +0000079389 00000 n +0000079576 00000 n +0000079727 00000 n +0000079914 00000 n +0000080100 00000 n +0000080525 00000 n +0000080640 00000 n +0000080704 00000 n +0001243804 00000 n +0000257346 00000 n +0000239781 00000 n +0000257227 00000 n +0000276318 00000 n +0000085379 00000 n +0000083929 00000 n +0000080859 00000 n +0000085199 00000 n +0000084111 00000 n +0000084298 00000 n +0000084485 00000 n +0000084672 00000 n +0000084859 00000 n +0000085257 00000 n +0000085321 00000 n +0000085046 00000 n +0000087042 00000 n +0000086689 00000 n +0000085477 00000 n +0000086811 00000 n +0000086869 00000 n +0000086927 00000 n +0000086985 00000 n +0000090294 00000 n +0000089340 00000 n +0000087140 00000 n +0000090056 00000 n +0000090114 00000 n +0000089498 00000 n +0000089683 00000 n +0000089869 00000 n +0000090172 00000 n +0000090236 00000 n +0000249225 00000 n +0000248975 00000 n +0000093049 00000 n +0000092347 00000 n +0000090392 00000 n +0000092871 00000 n +0000092497 00000 n +0000092684 00000 n +0000092929 00000 n +0000092992 00000 n +0000096038 00000 n +0000095069 00000 n +0000093160 00000 n +0000095980 00000 n +0000095235 00000 n +0000095422 00000 n +0000095607 00000 n +0000095794 00000 n +0000099558 00000 n +0000098914 00000 n +0000096136 00000 n +0000099438 00000 n +0000099064 00000 n +0000099251 00000 n +0000099496 00000 n +0001243922 00000 n +0000103257 00000 n +0000102475 00000 n +0000099669 00000 n +0000102597 00000 n +0000102712 00000 n +0000102776 00000 n +0000102833 00000 n +0000102897 00000 n +0000102955 00000 n +0000103017 00000 n +0000103074 00000 n +0000103138 00000 n +0000103195 00000 n +0000106861 00000 n +0000106140 00000 n +0000103342 00000 n +0000106262 00000 n +0000106320 00000 n +0000106378 00000 n +0000106437 00000 n +0000106495 00000 n +0000106559 00000 n +0000106617 00000 n +0000106681 00000 n +0000106739 00000 n +0000106803 00000 n +0000110372 00000 n +0000109706 00000 n +0000106946 00000 n +0000109828 00000 n +0000109886 00000 n +0000109950 00000 n +0000110008 00000 n +0000110072 00000 n +0000110129 00000 n +0000110193 00000 n +0000110251 00000 n +0000112698 00000 n +0000112396 00000 n +0000110457 00000 n +0000112518 00000 n +0000112576 00000 n +0000112640 00000 n +0000113323 00000 n +0000113143 00000 n +0000112783 00000 n +0000113265 00000 n +0000119383 00000 n +0000115083 00000 n +0000113395 00000 n +0000119211 00000 n +0000115409 00000 n +0000115567 00000 n +0000115726 00000 n +0000115884 00000 n +0000116043 00000 n +0000116202 00000 n +0000116361 00000 n +0000116520 00000 n +0000116678 00000 n +0000116837 00000 n +0000116995 00000 n +0000117153 00000 n +0000117311 00000 n +0000117469 00000 n +0000117626 00000 n +0000117784 00000 n +0000117941 00000 n +0000118100 00000 n +0000118259 00000 n +0000118418 00000 n +0000118577 00000 n +0000118736 00000 n +0000118895 00000 n +0000119052 00000 n +0001244040 00000 n +0000120004 00000 n +0000119824 00000 n +0000119468 00000 n +0000119946 00000 n +0000125215 00000 n +0000121416 00000 n +0000120076 00000 n +0000125043 00000 n +0000121718 00000 n +0000121876 00000 n +0000122034 00000 n +0000122192 00000 n +0000122350 00000 n +0000122508 00000 n +0000122665 00000 n +0000122823 00000 n +0000122980 00000 n +0000123138 00000 n +0000123297 00000 n +0000123456 00000 n +0000123614 00000 n +0000123773 00000 n +0000123931 00000 n +0000124090 00000 n +0000124249 00000 n +0000124408 00000 n +0000124566 00000 n +0000124725 00000 n +0000124884 00000 n +0000125847 00000 n +0000125667 00000 n +0000125300 00000 n +0000125789 00000 n +0000135046 00000 n +0000127872 00000 n +0000125919 00000 n +0000134874 00000 n +0000128342 00000 n +0000128495 00000 n +0000128653 00000 n +0000128805 00000 n +0000128963 00000 n +0000129115 00000 n +0000129273 00000 n +0000129426 00000 n +0000129584 00000 n +0000129737 00000 n +0000129895 00000 n +0000130047 00000 n +0000130204 00000 n +0000130357 00000 n +0000130515 00000 n +0000130668 00000 n +0000130825 00000 n +0000130978 00000 n +0000131136 00000 n +0000131289 00000 n +0000131448 00000 n +0000131601 00000 n +0000131760 00000 n +0000131912 00000 n +0000132070 00000 n +0000132223 00000 n +0000132382 00000 n +0000132535 00000 n +0000132693 00000 n +0000132846 00000 n +0000133005 00000 n +0000133158 00000 n +0000133317 00000 n +0000133469 00000 n +0000133627 00000 n +0000133780 00000 n +0000133939 00000 n +0000134092 00000 n +0000134250 00000 n +0000134403 00000 n +0000134562 00000 n +0000134715 00000 n +0000600267 00000 n +0000603572 00000 n +0000605341 00000 n +0000609755 00000 n +0000612526 00000 n +0000617959 00000 n +0000620337 00000 n +0000622248 00000 n +0000627303 00000 n +0000631136 00000 n +0000634090 00000 n +0000646739 00000 n +0000649268 00000 n +0000657305 00000 n +0000659692 00000 n +0000668526 00000 n +0000685358 00000 n +0000690725 00000 n +0000698458 00000 n +0000705056 00000 n +0000135684 00000 n +0000135499 00000 n +0000135131 00000 n +0000135624 00000 n +0000147558 00000 n +0000138967 00000 n +0000135757 00000 n +0000147382 00000 n +0000139555 00000 n +0000139708 00000 n +0000139867 00000 n +0000140021 00000 n +0000140180 00000 n +0000140334 00000 n +0000140493 00000 n +0000140647 00000 n +0000140805 00000 n +0000140959 00000 n +0000141118 00000 n +0000141272 00000 n +0000141431 00000 n +0000141585 00000 n +0000141744 00000 n +0000141897 00000 n +0000142055 00000 n +0000142208 00000 n +0000142367 00000 n +0000142521 00000 n +0000142681 00000 n +0000142835 00000 n +0000142994 00000 n +0000143148 00000 n +0000143308 00000 n +0000143462 00000 n +0000143622 00000 n +0000143776 00000 n +0000143936 00000 n +0000144090 00000 n +0000144250 00000 n +0000144404 00000 n +0000144564 00000 n +0000144718 00000 n +0000144877 00000 n +0000145031 00000 n +0000145191 00000 n +0000145344 00000 n +0000145503 00000 n +0000145655 00000 n +0000145815 00000 n +0000145969 00000 n +0000146128 00000 n +0000146282 00000 n +0000146442 00000 n +0000146595 00000 n +0000146755 00000 n +0000146909 00000 n +0000147069 00000 n +0000147223 00000 n +0001244159 00000 n +0000708581 00000 n +0000711424 00000 n +0000720097 00000 n +0000727912 00000 n +0000735720 00000 n +0000740543 00000 n +0000745409 00000 n +0000749032 00000 n +0000755991 00000 n +0000759595 00000 n +0000766331 00000 n +0000773777 00000 n +0000779361 00000 n +0000782010 00000 n +0000786920 00000 n +0000791074 00000 n +0000796229 00000 n +0000800070 00000 n +0000804088 00000 n +0000805772 00000 n +0000812502 00000 n +0000823065 00000 n +0000832636 00000 n +0000836755 00000 n +0000841644 00000 n +0000152463 00000 n +0000149284 00000 n +0000147644 00000 n +0000152403 00000 n +0000149584 00000 n +0000149738 00000 n +0000149898 00000 n +0000150051 00000 n +0000150211 00000 n +0000150363 00000 n +0000150522 00000 n +0000150676 00000 n +0000150836 00000 n +0000150990 00000 n +0000151150 00000 n +0000151304 00000 n +0000151464 00000 n +0000151618 00000 n +0000151776 00000 n +0000151930 00000 n +0000152090 00000 n +0000152243 00000 n +0000846571 00000 n +0000849014 00000 n +0000859433 00000 n +0000881817 00000 n +0000928983 00000 n +0000933950 00000 n +0000939221 00000 n +0000943650 00000 n +0000958837 00000 n +0000154913 00000 n +0000154492 00000 n +0000152549 00000 n +0000154618 00000 n +0000154853 00000 n +0000160237 00000 n +0000157887 00000 n +0000154999 00000 n +0000159925 00000 n +0000158115 00000 n +0000158303 00000 n +0000158491 00000 n +0000158679 00000 n +0000158867 00000 n +0000159054 00000 n +0000159241 00000 n +0000159428 00000 n +0000159985 00000 n +0000160051 00000 n +0000159581 00000 n +0000159753 00000 n +0000160111 00000 n +0000160177 00000 n +0000179694 00000 n +0000175554 00000 n +0000186461 00000 n +0000175674 00000 n +0000186586 00000 n +0000182836 00000 n +0000164053 00000 n +0000162923 00000 n +0000160349 00000 n +0000163384 00000 n +0000163444 00000 n +0000163510 00000 n +0000163570 00000 n +0000163629 00000 n +0000163689 00000 n +0000163755 00000 n +0000163079 00000 n +0000163815 00000 n +0000163873 00000 n +0000163933 00000 n +0000163993 00000 n +0000163233 00000 n +0000446033 00000 n +0000169637 00000 n +0000166048 00000 n +0000164139 00000 n +0000169220 00000 n +0001175964 00000 n +0001158689 00000 n +0001175783 00000 n +0000169280 00000 n +0000166339 00000 n +0000169340 00000 n +0000166493 00000 n +0000169399 00000 n +0000166647 00000 n +0000166835 00000 n +0000169457 00000 n +0000166989 00000 n +0000167177 00000 n +0000167365 00000 n +0000167518 00000 n +0000167706 00000 n +0000169517 00000 n +0000167860 00000 n +0000168047 00000 n +0000168200 00000 n +0000168386 00000 n +0000169577 00000 n +0000168538 00000 n +0000168726 00000 n +0000168880 00000 n +0000169067 00000 n +0000182711 00000 n +0000182585 00000 n +0000175738 00000 n +0000171876 00000 n +0000169737 00000 n +0000174956 00000 n +0000175016 00000 n +0000172158 00000 n +0000172346 00000 n +0000172500 00000 n +0000172688 00000 n +0000175076 00000 n +0000172842 00000 n +0000175136 00000 n +0000173030 00000 n +0000173218 00000 n +0000173372 00000 n +0000173559 00000 n +0000175195 00000 n +0000175255 00000 n +0000173712 00000 n +0000175315 00000 n +0000173900 00000 n +0000175375 00000 n +0000174087 00000 n +0000175434 00000 n +0000174275 00000 n +0000175494 00000 n +0000175614 00000 n +0000174462 00000 n +0000174614 00000 n +0001158068 00000 n +0001147348 00000 n +0001157887 00000 n +0000174802 00000 n +0001244284 00000 n +0000179820 00000 n +0000179568 00000 n +0000182460 00000 n +0000186712 00000 n +0000188422 00000 n +0000961100 00000 n +0000179945 00000 n +0000177550 00000 n +0000175852 00000 n +0000179448 00000 n +0000179508 00000 n +0000177778 00000 n +0000177931 00000 n +0000178118 00000 n +0000179634 00000 n +0000178272 00000 n +0000179760 00000 n +0000178426 00000 n +0000178580 00000 n +0000178768 00000 n +0000179885 00000 n +0000178922 00000 n +0000179075 00000 n +0000179263 00000 n +0000182900 00000 n +0000181610 00000 n +0000180045 00000 n +0000182400 00000 n +0000181784 00000 n +0000182526 00000 n +0000182651 00000 n +0000181938 00000 n +0000182777 00000 n +0000182092 00000 n +0000182246 00000 n +0001001850 00000 n +0000186838 00000 n +0000184801 00000 n +0000183000 00000 n +0000186341 00000 n +0000186401 00000 n +0000185011 00000 n +0000185165 00000 n +0000185353 00000 n +0000186527 00000 n +0000185541 00000 n +0000185695 00000 n +0000186652 00000 n +0000185849 00000 n +0000186001 00000 n +0000186778 00000 n +0000186188 00000 n +0000188548 00000 n +0000187898 00000 n +0000186938 00000 n +0000188362 00000 n +0000188054 00000 n +0000188488 00000 n +0000188208 00000 n +0000193522 00000 n +0000190467 00000 n +0000188648 00000 n +0000192925 00000 n +0000193102 00000 n +0000193162 00000 n +0000190722 00000 n +0000190876 00000 n +0000191030 00000 n +0000191183 00000 n +0000191337 00000 n +0000191491 00000 n +0000191644 00000 n +0000193222 00000 n +0000193282 00000 n +0000191797 00000 n +0000193342 00000 n +0000191985 00000 n +0000193402 00000 n +0000192173 00000 n +0000192361 00000 n +0000193462 00000 n +0000192549 00000 n +0000192737 00000 n +0000517118 00000 n +0000531692 00000 n +0000543263 00000 n +0000554896 00000 n +0000562942 00000 n +0000590274 00000 n +0000434357 00000 n +0000197412 00000 n +0000195297 00000 n +0000193622 00000 n +0000196811 00000 n +0000196988 00000 n +0000197048 00000 n +0000195498 00000 n +0000195684 00000 n +0000195871 00000 n +0000196059 00000 n +0000196247 00000 n +0000196435 00000 n +0000196623 00000 n +0000197108 00000 n +0000197168 00000 n +0000197227 00000 n +0000197286 00000 n +0000197352 00000 n +0001244409 00000 n +0000200040 00000 n +0000199788 00000 n +0000202437 00000 n +0000199664 00000 n +0000199914 00000 n +0000200166 00000 n +0000199106 00000 n +0000197526 00000 n +0000199604 00000 n +0000199730 00000 n +0000199854 00000 n +0000199262 00000 n +0000199980 00000 n +0000199450 00000 n +0000200106 00000 n +0000202562 00000 n +0000201358 00000 n +0000200279 00000 n +0000202377 00000 n +0000201541 00000 n +0000201729 00000 n +0000201883 00000 n +0000202035 00000 n +0000202502 00000 n +0000202189 00000 n +0000974017 00000 n +0000976826 00000 n +0000205795 00000 n +0000203949 00000 n +0000202675 00000 n +0000205198 00000 n +0000205375 00000 n +0000205435 00000 n +0000204141 00000 n +0000204329 00000 n +0000204516 00000 n +0000205495 00000 n +0000205554 00000 n +0000205612 00000 n +0000204703 00000 n +0000204856 00000 n +0000205670 00000 n +0000205736 00000 n +0000205010 00000 n +0000434237 00000 n +0000210626 00000 n +0000207924 00000 n +0000205909 00000 n +0000210030 00000 n +0000210207 00000 n +0000210267 00000 n +0000208152 00000 n +0000208340 00000 n +0000210327 00000 n +0000208527 00000 n +0000208715 00000 n +0000208903 00000 n +0000209091 00000 n +0000209279 00000 n +0000209467 00000 n +0000210387 00000 n +0000209654 00000 n +0000209842 00000 n +0000210447 00000 n +0000210566 00000 n +0000332435 00000 n +0000217247 00000 n +0000217372 00000 n +0000217498 00000 n +0000221567 00000 n +0000221753 00000 n +0000213467 00000 n +0000212625 00000 n +0000210726 00000 n +0000213283 00000 n +0000212790 00000 n +0000212943 00000 n +0000213407 00000 n +0000213097 00000 n +0000392779 00000 n +0000217624 00000 n +0000215451 00000 n +0000213566 00000 n +0000217187 00000 n +0000215670 00000 n +0000215823 00000 n +0000217313 00000 n +0000215977 00000 n +0000216165 00000 n +0000216319 00000 n +0000217438 00000 n +0000216472 00000 n +0000216659 00000 n +0000217564 00000 n +0000216811 00000 n +0000216999 00000 n +0001244534 00000 n +0000221873 00000 n +0000219935 00000 n +0000217737 00000 n +0000221507 00000 n +0000220145 00000 n +0000220333 00000 n +0000220485 00000 n +0000221633 00000 n +0000220638 00000 n +0000220826 00000 n +0000220980 00000 n +0000221693 00000 n +0000221813 00000 n +0000221133 00000 n +0000221320 00000 n +0000366579 00000 n +0000222615 00000 n +0000222429 00000 n +0000221986 00000 n +0000222555 00000 n +0000228807 00000 n +0000224914 00000 n +0000222701 00000 n +0000228389 00000 n +0000228567 00000 n +0000228627 00000 n +0000228687 00000 n +0000225205 00000 n +0000225392 00000 n +0000225580 00000 n +0000225768 00000 n +0000225956 00000 n +0000226144 00000 n +0000228747 00000 n +0000226331 00000 n +0000226518 00000 n +0000226706 00000 n +0000226893 00000 n +0000227078 00000 n +0000227266 00000 n +0000227453 00000 n +0000227641 00000 n +0000227828 00000 n +0000228016 00000 n +0000228203 00000 n +0000252502 00000 n +0000252376 00000 n +0000239405 00000 n +0000235904 00000 n +0000231345 00000 n +0000228920 00000 n +0000235545 00000 n +0000231672 00000 n +0000231860 00000 n +0000235605 00000 n +0000232048 00000 n +0000232236 00000 n +0000232424 00000 n +0000232612 00000 n +0000232800 00000 n +0000235665 00000 n +0000232987 00000 n +0000233175 00000 n +0000233363 00000 n +0000233551 00000 n +0000233739 00000 n +0000233893 00000 n +0000234081 00000 n +0000234268 00000 n +0000234456 00000 n +0000234644 00000 n +0000234798 00000 n +0000234985 00000 n +0000235173 00000 n +0000235725 00000 n +0000235844 00000 n +0000235359 00000 n +0000252124 00000 n +0000249474 00000 n +0000252250 00000 n +0000266327 00000 n +0000322029 00000 n +0000263140 00000 n +0000239844 00000 n +0000237455 00000 n +0000236017 00000 n +0000239220 00000 n +0000237683 00000 n +0000239345 00000 n +0000237836 00000 n +0000237990 00000 n +0000238143 00000 n +0000239471 00000 n +0000238297 00000 n +0000238451 00000 n +0000239596 00000 n +0000238605 00000 n +0000239721 00000 n +0000238759 00000 n +0000238913 00000 n +0000239066 00000 n +0001034250 00000 n +0001012252 00000 n +0000245192 00000 n +0000241893 00000 n +0000239930 00000 n +0000244572 00000 n +0000244632 00000 n +0000242166 00000 n +0000242354 00000 n +0000242542 00000 n +0000242696 00000 n +0000242850 00000 n +0000244757 00000 n +0000243004 00000 n +0000243158 00000 n +0000243312 00000 n +0000244882 00000 n +0000243466 00000 n +0000243654 00000 n +0000243808 00000 n +0000245007 00000 n +0000243962 00000 n +0000244115 00000 n +0000244268 00000 n +0000244421 00000 n +0000245132 00000 n +0001244659 00000 n +0000978984 00000 n +0000984672 00000 n +0000249538 00000 n +0000247081 00000 n +0000245278 00000 n +0000248915 00000 n +0000247309 00000 n +0000247463 00000 n +0000247617 00000 n +0000249040 00000 n +0000247770 00000 n +0000249165 00000 n +0000247958 00000 n +0000248146 00000 n +0000248300 00000 n +0000249290 00000 n +0000249414 00000 n +0000248454 00000 n +0000248608 00000 n +0000248761 00000 n +0000252566 00000 n +0000251053 00000 n +0000249624 00000 n +0000252004 00000 n +0000252064 00000 n +0000251236 00000 n +0000251389 00000 n +0000252190 00000 n +0000251543 00000 n +0000251696 00000 n +0000252316 00000 n +0000251850 00000 n +0000252442 00000 n +0000257471 00000 n +0000255076 00000 n +0000252666 00000 n +0000257047 00000 n +0000257107 00000 n +0000257167 00000 n +0000257286 00000 n +0000255304 00000 n +0000255458 00000 n +0000255646 00000 n +0000255834 00000 n +0000256022 00000 n +0000256176 00000 n +0000256364 00000 n +0000256552 00000 n +0000256706 00000 n +0000257411 00000 n +0000256859 00000 n +0000276072 00000 n +0000285635 00000 n +0000263264 00000 n +0000260267 00000 n +0000257597 00000 n +0000262956 00000 n +0000260531 00000 n +0000260719 00000 n +0000260906 00000 n +0000261060 00000 n +0000263081 00000 n +0000261214 00000 n +0000261401 00000 n +0000261589 00000 n +0000261743 00000 n +0000261897 00000 n +0000263204 00000 n +0000262051 00000 n +0000262205 00000 n +0000262393 00000 n +0000262581 00000 n +0000262769 00000 n +0000266453 00000 n +0000265051 00000 n +0000263390 00000 n +0000266267 00000 n +0000265243 00000 n +0000265397 00000 n +0000265550 00000 n +0000266393 00000 n +0000265703 00000 n +0000265891 00000 n +0000266079 00000 n +0000272037 00000 n +0000268528 00000 n +0000266566 00000 n +0000271618 00000 n +0000271678 00000 n +0000271797 00000 n +0000271857 00000 n +0000268801 00000 n +0000268989 00000 n +0000269177 00000 n +0000269365 00000 n +0000269552 00000 n +0000269740 00000 n +0000269928 00000 n +0000270116 00000 n +0000270303 00000 n +0000270490 00000 n +0000270678 00000 n +0000271917 00000 n +0000270866 00000 n +0000271977 00000 n +0000271054 00000 n +0000271242 00000 n +0000271430 00000 n +0001244784 00000 n +0000276192 00000 n +0000280515 00000 n +0000280390 00000 n +0000282714 00000 n +0000282589 00000 n +0000276443 00000 n +0000278150 00000 n +0000278275 00000 n +0000280264 00000 n +0000276507 00000 n +0000274118 00000 n +0000272137 00000 n +0000275952 00000 n +0000276012 00000 n +0000276132 00000 n +0000274346 00000 n +0000274534 00000 n +0000274688 00000 n +0000274842 00000 n +0000274996 00000 n +0000275150 00000 n +0000276258 00000 n +0000276383 00000 n +0000275304 00000 n +0000275492 00000 n +0000275646 00000 n +0000275798 00000 n +0000278400 00000 n +0000277567 00000 n +0000276620 00000 n +0000278030 00000 n +0000278090 00000 n +0000277723 00000 n +0000278216 00000 n +0000277876 00000 n +0000278340 00000 n +0000280641 00000 n +0000279740 00000 n +0000278499 00000 n +0000280204 00000 n +0000279896 00000 n +0000280330 00000 n +0000280050 00000 n +0000280455 00000 n +0000280581 00000 n +0000282839 00000 n +0000282228 00000 n +0000280754 00000 n +0000282529 00000 n +0000282375 00000 n +0000282655 00000 n +0000282779 00000 n +0000285755 00000 n +0000284299 00000 n +0000282952 00000 n +0000285515 00000 n +0000285575 00000 n +0000285695 00000 n +0000284491 00000 n +0000284679 00000 n +0000284867 00000 n +0000285054 00000 n +0000285207 00000 n +0000285361 00000 n +0000288876 00000 n +0000287148 00000 n +0000285855 00000 n +0000288398 00000 n +0000288576 00000 n +0000288636 00000 n +0000287340 00000 n +0000287528 00000 n +0000288696 00000 n +0000288756 00000 n +0000288816 00000 n +0000287715 00000 n +0000287903 00000 n +0000288091 00000 n +0000288244 00000 n +0001244909 00000 n +0000371117 00000 n +0000293471 00000 n +0000291184 00000 n +0000288976 00000 n +0000293112 00000 n +0000293172 00000 n +0000293291 00000 n +0000293351 00000 n +0000291421 00000 n +0000291574 00000 n +0000293411 00000 n +0000291727 00000 n +0000291881 00000 n +0000292035 00000 n +0000292189 00000 n +0000292343 00000 n +0000292497 00000 n +0000292651 00000 n +0000292804 00000 n +0000292958 00000 n +0000387932 00000 n +0000440648 00000 n +0000377916 00000 n +0000305355 00000 n +0000296574 00000 n +0000293571 00000 n +0000303557 00000 n +0000303617 00000 n +0000297036 00000 n +0000297190 00000 n +0000297344 00000 n +0000297498 00000 n +0000297650 00000 n +0000297804 00000 n +0000297958 00000 n +0000303677 00000 n +0000303737 00000 n +0000298112 00000 n +0000303797 00000 n +0000298300 00000 n +0000303857 00000 n +0000298488 00000 n +0000303917 00000 n +0000298676 00000 n +0000303977 00000 n +0000298863 00000 n +0000304037 00000 n +0000299051 00000 n +0000304097 00000 n +0000299238 00000 n +0000304157 00000 n +0000299426 00000 n +0000304217 00000 n +0000299613 00000 n +0000304277 00000 n +0000299801 00000 n +0000304337 00000 n +0000299989 00000 n +0000304397 00000 n +0000300177 00000 n +0000304457 00000 n +0000300365 00000 n +0000304517 00000 n +0000300552 00000 n +0000304577 00000 n +0000300740 00000 n +0000304637 00000 n +0000300928 00000 n +0000304697 00000 n +0000301116 00000 n +0000304757 00000 n +0000301304 00000 n +0000304816 00000 n +0000301491 00000 n +0000304876 00000 n +0000301679 00000 n +0000304936 00000 n +0000301866 00000 n +0000304996 00000 n +0000302054 00000 n +0000305056 00000 n +0000302242 00000 n +0000305116 00000 n +0000302430 00000 n +0000302618 00000 n +0000302806 00000 n +0000305176 00000 n +0000302994 00000 n +0000305236 00000 n +0000303182 00000 n +0000305295 00000 n +0000303370 00000 n +0000343805 00000 n +0000322209 00000 n +0000309191 00000 n +0000305455 00000 n +0000319812 00000 n +0000319872 00000 n +0000309815 00000 n +0000319932 00000 n +0000310003 00000 n +0000319992 00000 n +0000310191 00000 n +0000320052 00000 n +0000310379 00000 n +0000320112 00000 n +0000310567 00000 n +0000320172 00000 n +0000310754 00000 n +0000320232 00000 n +0000310941 00000 n +0000320292 00000 n +0000311128 00000 n +0000320352 00000 n +0000311315 00000 n +0000320411 00000 n +0000311503 00000 n +0000320471 00000 n +0000311691 00000 n +0000320531 00000 n +0000311879 00000 n +0000320591 00000 n +0000312067 00000 n +0000320651 00000 n +0000312254 00000 n +0000320711 00000 n +0000312442 00000 n +0000320771 00000 n +0000312630 00000 n +0000320831 00000 n +0000312817 00000 n +0000320891 00000 n +0000313005 00000 n +0000320950 00000 n +0000313193 00000 n +0000321010 00000 n +0000313380 00000 n +0000321069 00000 n +0000313568 00000 n +0000321129 00000 n +0000313756 00000 n +0000321189 00000 n +0000313944 00000 n +0000321249 00000 n +0000314132 00000 n +0000321309 00000 n +0000314320 00000 n +0000321369 00000 n +0000314507 00000 n +0000321429 00000 n +0000314695 00000 n +0000321489 00000 n +0000314883 00000 n +0000315071 00000 n +0000315225 00000 n +0000321549 00000 n +0000315413 00000 n +0000315601 00000 n +0000321609 00000 n +0000315754 00000 n +0000315942 00000 n +0000316095 00000 n +0000321669 00000 n +0000316283 00000 n +0000316471 00000 n +0000316625 00000 n +0000321729 00000 n +0000316813 00000 n +0000321789 00000 n +0000317001 00000 n +0000321849 00000 n +0000321909 00000 n +0000317188 00000 n +0000317375 00000 n +0000321969 00000 n +0000317563 00000 n +0000317750 00000 n +0000317938 00000 n +0000318126 00000 n +0000322089 00000 n +0000322149 00000 n +0000318314 00000 n +0000318502 00000 n +0000318690 00000 n +0000318878 00000 n +0000319066 00000 n +0000319254 00000 n +0000319440 00000 n +0000319626 00000 n +0000348261 00000 n +0000332615 00000 n +0000325139 00000 n +0000322335 00000 n +0000332316 00000 n +0000325610 00000 n +0000325798 00000 n +0000325986 00000 n +0000326174 00000 n +0000326362 00000 n +0000326550 00000 n +0000326738 00000 n +0000326926 00000 n +0000327114 00000 n +0000327302 00000 n +0000327488 00000 n +0000327642 00000 n +0000327830 00000 n +0000328017 00000 n +0000328205 00000 n +0000328359 00000 n +0000328546 00000 n +0000328734 00000 n +0000328920 00000 n +0000329108 00000 n +0000329296 00000 n +0000329484 00000 n +0000329672 00000 n +0000329860 00000 n +0000330048 00000 n +0000330236 00000 n +0000332376 00000 n +0000330424 00000 n +0000330611 00000 n +0000330765 00000 n +0000330953 00000 n +0000331107 00000 n +0000332495 00000 n +0000331295 00000 n +0000331449 00000 n +0000332555 00000 n +0000331637 00000 n +0000331791 00000 n +0000331978 00000 n +0000332130 00000 n +0000361148 00000 n +0000356886 00000 n +0000352679 00000 n +0000348386 00000 n +0000361023 00000 n +0000361274 00000 n +0000352929 00000 n +0000348018 00000 n +0000356760 00000 n +0000366399 00000 n +0000370931 00000 n +0000371243 00000 n +0000343925 00000 n +0000335313 00000 n +0000332728 00000 n +0000343145 00000 n +0000343205 00000 n +0000335811 00000 n +0000335997 00000 n +0000343265 00000 n +0000336183 00000 n +0000336370 00000 n +0000343325 00000 n +0000336557 00000 n +0000336745 00000 n +0000343385 00000 n +0000336933 00000 n +0000337121 00000 n +0000337308 00000 n +0000337496 00000 n +0000337684 00000 n +0000337872 00000 n +0000338059 00000 n +0000338247 00000 n +0000343445 00000 n +0000338435 00000 n +0000338589 00000 n +0000338777 00000 n +0000338965 00000 n +0000339153 00000 n +0000343505 00000 n +0000339341 00000 n +0000339528 00000 n +0000339716 00000 n +0000343565 00000 n +0000339903 00000 n +0000340091 00000 n +0000340279 00000 n +0000340467 00000 n +0000340655 00000 n +0000340807 00000 n +0000340993 00000 n +0000341147 00000 n +0000343625 00000 n +0000341335 00000 n +0000341523 00000 n +0000341711 00000 n +0000341865 00000 n +0000342053 00000 n +0000342207 00000 n +0000343685 00000 n +0000342394 00000 n +0000342582 00000 n +0000343745 00000 n +0000343865 00000 n +0000342770 00000 n +0000342957 00000 n +0000348450 00000 n +0000346188 00000 n +0000344051 00000 n +0000347898 00000 n +0000347958 00000 n +0000348078 00000 n +0000346398 00000 n +0000346586 00000 n +0000346774 00000 n +0000348201 00000 n +0000346961 00000 n +0000347149 00000 n +0000348326 00000 n +0000347337 00000 n +0000347524 00000 n +0000347711 00000 n +0001245034 00000 n +0000352993 00000 n +0000350915 00000 n +0000348563 00000 n +0000352559 00000 n +0000352619 00000 n +0000351125 00000 n +0000351279 00000 n +0000351467 00000 n +0000351655 00000 n +0000351843 00000 n +0000351997 00000 n +0000352185 00000 n +0000352744 00000 n +0000352869 00000 n +0000352372 00000 n +0000357075 00000 n +0000355321 00000 n +0000353119 00000 n +0000356640 00000 n +0000356700 00000 n +0000355513 00000 n +0000355701 00000 n +0000355889 00000 n +0000356826 00000 n +0000356077 00000 n +0000356265 00000 n +0000356952 00000 n +0000356452 00000 n +0000361338 00000 n +0000359260 00000 n +0000357201 00000 n +0000360903 00000 n +0000360963 00000 n +0000359470 00000 n +0000361089 00000 n +0000359657 00000 n +0000359811 00000 n +0000359999 00000 n +0000360187 00000 n +0000360375 00000 n +0000360562 00000 n +0000361214 00000 n +0000360716 00000 n +0000366705 00000 n +0000363663 00000 n +0000361464 00000 n +0000366219 00000 n +0000366279 00000 n +0000363918 00000 n +0000364106 00000 n +0000364294 00000 n +0000366339 00000 n +0000366459 00000 n +0000364482 00000 n +0000364669 00000 n +0000366519 00000 n +0000364856 00000 n +0000365043 00000 n +0000365229 00000 n +0000365383 00000 n +0000365537 00000 n +0000365691 00000 n +0000366645 00000 n +0000365843 00000 n +0000366031 00000 n +0000371369 00000 n +0000368514 00000 n +0000366831 00000 n +0000370871 00000 n +0000370997 00000 n +0000368769 00000 n +0000368922 00000 n +0000369075 00000 n +0000371057 00000 n +0000369229 00000 n +0000369383 00000 n +0000369537 00000 n +0000369691 00000 n +0000369845 00000 n +0000369999 00000 n +0000371183 00000 n +0000370153 00000 n +0000370341 00000 n +0000371309 00000 n +0000370529 00000 n +0000370683 00000 n +0000372116 00000 n +0000371930 00000 n +0000371481 00000 n +0000372056 00000 n +0001245159 00000 n +0000378512 00000 n +0000374607 00000 n +0000372202 00000 n +0000377856 00000 n +0000378035 00000 n +0000378095 00000 n +0000374889 00000 n +0000378155 00000 n +0000375042 00000 n +0000375230 00000 n +0000375418 00000 n +0000375606 00000 n +0000375793 00000 n +0000375980 00000 n +0000376167 00000 n +0000376352 00000 n +0000376540 00000 n +0000376728 00000 n +0000376916 00000 n +0000378215 00000 n +0000378275 00000 n +0000377104 00000 n +0000377292 00000 n +0000378335 00000 n +0000378394 00000 n +0000378453 00000 n +0000377480 00000 n +0000377668 00000 n +0000381661 00000 n +0000381787 00000 n +0000381907 00000 n +0000382027 00000 n +0000380483 00000 n +0000378639 00000 n +0000381601 00000 n +0000381727 00000 n +0000380666 00000 n +0000380853 00000 n +0000381041 00000 n +0000381847 00000 n +0000381228 00000 n +0000381967 00000 n +0000381415 00000 n +0000388949 00000 n +0000384494 00000 n +0000382140 00000 n +0000387872 00000 n +0000388051 00000 n +0000388111 00000 n +0000384785 00000 n +0000384938 00000 n +0000388171 00000 n +0000385091 00000 n +0000388231 00000 n +0000388290 00000 n +0000385245 00000 n +0000388349 00000 n +0000385433 00000 n +0000388409 00000 n +0000385621 00000 n +0000388469 00000 n +0000385809 00000 n +0000388529 00000 n +0000385994 00000 n +0000388589 00000 n +0000386182 00000 n +0000388649 00000 n +0000386370 00000 n +0000388709 00000 n +0000386558 00000 n +0000386746 00000 n +0000388769 00000 n +0000386934 00000 n +0000387122 00000 n +0000388829 00000 n +0000388889 00000 n +0000387310 00000 n +0000387498 00000 n +0000387686 00000 n +0000392659 00000 n +0000392904 00000 n +0000391564 00000 n +0000389062 00000 n +0000392421 00000 n +0000391738 00000 n +0000392481 00000 n +0000392540 00000 n +0000391926 00000 n +0000392080 00000 n +0000392599 00000 n +0000392719 00000 n +0000392268 00000 n +0000392844 00000 n +0000394464 00000 n +0000394590 00000 n +0000393943 00000 n +0000393004 00000 n +0000394404 00000 n +0000394099 00000 n +0000394530 00000 n +0000394252 00000 n +0000400012 00000 n +0000396814 00000 n +0000394676 00000 n +0000399174 00000 n +0000399352 00000 n +0000397060 00000 n +0000397214 00000 n +0000399412 00000 n +0000397368 00000 n +0000397519 00000 n +0000399472 00000 n +0000399532 00000 n +0000397672 00000 n +0000399592 00000 n +0000397860 00000 n +0000399652 00000 n +0000398048 00000 n +0000399712 00000 n +0000398236 00000 n +0000399772 00000 n +0000398424 00000 n +0000399832 00000 n +0000398612 00000 n +0000399892 00000 n +0000398799 00000 n +0000399952 00000 n +0000398987 00000 n +0001245284 00000 n +0000404937 00000 n +0000402275 00000 n +0000400112 00000 n +0000404577 00000 n +0000402512 00000 n +0000402700 00000 n +0000402888 00000 n +0000404637 00000 n +0000403075 00000 n +0000403263 00000 n +0000403451 00000 n +0000404697 00000 n +0000403639 00000 n +0000403827 00000 n +0000404757 00000 n +0000404015 00000 n +0000404817 00000 n +0000404877 00000 n +0000404203 00000 n +0000404391 00000 n +0000434483 00000 n +0000423147 00000 n +0000426061 00000 n +0000423273 00000 n +0000428677 00000 n +0000426187 00000 n +0000433926 00000 n +0000410241 00000 n +0000407307 00000 n +0000405037 00000 n +0000410001 00000 n +0000410061 00000 n +0000407562 00000 n +0000410121 00000 n +0000407749 00000 n +0000407937 00000 n +0000408125 00000 n +0000408313 00000 n +0000408501 00000 n +0000408689 00000 n +0000408877 00000 n +0000409065 00000 n +0000409251 00000 n +0000409438 00000 n +0000410181 00000 n +0000409625 00000 n +0000409813 00000 n +0000418706 00000 n +0000423021 00000 n +0000423399 00000 n +0000434052 00000 n +0000428173 00000 n +0000425809 00000 n +0000425935 00000 n +0000428425 00000 n +0000428047 00000 n +0000428551 00000 n +0000418951 00000 n +0000418826 00000 n +0000414757 00000 n +0000412676 00000 n +0000410341 00000 n +0000414517 00000 n +0000414577 00000 n +0000412895 00000 n +0000413083 00000 n +0000413271 00000 n +0000413458 00000 n +0000413646 00000 n +0000413833 00000 n +0000414637 00000 n +0000414021 00000 n +0000414697 00000 n +0000414209 00000 n +0000414363 00000 n +0000419203 00000 n +0000428299 00000 n +0000425684 00000 n +0000419077 00000 n +0000425558 00000 n +0000437772 00000 n +0000422895 00000 n +0000419267 00000 n +0000416738 00000 n +0000414883 00000 n +0000418347 00000 n +0000416948 00000 n +0000417135 00000 n +0000417289 00000 n +0000417477 00000 n +0000417631 00000 n +0000417817 00000 n +0000418466 00000 n +0000418526 00000 n +0000417971 00000 n +0000418586 00000 n +0000418159 00000 n +0000418646 00000 n +0000418766 00000 n +0000418891 00000 n +0000419017 00000 n +0000419143 00000 n +0000434608 00000 n +0000437586 00000 n +0000423525 00000 n +0000421173 00000 n +0000419367 00000 n +0000422775 00000 n +0000422835 00000 n +0000422961 00000 n +0000423087 00000 n +0000421383 00000 n +0000421536 00000 n +0000423213 00000 n +0000421690 00000 n +0000421841 00000 n +0000422027 00000 n +0000422214 00000 n +0000422402 00000 n +0000423339 00000 n +0000422587 00000 n +0000423465 00000 n +0000426251 00000 n +0000425163 00000 n +0000423611 00000 n +0000425498 00000 n +0000425624 00000 n +0000425750 00000 n +0000425310 00000 n +0000425875 00000 n +0000426001 00000 n +0000426127 00000 n +0001245409 00000 n +0000428741 00000 n +0000427801 00000 n +0000426337 00000 n +0000427927 00000 n +0000427987 00000 n +0000428113 00000 n +0000428239 00000 n +0000428365 00000 n +0000428491 00000 n +0000428617 00000 n +0000434672 00000 n +0000430633 00000 n +0000428827 00000 n +0000433806 00000 n +0000433866 00000 n +0000433992 00000 n +0000434117 00000 n +0000434177 00000 n +0000434297 00000 n +0000430933 00000 n +0000431121 00000 n +0000431275 00000 n +0000431429 00000 n +0000431583 00000 n +0000431737 00000 n +0000431891 00000 n +0000432045 00000 n +0000432199 00000 n +0000434423 00000 n +0000432353 00000 n +0000432540 00000 n +0000432694 00000 n +0000432848 00000 n +0000433002 00000 n +0000433156 00000 n +0000433310 00000 n +0000433464 00000 n +0000434548 00000 n +0000433618 00000 n +0000971573 00000 n +0000998429 00000 n +0001008609 00000 n +0001029236 00000 n +0001021623 00000 n +0000437892 00000 n +0000435994 00000 n +0000434758 00000 n +0000437466 00000 n +0000437526 00000 n +0000436204 00000 n +0000436357 00000 n +0000436511 00000 n +0000436665 00000 n +0000436819 00000 n +0000437652 00000 n +0000436973 00000 n +0000437158 00000 n +0000437312 00000 n +0000437712 00000 n +0000437832 00000 n +0001046140 00000 n +0000441127 00000 n +0000440091 00000 n +0000438005 00000 n +0000440588 00000 n +0000440767 00000 n +0000440827 00000 n +0000440247 00000 n +0000440887 00000 n +0000440400 00000 n +0000440947 00000 n +0000441007 00000 n +0000441067 00000 n +0000446810 00000 n +0000443198 00000 n +0000441227 00000 n +0000445973 00000 n +0000446152 00000 n +0000446212 00000 n +0000443462 00000 n +0000443615 00000 n +0000443766 00000 n +0000446272 00000 n +0000446331 00000 n +0000443917 00000 n +0000446390 00000 n +0000444103 00000 n +0000446450 00000 n +0000444290 00000 n +0000446510 00000 n +0000444477 00000 n +0000446570 00000 n +0000444665 00000 n +0000444851 00000 n +0000445038 00000 n +0000445224 00000 n +0000445412 00000 n +0000446630 00000 n +0000446690 00000 n +0000445598 00000 n +0000446750 00000 n +0000445786 00000 n +0000451561 00000 n +0000448918 00000 n +0000446923 00000 n +0000451143 00000 n +0000451203 00000 n +0000451322 00000 n +0000449164 00000 n +0000451381 00000 n +0000449317 00000 n +0000449470 00000 n +0000451441 00000 n +0000449623 00000 n +0000451501 00000 n +0000449777 00000 n +0000449965 00000 n +0000450119 00000 n +0000450307 00000 n +0000450460 00000 n +0000450647 00000 n +0000450801 00000 n +0000450989 00000 n +0001245534 00000 n +0000462222 00000 n +0000459096 00000 n +0000456241 00000 n +0000456365 00000 n +0000456121 00000 n +0000456491 00000 n +0000453780 00000 n +0000451687 00000 n +0000456001 00000 n +0000456061 00000 n +0000456181 00000 n +0000454026 00000 n +0000454180 00000 n +0000454334 00000 n +0000454486 00000 n +0000456306 00000 n +0000454640 00000 n +0000454791 00000 n +0000454979 00000 n +0000455167 00000 n +0000455320 00000 n +0000456431 00000 n +0000455474 00000 n +0000455627 00000 n +0000455814 00000 n +0000459222 00000 n +0000457854 00000 n +0000456604 00000 n +0000459036 00000 n +0000458046 00000 n +0000459162 00000 n +0000458234 00000 n +0000458388 00000 n +0000458576 00000 n +0000458730 00000 n +0000458882 00000 n +0000462886 00000 n +0000460946 00000 n +0000459335 00000 n +0000462162 00000 n +0000462341 00000 n +0000461138 00000 n +0000461292 00000 n +0000461446 00000 n +0000462401 00000 n +0000462461 00000 n +0000461600 00000 n +0000462521 00000 n +0000461788 00000 n +0000461974 00000 n +0000462580 00000 n +0000462640 00000 n +0000462700 00000 n +0000462760 00000 n +0000462826 00000 n +0000468412 00000 n +0000465547 00000 n +0000462986 00000 n +0000467995 00000 n +0000468173 00000 n +0000465802 00000 n +0000465955 00000 n +0000466142 00000 n +0000466328 00000 n +0000468233 00000 n +0000466516 00000 n +0000468292 00000 n +0000466669 00000 n +0000466823 00000 n +0000468352 00000 n +0000466977 00000 n +0000467163 00000 n +0000467315 00000 n +0000467503 00000 n +0000467657 00000 n +0000467843 00000 n +0000477719 00000 n +0000486199 00000 n +0000486450 00000 n +0000490963 00000 n +0000477839 00000 n +0000471354 00000 n +0000468512 00000 n +0000477359 00000 n +0000471789 00000 n +0000471976 00000 n +0000472129 00000 n +0000472316 00000 n +0000472469 00000 n +0000472657 00000 n +0000472811 00000 n +0000472999 00000 n +0000473153 00000 n +0000473340 00000 n +0000473493 00000 n +0000473681 00000 n +0000473835 00000 n +0000474023 00000 n +0000474176 00000 n +0000474363 00000 n +0000474516 00000 n +0000474704 00000 n +0000474858 00000 n +0000475046 00000 n +0000475200 00000 n +0000475384 00000 n +0000477419 00000 n +0000475533 00000 n +0000475721 00000 n +0000475875 00000 n +0000476029 00000 n +0000477479 00000 n +0000477539 00000 n +0000476183 00000 n +0000476371 00000 n +0000476558 00000 n +0000476712 00000 n +0000477599 00000 n +0000476866 00000 n +0000477053 00000 n +0000477659 00000 n +0000477779 00000 n +0000477206 00000 n +0000494550 00000 n +0000486324 00000 n +0000481628 00000 n +0000490711 00000 n +0000490837 00000 n +0000481880 00000 n +0000481754 00000 n +0000482006 00000 n +0000490585 00000 n +0000494676 00000 n +0000482132 00000 n +0000479734 00000 n +0000477952 00000 n +0000481568 00000 n +0000479962 00000 n +0000480116 00000 n +0000481694 00000 n +0000480270 00000 n +0000480424 00000 n +0000480578 00000 n +0000481820 00000 n +0000480732 00000 n +0000481946 00000 n +0000480886 00000 n +0000481040 00000 n +0000482072 00000 n +0000481228 00000 n +0000481382 00000 n +0001245659 00000 n +0000486575 00000 n +0000484436 00000 n +0000482245 00000 n +0000486139 00000 n +0000484655 00000 n +0000484809 00000 n +0000486265 00000 n +0000484963 00000 n +0000485117 00000 n +0000485304 00000 n +0000485491 00000 n +0000486390 00000 n +0000485644 00000 n +0000485798 00000 n +0000486515 00000 n +0000485985 00000 n +0000491027 00000 n +0000488658 00000 n +0000486688 00000 n +0000490525 00000 n +0000488886 00000 n +0000489040 00000 n +0000490651 00000 n +0000489194 00000 n +0000489348 00000 n +0000490777 00000 n +0000489536 00000 n +0000489690 00000 n +0000490903 00000 n +0000489877 00000 n +0000490030 00000 n +0000490217 00000 n +0000490371 00000 n +0000494802 00000 n +0000493119 00000 n +0000491140 00000 n +0000494430 00000 n +0000494490 00000 n +0000493320 00000 n +0000493474 00000 n +0000494616 00000 n +0000493627 00000 n +0000493780 00000 n +0000493934 00000 n +0000494742 00000 n +0000494088 00000 n +0000494242 00000 n +0000495759 00000 n +0000495573 00000 n +0000494928 00000 n +0000495699 00000 n +0000502863 00000 n +0000498394 00000 n +0000495872 00000 n +0000502265 00000 n +0000502325 00000 n +0000502444 00000 n +0000498712 00000 n +0000498900 00000 n +0000499088 00000 n +0000499276 00000 n +0000499464 00000 n +0000502504 00000 n +0000499652 00000 n +0000499805 00000 n +0000502564 00000 n +0000499958 00000 n +0000502624 00000 n +0000502684 00000 n +0000500112 00000 n +0000502744 00000 n +0000500299 00000 n +0000500487 00000 n +0000502803 00000 n +0000500675 00000 n +0000500863 00000 n +0000501017 00000 n +0000501205 00000 n +0000501393 00000 n +0000501547 00000 n +0000501735 00000 n +0000501923 00000 n +0000502077 00000 n +0000507376 00000 n +0000507556 00000 n +0000507676 00000 n +0000510243 00000 n +0000507802 00000 n +0000505092 00000 n +0000502976 00000 n +0000507256 00000 n +0000507316 00000 n +0000507436 00000 n +0000505329 00000 n +0000505517 00000 n +0000505705 00000 n +0000505893 00000 n +0000507496 00000 n +0000507616 00000 n +0000506046 00000 n +0000506200 00000 n +0000506386 00000 n +0000506574 00000 n +0000507742 00000 n +0000506728 00000 n +0000506882 00000 n +0000507070 00000 n +0001245784 00000 n +0000510368 00000 n +0000509166 00000 n +0000507928 00000 n +0000510183 00000 n +0000509349 00000 n +0000510308 00000 n +0000509503 00000 n +0000509657 00000 n +0000509843 00000 n +0000510031 00000 n +0000517832 00000 n +0000513059 00000 n +0000510481 00000 n +0000517058 00000 n +0000517237 00000 n +0000513377 00000 n +0000513565 00000 n +0000513753 00000 n +0000517297 00000 n +0000513941 00000 n +0000514094 00000 n +0000517356 00000 n +0000517415 00000 n +0000514247 00000 n +0000517474 00000 n +0000514435 00000 n +0000517534 00000 n +0000514622 00000 n +0000517594 00000 n +0000514810 00000 n +0000517654 00000 n +0000517713 00000 n +0000514998 00000 n +0000515186 00000 n +0000515372 00000 n +0000515557 00000 n +0000515744 00000 n +0000515931 00000 n +0000516119 00000 n +0000517772 00000 n +0000516307 00000 n +0000516494 00000 n +0000516682 00000 n +0000516870 00000 n +0000522262 00000 n +0000525329 00000 n +0000522016 00000 n +0000521896 00000 n +0000522142 00000 n +0000522387 00000 n +0000519877 00000 n +0000517945 00000 n +0000521776 00000 n +0000521836 00000 n +0000521956 00000 n +0000520105 00000 n +0000520291 00000 n +0000520445 00000 n +0000522082 00000 n +0000520599 00000 n +0000520786 00000 n +0000520940 00000 n +0000522202 00000 n +0000521094 00000 n +0000521281 00000 n +0000521435 00000 n +0000522328 00000 n +0000521589 00000 n +0000525455 00000 n +0000523959 00000 n +0000522500 00000 n +0000525269 00000 n +0000524160 00000 n +0000524347 00000 n +0000524501 00000 n +0000524655 00000 n +0000525395 00000 n +0000524808 00000 n +0000524962 00000 n +0000525116 00000 n +0000532767 00000 n +0000528057 00000 n +0000525568 00000 n +0000531632 00000 n +0000531811 00000 n +0000531871 00000 n +0000528357 00000 n +0000528510 00000 n +0000531931 00000 n +0000528663 00000 n +0000531989 00000 n +0000532049 00000 n +0000528817 00000 n +0000532109 00000 n +0000529005 00000 n +0000532169 00000 n +0000529192 00000 n +0000532229 00000 n +0000529379 00000 n +0000532289 00000 n +0000529567 00000 n +0000532349 00000 n +0000529755 00000 n +0000532409 00000 n +0000529943 00000 n +0000532469 00000 n +0000530131 00000 n +0000532529 00000 n +0000530319 00000 n +0000532588 00000 n +0000530505 00000 n +0000532648 00000 n +0000530693 00000 n +0000532707 00000 n +0000530880 00000 n +0000531068 00000 n +0000531256 00000 n +0000531444 00000 n +0000535644 00000 n +0000535524 00000 n +0000535770 00000 n +0000535896 00000 n +0000534744 00000 n +0000532880 00000 n +0000535404 00000 n +0000535464 00000 n +0000535584 00000 n +0000535710 00000 n +0000534909 00000 n +0000535063 00000 n +0000535836 00000 n +0000535217 00000 n +0001245909 00000 n +0000544822 00000 n +0000538364 00000 n +0000536009 00000 n +0000543203 00000 n +0000543382 00000 n +0000543442 00000 n +0000538727 00000 n +0000538880 00000 n +0000539032 00000 n +0000539184 00000 n +0000543502 00000 n +0000539337 00000 n +0000543562 00000 n +0000543622 00000 n +0000539491 00000 n +0000543682 00000 n +0000539679 00000 n +0000543742 00000 n +0000539866 00000 n +0000543802 00000 n +0000540053 00000 n +0000543862 00000 n +0000540239 00000 n +0000543922 00000 n +0000540427 00000 n +0000543982 00000 n +0000540614 00000 n +0000544042 00000 n +0000540802 00000 n +0000544102 00000 n +0000540990 00000 n +0000544162 00000 n +0000541178 00000 n +0000544222 00000 n +0000541364 00000 n +0000544282 00000 n +0000541552 00000 n +0000544342 00000 n +0000541740 00000 n +0000544402 00000 n +0000541928 00000 n +0000544462 00000 n +0000542113 00000 n +0000544522 00000 n +0000542301 00000 n +0000544582 00000 n +0000542488 00000 n +0000544642 00000 n +0000542676 00000 n +0000544702 00000 n +0000544762 00000 n +0000542864 00000 n +0000543017 00000 n +0000549572 00000 n +0000546868 00000 n +0000544935 00000 n +0000548902 00000 n +0000548962 00000 n +0000549022 00000 n +0000547096 00000 n +0000549082 00000 n +0000547284 00000 n +0000547470 00000 n +0000547656 00000 n +0000549142 00000 n +0000547844 00000 n +0000548032 00000 n +0000548219 00000 n +0000548406 00000 n +0000549202 00000 n +0000549262 00000 n +0000549322 00000 n +0000548594 00000 n +0000549382 00000 n +0000549448 00000 n +0000548748 00000 n +0000549508 00000 n +0000551883 00000 n +0000552009 00000 n +0000552133 00000 n +0000551136 00000 n +0000549699 00000 n +0000551763 00000 n +0000551823 00000 n +0000551301 00000 n +0000551949 00000 n +0000551455 00000 n +0000552074 00000 n +0000551609 00000 n +0000555493 00000 n +0000553460 00000 n +0000552246 00000 n +0000554836 00000 n +0000555015 00000 n +0000553661 00000 n +0000555075 00000 n +0000553815 00000 n +0000553968 00000 n +0000555135 00000 n +0000554120 00000 n +0000555193 00000 n +0000555253 00000 n +0000554273 00000 n +0000555313 00000 n +0000555373 00000 n +0000554460 00000 n +0000555433 00000 n +0000554648 00000 n +0000564257 00000 n +0000557971 00000 n +0000555593 00000 n +0000562882 00000 n +0000563061 00000 n +0000558334 00000 n +0000558520 00000 n +0000558706 00000 n +0000558894 00000 n +0000559081 00000 n +0000559269 00000 n +0000563121 00000 n +0000559455 00000 n +0000559608 00000 n +0000563181 00000 n +0000559761 00000 n +0000563241 00000 n +0000563301 00000 n +0000559915 00000 n +0000563361 00000 n +0000560103 00000 n +0000563421 00000 n +0000560287 00000 n +0000563481 00000 n +0000560475 00000 n +0000563541 00000 n +0000560663 00000 n +0000563600 00000 n +0000560851 00000 n +0000563660 00000 n +0000561039 00000 n +0000563720 00000 n +0000561227 00000 n +0000563780 00000 n +0000561415 00000 n +0000563840 00000 n +0000561603 00000 n +0000563900 00000 n +0000561791 00000 n +0000563959 00000 n +0000561979 00000 n +0000564019 00000 n +0000562167 00000 n +0000564079 00000 n +0000562355 00000 n +0000564139 00000 n +0000564198 00000 n +0000562543 00000 n +0000562696 00000 n +0000574040 00000 n +0000573915 00000 n +0000583119 00000 n +0000570197 00000 n +0000573789 00000 n +0000570317 00000 n +0000566753 00000 n +0000564357 00000 n +0000569838 00000 n +0000569898 00000 n +0000567026 00000 n +0000567214 00000 n +0000567402 00000 n +0000567589 00000 n +0000567775 00000 n +0000567962 00000 n +0000569958 00000 n +0000568150 00000 n +0000568338 00000 n +0000568525 00000 n +0000570018 00000 n +0000568713 00000 n +0000570078 00000 n +0000568900 00000 n +0000569088 00000 n +0000569276 00000 n +0000569464 00000 n +0000569650 00000 n +0000570137 00000 n +0000570257 00000 n +0001246034 00000 n +0000579305 00000 n +0000582868 00000 n +0000574166 00000 n +0000579431 00000 n +0000582994 00000 n +0000574230 00000 n +0000572098 00000 n +0000570430 00000 n +0000573729 00000 n +0000572317 00000 n +0000572470 00000 n +0000573855 00000 n +0000572624 00000 n +0000572776 00000 n +0000573980 00000 n +0000572929 00000 n +0000573082 00000 n +0000574106 00000 n +0000573236 00000 n +0000573424 00000 n +0000573576 00000 n +0000579495 00000 n +0000577021 00000 n +0000574343 00000 n +0000579185 00000 n +0000579245 00000 n +0000577258 00000 n +0000577446 00000 n +0000577599 00000 n +0000579371 00000 n +0000577753 00000 n +0000577941 00000 n +0000578129 00000 n +0000578316 00000 n +0000578504 00000 n +0000578691 00000 n +0000578878 00000 n +0000579031 00000 n +0000583183 00000 n +0000581241 00000 n +0000579608 00000 n +0000582748 00000 n +0000582808 00000 n +0000581451 00000 n +0000581639 00000 n +0000581792 00000 n +0000582934 00000 n +0000581946 00000 n +0000582099 00000 n +0000583059 00000 n +0000582253 00000 n +0000582441 00000 n +0000582594 00000 n +0000584621 00000 n +0000584038 00000 n +0000583282 00000 n +0000584501 00000 n +0000584561 00000 n +0000584194 00000 n +0000584347 00000 n +0000591352 00000 n +0000586870 00000 n +0000584707 00000 n +0000590214 00000 n +0000590393 00000 n +0000590453 00000 n +0000587161 00000 n +0000587313 00000 n +0000587466 00000 n +0000590513 00000 n +0000587619 00000 n +0000590572 00000 n +0000587773 00000 n +0000590632 00000 n +0000587960 00000 n +0000590692 00000 n +0000588148 00000 n +0000590752 00000 n +0000588336 00000 n +0000590812 00000 n +0000588524 00000 n +0000590872 00000 n +0000588712 00000 n +0000590932 00000 n +0000588900 00000 n +0000590992 00000 n +0000589087 00000 n +0000591052 00000 n +0000589275 00000 n +0000591112 00000 n +0000589463 00000 n +0000591172 00000 n +0000591232 00000 n +0000589651 00000 n +0000591292 00000 n +0000589839 00000 n +0000590027 00000 n +0000592778 00000 n +0000592958 00000 n +0000593078 00000 n +0000592532 00000 n +0000591465 00000 n +0000592658 00000 n +0000592718 00000 n +0000592838 00000 n +0000592898 00000 n +0000593018 00000 n +0001246159 00000 n +0000593729 00000 n +0000593543 00000 n +0000593178 00000 n +0000593669 00000 n +0000601284 00000 n +0000595273 00000 n +0000593802 00000 n +0000600148 00000 n +0000600385 00000 n +0000595636 00000 n +0000595790 00000 n +0000600445 00000 n +0000600505 00000 n +0000595943 00000 n +0000596097 00000 n +0000600565 00000 n +0000596284 00000 n +0000600625 00000 n +0000596471 00000 n +0000596625 00000 n +0000600685 00000 n +0000596812 00000 n +0000596966 00000 n +0000600745 00000 n +0000597152 00000 n +0000597340 00000 n +0000600805 00000 n +0000597527 00000 n +0000600865 00000 n +0000597714 00000 n +0000600925 00000 n +0000597900 00000 n +0000598088 00000 n +0000600984 00000 n +0000598275 00000 n +0000598463 00000 n +0000601044 00000 n +0000598650 00000 n +0000598838 00000 n +0000601104 00000 n +0000599025 00000 n +0000599213 00000 n +0000601164 00000 n +0000599400 00000 n +0000599588 00000 n +0000601224 00000 n +0000599775 00000 n +0000599962 00000 n +0000603990 00000 n +0000602297 00000 n +0000601383 00000 n +0000603512 00000 n +0000603690 00000 n +0000602489 00000 n +0000602643 00000 n +0000603750 00000 n +0000603810 00000 n +0000602797 00000 n +0000602951 00000 n +0000603870 00000 n +0000603138 00000 n +0000603930 00000 n +0000603325 00000 n +0000982202 00000 n +0000605699 00000 n +0000604751 00000 n +0000604076 00000 n +0000605281 00000 n +0000605459 00000 n +0000605519 00000 n +0000605579 00000 n +0000604907 00000 n +0000605639 00000 n +0000605094 00000 n +0000610651 00000 n +0000607083 00000 n +0000605798 00000 n +0000609695 00000 n +0000609873 00000 n +0000609933 00000 n +0000609993 00000 n +0000607338 00000 n +0000610053 00000 n +0000607524 00000 n +0000607678 00000 n +0000610113 00000 n +0000607865 00000 n +0000608019 00000 n +0000610172 00000 n +0000608206 00000 n +0000610232 00000 n +0000608391 00000 n +0000610292 00000 n +0000608576 00000 n +0000610352 00000 n +0000608763 00000 n +0000610412 00000 n +0000608950 00000 n +0000610472 00000 n +0000609137 00000 n +0000610532 00000 n +0000609323 00000 n +0000610591 00000 n +0000609510 00000 n +0000613003 00000 n +0000611545 00000 n +0000610750 00000 n +0000612466 00000 n +0000612644 00000 n +0000612704 00000 n +0000612764 00000 n +0000611719 00000 n +0000612824 00000 n +0000611906 00000 n +0000612884 00000 n +0000612093 00000 n +0000612943 00000 n +0000612280 00000 n +0001246284 00000 n +0000618735 00000 n +0000614566 00000 n +0000613102 00000 n +0000617899 00000 n +0000618077 00000 n +0000614857 00000 n +0000618137 00000 n +0000618196 00000 n +0000615010 00000 n +0000615163 00000 n +0000615316 00000 n +0000618255 00000 n +0000615502 00000 n +0000615690 00000 n +0000618315 00000 n +0000615876 00000 n +0000616064 00000 n +0000618375 00000 n +0000616251 00000 n +0000618435 00000 n +0000616438 00000 n +0000616626 00000 n +0000618495 00000 n +0000616813 00000 n +0000617001 00000 n +0000618555 00000 n +0000617188 00000 n +0000617342 00000 n +0000618615 00000 n +0000617528 00000 n +0000618675 00000 n +0000617713 00000 n +0000620695 00000 n +0000619550 00000 n +0000618860 00000 n +0000620277 00000 n +0000620455 00000 n +0000620515 00000 n +0000620575 00000 n +0000619715 00000 n +0000619903 00000 n +0000620635 00000 n +0000620090 00000 n +0000622546 00000 n +0000621494 00000 n +0000620794 00000 n +0000622188 00000 n +0000622366 00000 n +0000621659 00000 n +0000622426 00000 n +0000622486 00000 n +0000621813 00000 n +0000622001 00000 n +0000628080 00000 n +0000623872 00000 n +0000622632 00000 n +0000627243 00000 n +0000627421 00000 n +0000624163 00000 n +0000624317 00000 n +0000624471 00000 n +0000627481 00000 n +0000627541 00000 n +0000624625 00000 n +0000624813 00000 n +0000627601 00000 n +0000625000 00000 n +0000627661 00000 n +0000625187 00000 n +0000627721 00000 n +0000625374 00000 n +0000627781 00000 n +0000625561 00000 n +0000627840 00000 n +0000625748 00000 n +0000625935 00000 n +0000627900 00000 n +0000626119 00000 n +0000626307 00000 n +0000627960 00000 n +0000626494 00000 n +0000626682 00000 n +0000628020 00000 n +0000626869 00000 n +0000627057 00000 n +0000631434 00000 n +0000629238 00000 n +0000628179 00000 n +0000631076 00000 n +0000631254 00000 n +0000629457 00000 n +0000629611 00000 n +0000631314 00000 n +0000631374 00000 n +0000629765 00000 n +0000629952 00000 n +0000630138 00000 n +0000630326 00000 n +0000630514 00000 n +0000630700 00000 n +0000630888 00000 n +0000634446 00000 n +0000632654 00000 n +0000631533 00000 n +0000634030 00000 n +0000634208 00000 n +0000632855 00000 n +0000633042 00000 n +0000633196 00000 n +0000633350 00000 n +0000633504 00000 n +0000634268 00000 n +0000634327 00000 n +0000633658 00000 n +0000634386 00000 n +0000633843 00000 n +0001246409 00000 n +0000642316 00000 n +0000636745 00000 n +0000634558 00000 n +0000641358 00000 n +0000641536 00000 n +0000637090 00000 n +0000641596 00000 n +0000641656 00000 n +0000637244 00000 n +0000637432 00000 n +0000641716 00000 n +0000637618 00000 n +0000637803 00000 n +0000641776 00000 n +0000637987 00000 n +0000638175 00000 n +0000641836 00000 n +0000638362 00000 n +0000638550 00000 n +0000641896 00000 n +0000638737 00000 n +0000638923 00000 n +0000641956 00000 n +0000639108 00000 n +0000639296 00000 n +0000642016 00000 n +0000639483 00000 n +0000639671 00000 n +0000642076 00000 n +0000639858 00000 n +0000640046 00000 n +0000642136 00000 n +0000640233 00000 n +0000640421 00000 n +0000642196 00000 n +0000640608 00000 n +0000640796 00000 n +0000642256 00000 n +0000640983 00000 n +0000641171 00000 n +0000645321 00000 n +0000643347 00000 n +0000642442 00000 n +0000645021 00000 n +0000645081 00000 n +0000643557 00000 n +0000643745 00000 n +0000645141 00000 n +0000643932 00000 n +0000644120 00000 n +0000645201 00000 n +0000644307 00000 n +0000644495 00000 n +0000645261 00000 n +0000644682 00000 n +0000644835 00000 n +0000647037 00000 n +0000646148 00000 n +0000645421 00000 n +0000646679 00000 n +0000646857 00000 n +0000646917 00000 n +0000646977 00000 n +0000646304 00000 n +0000646492 00000 n +0000649685 00000 n +0000647959 00000 n +0000647149 00000 n +0000649208 00000 n +0000649386 00000 n +0000649446 00000 n +0000649506 00000 n +0000648151 00000 n +0000648305 00000 n +0000649566 00000 n +0000648492 00000 n +0000648646 00000 n +0000649626 00000 n +0000648833 00000 n +0000649021 00000 n +0000658442 00000 n +0000651222 00000 n +0000649797 00000 n +0000657245 00000 n +0000657423 00000 n +0000657483 00000 n +0000657543 00000 n +0000651630 00000 n +0000651818 00000 n +0000657603 00000 n +0000652005 00000 n +0000652193 00000 n +0000657663 00000 n +0000652380 00000 n +0000652568 00000 n +0000657723 00000 n +0000652755 00000 n +0000652942 00000 n +0000657783 00000 n +0000653128 00000 n +0000653316 00000 n +0000657843 00000 n +0000653503 00000 n +0000653691 00000 n +0000657903 00000 n +0000653878 00000 n +0000654066 00000 n +0000657963 00000 n +0000654252 00000 n +0000654440 00000 n +0000658023 00000 n +0000654627 00000 n +0000654815 00000 n +0000658083 00000 n +0000655002 00000 n +0000655190 00000 n +0000658142 00000 n +0000655377 00000 n +0000655563 00000 n +0000658202 00000 n +0000655748 00000 n +0000655936 00000 n +0000658262 00000 n +0000656123 00000 n +0000656311 00000 n +0000658322 00000 n +0000656498 00000 n +0000656685 00000 n +0000658382 00000 n +0000656871 00000 n +0000657059 00000 n +0000659990 00000 n +0000659135 00000 n +0000658528 00000 n +0000659632 00000 n +0000659810 00000 n +0000659870 00000 n +0000659930 00000 n +0000659291 00000 n +0000659445 00000 n +0001246534 00000 n +0000668945 00000 n +0000662093 00000 n +0000660076 00000 n +0000668466 00000 n +0000668645 00000 n +0000668705 00000 n +0000668765 00000 n +0000662519 00000 n +0000662706 00000 n +0000662891 00000 n +0000663077 00000 n +0000663262 00000 n +0000663448 00000 n +0000663633 00000 n +0000663820 00000 n +0000664006 00000 n +0000664191 00000 n +0000664375 00000 n +0000664561 00000 n +0000664745 00000 n +0000664932 00000 n +0000665118 00000 n +0000665304 00000 n +0000665489 00000 n +0000665675 00000 n +0000665860 00000 n +0000668825 00000 n +0000666046 00000 n +0000666233 00000 n +0000666418 00000 n +0000666605 00000 n +0000666791 00000 n +0000666978 00000 n +0000667164 00000 n +0000667351 00000 n +0000667537 00000 n +0000668885 00000 n +0000667723 00000 n +0000667910 00000 n +0000668095 00000 n +0000668281 00000 n +0001145426 00000 n +0001145393 00000 n +0001145360 00000 n +0001145327 00000 n +0001145294 00000 n +0001145261 00000 n +0001145228 00000 n +0001145195 00000 n +0001145162 00000 n +0001145129 00000 n +0000675485 00000 n +0000670548 00000 n +0000669071 00000 n +0000675365 00000 n +0000670902 00000 n +0000671089 00000 n +0000671275 00000 n +0000671462 00000 n +0000671648 00000 n +0000671834 00000 n +0000672019 00000 n +0000672206 00000 n +0000672392 00000 n +0000672579 00000 n +0000672765 00000 n +0000672950 00000 n +0000673133 00000 n +0000673320 00000 n +0000673506 00000 n +0000675425 00000 n +0000673692 00000 n +0000673878 00000 n +0000674062 00000 n +0000674249 00000 n +0000674435 00000 n +0000674621 00000 n +0000674806 00000 n +0000674993 00000 n +0000675179 00000 n +0001145096 00000 n +0001145063 00000 n +0001145030 00000 n +0001144997 00000 n +0001144964 00000 n +0000686796 00000 n +0000677312 00000 n +0000675585 00000 n +0000685298 00000 n +0000685477 00000 n +0000685537 00000 n +0000685597 00000 n +0000677810 00000 n +0000677998 00000 n +0000685657 00000 n +0000678185 00000 n +0000678373 00000 n +0000685717 00000 n +0000678560 00000 n +0000678748 00000 n +0000685777 00000 n +0000678935 00000 n +0000679122 00000 n +0000685837 00000 n +0000679308 00000 n +0000679496 00000 n +0000685897 00000 n +0000679683 00000 n +0000679871 00000 n +0000685957 00000 n +0000680058 00000 n +0000680246 00000 n +0000686017 00000 n +0000680432 00000 n +0000680620 00000 n +0000686077 00000 n +0000680807 00000 n +0000680995 00000 n +0000686137 00000 n +0000681182 00000 n +0000681370 00000 n +0000686196 00000 n +0000681557 00000 n +0000681743 00000 n +0000686256 00000 n +0000681928 00000 n +0000682116 00000 n +0000686316 00000 n +0000682303 00000 n +0000682491 00000 n +0000686376 00000 n +0000682678 00000 n +0000682866 00000 n +0000686436 00000 n +0000683053 00000 n +0000683241 00000 n +0000686496 00000 n +0000683428 00000 n +0000683616 00000 n +0000686556 00000 n +0000683803 00000 n +0000683991 00000 n +0000686616 00000 n +0000684178 00000 n +0000684364 00000 n +0000686676 00000 n +0000684548 00000 n +0000684736 00000 n +0000686736 00000 n +0000684923 00000 n +0000685111 00000 n +0000691264 00000 n +0000688237 00000 n +0000686882 00000 n +0000690665 00000 n +0000690844 00000 n +0000688483 00000 n +0000688637 00000 n +0000690904 00000 n +0000690964 00000 n +0000688791 00000 n +0000688979 00000 n +0000691024 00000 n +0000689165 00000 n +0000689353 00000 n +0000691084 00000 n +0000689540 00000 n +0000689728 00000 n +0000691144 00000 n +0000689915 00000 n +0000690103 00000 n +0000691204 00000 n +0000690290 00000 n +0000690478 00000 n +0000699536 00000 n +0000692765 00000 n +0000691390 00000 n +0000698398 00000 n +0000698577 00000 n +0000698637 00000 n +0000698697 00000 n +0000693155 00000 n +0000693343 00000 n +0000698757 00000 n +0000693530 00000 n +0000693718 00000 n +0000698817 00000 n +0000693905 00000 n +0000694093 00000 n +0000698877 00000 n +0000694280 00000 n +0000694467 00000 n +0000698937 00000 n +0000694653 00000 n +0000694841 00000 n +0000698997 00000 n +0000695028 00000 n +0000695216 00000 n +0000699057 00000 n +0000695403 00000 n +0000695591 00000 n +0000699117 00000 n +0000695777 00000 n +0000695965 00000 n +0000699177 00000 n +0000696152 00000 n +0000696340 00000 n +0000699237 00000 n +0000696527 00000 n +0000696715 00000 n +0000699296 00000 n +0000696902 00000 n +0000697088 00000 n +0000699356 00000 n +0000697273 00000 n +0000697461 00000 n +0000699416 00000 n +0000697648 00000 n +0000697836 00000 n +0000699476 00000 n +0000698023 00000 n +0000698211 00000 n +0000705952 00000 n +0000701003 00000 n +0000699622 00000 n +0000704996 00000 n +0000705175 00000 n +0000701321 00000 n +0000701474 00000 n +0000705235 00000 n +0000705295 00000 n +0000701628 00000 n +0000701816 00000 n +0000705355 00000 n +0000702003 00000 n +0000702190 00000 n +0000705415 00000 n +0000702376 00000 n +0000702564 00000 n +0000705475 00000 n +0000702751 00000 n +0000702939 00000 n +0000705535 00000 n +0000703125 00000 n +0000705594 00000 n +0000703312 00000 n +0000705654 00000 n +0000703497 00000 n +0000703685 00000 n +0000705712 00000 n +0000703872 00000 n +0000704060 00000 n +0000705772 00000 n +0000704247 00000 n +0000705832 00000 n +0000704434 00000 n +0000704622 00000 n +0000705892 00000 n +0000704809 00000 n +0001246659 00000 n +0000706598 00000 n +0000706412 00000 n +0000706038 00000 n +0000706538 00000 n +0000708819 00000 n +0000707588 00000 n +0000706671 00000 n +0000708462 00000 n +0000708700 00000 n +0000707762 00000 n +0000707933 00000 n +0000708760 00000 n +0000708087 00000 n +0000708274 00000 n +0001144931 00000 n +0000711783 00000 n +0000710131 00000 n +0000708931 00000 n +0000711364 00000 n +0000711543 00000 n +0000710323 00000 n +0000710494 00000 n +0000711603 00000 n +0000710648 00000 n +0000711663 00000 n +0000710802 00000 n +0000711723 00000 n +0000710989 00000 n +0000711176 00000 n +0001144898 00000 n +0000721355 00000 n +0000714657 00000 n +0000711895 00000 n +0000720037 00000 n +0000720216 00000 n +0000715038 00000 n +0000715214 00000 n +0000720276 00000 n +0000715367 00000 n +0000715554 00000 n +0000720336 00000 n +0000715742 00000 n +0000720396 00000 n +0000715929 00000 n +0000720456 00000 n +0000716115 00000 n +0000720516 00000 n +0000716299 00000 n +0000720576 00000 n +0000716486 00000 n +0000720636 00000 n +0000716672 00000 n +0000720696 00000 n +0000716859 00000 n +0000720756 00000 n +0000717046 00000 n +0000720816 00000 n +0000717233 00000 n +0000720876 00000 n +0000717420 00000 n +0000720936 00000 n +0000717606 00000 n +0000720996 00000 n +0000717791 00000 n +0000721055 00000 n +0000717978 00000 n +0000721115 00000 n +0000718165 00000 n +0000721175 00000 n +0000718351 00000 n +0000721235 00000 n +0000718538 00000 n +0000718725 00000 n +0000721295 00000 n +0000718913 00000 n +0000719101 00000 n +0000719289 00000 n +0000719477 00000 n +0000719665 00000 n +0000719851 00000 n +0001144865 00000 n +0000723099 00000 n +0000722312 00000 n +0000721494 00000 n +0000723039 00000 n +0000722477 00000 n +0000722664 00000 n +0000722851 00000 n +0000728271 00000 n +0000725502 00000 n +0000723212 00000 n +0000727852 00000 n +0000728031 00000 n +0000725748 00000 n +0000725924 00000 n +0000728091 00000 n +0000726077 00000 n +0000726231 00000 n +0000726385 00000 n +0000726573 00000 n +0000728151 00000 n +0000726727 00000 n +0000728211 00000 n +0000726915 00000 n +0000727103 00000 n +0000727291 00000 n +0000727478 00000 n +0000727665 00000 n +0001246784 00000 n +0001144832 00000 n +0000730839 00000 n +0000729460 00000 n +0000728410 00000 n +0000730779 00000 n +0000729652 00000 n +0000729840 00000 n +0000730028 00000 n +0000730216 00000 n +0000730404 00000 n +0000730592 00000 n +0000736019 00000 n +0000732815 00000 n +0000730952 00000 n +0000735660 00000 n +0000735839 00000 n +0000733079 00000 n +0000733254 00000 n +0000735899 00000 n +0000733408 00000 n +0000733596 00000 n +0000733783 00000 n +0000733971 00000 n +0000734159 00000 n +0000734347 00000 n +0000734534 00000 n +0000735959 00000 n +0000734722 00000 n +0000734910 00000 n +0000735097 00000 n +0000735285 00000 n +0000735473 00000 n +0001144799 00000 n +0000740901 00000 n +0000738397 00000 n +0000736158 00000 n +0000740483 00000 n +0000740662 00000 n +0000738634 00000 n +0000738810 00000 n +0000740722 00000 n +0000738964 00000 n +0000740782 00000 n +0000739118 00000 n +0000739272 00000 n +0000739426 00000 n +0000739611 00000 n +0000739765 00000 n +0000739953 00000 n +0000740841 00000 n +0000740107 00000 n +0000740295 00000 n +0001144766 00000 n +0000742646 00000 n +0000741798 00000 n +0000741027 00000 n +0000742526 00000 n +0000742586 00000 n +0000741963 00000 n +0000742151 00000 n +0000742338 00000 n +0000745708 00000 n +0000744081 00000 n +0000742746 00000 n +0000745349 00000 n +0000745528 00000 n +0000744273 00000 n +0000744444 00000 n +0000745588 00000 n +0000744598 00000 n +0000745648 00000 n +0000744786 00000 n +0000744973 00000 n +0000745161 00000 n +0001144733 00000 n +0000749270 00000 n +0000747313 00000 n +0000745847 00000 n +0000748972 00000 n +0000749151 00000 n +0000747523 00000 n +0000747694 00000 n +0000749211 00000 n +0000747848 00000 n +0000748034 00000 n +0000748222 00000 n +0000748410 00000 n +0000748598 00000 n +0000748786 00000 n +0001246909 00000 n +0001144700 00000 n +0000756290 00000 n +0000751717 00000 n +0000749409 00000 n +0000755931 00000 n +0000756110 00000 n +0000752044 00000 n +0000752216 00000 n +0000756170 00000 n +0000752369 00000 n +0000752557 00000 n +0000752744 00000 n +0000752932 00000 n +0000753120 00000 n +0000753307 00000 n +0000753495 00000 n +0000753682 00000 n +0000753870 00000 n +0000754057 00000 n +0000754245 00000 n +0000754431 00000 n +0000754618 00000 n +0000754806 00000 n +0000756230 00000 n +0000754994 00000 n +0000755182 00000 n +0000755368 00000 n +0000755555 00000 n +0000755743 00000 n +0001144667 00000 n +0000760014 00000 n +0000757745 00000 n +0000756429 00000 n +0000759535 00000 n +0000759714 00000 n +0000757964 00000 n +0000758136 00000 n +0000759774 00000 n +0000758290 00000 n +0000759834 00000 n +0000758444 00000 n +0000758631 00000 n +0000758819 00000 n +0000759894 00000 n +0000759006 00000 n +0000759160 00000 n +0000759954 00000 n +0000759347 00000 n +0001144634 00000 n +0000766630 00000 n +0000762441 00000 n +0000760126 00000 n +0000766271 00000 n +0000766450 00000 n +0000762750 00000 n +0000762926 00000 n +0000766510 00000 n +0000763080 00000 n +0000763268 00000 n +0000763455 00000 n +0000763642 00000 n +0000763830 00000 n +0000764018 00000 n +0000764206 00000 n +0000764394 00000 n +0000764582 00000 n +0000764770 00000 n +0000764958 00000 n +0000765146 00000 n +0000766570 00000 n +0000765334 00000 n +0000765522 00000 n +0000765710 00000 n +0000765897 00000 n +0000766083 00000 n +0001144601 00000 n +0000768668 00000 n +0000767684 00000 n +0000766769 00000 n +0000768608 00000 n +0000767858 00000 n +0000768045 00000 n +0000768232 00000 n +0000768420 00000 n +0000774196 00000 n +0000770943 00000 n +0000768781 00000 n +0000773717 00000 n +0000773896 00000 n +0000771207 00000 n +0000771383 00000 n +0000773956 00000 n +0000771537 00000 n +0000774016 00000 n +0000771690 00000 n +0000771878 00000 n +0000774076 00000 n +0000772064 00000 n +0000772218 00000 n +0000774136 00000 n +0000772405 00000 n +0000772593 00000 n +0000772781 00000 n +0000772969 00000 n +0000773155 00000 n +0000773342 00000 n +0000773530 00000 n +0001144568 00000 n +0000777506 00000 n +0000775734 00000 n +0000774335 00000 n +0000777446 00000 n +0000775944 00000 n +0000776131 00000 n +0000776319 00000 n +0000776507 00000 n +0000776695 00000 n +0000776883 00000 n +0000777071 00000 n +0000777258 00000 n +0001247034 00000 n +0000779600 00000 n +0000778623 00000 n +0000777619 00000 n +0000779301 00000 n +0000779480 00000 n +0000778788 00000 n +0000778959 00000 n +0000779540 00000 n +0000779113 00000 n +0001144535 00000 n +0000782368 00000 n +0000780913 00000 n +0000779725 00000 n +0000781950 00000 n +0000782129 00000 n +0000781096 00000 n +0000781267 00000 n +0000782189 00000 n +0000781421 00000 n +0000782249 00000 n +0000781575 00000 n +0000782309 00000 n +0000781763 00000 n +0001144502 00000 n +0000787218 00000 n +0000784215 00000 n +0000782507 00000 n +0000786860 00000 n +0000787039 00000 n +0000784470 00000 n +0000784642 00000 n +0000787099 00000 n +0000784796 00000 n +0000784983 00000 n +0000785171 00000 n +0000785359 00000 n +0000785547 00000 n +0000785735 00000 n +0000785922 00000 n +0000786110 00000 n +0000786297 00000 n +0000787158 00000 n +0000786485 00000 n +0000786673 00000 n +0001144469 00000 n +0000791313 00000 n +0000788865 00000 n +0000787344 00000 n +0000791014 00000 n +0000791193 00000 n +0000789102 00000 n +0000789273 00000 n +0000791253 00000 n +0000789426 00000 n +0000789614 00000 n +0000789768 00000 n +0000789956 00000 n +0000790144 00000 n +0000790298 00000 n +0000790486 00000 n +0000790674 00000 n +0000790828 00000 n +0001144436 00000 n +0000796587 00000 n +0000793266 00000 n +0000791452 00000 n +0000796169 00000 n +0000796348 00000 n +0000793539 00000 n +0000793710 00000 n +0000796408 00000 n +0000793863 00000 n +0000796467 00000 n +0000794016 00000 n +0000794204 00000 n +0000794391 00000 n +0000796527 00000 n +0000794579 00000 n +0000794767 00000 n +0000794921 00000 n +0000795109 00000 n +0000795297 00000 n +0000795451 00000 n +0000795639 00000 n +0000795827 00000 n +0000795981 00000 n +0001144403 00000 n +0000800369 00000 n +0000798331 00000 n +0000796726 00000 n +0000800010 00000 n +0000800189 00000 n +0000798541 00000 n +0000798712 00000 n +0000798920 00000 n +0000800249 00000 n +0000799074 00000 n +0000799261 00000 n +0000799448 00000 n +0000799636 00000 n +0000800309 00000 n +0000799822 00000 n +0001247159 00000 n +0001144370 00000 n +0000804387 00000 n +0000802153 00000 n +0000800494 00000 n +0000804028 00000 n +0000804207 00000 n +0000802372 00000 n +0000802543 00000 n +0000802753 00000 n +0000804267 00000 n +0000802907 00000 n +0000803094 00000 n +0000803280 00000 n +0000803467 00000 n +0000803655 00000 n +0000804327 00000 n +0000803840 00000 n +0001144337 00000 n +0000805951 00000 n +0000805230 00000 n +0000804512 00000 n +0000805712 00000 n +0000805891 00000 n +0000805386 00000 n +0000805558 00000 n +0001144304 00000 n +0000812799 00000 n +0000808402 00000 n +0000806063 00000 n +0000812442 00000 n +0000812621 00000 n +0000808738 00000 n +0000808910 00000 n +0000812679 00000 n +0000809064 00000 n +0000809218 00000 n +0000812739 00000 n +0000809372 00000 n +0000809560 00000 n +0000809714 00000 n +0000809901 00000 n +0000810054 00000 n +0000810241 00000 n +0000810394 00000 n +0000810581 00000 n +0000810734 00000 n +0000810921 00000 n +0000811074 00000 n +0000811262 00000 n +0000811416 00000 n +0000811604 00000 n +0000811758 00000 n +0000811946 00000 n +0000812100 00000 n +0000812288 00000 n +0001144271 00000 n +0000818487 00000 n +0000814666 00000 n +0000812925 00000 n +0000818367 00000 n +0000814984 00000 n +0000815172 00000 n +0000815325 00000 n +0000815513 00000 n +0000815667 00000 n +0000815855 00000 n +0000816009 00000 n +0000816197 00000 n +0000816351 00000 n +0000816539 00000 n +0000816692 00000 n +0000816880 00000 n +0000817034 00000 n +0000817188 00000 n +0000818427 00000 n +0000817342 00000 n +0000817530 00000 n +0000817717 00000 n +0000817871 00000 n +0000818025 00000 n +0000818213 00000 n +0000823484 00000 n +0000820376 00000 n +0000818600 00000 n +0000823005 00000 n +0000823184 00000 n +0000820640 00000 n +0000820812 00000 n +0000823244 00000 n +0000820966 00000 n +0000823304 00000 n +0000821120 00000 n +0000821308 00000 n +0000823364 00000 n +0000821462 00000 n +0000821650 00000 n +0000821838 00000 n +0000821991 00000 n +0000822178 00000 n +0000823424 00000 n +0000822331 00000 n +0000822518 00000 n +0000822671 00000 n +0000822855 00000 n +0001144238 00000 n +0000829047 00000 n +0000825411 00000 n +0000823610 00000 n +0000828688 00000 n +0000828748 00000 n +0000825702 00000 n +0000825890 00000 n +0000826044 00000 n +0000826231 00000 n +0000828808 00000 n +0000826384 00000 n +0000826572 00000 n +0000826726 00000 n +0000826914 00000 n +0000828867 00000 n +0000827068 00000 n +0000828927 00000 n +0000827256 00000 n +0000827444 00000 n +0000827598 00000 n +0000827785 00000 n +0000828987 00000 n +0000827938 00000 n +0000828126 00000 n +0000828313 00000 n +0000828501 00000 n +0001247284 00000 n +0000832875 00000 n +0000830657 00000 n +0000829147 00000 n +0000832576 00000 n +0000832755 00000 n +0000830885 00000 n +0000831056 00000 n +0000832815 00000 n +0000831210 00000 n +0000831398 00000 n +0000831552 00000 n +0000831740 00000 n +0000831893 00000 n +0000832080 00000 n +0000832234 00000 n +0000832422 00000 n +0001144205 00000 n +0000837054 00000 n +0000834616 00000 n +0000833014 00000 n +0000836695 00000 n +0000836874 00000 n +0000834853 00000 n +0000835024 00000 n +0000836934 00000 n +0000835178 00000 n +0000836994 00000 n +0000835331 00000 n +0000835519 00000 n +0000835673 00000 n +0000835861 00000 n +0000836014 00000 n +0000836200 00000 n +0000836353 00000 n +0000836541 00000 n +0001144172 00000 n +0000842363 00000 n +0000838821 00000 n +0000837193 00000 n +0000841584 00000 n +0000841763 00000 n +0000839085 00000 n +0000839256 00000 n +0000841823 00000 n +0000841883 00000 n +0000839410 00000 n +0000841943 00000 n +0000839597 00000 n +0000842003 00000 n +0000842063 00000 n +0000839784 00000 n +0000842123 00000 n +0000839971 00000 n +0000842183 00000 n +0000840158 00000 n +0000840345 00000 n +0000840533 00000 n +0000842243 00000 n +0000840686 00000 n +0000840873 00000 n +0000842303 00000 n +0000841061 00000 n +0000841213 00000 n +0000841398 00000 n +0001144139 00000 n +0000847170 00000 n +0000843974 00000 n +0000842488 00000 n +0000846511 00000 n +0000846690 00000 n +0000844229 00000 n +0000844400 00000 n +0000846750 00000 n +0000844554 00000 n +0000846810 00000 n +0000846870 00000 n +0000844708 00000 n +0000846930 00000 n +0000844895 00000 n +0000845081 00000 n +0000845268 00000 n +0000846990 00000 n +0000845420 00000 n +0000845607 00000 n +0000847050 00000 n +0000845795 00000 n +0000845949 00000 n +0000846136 00000 n +0000847110 00000 n +0000846324 00000 n +0001144106 00000 n +0000849252 00000 n +0000848278 00000 n +0000847295 00000 n +0000848954 00000 n +0000849133 00000 n +0000848443 00000 n +0000848614 00000 n +0000849193 00000 n +0000848768 00000 n +0001144073 00000 n +0000859732 00000 n +0000852338 00000 n +0000849378 00000 n +0000859373 00000 n +0000859552 00000 n +0000852800 00000 n +0000852975 00000 n +0000859612 00000 n +0000859672 00000 n +0000853129 00000 n +0000853316 00000 n +0000853504 00000 n +0000853692 00000 n +0000853879 00000 n +0000854066 00000 n +0000854254 00000 n +0000854441 00000 n +0000854629 00000 n +0000854817 00000 n +0000855005 00000 n +0000855191 00000 n +0000855379 00000 n +0000855567 00000 n +0000855755 00000 n +0000855943 00000 n +0000856130 00000 n +0000856318 00000 n +0000856506 00000 n +0000856694 00000 n +0000856882 00000 n +0000857070 00000 n +0000857258 00000 n +0000857412 00000 n +0000857600 00000 n +0000857787 00000 n +0000857939 00000 n +0000858127 00000 n +0000858280 00000 n +0000858468 00000 n +0000858656 00000 n +0000858810 00000 n +0000858998 00000 n +0000859186 00000 n +0001247409 00000 n +0001144040 00000 n +0000871562 00000 n +0000862895 00000 n +0000859857 00000 n +0000871382 00000 n +0000871442 00000 n +0000863420 00000 n +0000863608 00000 n +0000863796 00000 n +0000863984 00000 n +0000864172 00000 n +0000864360 00000 n +0000864548 00000 n +0000864736 00000 n +0000864924 00000 n +0000865110 00000 n +0000865298 00000 n +0000865486 00000 n +0000865673 00000 n +0000865860 00000 n +0000866048 00000 n +0000866202 00000 n +0000866390 00000 n +0000866577 00000 n +0000866765 00000 n +0000866919 00000 n +0000867106 00000 n +0000867294 00000 n +0000867480 00000 n +0000867668 00000 n +0000867856 00000 n +0000868042 00000 n +0000868228 00000 n +0000868416 00000 n +0000868604 00000 n +0000868791 00000 n +0000868978 00000 n +0000869165 00000 n +0000871502 00000 n +0000869353 00000 n +0000869541 00000 n +0000869729 00000 n +0000869917 00000 n +0000870104 00000 n +0000870291 00000 n +0000870478 00000 n +0000870632 00000 n +0000870820 00000 n +0000871008 00000 n +0000871196 00000 n +0000876957 00000 n +0000873160 00000 n +0000871675 00000 n +0000876897 00000 n +0000873469 00000 n +0000873657 00000 n +0000873844 00000 n +0000874030 00000 n +0000874218 00000 n +0000874406 00000 n +0000874594 00000 n +0000874782 00000 n +0000874936 00000 n +0000875124 00000 n +0000875278 00000 n +0000875466 00000 n +0000875654 00000 n +0000875842 00000 n +0000875996 00000 n +0000876184 00000 n +0000876338 00000 n +0000876525 00000 n +0000876711 00000 n +0000882116 00000 n +0000879146 00000 n +0000877070 00000 n +0000881757 00000 n +0000881936 00000 n +0000879410 00000 n +0000879586 00000 n +0000881996 00000 n +0000879740 00000 n +0000879894 00000 n +0000880048 00000 n +0000880202 00000 n +0000880356 00000 n +0000880510 00000 n +0000880664 00000 n +0000882056 00000 n +0000880818 00000 n +0000881006 00000 n +0000881193 00000 n +0000881381 00000 n +0000881569 00000 n +0001144007 00000 n +0000889059 00000 n +0000884735 00000 n +0000882242 00000 n +0000888999 00000 n +0000885062 00000 n +0000885250 00000 n +0000885438 00000 n +0000885625 00000 n +0000885813 00000 n +0000886001 00000 n +0000886189 00000 n +0000886377 00000 n +0000886565 00000 n +0000886752 00000 n +0000886939 00000 n +0000887127 00000 n +0000887315 00000 n +0000887503 00000 n +0000887691 00000 n +0000887878 00000 n +0000888066 00000 n +0000888254 00000 n +0000888440 00000 n +0000888625 00000 n +0000888813 00000 n +0000894940 00000 n +0000891399 00000 n +0000889172 00000 n +0000894880 00000 n +0000891690 00000 n +0000891878 00000 n +0000892065 00000 n +0000892253 00000 n +0000892441 00000 n +0000892629 00000 n +0000892815 00000 n +0000893003 00000 n +0000893191 00000 n +0000893379 00000 n +0000893567 00000 n +0000893755 00000 n +0000893943 00000 n +0000894131 00000 n +0000894319 00000 n +0000894507 00000 n +0000894694 00000 n +0000905215 00000 n +0000898128 00000 n +0000895040 00000 n +0000905155 00000 n +0000898581 00000 n +0000898769 00000 n +0000898957 00000 n +0000899145 00000 n +0000899333 00000 n +0000899521 00000 n +0000899709 00000 n +0000899897 00000 n +0000900085 00000 n +0000900273 00000 n +0000900461 00000 n +0000900649 00000 n +0000900837 00000 n +0000901025 00000 n +0000901212 00000 n +0000901399 00000 n +0000901587 00000 n +0000901775 00000 n +0000901963 00000 n +0000902150 00000 n +0000902338 00000 n +0000902526 00000 n +0000902714 00000 n +0000902902 00000 n +0000903090 00000 n +0000903278 00000 n +0000903466 00000 n +0000903654 00000 n +0000903842 00000 n +0000904029 00000 n +0000904216 00000 n +0000904404 00000 n +0000904592 00000 n +0000904780 00000 n +0000904968 00000 n +0001247534 00000 n +0000916718 00000 n +0000908411 00000 n +0000905315 00000 n +0000916539 00000 n +0000908918 00000 n +0000909106 00000 n +0000909294 00000 n +0000909479 00000 n +0000909667 00000 n +0000909855 00000 n +0000910043 00000 n +0000910229 00000 n +0000916599 00000 n +0000910416 00000 n +0000910602 00000 n +0000910789 00000 n +0000910976 00000 n +0000911164 00000 n +0000911352 00000 n +0000916659 00000 n +0000911540 00000 n +0000911728 00000 n +0000911916 00000 n +0000912104 00000 n +0000912292 00000 n +0000912480 00000 n +0000912668 00000 n +0000912856 00000 n +0000913010 00000 n +0000913198 00000 n +0000913385 00000 n +0000913573 00000 n +0000913760 00000 n +0000913914 00000 n +0000914101 00000 n +0000914289 00000 n +0000914475 00000 n +0000914663 00000 n +0000914851 00000 n +0000915039 00000 n +0000915227 00000 n +0000915415 00000 n +0000915603 00000 n +0000915791 00000 n +0000915979 00000 n +0000916165 00000 n +0000916352 00000 n +0000924609 00000 n +0000918814 00000 n +0000916831 00000 n +0000924490 00000 n +0000919213 00000 n +0000919401 00000 n +0000919589 00000 n +0000919777 00000 n +0000924550 00000 n +0000919965 00000 n +0000920152 00000 n +0000920339 00000 n +0000920527 00000 n +0000920715 00000 n +0000920902 00000 n +0000921056 00000 n +0000921244 00000 n +0000921398 00000 n +0000921586 00000 n +0000921774 00000 n +0000921962 00000 n +0000922116 00000 n +0000922304 00000 n +0000922458 00000 n +0000922645 00000 n +0000922799 00000 n +0000922987 00000 n +0000923175 00000 n +0000923363 00000 n +0000923551 00000 n +0000923739 00000 n +0000923927 00000 n +0000924115 00000 n +0000924303 00000 n +0000929222 00000 n +0000926275 00000 n +0000924722 00000 n +0000928923 00000 n +0000929102 00000 n +0000926530 00000 n +0000926705 00000 n +0000929162 00000 n +0000926859 00000 n +0000927047 00000 n +0000927235 00000 n +0000927423 00000 n +0000927611 00000 n +0000927799 00000 n +0000927987 00000 n +0000928173 00000 n +0000928360 00000 n +0000928547 00000 n +0000928735 00000 n +0001143974 00000 n +0000934249 00000 n +0000931241 00000 n +0000929361 00000 n +0000933890 00000 n +0000934069 00000 n +0000931496 00000 n +0000931671 00000 n +0000934129 00000 n +0000931825 00000 n +0000932013 00000 n +0000932201 00000 n +0000932389 00000 n +0000932576 00000 n +0000932763 00000 n +0000932951 00000 n +0000934189 00000 n +0000933139 00000 n +0000933327 00000 n +0000933514 00000 n +0000933702 00000 n +0001143941 00000 n +0000939640 00000 n +0000936382 00000 n +0000934388 00000 n +0000939161 00000 n +0000939340 00000 n +0000936646 00000 n +0000936822 00000 n +0000939400 00000 n +0000936976 00000 n +0000939460 00000 n +0000937129 00000 n +0000937317 00000 n +0000937505 00000 n +0000937692 00000 n +0000937879 00000 n +0000939520 00000 n +0000938067 00000 n +0000938255 00000 n +0000938443 00000 n +0000938631 00000 n +0000939580 00000 n +0000938819 00000 n +0000938973 00000 n +0001143908 00000 n +0000943949 00000 n +0000941922 00000 n +0000939766 00000 n +0000943590 00000 n +0000943769 00000 n +0000942132 00000 n +0000942308 00000 n +0000943829 00000 n +0000942462 00000 n +0000942650 00000 n +0000942838 00000 n +0000943889 00000 n +0000943026 00000 n +0000943214 00000 n +0000943402 00000 n +0001247659 00000 n +0001143875 00000 n +0000949125 00000 n +0000946253 00000 n +0000944075 00000 n +0000948945 00000 n +0000949005 00000 n +0000946508 00000 n +0000946695 00000 n +0000946882 00000 n +0000949065 00000 n +0000947069 00000 n +0000947256 00000 n +0000947444 00000 n +0000947632 00000 n +0000947820 00000 n +0000948008 00000 n +0000948195 00000 n +0000948383 00000 n +0000948570 00000 n +0000948757 00000 n +0000953857 00000 n +0000951258 00000 n +0000949225 00000 n +0000953559 00000 n +0000953619 00000 n +0000951495 00000 n +0000951683 00000 n +0000953679 00000 n +0000951871 00000 n +0000952059 00000 n +0000952247 00000 n +0000952434 00000 n +0000952622 00000 n +0000952810 00000 n +0000953738 00000 n +0000952997 00000 n +0000953798 00000 n +0000953184 00000 n +0000953371 00000 n +0000959076 00000 n +0000956133 00000 n +0000953970 00000 n +0000958777 00000 n +0000958956 00000 n +0000956388 00000 n +0000956560 00000 n +0000959016 00000 n +0000956714 00000 n +0000956901 00000 n +0000957089 00000 n +0000957277 00000 n +0000957464 00000 n +0000957652 00000 n +0000957839 00000 n +0000958027 00000 n +0000958215 00000 n +0000958403 00000 n +0000958591 00000 n +0001143842 00000 n +0000961219 00000 n +0000960855 00000 n +0000959202 00000 n +0000960981 00000 n +0000962850 00000 n +0000962664 00000 n +0000961305 00000 n +0000962790 00000 n +0000964556 00000 n +0000964370 00000 n +0000962936 00000 n +0000964496 00000 n +0001247784 00000 n +0000966194 00000 n +0000966008 00000 n +0000964642 00000 n +0000966134 00000 n +0000967886 00000 n +0000967700 00000 n +0000966280 00000 n +0000967826 00000 n +0000969209 00000 n +0000969023 00000 n +0000967972 00000 n +0000969149 00000 n +0000971692 00000 n +0000971387 00000 n +0000969295 00000 n +0000971513 00000 n +0000972414 00000 n +0000972228 00000 n +0000971778 00000 n +0000972354 00000 n +0000974136 00000 n +0000973831 00000 n +0000972500 00000 n +0000973957 00000 n +0001247909 00000 n +0000975279 00000 n +0000975093 00000 n +0000974222 00000 n +0000975219 00000 n +0000976945 00000 n +0000976640 00000 n +0000975365 00000 n +0000976766 00000 n +0000979103 00000 n +0000978798 00000 n +0000977031 00000 n +0000978924 00000 n +0000980492 00000 n +0000980306 00000 n +0000979189 00000 n +0000980432 00000 n +0000982321 00000 n +0000982016 00000 n +0000980578 00000 n +0000982142 00000 n +0000984791 00000 n +0000984486 00000 n +0000982407 00000 n +0000984612 00000 n +0001248034 00000 n +0000986506 00000 n +0000986320 00000 n +0000984877 00000 n +0000986446 00000 n +0000988451 00000 n +0000988265 00000 n +0000986592 00000 n +0000988391 00000 n +0000990511 00000 n +0000990325 00000 n +0000988537 00000 n +0000990451 00000 n +0000992619 00000 n +0000992433 00000 n +0000990597 00000 n +0000992559 00000 n +0000994371 00000 n +0000994185 00000 n +0000992705 00000 n +0000994311 00000 n +0000995987 00000 n +0000995801 00000 n +0000994457 00000 n +0000995927 00000 n +0001248159 00000 n +0000998548 00000 n +0000998243 00000 n +0000996073 00000 n +0000998369 00000 n +0000999473 00000 n +0000999287 00000 n +0000998634 00000 n +0000999413 00000 n +0001001969 00000 n +0001001664 00000 n +0000999559 00000 n +0001001790 00000 n +0001003303 00000 n +0001003117 00000 n +0001002055 00000 n +0001003243 00000 n +0001004638 00000 n +0001004452 00000 n +0001003389 00000 n +0001004578 00000 n +0001006320 00000 n +0001006134 00000 n +0001004724 00000 n +0001006260 00000 n +0001248284 00000 n +0001008728 00000 n +0001008423 00000 n +0001006406 00000 n +0001008549 00000 n +0001010000 00000 n +0001009814 00000 n +0001008814 00000 n +0001009940 00000 n +0001012371 00000 n +0001012066 00000 n +0001010086 00000 n +0001012192 00000 n +0001013919 00000 n +0001013733 00000 n +0001012457 00000 n +0001013859 00000 n +0001015477 00000 n +0001015291 00000 n +0001014005 00000 n +0001015417 00000 n +0001017054 00000 n +0001016868 00000 n +0001015563 00000 n +0001016994 00000 n +0001248409 00000 n +0001018427 00000 n +0001018241 00000 n +0001017140 00000 n +0001018367 00000 n +0001019413 00000 n +0001019227 00000 n +0001018513 00000 n +0001019353 00000 n +0001021742 00000 n +0001021437 00000 n +0001019499 00000 n +0001021563 00000 n +0001022711 00000 n +0001022525 00000 n +0001021828 00000 n +0001022651 00000 n +0001024986 00000 n +0001024681 00000 n +0001022797 00000 n +0001024807 00000 n +0001024867 00000 n +0001026872 00000 n +0001026686 00000 n +0001025072 00000 n +0001026812 00000 n +0001248534 00000 n +0001029355 00000 n +0001029050 00000 n +0001026958 00000 n +0001029176 00000 n +0001030732 00000 n +0001030546 00000 n +0001029441 00000 n +0001030672 00000 n +0001031924 00000 n +0001031738 00000 n +0001030818 00000 n +0001031864 00000 n +0001034369 00000 n +0001034064 00000 n +0001032010 00000 n +0001034190 00000 n +0001035744 00000 n +0001035558 00000 n +0001034455 00000 n +0001035684 00000 n +0001037470 00000 n +0001037284 00000 n +0001035830 00000 n +0001037410 00000 n +0001248659 00000 n +0001039234 00000 n +0001039048 00000 n +0001037556 00000 n +0001039174 00000 n +0001041143 00000 n +0001040957 00000 n +0001039320 00000 n +0001041083 00000 n +0001042688 00000 n +0001042502 00000 n +0001041229 00000 n +0001042628 00000 n +0001043907 00000 n +0001043721 00000 n +0001042774 00000 n +0001043847 00000 n +0001046259 00000 n +0001045954 00000 n +0001043993 00000 n +0001046080 00000 n +0001047833 00000 n +0001047647 00000 n +0001046345 00000 n +0001047773 00000 n +0001248784 00000 n +0001049827 00000 n +0001049641 00000 n +0001047919 00000 n +0001049767 00000 n +0001051065 00000 n +0001050879 00000 n +0001049913 00000 n +0001051005 00000 n +0001066356 00000 n +0001054834 00000 n +0001051151 00000 n +0001066296 00000 n +0001055593 00000 n +0001055748 00000 n +0001055903 00000 n +0001056058 00000 n +0001056214 00000 n +0001056370 00000 n +0001056526 00000 n +0001056682 00000 n +0001056838 00000 n +0001056994 00000 n +0001057150 00000 n +0001057306 00000 n +0001057462 00000 n +0001057618 00000 n +0001057774 00000 n +0001057929 00000 n +0001058084 00000 n +0001058238 00000 n +0001058393 00000 n +0001058548 00000 n +0001058703 00000 n +0001058858 00000 n +0001059013 00000 n +0001059167 00000 n +0001059323 00000 n +0001059479 00000 n +0001059634 00000 n +0001059789 00000 n +0001059942 00000 n +0001060097 00000 n +0001060250 00000 n +0001060406 00000 n +0001060561 00000 n +0001060717 00000 n +0001060873 00000 n +0001061029 00000 n +0001061185 00000 n +0001061341 00000 n +0001061497 00000 n +0001061652 00000 n +0001061807 00000 n +0001061963 00000 n +0001062119 00000 n +0001062274 00000 n +0001062430 00000 n +0001062585 00000 n +0001062741 00000 n +0001062896 00000 n +0001063051 00000 n +0001063205 00000 n +0001063359 00000 n +0001063514 00000 n +0001063669 00000 n +0001063823 00000 n +0001063978 00000 n +0001064133 00000 n +0001064287 00000 n +0001064440 00000 n +0001064594 00000 n +0001064748 00000 n +0001064902 00000 n +0001065056 00000 n +0001065210 00000 n +0001065365 00000 n +0001065520 00000 n +0001065676 00000 n +0001065832 00000 n +0001065987 00000 n +0001066143 00000 n +0001080323 00000 n +0001069648 00000 n +0001066442 00000 n +0001080263 00000 n +0001070362 00000 n +0001070516 00000 n +0001070670 00000 n +0001070822 00000 n +0001070976 00000 n +0001071130 00000 n +0001071283 00000 n +0001071437 00000 n +0001071591 00000 n +0001071744 00000 n +0001071898 00000 n +0001072053 00000 n +0001072206 00000 n +0001072362 00000 n +0001072517 00000 n +0001072672 00000 n +0001072826 00000 n +0001072981 00000 n +0001073136 00000 n +0001073291 00000 n +0001073446 00000 n +0001073601 00000 n +0001073756 00000 n +0001073910 00000 n +0001074065 00000 n +0001074219 00000 n +0001074374 00000 n +0001074529 00000 n +0001074683 00000 n +0001074838 00000 n +0001074993 00000 n +0001075147 00000 n +0001075302 00000 n +0001075457 00000 n +0001075610 00000 n +0001075765 00000 n +0001075918 00000 n +0001076073 00000 n +0001076228 00000 n +0001076383 00000 n +0001076539 00000 n +0001076695 00000 n +0001076851 00000 n +0001077007 00000 n +0001077163 00000 n +0001077317 00000 n +0001077469 00000 n +0001077623 00000 n +0001077777 00000 n +0001077931 00000 n +0001078086 00000 n +0001078240 00000 n +0001078395 00000 n +0001078550 00000 n +0001078705 00000 n +0001078861 00000 n +0001079017 00000 n +0001079173 00000 n +0001079329 00000 n +0001079485 00000 n +0001079641 00000 n +0001079797 00000 n +0001079953 00000 n +0001080108 00000 n +0001098160 00000 n +0001084698 00000 n +0001080409 00000 n +0001098100 00000 n +0001085565 00000 n +0001085721 00000 n +0001085876 00000 n +0001086031 00000 n +0001086187 00000 n +0001086343 00000 n +0001086498 00000 n +0001086653 00000 n +0001086808 00000 n +0001086963 00000 n +0001087118 00000 n +0001087273 00000 n +0001087428 00000 n +0001087582 00000 n +0001087734 00000 n +0001087887 00000 n +0001088041 00000 n +0001088196 00000 n +0001088351 00000 n +0001088506 00000 n +0001088661 00000 n +0001088816 00000 n +0001088971 00000 n +0001089126 00000 n +0001089279 00000 n +0001089434 00000 n +0001089589 00000 n +0001089744 00000 n +0001089899 00000 n +0001090051 00000 n +0001090206 00000 n +0001090361 00000 n +0001090516 00000 n +0001090671 00000 n +0001090826 00000 n +0001090980 00000 n +0001091135 00000 n +0001091289 00000 n +0001091444 00000 n +0001091599 00000 n +0001091753 00000 n +0001091907 00000 n +0001092060 00000 n +0001092214 00000 n +0001092368 00000 n +0001092523 00000 n +0001092677 00000 n +0001092833 00000 n +0001092989 00000 n +0001093145 00000 n +0001093301 00000 n +0001093457 00000 n +0001093611 00000 n +0001093767 00000 n +0001093923 00000 n +0001094079 00000 n +0001094235 00000 n +0001094390 00000 n +0001094545 00000 n +0001094701 00000 n +0001094857 00000 n +0001095012 00000 n +0001095166 00000 n +0001095321 00000 n +0001095476 00000 n +0001095628 00000 n +0001095783 00000 n +0001095937 00000 n +0001096091 00000 n +0001096245 00000 n +0001096400 00000 n +0001096554 00000 n +0001096708 00000 n +0001096863 00000 n +0001097018 00000 n +0001097172 00000 n +0001097327 00000 n +0001097482 00000 n +0001097636 00000 n +0001097790 00000 n +0001097945 00000 n +0001111329 00000 n +0001101169 00000 n +0001098246 00000 n +0001111269 00000 n +0001101856 00000 n +0001102010 00000 n +0001102166 00000 n +0001102321 00000 n +0001102476 00000 n +0001102628 00000 n +0001102782 00000 n +0001102937 00000 n +0001103090 00000 n +0001103245 00000 n +0001103401 00000 n +0001103556 00000 n +0001103710 00000 n +0001103865 00000 n +0001104020 00000 n +0001104173 00000 n +0001104329 00000 n +0001104484 00000 n +0001104639 00000 n +0001104793 00000 n +0001104946 00000 n +0001105099 00000 n +0001105251 00000 n +0001105404 00000 n +0001105557 00000 n +0001105709 00000 n +0001105862 00000 n +0001106015 00000 n +0001106167 00000 n +0001106320 00000 n +0001106475 00000 n +0001106629 00000 n +0001106783 00000 n +0001106938 00000 n +0001107092 00000 n +0001107247 00000 n +0001107402 00000 n +0001107557 00000 n +0001107712 00000 n +0001107867 00000 n +0001108022 00000 n +0001108177 00000 n +0001108332 00000 n +0001108488 00000 n +0001108643 00000 n +0001108796 00000 n +0001108951 00000 n +0001109106 00000 n +0001109260 00000 n +0001109415 00000 n +0001109570 00000 n +0001109724 00000 n +0001109879 00000 n +0001110034 00000 n +0001110188 00000 n +0001110342 00000 n +0001110497 00000 n +0001110652 00000 n +0001110807 00000 n +0001110962 00000 n +0001111116 00000 n +0001248909 00000 n +0001128122 00000 n +0001115160 00000 n +0001111415 00000 n +0001128062 00000 n +0001116000 00000 n +0001116155 00000 n +0001116310 00000 n +0001116463 00000 n +0001116618 00000 n +0001116774 00000 n +0001116929 00000 n +0001117083 00000 n +0001117238 00000 n +0001117393 00000 n +0001117548 00000 n +0001117702 00000 n +0001117857 00000 n +0001118012 00000 n +0001118166 00000 n +0001118321 00000 n +0001118476 00000 n +0001118630 00000 n +0001118785 00000 n +0001118941 00000 n +0001119095 00000 n +0001119249 00000 n +0001119404 00000 n +0001119559 00000 n +0001119713 00000 n +0001119867 00000 n +0001120022 00000 n +0001120176 00000 n +0001120332 00000 n +0001120487 00000 n +0001120641 00000 n +0001120796 00000 n +0001120951 00000 n +0001121106 00000 n +0001121258 00000 n +0001121413 00000 n +0001121567 00000 n +0001121722 00000 n +0001121877 00000 n +0001122032 00000 n +0001122185 00000 n +0001122340 00000 n +0001122495 00000 n +0001122650 00000 n +0001122805 00000 n +0001122960 00000 n +0001123113 00000 n +0001123268 00000 n +0001123423 00000 n +0001123578 00000 n +0001123732 00000 n +0001123886 00000 n +0001124039 00000 n +0001124194 00000 n +0001124349 00000 n +0001124504 00000 n +0001124659 00000 n +0001124813 00000 n +0001124968 00000 n +0001125123 00000 n +0001125277 00000 n +0001125432 00000 n +0001125586 00000 n +0001125741 00000 n +0001125896 00000 n +0001126051 00000 n +0001126206 00000 n +0001126360 00000 n +0001126514 00000 n +0001126669 00000 n +0001126824 00000 n +0001126979 00000 n +0001127134 00000 n +0001127289 00000 n +0001127444 00000 n +0001127599 00000 n +0001127754 00000 n +0001127909 00000 n +0001143756 00000 n +0001132089 00000 n +0001128208 00000 n +0001143696 00000 n +0001132857 00000 n +0001133011 00000 n +0001133166 00000 n +0001133321 00000 n +0001133474 00000 n +0001133629 00000 n +0001133783 00000 n +0001133937 00000 n +0001134092 00000 n +0001134247 00000 n +0001134402 00000 n +0001134557 00000 n +0001134710 00000 n +0001134865 00000 n +0001135020 00000 n +0001135175 00000 n +0001135329 00000 n +0001135483 00000 n +0001135637 00000 n +0001135792 00000 n +0001135947 00000 n +0001136101 00000 n +0001136256 00000 n +0001136411 00000 n +0001136566 00000 n +0001136719 00000 n +0001136874 00000 n +0001137028 00000 n +0001137183 00000 n +0001137337 00000 n +0001137492 00000 n +0001137647 00000 n +0001137802 00000 n +0001137957 00000 n +0001138110 00000 n +0001138264 00000 n +0001138418 00000 n +0001138573 00000 n +0001138728 00000 n +0001138882 00000 n +0001139036 00000 n +0001139190 00000 n +0001139344 00000 n +0001139498 00000 n +0001139653 00000 n +0001139808 00000 n +0001139964 00000 n +0001140118 00000 n +0001140273 00000 n +0001140427 00000 n +0001140583 00000 n +0001140739 00000 n +0001140894 00000 n +0001141050 00000 n +0001141204 00000 n +0001141360 00000 n +0001141514 00000 n +0001141670 00000 n +0001141825 00000 n +0001141981 00000 n +0001142137 00000 n +0001142293 00000 n +0001142449 00000 n +0001142605 00000 n +0001142761 00000 n +0001142917 00000 n +0001143073 00000 n +0001143229 00000 n +0001143385 00000 n +0001143540 00000 n +0001145459 00000 n +0001158368 00000 n +0001176406 00000 n +0001179043 00000 n +0001179012 00000 n +0001181580 00000 n +0001181334 00000 n +0001200247 00000 n +0001221781 00000 n +0001243077 00000 n +0001249007 00000 n +0001249128 00000 n +0001249254 00000 n +0001249380 00000 n +0001249506 00000 n +0001249632 00000 n +0001249758 00000 n +0001249884 00000 n +0001249973 00000 n +0001250100 00000 n +0001250190 00000 n +0001250264 00000 n +0001261136 00000 n +0001316039 00000 n +0001316080 00000 n +0001316120 00000 n +0001316254 00000 n +trailer +<< +/Size 5675 +/Root 5673 0 R +/Info 5674 0 R +/ID [ ] +>> +startxref +1316518 +%%EOF diff --git a/Target/Source/third_party/uip/lib/memb.c b/Target/Source/third_party/uip/lib/memb.c new file mode 100644 index 00000000..91df04b7 --- /dev/null +++ b/Target/Source/third_party/uip/lib/memb.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: memb.c,v 1.1 2006/06/12 08:21:43 adam Exp $ + */ + +/** + * \addtogroup memb + * @{ + */ + + /** + * \file + * Memory block allocation routines. + * \author Adam Dunkels + */ +#include + +#include "memb.h" + +/*---------------------------------------------------------------------------*/ +void +memb_init(struct memb_blocks *m) +{ + memset(m->count, 0, m->num); + memset(m->mem, 0, m->size * m->num); +} +/*---------------------------------------------------------------------------*/ +void * +memb_alloc(struct memb_blocks *m) +{ + int i; + + for(i = 0; i < m->num; ++i) { + if(m->count[i] == 0) { + /* If this block was unused, we increase the reference count to + indicate that it now is used and return a pointer to the + memory block. */ + ++(m->count[i]); + return (void *)((char *)m->mem + (i * m->size)); + } + } + + /* No free block was found, so we return NULL to indicate failure to + allocate block. */ + return NULL; +} +/*---------------------------------------------------------------------------*/ +char +memb_free(struct memb_blocks *m, void *ptr) +{ + int i; + char *ptr2; + + /* Walk through the list of blocks and try to find the block to + which the pointer "ptr" points to. */ + ptr2 = (char *)m->mem; + for(i = 0; i < m->num; ++i) { + + if(ptr2 == (char *)ptr) { + /* We've found to block to which "ptr" points so we decrease the + reference count and return the new value of it. */ + if(m->count[i] > 0) { + /* Make sure that we don't deallocate free memory. */ + --(m->count[i]); + } + return m->count[i]; + } + ptr2 += m->size; + } + return -1; +} +/*---------------------------------------------------------------------------*/ + +/** @} */ diff --git a/Target/Source/third_party/uip/lib/memb.h b/Target/Source/third_party/uip/lib/memb.h new file mode 100644 index 00000000..676392c9 --- /dev/null +++ b/Target/Source/third_party/uip/lib/memb.h @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: memb.h,v 1.1 2006/06/12 08:21:43 adam Exp $ + */ + +/** + * \defgroup memb Memory block management functions + * + * The memory block allocation routines provide a simple yet powerful + * set of functions for managing a set of memory blocks of fixed + * size. A set of memory blocks is statically declared with the + * MEMB() macro. Memory blocks are allocated from the declared + * memory by the memb_alloc() function, and are deallocated with the + * memb_free() function. + * + * \note Because of namespace clashes only one MEMB() can be + * declared per C module, and the name scope of a MEMB() memory + * block is local to each C module. + * + * The following example shows how to declare and use a memory block + * called "cmem" which has 8 chunks of memory with each memory chunk + * being 20 bytes large. + * + * @{ + */ + + +/** + * \file + * Memory block allocation routines. + * \author + * Adam Dunkels + * + */ + +#ifndef __MEMB_H__ +#define __MEMB_H__ + +/* + * Here we define a C preprocessing macro for concatenating to + * strings. We need use two macros in order to allow concatenation of + * two #defined macros. + */ +#define MEMB_CONCAT2(s1, s2) s1##s2 +#define MEMB_CONCAT(s1, s2) MEMB_CONCAT2(s1, s2) + +/** + * Declare a memory block. + * + * This macro is used to staticall declare a block of memory that can + * be used by the block allocation functions. The macro statically + * declares a C array with a size that matches the specified number of + * blocks and their individual sizes. + * + * Example: + \code +MEMB(connections, sizeof(struct connection), 16); + \endcode + * + * \param name The name of the memory block (later used with + * memb_init(), memb_alloc() and memb_free()). + * + * \param size The size of each memory chunk, in bytes. + * + * \param num The total number of memory chunks in the block. + * + */ +#define MEMB(name, structure, num) \ + static char MEMB_CONCAT(name,_memb_count)[num]; \ + static structure MEMB_CONCAT(name,_memb_mem)[num]; \ + static struct memb_blocks name = {sizeof(structure), num, \ + MEMB_CONCAT(name,_memb_count), \ + (void *)MEMB_CONCAT(name,_memb_mem)} + +struct memb_blocks { + unsigned short size; + unsigned short num; + char *count; + void *mem; +}; + +/** + * Initialize a memory block that was declared with MEMB(). + * + * \param m A memory block previosly declared with MEMB(). + */ +void memb_init(struct memb_blocks *m); + +/** + * Allocate a memory block from a block of memory declared with MEMB(). + * + * \param m A memory block previosly declared with MEMB(). + */ +void *memb_alloc(struct memb_blocks *m); + +/** + * Deallocate a memory block from a memory block previously declared + * with MEMB(). + * + * \param m m A memory block previosly declared with MEMB(). + * + * \param ptr A pointer to the memory block that is to be deallocated. + * + * \return The new reference count for the memory block (should be 0 + * if successfully deallocated) or -1 if the pointer "ptr" did not + * point to a legal memory block. + */ +char memb_free(struct memb_blocks *m, void *ptr); + +/** @} */ + +#endif /* __MEMB_H__ */ diff --git a/Target/Source/third_party/uip/uip-1.0-changelog.txt b/Target/Source/third_party/uip/uip-1.0-changelog.txt new file mode 100644 index 00000000..7a97704e --- /dev/null +++ b/Target/Source/third_party/uip/uip-1.0-changelog.txt @@ -0,0 +1,98 @@ +* A new API: protosockets that are similar to BSD sockets but does not + require any underlying multithreading system. + +* Very rudimentary IPv6 support + +* New application: DHCP client. Web server rewritten with protosockets. + +* Removed uIP zero-copy functionality in order to simplify uIP device + driver coding: outbound packets are now *always* stored in full in + the uip_buf buffer. + +* Checksum computation is now part of uip.c, but it still is possible + to implement them in assembly code by specifying a configuration + option. Checksum code now runs on architectures with 2-byte alignment. + +* Added TCP persistent timer. + +* Made all IP address representations use the new uip_ipaddr_ip + datatype for clarity. + +* Updated window behavior so that sending to a host with a small open + window works better now. + +* UDP API change: uip_udp_new() now takes port numbers in network byte + order like TCP functions. + +* Allow reception of packets when no IP address is configured to make + DHCP work. + +* Moved Ethernet address into main uIP module from ARP module. + +* Made constants explicit #defines and moved them out of the code + (header sizes, TCP options, TCP header length field). + +* If uip_len is less than that reported by the IP header, the packet + is discarded. If uip_len is greater than the length reported by the + IP header, uip_len is adjusted. + +* Moved header size definitions into header file. + +* Added uIP call for polling an application without triggering any + timer events. Removed redundant assignments of uip_len and uip_slen. + +* Removed compiler warning about icmp_input label being defined when + UIP_PINGADDRCONF was not used. + +* Added UIP_APPDATA_SIZE macro that holds the available buffer size + for user data. + +* Added uip_udp_bind() call. + +* Moved checksum code into main uIP module. + +* Switched the TCP, UDP and IP header structures to be structs rather + than typedefs. + +* Prefixed TCP state names with UIP_ to avoid name space + contamination. + +* Changed declarations of uip_appdatap and friends to void * to avoid + explicit typecasts. + +* Bugfixes + + o TCP: Fixed bug with high byte of peer window size. + + o TCP: Fixed bug that in some cases prevented concurrent reception and + transmission of TCP data. + + o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT + connections. + + o TCP: Array index for uip_conns[] array was out of bounds in + comparison. Comparison changed to make index within bounds. + + o TCP: if the remote host crashes and tries to reestablish an old + connection, uIP should respond with an ACK with the correct + sequence and acknowledgment numbers, to which the remote host + should respond with an ACK. uIP did not respond with the correct + ACK. + + o TCP: Fixed check for SYNACK segment: now checks only relevant TCP + control flags and discards flags reserved for future expansion. + + o TCP: Fixed bug where uIP did not inform application that a connection + had been aborted during an active open. + + o TCP: FIN segment was accepted even though application had stopped + incoming data with uip_stop(). + + o TCP: A FINACK segment would not always correctly acknowledge data. + + o UDP: checksums are now calculated after all fields have been + filled in. + + o UDP: network byte order on lastport in uip_udp_new(). + + o IP: memset() bugs in IP fragment reassembly code fixed. diff --git a/Target/Source/third_party/uip/uip/Makefile.include b/Target/Source/third_party/uip/uip/Makefile.include new file mode 100644 index 00000000..43ba2474 --- /dev/null +++ b/Target/Source/third_party/uip/uip/Makefile.include @@ -0,0 +1,47 @@ + + +ifdef APPS + APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) + -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) + CFLAGS += $(addprefix -I../apps/,$(APPS)) +endif + +ifndef CCDEP + CCDEP = $(CC) +endif +ifndef CCDEPCFLAGS + CCDEPCFLAGS = $(CFLAGS) +endif +ifndef OBJECTDIR + OBJECTDIR = obj +endif + +ifeq (${wildcard $(OBJECTDIR)},) + DUMMY := ${shell mkdir $(OBJECTDIR)} +endif + + +vpath %.c . ../uip ../lib $(APPDIRS) + +$(OBJECTDIR)/%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +$(OBJECTDIR)/%.d: %.c + @set -e; rm -f $@; \ + $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c + + +ifneq ($(MAKECMDGOALS),clean) +-include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ + $(APP_SOURCES:.c=.d)) +endif + +uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} + $(AR) rcf $@ $^ + +apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} + $(AR) rcf $@ $^ diff --git a/Target/Source/third_party/uip/uip/clock.h b/Target/Source/third_party/uip/uip/clock.h new file mode 100644 index 00000000..dae68745 --- /dev/null +++ b/Target/Source/third_party/uip/uip/clock.h @@ -0,0 +1,88 @@ +/** + * \defgroup clock Clock interface + * + * The clock interface is the interface between the \ref timer "timer library" + * and the platform specific clock functionality. The clock + * interface must be implemented for each platform that uses the \ref + * timer "timer library". + * + * The clock interface does only one this: it measures time. The clock + * interface provides a macro, CLOCK_SECOND, which corresponds to one + * second of system time. + * + * \sa \ref timer "Timer library" + * + * @{ + */ + +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ + */ +#ifndef __CLOCK_H__ +#define __CLOCK_H__ + +#include "clock-arch.h" + +/** + * Initialize the clock library. + * + * This function initializes the clock library and should be called + * from the main() function of the system. + * + */ +void clock_init(void); + +/** + * Get the current clock time. + * + * This function returns the current system clock time. + * + * \return The current clock time, measured in system ticks. + */ +clock_time_t clock_time(void); + +/** + * A second, measured in system clock time. + * + * \hideinitializer + */ +#ifdef CLOCK_CONF_SECOND +#define CLOCK_SECOND CLOCK_CONF_SECOND +#else +#define CLOCK_SECOND (clock_time_t)32 +#endif + +#endif /* __CLOCK_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/lc-addrlabels.h b/Target/Source/third_party/uip/uip/lc-addrlabels.h new file mode 100644 index 00000000..9dff03d0 --- /dev/null +++ b/Target/Source/third_party/uip/uip/lc-addrlabels.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2004-2005, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \addtogroup lc + * @{ + */ + +/** + * \file + * Implementation of local continuations based on the "Labels as + * values" feature of gcc + * \author + * Adam Dunkels + * + * This implementation of local continuations is based on a special + * feature of the GCC C compiler called "labels as values". This + * feature allows assigning pointers with the address of the code + * corresponding to a particular C label. + * + * For more information, see the GCC documentation: + * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html + * + * Thanks to dividuum for finding the nice local scope label + * implementation. + */ + +#ifndef __LC_ADDRLABELS_H__ +#define __LC_ADDRLABELS_H__ + +/** \hideinitializer */ +typedef void * lc_t; + +#define LC_INIT(s) s = NULL + + +#define LC_RESUME(s) \ + do { \ + if(s != NULL) { \ + goto *s; \ + } \ + } while(0) + +#define LC_SET(s) \ + do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) + +#define LC_END(s) + +#endif /* __LC_ADDRLABELS_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/lc-switch.h b/Target/Source/third_party/uip/uip/lc-switch.h new file mode 100644 index 00000000..17c88116 --- /dev/null +++ b/Target/Source/third_party/uip/uip/lc-switch.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2004-2005, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \addtogroup lc + * @{ + */ + +/** + * \file + * Implementation of local continuations based on switch() statment + * \author Adam Dunkels + * + * This implementation of local continuations uses the C switch() + * statement to resume execution of a function somewhere inside the + * function's body. The implementation is based on the fact that + * switch() statements are able to jump directly into the bodies of + * control structures such as if() or while() statmenets. + * + * This implementation borrows heavily from Simon Tatham's coroutines + * implementation in C: + * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html + */ + +#ifndef __LC_SWITCH_H__ +#define __LC_SWTICH_H__ + +/* WARNING! lc implementation using switch() does not work if an + LC_SET() is done within another switch() statement! */ + +/** \hideinitializer */ +typedef unsigned short lc_t; + +#define LC_INIT(s) s = 0; + +#define LC_RESUME(s) switch(s) { case 0: + +#define LC_SET(s) s = __LINE__; case __LINE__: + +#define LC_END(s) } + +#endif /* __LC_SWITCH_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/lc.h b/Target/Source/third_party/uip/uip/lc.h new file mode 100644 index 00000000..3ad83cd0 --- /dev/null +++ b/Target/Source/third_party/uip/uip/lc.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2004-2005, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \addtogroup pt + * @{ + */ + +/** + * \defgroup lc Local continuations + * @{ + * + * Local continuations form the basis for implementing protothreads. A + * local continuation can be set in a specific function to + * capture the state of the function. After a local continuation has + * been set can be resumed in order to restore the state of the + * function at the point where the local continuation was set. + * + * + */ + +/** + * \file lc.h + * Local continuations + * \author + * Adam Dunkels + * + */ + +#ifdef DOXYGEN +/** + * Initialize a local continuation. + * + * This operation initializes the local continuation, thereby + * unsetting any previously set continuation state. + * + * \hideinitializer + */ +#define LC_INIT(lc) + +/** + * Set a local continuation. + * + * The set operation saves the state of the function at the point + * where the operation is executed. As far as the set operation is + * concerned, the state of the function does not include the + * call-stack or local (automatic) variables, but only the program + * counter and such CPU registers that needs to be saved. + * + * \hideinitializer + */ +#define LC_SET(lc) + +/** + * Resume a local continuation. + * + * The resume operation resumes a previously set local continuation, thus + * restoring the state in which the function was when the local + * continuation was set. If the local continuation has not been + * previously set, the resume operation does nothing. + * + * \hideinitializer + */ +#define LC_RESUME(lc) + +/** + * Mark the end of local continuation usage. + * + * The end operation signifies that local continuations should not be + * used any more in the function. This operation is not needed for + * most implementations of local continuation, but is required by a + * few implementations. + * + * \hideinitializer + */ +#define LC_END(lc) + +/** + * \var typedef lc_t; + * + * The local continuation type. + * + * \hideinitializer + */ +#endif /* DOXYGEN */ + +#ifndef __LC_H__ +#define __LC_H__ + +#ifdef LC_CONF_INCLUDE +#include LC_CONF_INCLUDE +#else +#include "lc-switch.h" +#endif /* LC_CONF_INCLUDE */ + +#endif /* __LC_H__ */ + +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/uip/psock.c b/Target/Source/third_party/uip/uip/psock.c new file mode 100644 index 00000000..6b5920f7 --- /dev/null +++ b/Target/Source/third_party/uip/uip/psock.c @@ -0,0 +1,338 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +#include +#include + +#include "uipopt.h" +#include "psock.h" +#include "uip.h" + +#define STATE_NONE 0 +#define STATE_ACKED 1 +#define STATE_READ 2 +#define STATE_BLOCKED_NEWDATA 3 +#define STATE_BLOCKED_CLOSE 4 +#define STATE_BLOCKED_SEND 5 +#define STATE_DATA_SENT 6 + +/* + * Return value of the buffering functions that indicates that a + * buffer was not filled by incoming data. + * + */ +#define BUF_NOT_FULL 0 +#define BUF_NOT_FOUND 0 + +/* + * Return value of the buffering functions that indicates that a + * buffer was completely filled by incoming data. + * + */ +#define BUF_FULL 1 + +/* + * Return value of the buffering functions that indicates that an + * end-marker byte was found. + * + */ +#define BUF_FOUND 2 + +/*---------------------------------------------------------------------------*/ +static void +buf_setup(struct psock_buf *buf, + u8_t *bufptr, u16_t bufsize) +{ + buf->ptr = bufptr; + buf->left = bufsize; +} +/*---------------------------------------------------------------------------*/ +static u8_t +buf_bufdata(struct psock_buf *buf, u16_t len, + u8_t **dataptr, u16_t *datalen) +{ + if(*datalen < buf->left) { + memcpy(buf->ptr, *dataptr, *datalen); + buf->ptr += *datalen; + buf->left -= *datalen; + *dataptr += *datalen; + *datalen = 0; + return BUF_NOT_FULL; + } else if(*datalen == buf->left) { + memcpy(buf->ptr, *dataptr, *datalen); + buf->ptr += *datalen; + buf->left = 0; + *dataptr += *datalen; + *datalen = 0; + return BUF_FULL; + } else { + memcpy(buf->ptr, *dataptr, buf->left); + buf->ptr += buf->left; + *datalen -= buf->left; + *dataptr += buf->left; + buf->left = 0; + return BUF_FULL; + } +} +/*---------------------------------------------------------------------------*/ +static u8_t +buf_bufto(register struct psock_buf *buf, u8_t endmarker, + register u8_t **dataptr, register u16_t *datalen) +{ + u8_t c; + while(buf->left > 0 && *datalen > 0) { + c = *buf->ptr = **dataptr; + ++*dataptr; + ++buf->ptr; + --*datalen; + --buf->left; + + if(c == endmarker) { + return BUF_FOUND; + } + } + + if(*datalen == 0) { + return BUF_NOT_FOUND; + } + + while(*datalen > 0) { + c = **dataptr; + --*datalen; + ++*dataptr; + + if(c == endmarker) { + return BUF_FOUND | BUF_FULL; + } + } + + return BUF_FULL; +} +/*---------------------------------------------------------------------------*/ +static char +send_data(register struct psock *s) +{ + if(s->state != STATE_DATA_SENT || uip_rexmit()) { + if(s->sendlen > uip_mss()) { + uip_send(s->sendptr, uip_mss()); + } else { + uip_send(s->sendptr, s->sendlen); + } + s->state = STATE_DATA_SENT; + return 1; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +static char +data_acked(register struct psock *s) +{ + if(s->state == STATE_DATA_SENT && uip_acked()) { + if(s->sendlen > uip_mss()) { + s->sendlen -= uip_mss(); + s->sendptr += uip_mss(); + } else { + s->sendptr += s->sendlen; + s->sendlen = 0; + } + s->state = STATE_ACKED; + return 1; + } + return 0; +} +/*---------------------------------------------------------------------------*/ +PT_THREAD(psock_send(register struct psock *s, const char *buf, + unsigned int len)) +{ + PT_BEGIN(&s->psockpt); + + /* If there is no data to send, we exit immediately. */ + if(len == 0) { + PT_EXIT(&s->psockpt); + } + + /* Save the length of and a pointer to the data that is to be + sent. */ + s->sendptr = buf; + s->sendlen = len; + + s->state = STATE_NONE; + + /* We loop here until all data is sent. The s->sendlen variable is + updated by the data_sent() function. */ + while(s->sendlen > 0) { + + /* + * The condition for this PT_WAIT_UNTIL is a little tricky: the + * protothread will wait here until all data has been acknowledged + * (data_acked() returns true) and until all data has been sent + * (send_data() returns true). The two functions data_acked() and + * send_data() must be called in succession to ensure that all + * data is sent. Therefore the & operator is used instead of the + * && operator, which would cause only the data_acked() function + * to be called when it returns false. + */ + PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); + } + + s->state = STATE_NONE; + + PT_END(&s->psockpt); +} +/*---------------------------------------------------------------------------*/ +PT_THREAD(psock_generator_send(register struct psock *s, + unsigned short (*generate)(void *), void *arg)) +{ + PT_BEGIN(&s->psockpt); + + /* Ensure that there is a generator function to call. */ + if(generate == NULL) { + PT_EXIT(&s->psockpt); + } + + /* Call the generator function to generate the data in the + uip_appdata buffer. */ + s->sendlen = generate(arg); + s->sendptr = uip_appdata; + + s->state = STATE_NONE; + do { + /* Call the generator function again if we are called to perform a + retransmission. */ + if(uip_rexmit()) { + generate(arg); + } + /* Wait until all data is sent and acknowledged. */ + PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); + } while(s->sendlen > 0); + + s->state = STATE_NONE; + + PT_END(&s->psockpt); +} +/*---------------------------------------------------------------------------*/ +u16_t +psock_datalen(struct psock *psock) +{ + return psock->bufsize - psock->buf.left; +} +/*---------------------------------------------------------------------------*/ +char +psock_newdata(struct psock *s) +{ + if(s->readlen > 0) { + /* There is data in the uip_appdata buffer that has not yet been + read with the PSOCK_READ functions. */ + return 1; + } else if(s->state == STATE_READ) { + /* All data in uip_appdata buffer already consumed. */ + s->state = STATE_BLOCKED_NEWDATA; + return 0; + } else if(uip_newdata()) { + /* There is new data that has not been consumed. */ + return 1; + } else { + /* There is no new data. */ + return 0; + } +} +/*---------------------------------------------------------------------------*/ +PT_THREAD(psock_readto(register struct psock *psock, unsigned char c)) +{ + PT_BEGIN(&psock->psockpt); + + buf_setup(&psock->buf, psock->bufptr, psock->bufsize); + + /* XXX: Should add buf_checkmarker() before do{} loop, if + incoming data has been handled while waiting for a write. */ + + do { + if(psock->readlen == 0) { + PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); + psock->state = STATE_READ; + psock->readptr = (u8_t *)uip_appdata; + psock->readlen = uip_datalen(); + } + } while((buf_bufto(&psock->buf, c, + &psock->readptr, + &psock->readlen) & BUF_FOUND) == 0); + + if(psock_datalen(psock) == 0) { + psock->state = STATE_NONE; + PT_RESTART(&psock->psockpt); + } + PT_END(&psock->psockpt); +} +/*---------------------------------------------------------------------------*/ +PT_THREAD(psock_readbuf(register struct psock *psock)) +{ + PT_BEGIN(&psock->psockpt); + + buf_setup(&psock->buf, psock->bufptr, psock->bufsize); + + /* XXX: Should add buf_checkmarker() before do{} loop, if + incoming data has been handled while waiting for a write. */ + + do { + if(psock->readlen == 0) { + PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); + printf("Waited for newdata\n"); + psock->state = STATE_READ; + psock->readptr = (u8_t *)uip_appdata; + psock->readlen = uip_datalen(); + } + } while(buf_bufdata(&psock->buf, psock->bufsize, + &psock->readptr, + &psock->readlen) != BUF_FULL); + + if(psock_datalen(psock) == 0) { + psock->state = STATE_NONE; + PT_RESTART(&psock->psockpt); + } + PT_END(&psock->psockpt); +} +/*---------------------------------------------------------------------------*/ +void +psock_init(register struct psock *psock, char *buffer, unsigned int buffersize) +{ + psock->state = STATE_NONE; + psock->readlen = 0; + psock->bufptr = buffer; + psock->bufsize = buffersize; + buf_setup(&psock->buf, buffer, buffersize); + PT_INIT(&psock->pt); + PT_INIT(&psock->psockpt); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/uip/psock.h b/Target/Source/third_party/uip/uip/psock.h new file mode 100644 index 00000000..8d412587 --- /dev/null +++ b/Target/Source/third_party/uip/uip/psock.h @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \defgroup psock Protosockets library + * @{ + * + * The protosocket library provides an interface to the uIP stack that is + * similar to the traditional BSD socket interface. Unlike programs + * written for the ordinary uIP event-driven interface, programs + * written with the protosocket library are executed in a sequential + * fashion and does not have to be implemented as explicit state + * machines. + * + * Protosockets only work with TCP connections. + * + * The protosocket library uses \ref pt protothreads to provide + * sequential control flow. This makes the protosockets lightweight in + * terms of memory, but also means that protosockets inherits the + * functional limitations of protothreads. Each protosocket lives only + * within a single function. Automatic variables (stack variables) are + * not retained across a protosocket library function call. + * + * \note Because the protosocket library uses protothreads, local + * variables will not always be saved across a call to a protosocket + * library function. It is therefore advised that local variables are + * used with extreme care. + * + * The protosocket library provides functions for sending data without + * having to deal with retransmissions and acknowledgements, as well + * as functions for reading data without having to deal with data + * being split across more than one TCP segment. + * + * Because each protosocket runs as a protothread, the protosocket has to be + * started with a call to PSOCK_BEGIN() at the start of the function + * in which the protosocket is used. Similarly, the protosocket protothread can + * be terminated by a call to PSOCK_EXIT(). + * + */ + +/** + * \file + * Protosocket library header file + * \author + * Adam Dunkels + * + */ + +#ifndef __PSOCK_H__ +#define __PSOCK_H__ + +#include "uipopt.h" +#include "pt.h" + + /* + * The structure that holds the state of a buffer. + * + * This structure holds the state of a uIP buffer. The structure has + * no user-visible elements, but is used through the functions + * provided by the library. + * + */ +struct psock_buf { + u8_t *ptr; + unsigned short left; +}; + +/** + * The representation of a protosocket. + * + * The protosocket structrure is an opaque structure with no user-visible + * elements. + */ +struct psock { + struct pt pt, psockpt; /* Protothreads - one that's using the psock + functions, and one that runs inside the + psock functions. */ + const u8_t *sendptr; /* Pointer to the next data to be sent. */ + u8_t *readptr; /* Pointer to the next data to be read. */ + + char *bufptr; /* Pointer to the buffer used for buffering + incoming data. */ + + u16_t sendlen; /* The number of bytes left to be sent. */ + u16_t readlen; /* The number of bytes left to be read. */ + + struct psock_buf buf; /* The structure holding the state of the + input buffer. */ + unsigned int bufsize; /* The size of the input buffer. */ + + unsigned char state; /* The state of the protosocket. */ +}; + +void psock_init(struct psock *psock, char *buffer, unsigned int buffersize); +/** + * Initialize a protosocket. + * + * This macro initializes a protosocket and must be called before the + * protosocket is used. The initialization also specifies the input buffer + * for the protosocket. + * + * \param psock (struct psock *) A pointer to the protosocket to be + * initialized + * + * \param buffer (char *) A pointer to the input buffer for the + * protosocket. + * + * \param buffersize (unsigned int) The size of the input buffer. + * + * \hideinitializer + */ +#define PSOCK_INIT(psock, buffer, buffersize) \ + psock_init(psock, buffer, buffersize) + +/** + * Start the protosocket protothread in a function. + * + * This macro starts the protothread associated with the protosocket and + * must come before other protosocket calls in the function it is used. + * + * \param psock (struct psock *) A pointer to the protosocket to be + * started. + * + * \hideinitializer + */ +#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) + +PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len)); +/** + * Send data. + * + * This macro sends data over a protosocket. The protosocket protothread blocks + * until all data has been sent and is known to have been received by + * the remote end of the TCP connection. + * + * \param psock (struct psock *) A pointer to the protosocket over which + * data is to be sent. + * + * \param data (char *) A pointer to the data that is to be sent. + * + * \param datalen (unsigned int) The length of the data that is to be + * sent. + * + * \hideinitializer + */ +#define PSOCK_SEND(psock, data, datalen) \ + PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) + +/** + * \brief Send a null-terminated string. + * \param psock Pointer to the protosocket. + * \param str The string to be sent. + * + * This function sends a null-terminated string over the + * protosocket. + * + * \hideinitializer + */ +#define PSOCK_SEND_STR(psock, str) \ + PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) + +PT_THREAD(psock_generator_send(struct psock *psock, + unsigned short (*f)(void *), void *arg)); + +/** + * \brief Generate data with a function and send it + * \param psock Pointer to the protosocket. + * \param generator Pointer to the generator function + * \param arg Argument to the generator function + * + * This function generates data and sends it over the + * protosocket. This can be used to dynamically generate + * data for a transmission, instead of generating the data + * in a buffer beforehand. This function reduces the need for + * buffer memory. The generator function is implemented by + * the application, and a pointer to the function is given + * as an argument with the call to PSOCK_GENERATOR_SEND(). + * + * The generator function should place the generated data + * directly in the uip_appdata buffer, and return the + * length of the generated data. The generator function is + * called by the protosocket layer when the data first is + * sent, and once for every retransmission that is needed. + * + * \hideinitializer + */ +#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ + PT_WAIT_THREAD(&((psock)->pt), \ + psock_generator_send(psock, generator, arg)) + + +/** + * Close a protosocket. + * + * This macro closes a protosocket and can only be called from within the + * protothread in which the protosocket lives. + * + * \param psock (struct psock *) A pointer to the protosocket that is to + * be closed. + * + * \hideinitializer + */ +#define PSOCK_CLOSE(psock) uip_close() + +PT_THREAD(psock_readbuf(struct psock *psock)); +/** + * Read data until the buffer is full. + * + * This macro will block waiting for data and read the data into the + * input buffer specified with the call to PSOCK_INIT(). Data is read + * until the buffer is full.. + * + * \param psock (struct psock *) A pointer to the protosocket from which + * data should be read. + * + * \hideinitializer + */ +#define PSOCK_READBUF(psock) \ + PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) + +PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); +/** + * Read data up to a specified character. + * + * This macro will block waiting for data and read the data into the + * input buffer specified with the call to PSOCK_INIT(). Data is only + * read until the specifieed character appears in the data stream. + * + * \param psock (struct psock *) A pointer to the protosocket from which + * data should be read. + * + * \param c (char) The character at which to stop reading. + * + * \hideinitializer + */ +#define PSOCK_READTO(psock, c) \ + PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) + +/** + * The length of the data that was previously read. + * + * This macro returns the length of the data that was previously read + * using PSOCK_READTO() or PSOCK_READ(). + * + * \param psock (struct psock *) A pointer to the protosocket holding the data. + * + * \hideinitializer + */ +#define PSOCK_DATALEN(psock) psock_datalen(psock) + +u16_t psock_datalen(struct psock *psock); + +/** + * Exit the protosocket's protothread. + * + * This macro terminates the protothread of the protosocket and should + * almost always be used in conjunction with PSOCK_CLOSE(). + * + * \sa PSOCK_CLOSE_EXIT() + * + * \param psock (struct psock *) A pointer to the protosocket. + * + * \hideinitializer + */ +#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) + +/** + * Close a protosocket and exit the protosocket's protothread. + * + * This macro closes a protosocket and exits the protosocket's protothread. + * + * \param psock (struct psock *) A pointer to the protosocket. + * + * \hideinitializer + */ +#define PSOCK_CLOSE_EXIT(psock) \ + do { \ + PSOCK_CLOSE(psock); \ + PSOCK_EXIT(psock); \ + } while(0) + +/** + * Declare the end of a protosocket's protothread. + * + * This macro is used for declaring that the protosocket's protothread + * ends. It must always be used together with a matching PSOCK_BEGIN() + * macro. + * + * \param psock (struct psock *) A pointer to the protosocket. + * + * \hideinitializer + */ +#define PSOCK_END(psock) PT_END(&((psock)->pt)) + +char psock_newdata(struct psock *s); + +/** + * Check if new data has arrived on a protosocket. + * + * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() + * macro to check if data has arrived on a protosocket. + * + * \param psock (struct psock *) A pointer to the protosocket. + * + * \hideinitializer + */ +#define PSOCK_NEWDATA(psock) psock_newdata(psock) + +/** + * Wait until a condition is true. + * + * This macro blocks the protothread until the specified condition is + * true. The macro PSOCK_NEWDATA() can be used to check if new data + * arrives when the protosocket is waiting. + * + * Typically, this macro is used as follows: + * + \code + PT_THREAD(thread(struct psock *s, struct timer *t)) + { + PSOCK_BEGIN(s); + + PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); + + if(PSOCK_NEWDATA(s)) { + PSOCK_READTO(s, '\n'); + } else { + handle_timed_out(s); + } + + PSOCK_END(s); + } + \endcode + * + * \param psock (struct psock *) A pointer to the protosocket. + * \param condition The condition to wait for. + * + * \hideinitializer + */ +#define PSOCK_WAIT_UNTIL(psock, condition) \ + PT_WAIT_UNTIL(&((psock)->pt), (condition)); + +#define PSOCK_WAIT_THREAD(psock, condition) \ + PT_WAIT_THREAD(&((psock)->pt), (condition)) + +#endif /* __PSOCK_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/pt.h b/Target/Source/third_party/uip/uip/pt.h new file mode 100644 index 00000000..00ddd442 --- /dev/null +++ b/Target/Source/third_party/uip/uip/pt.h @@ -0,0 +1,323 @@ +/* + * Copyright (c) 2004-2005, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \addtogroup pt + * @{ + */ + +/** + * \file + * Protothreads implementation. + * \author + * Adam Dunkels + * + */ + +#ifndef __PT_H__ +#define __PT_H__ + +#include "lc.h" + +struct pt { + lc_t lc; +}; + +#define PT_WAITING 0 +#define PT_EXITED 1 +#define PT_ENDED 2 +#define PT_YIELDED 3 + +/** + * \name Initialization + * @{ + */ + +/** + * Initialize a protothread. + * + * Initializes a protothread. Initialization must be done prior to + * starting to execute the protothread. + * + * \param pt A pointer to the protothread control structure. + * + * \sa PT_SPAWN() + * + * \hideinitializer + */ +#define PT_INIT(pt) LC_INIT((pt)->lc) + +/** @} */ + +/** + * \name Declaration and definition + * @{ + */ + +/** + * Declaration of a protothread. + * + * This macro is used to declare a protothread. All protothreads must + * be declared with this macro. + * + * \param name_args The name and arguments of the C function + * implementing the protothread. + * + * \hideinitializer + */ +#define PT_THREAD(name_args) char name_args + +/** + * Declare the start of a protothread inside the C function + * implementing the protothread. + * + * This macro is used to declare the starting point of a + * protothread. It should be placed at the start of the function in + * which the protothread runs. All C statements above the PT_BEGIN() + * invokation will be executed each time the protothread is scheduled. + * + * \param pt A pointer to the protothread control structure. + * + * \hideinitializer + */ +#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) + +/** + * Declare the end of a protothread. + * + * This macro is used for declaring that a protothread ends. It must + * always be used together with a matching PT_BEGIN() macro. + * + * \param pt A pointer to the protothread control structure. + * + * \hideinitializer + */ +#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ + PT_INIT(pt); return PT_ENDED; } + +/** @} */ + +/** + * \name Blocked wait + * @{ + */ + +/** + * Block and wait until condition is true. + * + * This macro blocks the protothread until the specified condition is + * true. + * + * \param pt A pointer to the protothread control structure. + * \param condition The condition. + * + * \hideinitializer + */ +#define PT_WAIT_UNTIL(pt, condition) \ + do { \ + LC_SET((pt)->lc); \ + if(!(condition)) { \ + return PT_WAITING; \ + } \ + } while(0) + +/** + * Block and wait while condition is true. + * + * This function blocks and waits while condition is true. See + * PT_WAIT_UNTIL(). + * + * \param pt A pointer to the protothread control structure. + * \param cond The condition. + * + * \hideinitializer + */ +#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) + +/** @} */ + +/** + * \name Hierarchical protothreads + * @{ + */ + +/** + * Block and wait until a child protothread completes. + * + * This macro schedules a child protothread. The current protothread + * will block until the child protothread completes. + * + * \note The child protothread must be manually initialized with the + * PT_INIT() function before this function is used. + * + * \param pt A pointer to the protothread control structure. + * \param thread The child protothread with arguments + * + * \sa PT_SPAWN() + * + * \hideinitializer + */ +#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) + +/** + * Spawn a child protothread and wait until it exits. + * + * This macro spawns a child protothread and waits until it exits. The + * macro can only be used within a protothread. + * + * \param pt A pointer to the protothread control structure. + * \param child A pointer to the child protothread's control structure. + * \param thread The child protothread with arguments + * + * \hideinitializer + */ +#define PT_SPAWN(pt, child, thread) \ + do { \ + PT_INIT((child)); \ + PT_WAIT_THREAD((pt), (thread)); \ + } while(0) + +/** @} */ + +/** + * \name Exiting and restarting + * @{ + */ + +/** + * Restart the protothread. + * + * This macro will block and cause the running protothread to restart + * its execution at the place of the PT_BEGIN() call. + * + * \param pt A pointer to the protothread control structure. + * + * \hideinitializer + */ +#define PT_RESTART(pt) \ + do { \ + PT_INIT(pt); \ + return PT_WAITING; \ + } while(0) + +/** + * Exit the protothread. + * + * This macro causes the protothread to exit. If the protothread was + * spawned by another protothread, the parent protothread will become + * unblocked and can continue to run. + * + * \param pt A pointer to the protothread control structure. + * + * \hideinitializer + */ +#define PT_EXIT(pt) \ + do { \ + PT_INIT(pt); \ + return PT_EXITED; \ + } while(0) + +/** @} */ + +/** + * \name Calling a protothread + * @{ + */ + +/** + * Schedule a protothread. + * + * This function shedules a protothread. The return value of the + * function is non-zero if the protothread is running or zero if the + * protothread has exited. + * + * \param f The call to the C function implementing the protothread to + * be scheduled + * + * \hideinitializer + */ +#define PT_SCHEDULE(f) ((f) == PT_WAITING) + +/** @} */ + +/** + * \name Yielding from a protothread + * @{ + */ + +/** + * Yield from the current protothread. + * + * This function will yield the protothread, thereby allowing other + * processing to take place in the system. + * + * \param pt A pointer to the protothread control structure. + * + * \hideinitializer + */ +#define PT_YIELD(pt) \ + do { \ + PT_YIELD_FLAG = 0; \ + LC_SET((pt)->lc); \ + if(PT_YIELD_FLAG == 0) { \ + return PT_YIELDED; \ + } \ + } while(0) + +/** + * \brief Yield from the protothread until a condition occurs. + * \param pt A pointer to the protothread control structure. + * \param cond The condition. + * + * This function will yield the protothread, until the + * specified condition evaluates to true. + * + * + * \hideinitializer + */ +#define PT_YIELD_UNTIL(pt, cond) \ + do { \ + PT_YIELD_FLAG = 0; \ + LC_SET((pt)->lc); \ + if((PT_YIELD_FLAG == 0) || !(cond)) { \ + return PT_YIELDED; \ + } \ + } while(0) + +/** @} */ + +#endif /* __PT_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip-fw.c b/Target/Source/third_party/uip/uip/uip-fw.c new file mode 100644 index 00000000..33767401 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-fw.c @@ -0,0 +1,532 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: uip-fw.c,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ +/** + * \addtogroup uip + * @{ + */ + +/** + * \defgroup uipfw uIP packet forwarding + * @{ + * + */ + +/** + * \file + * uIP packet forwarding. + * \author Adam Dunkels + * + * This file implements a number of simple functions which do packet + * forwarding over multiple network interfaces with uIP. + * + */ + +#include "uip.h" +#include "uip_arch.h" +#include "uip-fw.h" + +#include /* for memcpy() */ + +/* + * The list of registered network interfaces. + */ +static struct uip_fw_netif *netifs = NULL; + +/* + * A pointer to the default network interface. + */ +static struct uip_fw_netif *defaultnetif = NULL; + +struct tcpip_hdr { + /* IP header. */ + u8_t vhl, + tos; + u16_t len, + ipid, + ipoffset; + u8_t ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; + + /* TCP header. */ + u16_t srcport, + destport; + u8_t seqno[4], + ackno[4], + tcpoffset, + flags, + wnd[2]; + u16_t tcpchksum; + u8_t urgp[2]; + u8_t optdata[4]; +}; + +struct icmpip_hdr { + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; + /* ICMP (echo) header. */ + u8_t type, icode; + u16_t icmpchksum; + u16_t id, seqno; + u8_t payload[1]; +}; + +/* ICMP ECHO. */ +#define ICMP_ECHO 8 + +/* ICMP TIME-EXCEEDED. */ +#define ICMP_TE 11 + +/* + * Pointer to the TCP/IP headers of the packet in the uip_buf buffer. + */ +#define BUF ((struct tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) + +/* + * Pointer to the ICMP/IP headers of the packet in the uip_buf buffer. + */ +#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) + +/* + * Certain fields of an IP packet that are used for identifying + * duplicate packets. + */ +struct fwcache_entry { + u16_t timer; + + u16_t srcipaddr[2]; + u16_t destipaddr[2]; + u16_t ipid; + u8_t proto; + u8_t unused; + +#if notdef + u16_t payload[2]; +#endif + +#if UIP_REASSEMBLY > 0 + u16_t len, offset; +#endif +}; + +/* + * The number of packets to remember when looking for duplicates. + */ +#ifdef UIP_CONF_FWCACHE_SIZE +#define FWCACHE_SIZE UIP_CONF_FWCACHE_SIZE +#else +#define FWCACHE_SIZE 2 +#endif + + +/* + * A cache of packet header fields which are used for + * identifying duplicate packets. + */ +static struct fwcache_entry fwcache[FWCACHE_SIZE]; + +/** + * \internal + * The time that a packet cache is active. + */ +#define FW_TIME 20 + +/*------------------------------------------------------------------------------*/ +/** + * Initialize the uIP packet forwarding module. + */ +/*------------------------------------------------------------------------------*/ +void +uip_fw_init(void) +{ + struct uip_fw_netif *t; + defaultnetif = NULL; + while(netifs != NULL) { + t = netifs; + netifs = netifs->next; + t->next = NULL; + } +} +/*------------------------------------------------------------------------------*/ +/** + * \internal + * Check if an IP address is within the network defined by an IP + * address and a netmask. + * + * \param ipaddr The IP address to be checked. + * \param netipaddr The IP address of the network. + * \param netmask The netmask of the network. + * + * \return Non-zero if IP address is in network, zero otherwise. + */ +/*------------------------------------------------------------------------------*/ +static unsigned char +ipaddr_maskcmp(u16_t *ipaddr, u16_t *netipaddr, u16_t *netmask) +{ + return (ipaddr[0] & netmask [0]) == (netipaddr[0] & netmask[0]) && + (ipaddr[1] & netmask[1]) == (netipaddr[1] & netmask[1]); +} +/*------------------------------------------------------------------------------*/ +/** + * \internal + * Send out an ICMP TIME-EXCEEDED message. + * + * This function replaces the packet in the uip_buf buffer with the + * ICMP packet. + */ +/*------------------------------------------------------------------------------*/ +static void +time_exceeded(void) +{ + u16_t tmp16; + + /* We don't send out ICMP errors for ICMP messages. */ + if(ICMPBUF->proto == UIP_PROTO_ICMP) { + uip_len = 0; + return; + } + /* Copy fields from packet header into payload of this ICMP packet. */ + memcpy(&(ICMPBUF->payload[0]), ICMPBUF, 28); + + /* Set the ICMP type and code. */ + ICMPBUF->type = ICMP_TE; + ICMPBUF->icode = 0; + + /* Calculate the ICMP checksum. */ + ICMPBUF->icmpchksum = 0; + ICMPBUF->icmpchksum = ~uip_chksum((u16_t *)&(ICMPBUF->type), 36); + + /* Set the IP destination address to be the source address of the + original packet. */ + tmp16= BUF->destipaddr[0]; + BUF->destipaddr[0] = BUF->srcipaddr[0]; + BUF->srcipaddr[0] = tmp16; + tmp16 = BUF->destipaddr[1]; + BUF->destipaddr[1] = BUF->srcipaddr[1]; + BUF->srcipaddr[1] = tmp16; + + /* Set our IP address as the source address. */ + BUF->srcipaddr[0] = uip_hostaddr[0]; + BUF->srcipaddr[1] = uip_hostaddr[1]; + + /* The size of the ICMP time exceeded packet is 36 + the size of the + IP header (20) = 56. */ + uip_len = 56; + ICMPBUF->len[0] = 0; + ICMPBUF->len[1] = uip_len; + + /* Fill in the other fields in the IP header. */ + ICMPBUF->vhl = 0x45; + ICMPBUF->tos = 0; + ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0; + ICMPBUF->ttl = UIP_TTL; + ICMPBUF->proto = UIP_PROTO_ICMP; + + /* Calculate IP checksum. */ + ICMPBUF->ipchksum = 0; + ICMPBUF->ipchksum = ~(uip_ipchksum()); + + +} +/*------------------------------------------------------------------------------*/ +/** + * \internal + * Register a packet in the forwarding cache so that it won't be + * forwarded again. + */ +/*------------------------------------------------------------------------------*/ +static void +fwcache_register(void) +{ + struct fwcache_entry *fw; + int i, oldest; + + oldest = FW_TIME; + fw = NULL; + + /* Find the oldest entry in the cache. */ + for(i = 0; i < FWCACHE_SIZE; ++i) { + if(fwcache[i].timer == 0) { + fw = &fwcache[i]; + break; + } else if(fwcache[i].timer <= oldest) { + fw = &fwcache[i]; + oldest = fwcache[i].timer; + } + } + + fw->timer = FW_TIME; + fw->ipid = BUF->ipid; + fw->srcipaddr[0] = BUF->srcipaddr[0]; + fw->srcipaddr[1] = BUF->srcipaddr[1]; + fw->destipaddr[0] = BUF->destipaddr[0]; + fw->destipaddr[1] = BUF->destipaddr[1]; + fw->proto = BUF->proto; +#if notdef + fw->payload[0] = BUF->srcport; + fw->payload[1] = BUF->destport; +#endif +#if UIP_REASSEMBLY > 0 + fw->len = BUF->len; + fw->offset = BUF->ipoffset; +#endif +} +/*------------------------------------------------------------------------------*/ +/** + * \internal + * Find a network interface for the IP packet in uip_buf. + */ +/*------------------------------------------------------------------------------*/ +static struct uip_fw_netif * +find_netif(void) +{ + struct uip_fw_netif *netif; + + /* Walk through every network interface to check for a match. */ + for(netif = netifs; netif != NULL; netif = netif->next) { + if(ipaddr_maskcmp(BUF->destipaddr, netif->ipaddr, + netif->netmask)) { + /* If there was a match, we break the loop. */ + return netif; + } + } + + /* If no matching netif was found, we use default netif. */ + return defaultnetif; +} +/*------------------------------------------------------------------------------*/ +/** + * Output an IP packet on the correct network interface. + * + * The IP packet should be present in the uip_buf buffer and its + * length in the global uip_len variable. + * + * \retval UIP_FW_ZEROLEN Indicates that a zero-length packet + * transmission was attempted and that no packet was sent. + * + * \retval UIP_FW_NOROUTE No suitable network interface could be found + * for the outbound packet, and the packet was not sent. + * + * \return The return value from the actual network interface output + * function is passed unmodified as a return value. + */ +/*------------------------------------------------------------------------------*/ +u8_t +uip_fw_output(void) +{ + struct uip_fw_netif *netif; + + if(uip_len == 0) { + return UIP_FW_ZEROLEN; + } + + fwcache_register(); + +#if UIP_BROADCAST + /* Link local broadcasts go out on all interfaces. */ + if(/*BUF->proto == UIP_PROTO_UDP &&*/ + BUF->destipaddr[0] == 0xffff && + BUF->destipaddr[1] == 0xffff) { + if(defaultnetif != NULL) { + defaultnetif->output(); + } + for(netif = netifs; netif != NULL; netif = netif->next) { + netif->output(); + } + return UIP_FW_OK; + } +#endif /* UIP_BROADCAST */ + + netif = find_netif(); + /* printf("uip_fw_output: netif %p ->output %p len %d\n", netif, + netif->output, + uip_len);*/ + + if(netif == NULL) { + return UIP_FW_NOROUTE; + } + /* If we now have found a suitable network interface, we call its + output function to send out the packet. */ + return netif->output(); +} +/*------------------------------------------------------------------------------*/ +/** + * Forward an IP packet in the uip_buf buffer. + * + * + * + * \return UIP_FW_FORWARDED if the packet was forwarded, UIP_FW_LOCAL if + * the packet should be processed locally. + */ +/*------------------------------------------------------------------------------*/ +u8_t +uip_fw_forward(void) +{ + struct fwcache_entry *fw; + + /* First check if the packet is destined for ourselves and return 0 + to indicate that the packet should be processed locally. */ + if(BUF->destipaddr[0] == uip_hostaddr[0] && + BUF->destipaddr[1] == uip_hostaddr[1]) { + return UIP_FW_LOCAL; + } + + /* If we use ping IP address configuration, and our IP address is + not yet configured, we should intercept all ICMP echo packets. */ +#if UIP_PINGADDRCONF + if((uip_hostaddr[0] | uip_hostaddr[1]) == 0 && + BUF->proto == UIP_PROTO_ICMP && + ICMPBUF->type == ICMP_ECHO) { + return UIP_FW_LOCAL; + } +#endif /* UIP_PINGADDRCONF */ + + /* Check if the packet is in the forwarding cache already, and if so + we drop it. */ + + for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { + if(fw->timer != 0 && +#if UIP_REASSEMBLY > 0 + fw->len == BUF->len && + fw->offset == BUF->ipoffset && +#endif + fw->ipid == BUF->ipid && + fw->srcipaddr[0] == BUF->srcipaddr[0] && + fw->srcipaddr[1] == BUF->srcipaddr[1] && + fw->destipaddr[0] == BUF->destipaddr[0] && + fw->destipaddr[1] == BUF->destipaddr[1] && +#if notdef + fw->payload[0] == BUF->srcport && + fw->payload[1] == BUF->destport && +#endif + fw->proto == BUF->proto) { + /* Drop packet. */ + return UIP_FW_FORWARDED; + } + } + + /* If the TTL reaches zero we produce an ICMP time exceeded message + in the uip_buf buffer and forward that packet back to the sender + of the packet. */ + if(BUF->ttl <= 1) { + /* No time exceeded for broadcasts and multicasts! */ + if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { + return UIP_FW_LOCAL; + } + time_exceeded(); + } + + /* Decrement the TTL (time-to-live) value in the IP header */ + BUF->ttl = BUF->ttl - 1; + + /* Update the IP checksum. */ + if(BUF->ipchksum >= HTONS(0xffff - 0x0100)) { + BUF->ipchksum = BUF->ipchksum + HTONS(0x0100) + 1; + } else { + BUF->ipchksum = BUF->ipchksum + HTONS(0x0100); + } + + if(uip_len > 0) { + uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]; + uip_fw_output(); + } + +#if UIP_BROADCAST + if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) { + return UIP_FW_LOCAL; + } +#endif /* UIP_BROADCAST */ + + /* Return non-zero to indicate that the packet was forwarded and that no + other processing should be made. */ + return UIP_FW_FORWARDED; +} +/*------------------------------------------------------------------------------*/ +/** + * Register a network interface with the forwarding module. + * + * \param netif A pointer to the network interface that is to be + * registered. + */ +/*------------------------------------------------------------------------------*/ +void +uip_fw_register(struct uip_fw_netif *netif) +{ + netif->next = netifs; + netifs = netif; +} +/*------------------------------------------------------------------------------*/ +/** + * Register a default network interface. + * + * All packets that don't go out on any of the other interfaces will + * be routed to the default interface. + * + * \param netif A pointer to the network interface that is to be + * registered. + */ +/*------------------------------------------------------------------------------*/ +void +uip_fw_default(struct uip_fw_netif *netif) +{ + defaultnetif = netif; +} +/*------------------------------------------------------------------------------*/ +/** + * Perform periodic processing. + */ +/*------------------------------------------------------------------------------*/ +void +uip_fw_periodic(void) +{ + struct fwcache_entry *fw; + for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) { + if(fw->timer > 0) { + --fw->timer; + } + } +} +/*------------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/uip/uip-fw.h b/Target/Source/third_party/uip/uip/uip-fw.h new file mode 100644 index 00000000..e854ecef --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-fw.h @@ -0,0 +1,176 @@ +/** + * \addtogroup uipfw + * @{ + */ + +/** + * \file + * uIP packet forwarding header file. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: uip-fw.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ +#ifndef __UIP_FW_H__ +#define __UIP_FW_H__ + +#include "uip.h" + +/** + * Representation of a uIP network interface. + */ +struct uip_fw_netif { + struct uip_fw_netif *next; /**< Pointer to the next interface when + linked in a list. */ + u16_t ipaddr[2]; /**< The IP address of this interface. */ + u16_t netmask[2]; /**< The netmask of the interface. */ + u8_t (* output)(void); + /**< A pointer to the function that + sends a packet. */ +}; + +/** + * Intantiating macro for a uIP network interface. + * + * Example: + \code + struct uip_fw_netif slipnetif = + {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)}; + \endcode + * \param ip1,ip2,ip3,ip4 The IP address of the network interface. + * + * \param nm1,nm2,nm3,nm4 The netmask of the network interface. + * + * \param outputfunc A pointer to the output function of the network interface. + * + * \hideinitializer + */ +#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \ + NULL, \ + {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \ + {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \ + outputfunc + +/** + * Set the IP address of a network interface. + * + * \param netif A pointer to the uip_fw_netif structure for the network interface. + * + * \param addr A pointer to an IP address. + * + * \hideinitializer + */ +#define uip_fw_setipaddr(netif, addr) \ + do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \ + (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0) +/** + * Set the netmask of a network interface. + * + * \param netif A pointer to the uip_fw_netif structure for the network interface. + * + * \param addr A pointer to an IP address representing the netmask. + * + * \hideinitializer + */ +#define uip_fw_setnetmask(netif, addr) \ + do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \ + (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0) + +void uip_fw_init(void); +u8_t uip_fw_forward(void); +u8_t uip_fw_output(void); +void uip_fw_register(struct uip_fw_netif *netif); +void uip_fw_default(struct uip_fw_netif *netif); +void uip_fw_periodic(void); + + +/** + * A non-error message that indicates that a packet should be + * processed locally. + * + * \hideinitializer + */ +#define UIP_FW_LOCAL 0 + +/** + * A non-error message that indicates that something went OK. + * + * \hideinitializer + */ +#define UIP_FW_OK 0 + +/** + * A non-error message that indicates that a packet was forwarded. + * + * \hideinitializer + */ +#define UIP_FW_FORWARDED 1 + +/** + * A non-error message that indicates that a zero-length packet + * transmission was attempted, and that no packet was sent. + * + * \hideinitializer + */ +#define UIP_FW_ZEROLEN 2 + +/** + * An error message that indicates that a packet that was too large + * for the outbound network interface was detected. + * + * \hideinitializer + */ +#define UIP_FW_TOOLARGE 3 + +/** + * An error message that indicates that no suitable interface could be + * found for an outbound packet. + * + * \hideinitializer + */ +#define UIP_FW_NOROUTE 4 + +/** + * An error message that indicates that a packet that should be + * forwarded or output was dropped. + * + * \hideinitializer + */ +#define UIP_FW_DROPPED 5 + + +#endif /* __UIP_FW_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip-neighbor.c b/Target/Source/third_party/uip/uip/uip-neighbor.c new file mode 100644 index 00000000..9715c8e0 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-neighbor.c @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \file + * Database of link-local neighbors, used by IPv6 code and + * to be used by a future ARP code rewrite. + * \author + * Adam Dunkels + */ + +#include "uip-neighbor.h" + +#include + +#define MAX_TIME 128 + +#ifdef UIP_NEIGHBOR_CONF_ENTRIES +#define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES +#else /* UIP_NEIGHBOR_CONF_ENTRIES */ +#define ENTRIES 8 +#endif /* UIP_NEIGHBOR_CONF_ENTRIES */ + +struct neighbor_entry { + uip_ipaddr_t ipaddr; + struct uip_neighbor_addr addr; + u8_t time; +}; +static struct neighbor_entry entries[ENTRIES]; + +/*---------------------------------------------------------------------------*/ +void +uip_neighbor_init(void) +{ + int i; + + for(i = 0; i < ENTRIES; ++i) { + entries[i].time = MAX_TIME; + } +} +/*---------------------------------------------------------------------------*/ +void +uip_neighbor_periodic(void) +{ + int i; + + for(i = 0; i < ENTRIES; ++i) { + if(entries[i].time < MAX_TIME) { + entries[i].time++; + } + } +} +/*---------------------------------------------------------------------------*/ +void +uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr) +{ + int i, oldest; + u8_t oldest_time; + + printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", + addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3], + addr->addr.addr[4], addr->addr.addr[5]); + + /* Find the first unused entry or the oldest used entry. */ + oldest_time = 0; + oldest = 0; + for(i = 0; i < ENTRIES; ++i) { + if(entries[i].time == MAX_TIME) { + oldest = i; + break; + } + if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) { + oldest = i; + break; + } + if(entries[i].time > oldest_time) { + oldest = i; + oldest_time = entries[i].time; + } + } + + /* Use the oldest or first free entry (either pointed to by the + "oldest" variable). */ + entries[oldest].time = 0; + uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr); + memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr)); +} +/*---------------------------------------------------------------------------*/ +static struct neighbor_entry * +find_entry(uip_ipaddr_t ipaddr) +{ + int i; + + for(i = 0; i < ENTRIES; ++i) { + if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) { + return &entries[i]; + } + } + return NULL; +} +/*---------------------------------------------------------------------------*/ +void +uip_neighbor_update(uip_ipaddr_t ipaddr) +{ + struct neighbor_entry *e; + + e = find_entry(ipaddr); + if(e != NULL) { + e->time = 0; + } +} +/*---------------------------------------------------------------------------*/ +struct uip_neighbor_addr * +uip_neighbor_lookup(uip_ipaddr_t ipaddr) +{ + struct neighbor_entry *e; + + e = find_entry(ipaddr); + if(e != NULL) { + /* printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n", + e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3], + e->addr.addr.addr[4], e->addr.addr.addr[5]);*/ + + return &e->addr; + } + return NULL; +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/uip/uip-neighbor.h b/Target/Source/third_party/uip/uip/uip-neighbor.h new file mode 100644 index 00000000..aca096f2 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-neighbor.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +/** + * \file + * Header file for database of link-local neighbors, used by + * IPv6 code and to be used by future ARP code. + * \author + * Adam Dunkels + */ + +#ifndef __UIP_NEIGHBOR_H__ +#define __UIP_NEIGHBOR_H__ + +#include "uip.h" + +struct uip_neighbor_addr { +#if UIP_NEIGHBOR_CONF_ADDRTYPE + UIP_NEIGHBOR_CONF_ADDRTYPE addr; +#else + struct uip_eth_addr addr; +#endif +}; + +void uip_neighbor_init(void); +void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr); +void uip_neighbor_update(uip_ipaddr_t ipaddr); +struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr); +void uip_neighbor_periodic(void); + +#endif /* __UIP-NEIGHBOR_H__ */ diff --git a/Target/Source/third_party/uip/uip/uip-split.c b/Target/Source/third_party/uip/uip/uip-split.c new file mode 100644 index 00000000..639b9fcd --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-split.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +#include + +#include "uip-split.h" +#include "uip.h" +#include "uip-fw.h" +#include "uip_arch.h" + + + +#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) + +/*-----------------------------------------------------------------------------*/ +void +uip_split_output(void) +{ + u16_t tcplen, len1, len2; + + /* We only try to split maximum sized TCP segments. */ + if(BUF->proto == UIP_PROTO_TCP && + uip_len == UIP_BUFSIZE - UIP_LLH_LEN) { + + tcplen = uip_len - UIP_TCPIP_HLEN; + /* Split the segment in two. If the original packet length was + odd, we make the second packet one byte larger. */ + len1 = len2 = tcplen / 2; + if(len1 + len2 < tcplen) { + ++len2; + } + + /* Create the first packet. This is done by altering the length + field of the IP header and updating the checksums. */ + uip_len = len1 + UIP_TCPIP_HLEN; +#if UIP_CONF_IPV6 + /* For IPv6, the IP length field does not include the IPv6 IP header + length. */ + BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); + BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); +#else /* UIP_CONF_IPV6 */ + BUF->len[0] = uip_len >> 8; + BUF->len[1] = uip_len & 0xff; +#endif /* UIP_CONF_IPV6 */ + + /* Recalculate the TCP checksum. */ + BUF->tcpchksum = 0; + BUF->tcpchksum = ~(uip_tcpchksum()); + +#if !UIP_CONF_IPV6 + /* Recalculate the IP checksum. */ + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); +#endif /* UIP_CONF_IPV6 */ + + /* Transmit the first packet. */ + /* uip_fw_output();*/ + tcpip_output(); + + /* Now, create the second packet. To do this, it is not enough to + just alter the length field, but we must also update the TCP + sequence number and point the uip_appdata to a new place in + memory. This place is detemined by the length of the first + packet (len1). */ + uip_len = len2 + UIP_TCPIP_HLEN; +#if UIP_CONF_IPV6 + /* For IPv6, the IP length field does not include the IPv6 IP header + length. */ + BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); + BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); +#else /* UIP_CONF_IPV6 */ + BUF->len[0] = uip_len >> 8; + BUF->len[1] = uip_len & 0xff; +#endif /* UIP_CONF_IPV6 */ + + /* uip_appdata += len1;*/ + memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2); + + uip_add32(BUF->seqno, len1); + BUF->seqno[0] = uip_acc32[0]; + BUF->seqno[1] = uip_acc32[1]; + BUF->seqno[2] = uip_acc32[2]; + BUF->seqno[3] = uip_acc32[3]; + + /* Recalculate the TCP checksum. */ + BUF->tcpchksum = 0; + BUF->tcpchksum = ~(uip_tcpchksum()); + +#if !UIP_CONF_IPV6 + /* Recalculate the IP checksum. */ + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); +#endif /* UIP_CONF_IPV6 */ + + /* Transmit the second packet. */ + /* uip_fw_output();*/ + tcpip_output(); + } else { + /* uip_fw_output();*/ + tcpip_output(); + } + +} +/*-----------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/uip/uip-split.h b/Target/Source/third_party/uip/uip/uip-split.h new file mode 100644 index 00000000..446e1920 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip-split.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ +/** + * \addtogroup uip + * @{ + */ + +/** + * \defgroup uipsplit uIP TCP throughput booster hack + * @{ + * + * The basic uIP TCP implementation only allows each TCP connection to + * have a single TCP segment in flight at any given time. Because of + * the delayed ACK algorithm employed by most TCP receivers, uIP's + * limit on the amount of in-flight TCP segments seriously reduces the + * maximum achievable throughput for sending data from uIP. + * + * The uip-split module is a hack which tries to remedy this + * situation. By splitting maximum sized outgoing TCP segments into + * two, the delayed ACK algorithm is not invoked at TCP + * receivers. This improves the throughput when sending data from uIP + * by orders of magnitude. + * + * The uip-split module uses the uip-fw module (uIP IP packet + * forwarding) for sending packets. Therefore, the uip-fw module must + * be set up with the appropriate network interfaces for this module + * to work. + */ + + +/** + * \file + * Module for splitting outbound TCP segments in two to avoid the + * delayed ACK throughput degradation. + * \author + * Adam Dunkels + * + */ + +#ifndef __UIP_SPLIT_H__ +#define __UIP_SPLIT_H__ + +/** + * Handle outgoing packets. + * + * This function inspects an outgoing packet in the uip_buf buffer and + * sends it out using the uip_fw_output() function. If the packet is a + * full-sized TCP segment it will be split into two segments and + * transmitted separately. This function should be called instead of + * the actual device driver output function, or the uip_fw_output() + * function. + * + * The headers of the outgoing packet is assumed to be in the uip_buf + * buffer and the payload is assumed to be wherever uip_appdata + * points. The length of the outgoing packet is assumed to be in the + * uip_len variable. + * + */ +void uip_split_output(void); + +#endif /* __UIP_SPLIT_H__ */ + +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip.c b/Target/Source/third_party/uip/uip/uip.c new file mode 100644 index 00000000..4fb8fe20 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip.c @@ -0,0 +1,1930 @@ +#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/ + +/** + * \defgroup uip The uIP TCP/IP stack + * @{ + * + * uIP is an implementation of the TCP/IP protocol stack intended for + * small 8-bit and 16-bit microcontrollers. + * + * uIP provides the necessary protocols for Internet communication, + * with a very small code footprint and RAM requirements - the uIP + * code size is on the order of a few kilobytes and RAM usage is on + * the order of a few hundred bytes. + */ + +/** + * \file + * The uIP TCP/IP stack code. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ + * + */ + +/* + * uIP is a small implementation of the IP, UDP and TCP protocols (as + * well as some basic ICMP stuff). The implementation couples the IP, + * UDP, TCP and the application layers very tightly. To keep the size + * of the compiled code down, this code frequently uses the goto + * statement. While it would be possible to break the uip_process() + * function into many smaller functions, this would increase the code + * size because of the overhead of parameter passing and the fact that + * the optimier would not be as efficient. + * + * The principle is that we have a small buffer, called the uip_buf, + * in which the device driver puts an incoming packet. The TCP/IP + * stack parses the headers in the packet, and calls the + * application. If the remote host has sent data to the application, + * this data is present in the uip_buf and the application read the + * data from there. It is up to the application to put this data into + * a byte stream if needed. The application will not be fed with data + * that is out of sequence. + * + * If the application whishes to send data to the peer, it should put + * its data into the uip_buf. The uip_appdata pointer points to the + * first available byte. The TCP/IP stack will calculate the + * checksums, and fill in the necessary header fields and finally send + * the packet back to the peer. +*/ + +#include "uip.h" +#include "uipopt.h" +#include "uip_arch.h" + +#if UIP_CONF_IPV6 +#include "uip-neighbor.h" +#endif /* UIP_CONF_IPV6 */ + +#include + +/*---------------------------------------------------------------------------*/ +/* Variable definitions. */ + + +/* The IP address of this host. If it is defined to be fixed (by + setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set + here. Otherwise, the address */ +#if UIP_FIXEDADDR > 0 +const uip_ipaddr_t uip_hostaddr = + {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), + HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; +const uip_ipaddr_t uip_draddr = + {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), + HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; +const uip_ipaddr_t uip_netmask = + {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), + HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; +#else +uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask; +#endif /* UIP_FIXEDADDR */ + +static const uip_ipaddr_t all_ones_addr = +#if UIP_CONF_IPV6 + {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; +#else /* UIP_CONF_IPV6 */ + {0xffff,0xffff}; +#endif /* UIP_CONF_IPV6 */ +static const uip_ipaddr_t all_zeroes_addr = +#if UIP_CONF_IPV6 + {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; +#else /* UIP_CONF_IPV6 */ + {0x0000,0x0000}; +#endif /* UIP_CONF_IPV6 */ + + +#if UIP_FIXEDETHADDR +const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, + UIP_ETHADDR1, + UIP_ETHADDR2, + UIP_ETHADDR3, + UIP_ETHADDR4, + UIP_ETHADDR5}}; +#else +struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}; +#endif + +#ifndef UIP_CONF_EXTERNAL_BUFFER +u8_t uip_buf[UIP_BUFSIZE + 2]; /* The packet buffer that contains + incoming packets. */ +#endif /* UIP_CONF_EXTERNAL_BUFFER */ + +void *uip_appdata; /* The uip_appdata pointer points to + application data. */ +void *uip_sappdata; /* The uip_appdata pointer points to + the application data which is to + be sent. */ +#if UIP_URGDATA > 0 +void *uip_urgdata; /* The uip_urgdata pointer points to + urgent data (out-of-band data), if + present. */ +u16_t uip_urglen, uip_surglen; +#endif /* UIP_URGDATA > 0 */ + +u16_t uip_len, uip_slen; + /* The uip_len is either 8 or 16 bits, + depending on the maximum packet + size. */ + +u8_t uip_flags; /* The uip_flags variable is used for + communication between the TCP/IP stack + and the application program. */ + +#if UIP_TCP +struct uip_conn *uip_conn; /* uip_conn always points to the current + connection. */ + +struct uip_conn uip_conns[UIP_CONNS]; + /* The uip_conns array holds all TCP + connections. */ +u16_t uip_listenports[UIP_LISTENPORTS]; + /* The uip_listenports list all currently + listning ports. */ +#endif /* UIP_TCP */ + +#if UIP_UDP +struct uip_udp_conn *uip_udp_conn; +struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; +#endif /* UIP_UDP */ + +static u16_t ipid; /* Ths ipid variable is an increasing + number that is used for the IP ID + field. */ + +void uip_setipid(u16_t id) { ipid = id; } + +#if UIP_TCP +static u8_t iss[4]; /* The iss variable is used for the TCP + initial sequence number. */ +#endif /* UIP_TCP */ + +#if UIP_ACTIVE_OPEN +static u16_t lastport; /* Keeps track of the last port used for + a new connection. */ +#endif /* UIP_ACTIVE_OPEN */ + +/* Temporary variables. */ +#if UIP_TCP +u8_t uip_acc32[4]; +static u8_t c, opt; +static u16_t tmp16; +#endif /* UIP_TCP */ + +/* Structures and definitions. */ +#define TCP_FIN 0x01 +#define TCP_SYN 0x02 +#define TCP_RST 0x04 +#define TCP_PSH 0x08 +#define TCP_ACK 0x10 +#define TCP_URG 0x20 +#define TCP_CTL 0x3f + +#define TCP_OPT_END 0 /* End of TCP options list */ +#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ +#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ + +#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ + +#define ICMP_ECHO_REPLY 0 +#define ICMP_ECHO 8 + +#define ICMP6_ECHO_REPLY 129 +#define ICMP6_ECHO 128 +#define ICMP6_NEIGHBOR_SOLICITATION 135 +#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 + +#define ICMP6_FLAG_S (1 << 6) + +#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 +#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 + + +/* Macros. */ +#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) +#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) +#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) +#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) + + +#if UIP_STATISTICS == 1 +struct uip_stats uip_stat; +#define UIP_STAT(s) s +#else +#define UIP_STAT(s) +#endif /* UIP_STATISTICS == 1 */ + +#if UIP_LOGGING == 1 +#include +void uip_log(char *msg); +#define UIP_LOG(m) uip_log(m) +#else +#define UIP_LOG(m) +#endif /* UIP_LOGGING == 1 */ + +#if ! UIP_ARCH_ADD32 && UIP_TCP +void +uip_add32(u8_t *op32, u16_t op16) +{ + uip_acc32[3] = op32[3] + (op16 & 0xff); + uip_acc32[2] = op32[2] + (op16 >> 8); + uip_acc32[1] = op32[1]; + uip_acc32[0] = op32[0]; + + if(uip_acc32[2] < (op16 >> 8)) { + ++uip_acc32[1]; + if(uip_acc32[1] == 0) { + ++uip_acc32[0]; + } + } + + + if(uip_acc32[3] < (op16 & 0xff)) { + ++uip_acc32[2]; + if(uip_acc32[2] == 0) { + ++uip_acc32[1]; + if(uip_acc32[1] == 0) { + ++uip_acc32[0]; + } + } + } +} + +#endif /* ! UIP_ARCH_ADD32 && UIP_TCP */ + +#if ! UIP_ARCH_CHKSUM +/*---------------------------------------------------------------------------*/ +static u16_t +chksum(u16_t sum, const u8_t *data, u16_t len) +{ + u16_t t; + const u8_t *dataptr; + const u8_t *last_byte; + + dataptr = data; + last_byte = data + len - 1; + + while(dataptr < last_byte) { /* At least two more bytes */ + t = (dataptr[0] << 8) + dataptr[1]; + sum += t; + if(sum < t) { + sum++; /* carry */ + } + dataptr += 2; + } + + if(dataptr == last_byte) { + t = (dataptr[0] << 8) + 0; + sum += t; + if(sum < t) { + sum++; /* carry */ + } + } + + /* Return sum in host byte order. */ + return sum; +} +/*---------------------------------------------------------------------------*/ +u16_t +uip_chksum(u16_t *data, u16_t len) +{ + return htons(chksum(0, (u8_t *)data, len)); +} +/*---------------------------------------------------------------------------*/ +#ifndef UIP_ARCH_IPCHKSUM +u16_t +uip_ipchksum(void) +{ + u16_t sum; + + sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN); + DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum); + return (sum == 0) ? 0xffff : htons(sum); +} +#endif +/*---------------------------------------------------------------------------*/ +#if UIP_CONF_IPV6 || UIP_TCP || UIP_UDP_CHECKSUMS +static u16_t +upper_layer_chksum(u8_t proto) +{ + u16_t upper_layer_len; + u16_t sum; + +#if UIP_CONF_IPV6 + upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]); +#else /* UIP_CONF_IPV6 */ + upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN; +#endif /* UIP_CONF_IPV6 */ + + /* First sum pseudoheader. */ + + /* IP protocol and length fields. This addition cannot carry. */ + sum = upper_layer_len + proto; + /* Sum IP source and destination addresses. */ + sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t)); + + /* Sum TCP header and data. */ + sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], + upper_layer_len); + + return (sum == 0) ? 0xffff : htons(sum); +} +#endif /* UIP_CONF_IPV6 || UIP_TCP || UIP_UDP_CHECKSUMS */ +/*---------------------------------------------------------------------------*/ +#if UIP_CONF_IPV6 +u16_t +uip_icmp6chksum(void) +{ + return upper_layer_chksum(UIP_PROTO_ICMP6); + +} +#endif /* UIP_CONF_IPV6 */ +/*---------------------------------------------------------------------------*/ +#if UIP_TCP +u16_t +uip_tcpchksum(void) +{ + return upper_layer_chksum(UIP_PROTO_TCP); +} +#endif /* UIP_TCP */ +/*---------------------------------------------------------------------------*/ +#if UIP_UDP_CHECKSUMS +u16_t +uip_udpchksum(void) +{ + return upper_layer_chksum(UIP_PROTO_UDP); +} +#endif /* UIP_UDP_CHECKSUMS */ +#endif /* UIP_ARCH_CHKSUM */ +/*---------------------------------------------------------------------------*/ +void +uip_init(void) +{ +#if UIP_TCP + for(c = 0; c < UIP_LISTENPORTS; ++c) { + uip_listenports[c] = 0; + } + for(c = 0; c < UIP_CONNS; ++c) { + uip_conns[c].tcpstateflags = UIP_CLOSED; + } +#endif /* UIP_TCP */ +#if UIP_ACTIVE_OPEN + lastport = 1024; +#endif /* UIP_ACTIVE_OPEN */ + +#if UIP_UDP + for(c = 0; c < UIP_UDP_CONNS; ++c) { + uip_udp_conns[c].lport = 0; + } +#endif /* UIP_UDP */ + + + /* IPv4 initialization. */ +#if UIP_FIXEDADDR == 0 + /* uip_hostaddr[0] = uip_hostaddr[1] = 0;*/ +#endif /* UIP_FIXEDADDR */ + +} +/*---------------------------------------------------------------------------*/ +#if UIP_ACTIVE_OPEN && UIP_TCP +struct uip_conn * +uip_connect(uip_ipaddr_t *ripaddr, u16_t rport) +{ + register struct uip_conn *conn, *cconn; + + /* Find an unused local port. */ + again: + ++lastport; + + if(lastport >= 32000) { + lastport = 4096; + } + + /* Check if this port is already in use, and if so try to find + another one. */ + for(c = 0; c < UIP_CONNS; ++c) { + conn = &uip_conns[c]; + if(conn->tcpstateflags != UIP_CLOSED && + conn->lport == htons(lastport)) { + goto again; + } + } + + conn = 0; + for(c = 0; c < UIP_CONNS; ++c) { + cconn = &uip_conns[c]; + if(cconn->tcpstateflags == UIP_CLOSED) { + conn = cconn; + break; + } + if(cconn->tcpstateflags == UIP_TIME_WAIT) { + if(conn == 0 || + cconn->timer > conn->timer) { + conn = cconn; + } + } + } + + if(conn == 0) { + return 0; + } + + conn->tcpstateflags = UIP_SYN_SENT; + + conn->snd_nxt[0] = iss[0]; + conn->snd_nxt[1] = iss[1]; + conn->snd_nxt[2] = iss[2]; + conn->snd_nxt[3] = iss[3]; + + conn->initialmss = conn->mss = UIP_TCP_MSS; + + conn->len = 1; /* TCP length of the SYN is one. */ + conn->nrtx = 0; + conn->timer = 1; /* Send the SYN next time around. */ + conn->rto = UIP_RTO; + conn->sa = 0; + conn->sv = 16; /* Initial value of the RTT variance. */ + conn->lport = htons(lastport); + conn->rport = rport; + uip_ipaddr_copy(&conn->ripaddr, ripaddr); + + return conn; +} +#endif /* UIP_ACTIVE_OPEN && UIP_TCP */ +/*---------------------------------------------------------------------------*/ +#if UIP_UDP +struct uip_udp_conn * +uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport) +{ + register struct uip_udp_conn *conn; + + /* Find an unused local port. */ + again: + ++lastport; + + if(lastport >= 32000) { + lastport = 4096; + } + + for(c = 0; c < UIP_UDP_CONNS; ++c) { + if(uip_udp_conns[c].lport == htons(lastport)) { + goto again; + } + } + + + conn = 0; + for(c = 0; c < UIP_UDP_CONNS; ++c) { + if(uip_udp_conns[c].lport == 0) { + conn = &uip_udp_conns[c]; + break; + } + } + + if(conn == 0) { + return 0; + } + + conn->lport = HTONS(lastport); + conn->rport = rport; + if(ripaddr == NULL) { + memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t)); + } else { + uip_ipaddr_copy(&conn->ripaddr, ripaddr); + } + conn->ttl = UIP_TTL; + + return conn; +} +#endif /* UIP_UDP */ +/*---------------------------------------------------------------------------*/ +#if UIP_TCP +void +uip_unlisten(u16_t port) +{ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(uip_listenports[c] == port) { + uip_listenports[c] = 0; + return; + } + } +} +#endif /* UIP_TCP */ +/*---------------------------------------------------------------------------*/ +#if UIP_TCP +void +uip_listen(u16_t port) +{ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(uip_listenports[c] == 0) { + uip_listenports[c] = port; + return; + } + } +} +#endif /* UIP_TCP */ +/*---------------------------------------------------------------------------*/ +/* XXX: IP fragment reassembly: not well-tested. */ + +#if UIP_REASSEMBLY && !UIP_CONF_IPV6 +#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) +static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; +static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; +static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, + 0x0f, 0x07, 0x03, 0x01}; +static u16_t uip_reasslen; +static u8_t uip_reassflags; +#define UIP_REASS_FLAG_LASTFRAG 0x01 +static u8_t uip_reasstmr; + +#define IP_MF 0x20 + +static u8_t +uip_reass(void) +{ + u16_t offset, len; + u16_t i; + + /* If ip_reasstmr is zero, no packet is present in the buffer, so we + write the IP header of the fragment into the reassembly + buffer. The timer is updated with the maximum age. */ + if(uip_reasstmr == 0) { + memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN); + uip_reasstmr = UIP_REASS_MAXAGE; + uip_reassflags = 0; + /* Clear the bitmap. */ + memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); + } + + /* Check if the incoming fragment matches the one currently present + in the reasembly buffer. If so, we proceed with copying the + fragment into the buffer. */ + if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && + BUF->srcipaddr[1] == FBUF->srcipaddr[1] && + BUF->destipaddr[0] == FBUF->destipaddr[0] && + BUF->destipaddr[1] == FBUF->destipaddr[1] && + BUF->ipid[0] == FBUF->ipid[0] && + BUF->ipid[1] == FBUF->ipid[1]) { + + len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; + offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; + + /* If the offset or the offset + fragment length overflows the + reassembly buffer, we discard the entire packet. */ + if(offset > UIP_REASS_BUFSIZE || + offset + len > UIP_REASS_BUFSIZE) { + uip_reasstmr = 0; + goto nullreturn; + } + + /* Copy the fragment into the reassembly buffer, at the right + offset. */ + memcpy(&uip_reassbuf[UIP_IPH_LEN + offset], + (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), + len); + + /* Update the bitmap. */ + if(offset / (8 * 8) == (offset + len) / (8 * 8)) { + /* If the two endpoints are in the same byte, we only update + that byte. */ + + uip_reassbitmap[offset / (8 * 8)] |= + bitmap_bits[(offset / 8 ) & 7] & + ~bitmap_bits[((offset + len) / 8 ) & 7]; + } else { + /* If the two endpoints are in different bytes, we update the + bytes in the endpoints and fill the stuff inbetween with + 0xff. */ + uip_reassbitmap[offset / (8 * 8)] |= + bitmap_bits[(offset / 8 ) & 7]; + for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { + uip_reassbitmap[i] = 0xff; + } + uip_reassbitmap[(offset + len) / (8 * 8)] |= + ~bitmap_bits[((offset + len) / 8 ) & 7]; + } + + /* If this fragment has the More Fragments flag set to zero, we + know that this is the last fragment, so we can calculate the + size of the entire packet. We also set the + IP_REASS_FLAG_LASTFRAG flag to indicate that we have received + the final fragment. */ + + if((BUF->ipoffset[0] & IP_MF) == 0) { + uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; + uip_reasslen = offset + len; + } + + /* Finally, we check if we have a full packet in the buffer. We do + this by checking if we have the last fragment and if all bits + in the bitmap are set. */ + if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { + /* Check all bytes up to and including all but the last byte in + the bitmap. */ + for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { + if(uip_reassbitmap[i] != 0xff) { + goto nullreturn; + } + } + /* Check the last byte in the bitmap. It should contain just the + right amount of bits. */ + if(uip_reassbitmap[uip_reasslen / (8 * 8)] != + (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { + goto nullreturn; + } + + /* If we have come this far, we have a full packet in the + buffer, so we allocate a pbuf and copy the packet into it. We + also reset the timer. */ + uip_reasstmr = 0; + memcpy(BUF, FBUF, uip_reasslen); + + /* Pretend to be a "normal" (i.e., not fragmented) IP packet + from now on. */ + BUF->ipoffset[0] = BUF->ipoffset[1] = 0; + BUF->len[0] = uip_reasslen >> 8; + BUF->len[1] = uip_reasslen & 0xff; + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); + + return uip_reasslen; + } + } + + nullreturn: + return 0; +} +#endif /* UIP_REASSEMBLY */ +/*---------------------------------------------------------------------------*/ +#if UIP_TCP +static void +uip_add_rcv_nxt(u16_t n) +{ + uip_add32(uip_conn->rcv_nxt, n); + uip_conn->rcv_nxt[0] = uip_acc32[0]; + uip_conn->rcv_nxt[1] = uip_acc32[1]; + uip_conn->rcv_nxt[2] = uip_acc32[2]; + uip_conn->rcv_nxt[3] = uip_acc32[3]; +} +#endif /* UIP_TCP */ +/*---------------------------------------------------------------------------*/ +void +uip_process(u8_t flag) +{ +#if UIP_TCP + register struct uip_conn *uip_connr = uip_conn; +#endif /* UIP_TCP */ + +#if UIP_UDP + if(flag == UIP_UDP_SEND_CONN) { + goto udp_send; + } +#endif /* UIP_UDP */ + + uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN]; + + /* Check if we were invoked because of a poll request for a + particular connection. */ +#if UIP_TCP + if(flag == UIP_POLL_REQUEST) { + if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED && + !uip_outstanding(uip_connr)) { + uip_flags = UIP_POLL; + UIP_APPCALL(); + goto appsend; + } + goto drop; + + /* Check if we were invoked because of the perodic timer fireing. */ + } else if(flag == UIP_TIMER) { +#if UIP_REASSEMBLY + if(uip_reasstmr != 0) { + --uip_reasstmr; + } +#endif /* UIP_REASSEMBLY */ + /* Increase the initial sequence number. */ + if(++iss[3] == 0) { + if(++iss[2] == 0) { + if(++iss[1] == 0) { + ++iss[0]; + } + } + } + + /* Reset the length variables. */ + uip_len = 0; + uip_slen = 0; + + /* Check if the connection is in a state in which we simply wait + for the connection to time out. If so, we increase the + connection's timer and remove the connection if it times + out. */ + if(uip_connr->tcpstateflags == UIP_TIME_WAIT || + uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { + ++(uip_connr->timer); + if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { + uip_connr->tcpstateflags = UIP_CLOSED; + } + } else if(uip_connr->tcpstateflags != UIP_CLOSED) { + /* If the connection has outstanding data, we increase the + connection's timer and see if it has reached the RTO value + in which case we retransmit. */ + if(uip_outstanding(uip_connr)) { + if(uip_connr->timer-- == 0) { + if(uip_connr->nrtx == UIP_MAXRTX || + ((uip_connr->tcpstateflags == UIP_SYN_SENT || + uip_connr->tcpstateflags == UIP_SYN_RCVD) && + uip_connr->nrtx == UIP_MAXSYNRTX)) { + uip_connr->tcpstateflags = UIP_CLOSED; + + /* We call UIP_APPCALL() with uip_flags set to + UIP_TIMEDOUT to inform the application that the + connection has timed out. */ + uip_flags = UIP_TIMEDOUT; + UIP_APPCALL(); + + /* We also send a reset packet to the remote host. */ + BUF->flags = TCP_RST | TCP_ACK; + goto tcp_send_nodata; + } + + /* Exponential backoff. */ + uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? + 4: + uip_connr->nrtx); + ++(uip_connr->nrtx); + + /* Ok, so we need to retransmit. We do this differently + depending on which state we are in. In ESTABLISHED, we + call upon the application so that it may prepare the + data for the retransmit. In SYN_RCVD, we resend the + SYNACK that we sent earlier and in LAST_ACK we have to + retransmit our FINACK. */ + UIP_STAT(++uip_stat.tcp.rexmit); + switch(uip_connr->tcpstateflags & UIP_TS_MASK) { + case UIP_SYN_RCVD: + /* In the SYN_RCVD state, we should retransmit our + SYNACK. */ + goto tcp_send_synack; + +#if UIP_ACTIVE_OPEN + case UIP_SYN_SENT: + /* In the SYN_SENT state, we retransmit out SYN. */ + BUF->flags = 0; + goto tcp_send_syn; +#endif /* UIP_ACTIVE_OPEN */ + + case UIP_ESTABLISHED: + /* In the ESTABLISHED state, we call upon the application + to do the actual retransmit after which we jump into + the code for sending out the packet (the apprexmit + label). */ + uip_flags = UIP_REXMIT; + UIP_APPCALL(); + goto apprexmit; + + case UIP_FIN_WAIT_1: + case UIP_CLOSING: + case UIP_LAST_ACK: + /* In all these states we should retransmit a FINACK. */ + goto tcp_send_finack; + + } + } + } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) { + /* If there was no need for a retransmission, we poll the + application for new data. */ + uip_flags = UIP_POLL; + UIP_APPCALL(); + goto appsend; + } + } + goto drop; + } +#endif /* UIP_TCP */ +#if UIP_UDP + if(flag == UIP_UDP_TIMER) { + if(uip_udp_conn->lport != 0) { +#if UIP_TCP + uip_conn = NULL; +#endif /* UIP_TCP */ + uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; + uip_len = uip_slen = 0; + uip_flags = UIP_POLL; + UIP_UDP_APPCALL(); + goto udp_send; + } else { + goto drop; + } + } +#endif + + /* This is where the input processing starts. */ + UIP_STAT(++uip_stat.ip.recv); + + /* Start of IP input header processing code. */ + +#if UIP_CONF_IPV6 + /* Check validity of the IP header. */ + if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.vhlerr); + UIP_LOG("ipv6: invalid version."); + goto drop; + } +#else /* UIP_CONF_IPV6 */ + /* Check validity of the IP header. */ + if(BUF->vhl != 0x45) { /* IP version and header length. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.vhlerr); + UIP_LOG("ip: invalid version or header length."); + goto drop; + } +#endif /* UIP_CONF_IPV6 */ + + /* Check the size of the packet. If the size reported to us in + uip_len is smaller the size reported in the IP header, we assume + that the packet has been corrupted in transit. If the size of + uip_len is larger than the size reported in the IP packet header, + the packet has been padded and we set uip_len to the correct + value.. */ + + if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) { + uip_len = (BUF->len[0] << 8) + BUF->len[1]; +#if UIP_CONF_IPV6 + uip_len += 40; /* The length reported in the IPv6 header is the + length of the payload that follows the + header. However, uIP uses the uip_len variable + for holding the size of the entire packet, + including the IP header. For IPv4 this is not a + problem as the length field in the IPv4 header + contains the length of the entire packet. But + for IPv6 we need to add the size of the IPv6 + header (40 bytes). */ +#endif /* UIP_CONF_IPV6 */ + } else { + UIP_LOG("ip: packet shorter than reported in IP header."); + goto drop; + } + +#if !UIP_CONF_IPV6 + /* Check the fragment flag. */ + if((BUF->ipoffset[0] & 0x3f) != 0 || + BUF->ipoffset[1] != 0) { +#if UIP_REASSEMBLY + uip_len = uip_reass(); + if(uip_len == 0) { + goto drop; + } +#else /* UIP_REASSEMBLY */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.fragerr); + UIP_LOG("ip: fragment dropped."); + goto drop; +#endif /* UIP_REASSEMBLY */ + } +#endif /* UIP_CONF_IPV6 */ + + if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) { + /* If we are configured to use ping IP address configuration and + hasn't been assigned an IP address yet, we accept all ICMP + packets. */ +#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 + if(BUF->proto == UIP_PROTO_ICMP) { + UIP_LOG("ip: possible ping config packet received."); + goto icmp_input; + } else { + UIP_LOG("ip: packet dropped since no address assigned."); + goto drop; + } +#endif /* UIP_PINGADDRCONF */ + + } else { + /* If IP broadcast support is configured, we check for a broadcast + UDP packet, which may be destined to us. */ +#if UIP_BROADCAST + DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum()); + if(BUF->proto == UIP_PROTO_UDP && + uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) + /*&& + uip_ipchksum() == 0xffff*/) { + goto udp_input; + } +#endif /* UIP_BROADCAST */ + + /* Check if the packet is destined for our IP address. */ +#if !UIP_CONF_IPV6 + if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) { + UIP_STAT(++uip_stat.ip.drop); + goto drop; + } +#else /* UIP_CONF_IPV6 */ + /* For IPv6, packet reception is a little trickier as we need to + make sure that we listen to certain multicast addresses (all + hosts multicast address, and the solicited-node multicast + address) as well. However, we will cheat here and accept all + multicast packets that are sent to the ff02::/16 addresses. */ + if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) && + BUF->destipaddr[0] != HTONS(0xff02)) { + UIP_STAT(++uip_stat.ip.drop); + goto drop; + } +#endif /* UIP_CONF_IPV6 */ + } + +#if !UIP_CONF_IPV6 + if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header + checksum. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.chkerr); + UIP_LOG("ip: bad checksum."); + goto drop; + } +#endif /* UIP_CONF_IPV6 */ + +#if UIP_TCP + if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so, + proceed with TCP input + processing. */ + goto tcp_input; + } +#endif /* UIP_TCP */ + +#if UIP_UDP + if(BUF->proto == UIP_PROTO_UDP) { + goto udp_input; + } +#endif /* UIP_UDP */ + +#if !UIP_CONF_IPV6 + /* ICMPv4 processing code follows. */ + if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from + here. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.protoerr); + UIP_LOG("ip: neither tcp nor icmp."); + goto drop; + } + +#if UIP_PINGADDRCONF + icmp_input: +#endif /* UIP_PINGADDRCONF */ + UIP_STAT(++uip_stat.icmp.recv); + + /* ICMP echo (i.e., ping) processing. This is simple, we only change + the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP + checksum before we return the packet. */ + if(ICMPBUF->type != ICMP_ECHO) { + UIP_STAT(++uip_stat.icmp.drop); + UIP_STAT(++uip_stat.icmp.typeerr); + UIP_LOG("icmp: not icmp echo."); + goto drop; + } + + /* If we are configured to use ping IP address assignment, we use + the destination IP address of this ping packet and assign it to + ourself. */ +#if UIP_PINGADDRCONF + if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { + uip_hostaddr[0] = BUF->destipaddr[0]; + uip_hostaddr[1] = BUF->destipaddr[1]; + } +#endif /* UIP_PINGADDRCONF */ + + ICMPBUF->type = ICMP_ECHO_REPLY; + + if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { + ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; + } else { + ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); + } + + /* Swap IP addresses. */ + uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); + uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); + + UIP_STAT(++uip_stat.icmp.sent); + goto send; + + /* End of IPv4 input header processing code. */ +#else /* !UIP_CONF_IPV6 */ + + /* This is IPv6 ICMPv6 processing code. */ + DEBUG_PRINTF("icmp6_input: length %d\n", uip_len); + + if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from + here. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.protoerr); + UIP_LOG("ip: neither tcp nor icmp6."); + goto drop; + } + + UIP_STAT(++uip_stat.icmp.recv); + + /* If we get a neighbor solicitation for our address we should send + a neighbor advertisement message back. */ + if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) { + if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) { + + if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) { + /* Save the sender's address in our neighbor list. */ + uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2])); + } + + /* We should now send a neighbor advertisement back to where the + neighbor solicication came from. */ + ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT; + ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */ + + ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0; + + uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr); + uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr); + ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS; + ICMPBUF->options[1] = 1; /* Options length, 1 = 8 bytes. */ + memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr)); + ICMPBUF->icmpchksum = 0; + ICMPBUF->icmpchksum = ~uip_icmp6chksum(); + goto send; + + } + goto drop; + } else if(ICMPBUF->type == ICMP6_ECHO) { + /* ICMP echo (i.e., ping) processing. This is simple, we only + change the ICMP type from ECHO to ECHO_REPLY and update the + ICMP checksum before we return the packet. */ + + ICMPBUF->type = ICMP6_ECHO_REPLY; + + uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); + uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); + ICMPBUF->icmpchksum = 0; + ICMPBUF->icmpchksum = ~uip_icmp6chksum(); + + UIP_STAT(++uip_stat.icmp.sent); + goto send; + } else { + DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type); + UIP_STAT(++uip_stat.icmp.drop); + UIP_STAT(++uip_stat.icmp.typeerr); + UIP_LOG("icmp: unknown ICMP message."); + goto drop; + } + + /* End of IPv6 ICMP processing. */ + +#endif /* !UIP_CONF_IPV6 */ + +#if UIP_UDP + /* UDP input processing. */ + udp_input: + /* UDP processing is really just a hack. We don't do anything to the + UDP/IP headers, but let the UDP application do all the hard + work. If the application sets uip_slen, it has a packet to + send. */ +#if UIP_UDP_CHECKSUMS + uip_len = uip_len - UIP_IPUDPH_LEN; + uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; + if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) { + UIP_STAT(++uip_stat.udp.drop); + UIP_STAT(++uip_stat.udp.chkerr); + UIP_LOG("udp: bad checksum."); + goto drop; + } +#else /* UIP_UDP_CHECKSUMS */ + uip_len = uip_len - UIP_IPUDPH_LEN; +#endif /* UIP_UDP_CHECKSUMS */ + + /* Demultiplex this UDP packet between the UDP "connections". */ + for(uip_udp_conn = &uip_udp_conns[0]; + uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; + ++uip_udp_conn) { + /* If the local UDP port is non-zero, the connection is considered + to be used. If so, the local port number is checked against the + destination port number in the received packet. If the two port + numbers match, the remote port number is checked if the + connection is bound to a remote port. Finally, if the + connection is bound to a remote IP address, the source IP + address of the packet is checked. */ + if(uip_udp_conn->lport != 0 && + UDPBUF->destport == uip_udp_conn->lport && + (uip_udp_conn->rport == 0 || + UDPBUF->srcport == uip_udp_conn->rport || + uip_udp_conn->rport == HTONS(69)) && + (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) || + uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) || + uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) { + goto udp_found; + } + } + UIP_LOG("udp: no matching connection found"); + goto drop; + + udp_found: +#if UIP_TCP + uip_conn = NULL; +#endif /* UIP_TCP */ + uip_flags = UIP_NEWDATA; + uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; + uip_slen = 0; + UIP_UDP_APPCALL(); + udp_send: + if(uip_slen == 0) { + goto drop; + } + uip_len = uip_slen + UIP_IPUDPH_LEN; + +#if UIP_CONF_IPV6 + /* For IPv6, the IP length field does not include the IPv6 IP header + length. */ + BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); + BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); +#else /* UIP_CONF_IPV6 */ + BUF->len[0] = (uip_len >> 8); + BUF->len[1] = (uip_len & 0xff); +#endif /* UIP_CONF_IPV6 */ + + BUF->ttl = uip_udp_conn->ttl; + BUF->proto = UIP_PROTO_UDP; + + UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN); + UDPBUF->udpchksum = 0; + + BUF->srcport = uip_udp_conn->lport; + BUF->destport = uip_udp_conn->rport; + + uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); + uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr); + + uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN]; + +#if UIP_UDP_CHECKSUMS + /* Calculate UDP checksum. */ + UDPBUF->udpchksum = ~(uip_udpchksum()); + if(UDPBUF->udpchksum == 0) { + UDPBUF->udpchksum = 0xffff; + } +#endif /* UIP_UDP_CHECKSUMS */ + + goto ip_send_nolen; +#endif /* UIP_UDP */ + + /* TCP input processing. */ +#if UIP_TCP + tcp_input: + UIP_STAT(++uip_stat.tcp.recv); + + /* Start of TCP input header processing code. */ + + if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP + checksum. */ + UIP_STAT(++uip_stat.tcp.drop); + UIP_STAT(++uip_stat.tcp.chkerr); + UIP_LOG("tcp: bad checksum."); + goto drop; + } + + + /* Demultiplex this segment. */ + /* First check any active connections. */ + for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1]; + ++uip_connr) { + if(uip_connr->tcpstateflags != UIP_CLOSED && + BUF->destport == uip_connr->lport && + BUF->srcport == uip_connr->rport && + uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) { + goto found; + } + } + + /* If we didn't find and active connection that expected the packet, + either this packet is an old duplicate, or this is a SYN packet + destined for a connection in LISTEN. If the SYN flag isn't set, + it is an old packet and we send a RST. */ + if((BUF->flags & TCP_CTL) != TCP_SYN) { + goto reset; + } + + tmp16 = BUF->destport; + /* Next, check listening connections. */ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(tmp16 == uip_listenports[c]) + goto found_listen; + } + + /* No matching connection found, so we send a RST packet. */ + UIP_STAT(++uip_stat.tcp.synrst); + reset: + + /* We do not send resets in response to resets. */ + if(BUF->flags & TCP_RST) { + goto drop; + } + + UIP_STAT(++uip_stat.tcp.rst); + + BUF->flags = TCP_RST | TCP_ACK; + uip_len = UIP_IPTCPH_LEN; + BUF->tcpoffset = 5 << 4; + + /* Flip the seqno and ackno fields in the TCP header. */ + c = BUF->seqno[3]; + BUF->seqno[3] = BUF->ackno[3]; + BUF->ackno[3] = c; + + c = BUF->seqno[2]; + BUF->seqno[2] = BUF->ackno[2]; + BUF->ackno[2] = c; + + c = BUF->seqno[1]; + BUF->seqno[1] = BUF->ackno[1]; + BUF->ackno[1] = c; + + c = BUF->seqno[0]; + BUF->seqno[0] = BUF->ackno[0]; + BUF->ackno[0] = c; + + /* We also have to increase the sequence number we are + acknowledging. If the least significant byte overflowed, we need + to propagate the carry to the other bytes as well. */ + if(++BUF->ackno[3] == 0) { + if(++BUF->ackno[2] == 0) { + if(++BUF->ackno[1] == 0) { + ++BUF->ackno[0]; + } + } + } + + /* Swap port numbers. */ + tmp16 = BUF->srcport; + BUF->srcport = BUF->destport; + BUF->destport = tmp16; + + /* Swap IP addresses. */ + uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr); + uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); + + /* And send out the RST packet! */ + goto tcp_send_noconn; + + /* This label will be jumped to if we matched the incoming packet + with a connection in LISTEN. In that case, we should create a new + connection and send a SYNACK in return. */ + found_listen: + /* First we check if there are any connections avaliable. Unused + connections are kept in the same table as used connections, but + unused ones have the tcpstate set to CLOSED. Also, connections in + TIME_WAIT are kept track of and we'll use the oldest one if no + CLOSED connections are found. Thanks to Eddie C. Dost for a very + nice algorithm for the TIME_WAIT search. */ + uip_connr = 0; + for(c = 0; c < UIP_CONNS; ++c) { + if(uip_conns[c].tcpstateflags == UIP_CLOSED) { + uip_connr = &uip_conns[c]; + break; + } + if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { + if(uip_connr == 0 || + uip_conns[c].timer > uip_connr->timer) { + uip_connr = &uip_conns[c]; + } + } + } + + if(uip_connr == 0) { + /* All connections are used already, we drop packet and hope that + the remote end will retransmit the packet at a time when we + have more spare connections. */ + UIP_STAT(++uip_stat.tcp.syndrop); + UIP_LOG("tcp: found no unused connections."); + goto drop; + } + uip_conn = uip_connr; + + /* Fill in the necessary fields for the new connection. */ + uip_connr->rto = uip_connr->timer = UIP_RTO; + uip_connr->sa = 0; + uip_connr->sv = 4; + uip_connr->nrtx = 0; + uip_connr->lport = BUF->destport; + uip_connr->rport = BUF->srcport; + uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr); + uip_connr->tcpstateflags = UIP_SYN_RCVD; + + uip_connr->snd_nxt[0] = iss[0]; + uip_connr->snd_nxt[1] = iss[1]; + uip_connr->snd_nxt[2] = iss[2]; + uip_connr->snd_nxt[3] = iss[3]; + uip_connr->len = 1; + + /* rcv_nxt should be the seqno from the incoming packet + 1. */ + uip_connr->rcv_nxt[3] = BUF->seqno[3]; + uip_connr->rcv_nxt[2] = BUF->seqno[2]; + uip_connr->rcv_nxt[1] = BUF->seqno[1]; + uip_connr->rcv_nxt[0] = BUF->seqno[0]; + uip_add_rcv_nxt(1); + + /* Parse the TCP MSS option, if present. */ + if((BUF->tcpoffset & 0xf0) > 0x50) { + for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { + opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; + if(opt == TCP_OPT_END) { + /* End of options. */ + break; + } else if(opt == TCP_OPT_NOOP) { + ++c; + /* NOP option. */ + } else if(opt == TCP_OPT_MSS && + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { + /* An MSS option with the right option length. */ + tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | + (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c]; + uip_connr->initialmss = uip_connr->mss = + tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; + + /* And we are done processing options. */ + break; + } else { + /* All other options have a length field, so that we easily + can skip past them. */ + if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { + /* If the length field is zero, the options are malformed + and we don't process them further. */ + break; + } + c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; + } + } + } + + /* Our response will be a SYNACK. */ +#if UIP_ACTIVE_OPEN + tcp_send_synack: + BUF->flags = TCP_ACK; + + tcp_send_syn: + BUF->flags |= TCP_SYN; +#else /* UIP_ACTIVE_OPEN */ + tcp_send_synack: + BUF->flags = TCP_SYN | TCP_ACK; +#endif /* UIP_ACTIVE_OPEN */ + + /* We send out the TCP Maximum Segment Size option with our + SYNACK. */ + BUF->optdata[0] = TCP_OPT_MSS; + BUF->optdata[1] = TCP_OPT_MSS_LEN; + BUF->optdata[2] = (UIP_TCP_MSS) / 256; + BUF->optdata[3] = (UIP_TCP_MSS) & 255; + uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN; + BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; + goto tcp_send; + + /* This label will be jumped to if we found an active connection. */ + found: + uip_conn = uip_connr; + uip_flags = 0; + /* We do a very naive form of TCP reset processing; we just accept + any RST and kill our connection. We should in fact check if the + sequence number of this reset is wihtin our advertised window + before we accept the reset. */ + if(BUF->flags & TCP_RST) { + uip_connr->tcpstateflags = UIP_CLOSED; + UIP_LOG("tcp: got reset, aborting connection."); + uip_flags = UIP_ABORT; + UIP_APPCALL(); + goto drop; + } + /* Calculated the length of the data, if the application has sent + any data to us. */ + c = (BUF->tcpoffset >> 4) << 2; + /* uip_len will contain the length of the actual TCP data. This is + calculated by subtracing the length of the TCP header (in + c) and the length of the IP header (20 bytes). */ + uip_len = uip_len - c - UIP_IPH_LEN; + + /* First, check if the sequence number of the incoming packet is + what we're expecting next. If not, we send out an ACK with the + correct numbers in. */ + if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && + ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { + if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) && + (BUF->seqno[0] != uip_connr->rcv_nxt[0] || + BUF->seqno[1] != uip_connr->rcv_nxt[1] || + BUF->seqno[2] != uip_connr->rcv_nxt[2] || + BUF->seqno[3] != uip_connr->rcv_nxt[3])) { + goto tcp_send_ack; + } + } + + /* Next, check if the incoming segment acknowledges any outstanding + data. If so, we update the sequence number, reset the length of + the outstanding data, calculate RTT estimations, and reset the + retransmission timer. */ + if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { + uip_add32(uip_connr->snd_nxt, uip_connr->len); + + if(BUF->ackno[0] == uip_acc32[0] && + BUF->ackno[1] == uip_acc32[1] && + BUF->ackno[2] == uip_acc32[2] && + BUF->ackno[3] == uip_acc32[3]) { + /* Update sequence number. */ + uip_connr->snd_nxt[0] = uip_acc32[0]; + uip_connr->snd_nxt[1] = uip_acc32[1]; + uip_connr->snd_nxt[2] = uip_acc32[2]; + uip_connr->snd_nxt[3] = uip_acc32[3]; + + + /* Do RTT estimation, unless we have done retransmissions. */ + if(uip_connr->nrtx == 0) { + signed char m; + m = uip_connr->rto - uip_connr->timer; + /* This is taken directly from VJs original code in his paper */ + m = m - (uip_connr->sa >> 3); + uip_connr->sa += m; + if(m < 0) { + m = -m; + } + m = m - (uip_connr->sv >> 2); + uip_connr->sv += m; + uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; + + } + /* Set the acknowledged flag. */ + uip_flags = UIP_ACKDATA; + /* Reset the retransmission timer. */ + uip_connr->timer = uip_connr->rto; + + /* Reset length of outstanding data. */ + uip_connr->len = 0; + } + + } + + /* Do different things depending on in what state the connection is. */ + switch(uip_connr->tcpstateflags & UIP_TS_MASK) { + /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not + implemented, since we force the application to close when the + peer sends a FIN (hence the application goes directly from + ESTABLISHED to LAST_ACK). */ + case UIP_SYN_RCVD: + /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and + we are waiting for an ACK that acknowledges the data we sent + out the last time. Therefore, we want to have the UIP_ACKDATA + flag set. If so, we enter the ESTABLISHED state. */ + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = UIP_ESTABLISHED; + uip_flags = UIP_CONNECTED; + uip_connr->len = 0; + if(uip_len > 0) { + uip_flags |= UIP_NEWDATA; + uip_add_rcv_nxt(uip_len); + } + uip_slen = 0; + UIP_APPCALL(); + goto appsend; + } + goto drop; +#if UIP_ACTIVE_OPEN + case UIP_SYN_SENT: + /* In SYN_SENT, we wait for a SYNACK that is sent in response to + our SYN. The rcv_nxt is set to sequence number in the SYNACK + plus one, and we send an ACK. We move into the ESTABLISHED + state. */ + if((uip_flags & UIP_ACKDATA) && + (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { + + /* Parse the TCP MSS option, if present. */ + if((BUF->tcpoffset & 0xf0) > 0x50) { + for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { + opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c]; + if(opt == TCP_OPT_END) { + /* End of options. */ + break; + } else if(opt == TCP_OPT_NOOP) { + ++c; + /* NOP option. */ + } else if(opt == TCP_OPT_MSS && + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) { + /* An MSS option with the right option length. */ + tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; + uip_connr->initialmss = + uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; + + /* And we are done processing options. */ + break; + } else { + /* All other options have a length field, so that we easily + can skip past them. */ + if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { + /* If the length field is zero, the options are malformed + and we don't process them further. */ + break; + } + c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; + } + } + } + uip_connr->tcpstateflags = UIP_ESTABLISHED; + uip_connr->rcv_nxt[0] = BUF->seqno[0]; + uip_connr->rcv_nxt[1] = BUF->seqno[1]; + uip_connr->rcv_nxt[2] = BUF->seqno[2]; + uip_connr->rcv_nxt[3] = BUF->seqno[3]; + uip_add_rcv_nxt(1); + uip_flags = UIP_CONNECTED | UIP_NEWDATA; + uip_connr->len = 0; + uip_len = 0; + uip_slen = 0; + UIP_APPCALL(); + goto appsend; + } + /* Inform the application that the connection failed */ + uip_flags = UIP_ABORT; + UIP_APPCALL(); + /* The connection is closed after we send the RST */ + uip_conn->tcpstateflags = UIP_CLOSED; + goto reset; +#endif /* UIP_ACTIVE_OPEN */ + + case UIP_ESTABLISHED: + /* In the ESTABLISHED state, we call upon the application to feed + data into the uip_buf. If the UIP_ACKDATA flag is set, the + application should put new data into the buffer, otherwise we are + retransmitting an old segment, and the application should put that + data into the buffer. + + If the incoming packet is a FIN, we should close the connection on + this side as well, and we send out a FIN and enter the LAST_ACK + state. We require that there is no outstanding data; otherwise the + sequence numbers will be screwed up. */ + + if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) { + if(uip_outstanding(uip_connr)) { + goto drop; + } + uip_add_rcv_nxt(1 + uip_len); + uip_flags |= UIP_CLOSE; + if(uip_len > 0) { + uip_flags |= UIP_NEWDATA; + } + UIP_APPCALL(); + uip_connr->len = 1; + uip_connr->tcpstateflags = UIP_LAST_ACK; + uip_connr->nrtx = 0; + tcp_send_finack: + BUF->flags = TCP_FIN | TCP_ACK; + goto tcp_send_nodata; + } + + /* Check the URG flag. If this is set, the segment carries urgent + data that we must pass to the application. */ + if((BUF->flags & TCP_URG) != 0) { +#if UIP_URGDATA > 0 + uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; + if(uip_urglen > uip_len) { + /* There is more urgent data in the next segment to come. */ + uip_urglen = uip_len; + } + uip_add_rcv_nxt(uip_urglen); + uip_len -= uip_urglen; + uip_urgdata = uip_appdata; + uip_appdata += uip_urglen; + } else { + uip_urglen = 0; +#else /* UIP_URGDATA > 0 */ + uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]); + uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; +#endif /* UIP_URGDATA > 0 */ + } + + /* If uip_len > 0 we have TCP data in the packet, and we flag this + by setting the UIP_NEWDATA flag and update the sequence number + we acknowledge. If the application has stopped the dataflow + using uip_stop(), we must not accept any data packets from the + remote host. */ + if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { + uip_flags |= UIP_NEWDATA; + uip_add_rcv_nxt(uip_len); + } + + /* Check if the available buffer space advertised by the other end + is smaller than the initial MSS for this connection. If so, we + set the current MSS to the window size to ensure that the + application does not send more data than the other end can + handle. + + If the remote host advertises a zero window, we set the MSS to + the initial MSS so that the application will send an entire MSS + of data. This data will not be acknowledged by the receiver, + and the application will retransmit it. This is called the + "persistent timer" and uses the retransmission mechanim. + */ + tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; + if(tmp16 > uip_connr->initialmss || + tmp16 == 0) { + tmp16 = uip_connr->initialmss; + } + uip_connr->mss = tmp16; + + /* If this packet constitutes an ACK for outstanding data (flagged + by the UIP_ACKDATA flag, we should call the application since it + might want to send more data. If the incoming packet had data + from the peer (as flagged by the UIP_NEWDATA flag), the + application must also be notified. + + When the application is called, the global variable uip_len + contains the length of the incoming data. The application can + access the incoming data through the global pointer + uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN + bytes into the uip_buf array. + + If the application wishes to send any data, this data should be + put into the uip_appdata and the length of the data should be + put into uip_len. If the application don't have any data to + send, uip_len must be set to 0. */ + if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { + uip_slen = 0; + UIP_APPCALL(); + + appsend: + + if(uip_flags & UIP_ABORT) { + uip_slen = 0; + uip_connr->tcpstateflags = UIP_CLOSED; + BUF->flags = TCP_RST | TCP_ACK; + goto tcp_send_nodata; + } + + if(uip_flags & UIP_CLOSE) { + uip_slen = 0; + uip_connr->len = 1; + uip_connr->tcpstateflags = UIP_FIN_WAIT_1; + uip_connr->nrtx = 0; + BUF->flags = TCP_FIN | TCP_ACK; + goto tcp_send_nodata; + } + + /* If uip_slen > 0, the application has data to be sent. */ + if(uip_slen > 0) { + + /* If the connection has acknowledged data, the contents of + the ->len variable should be discarded. */ + if((uip_flags & UIP_ACKDATA) != 0) { + uip_connr->len = 0; + } + + /* If the ->len variable is non-zero the connection has + already data in transit and cannot send anymore right + now. */ + if(uip_connr->len == 0) { + + /* The application cannot send more than what is allowed by + the mss (the minumum of the MSS and the available + window). */ + if(uip_slen > uip_connr->mss) { + uip_slen = uip_connr->mss; + } + + /* Remember how much data we send out now so that we know + when everything has been acknowledged. */ + uip_connr->len = uip_slen; + } else { + + /* If the application already had unacknowledged data, we + make sure that the application does not send (i.e., + retransmit) out more than it previously sent out. */ + uip_slen = uip_connr->len; + } + } + uip_connr->nrtx = 0; + apprexmit: + uip_appdata = uip_sappdata; + + /* If the application has data to be sent, or if the incoming + packet had new data in it, we must send out a packet. */ + if(uip_slen > 0 && uip_connr->len > 0) { + /* Add the length of the IP and TCP headers. */ + uip_len = uip_connr->len + UIP_TCPIP_HLEN; + /* We always set the ACK flag in response packets. */ + BUF->flags = TCP_ACK | TCP_PSH; + /* Send the packet. */ + goto tcp_send_noopts; + } + /* If there is no data to send, just send out a pure ACK if + there is newdata. */ + if(uip_flags & UIP_NEWDATA) { + uip_len = UIP_TCPIP_HLEN; + BUF->flags = TCP_ACK; + goto tcp_send_noopts; + } + } + goto drop; + case UIP_LAST_ACK: + /* We can close this connection if the peer has acknowledged our + FIN. This is indicated by the UIP_ACKDATA flag. */ + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = UIP_CLOSED; + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + } + break; + + case UIP_FIN_WAIT_1: + /* The application has closed the connection, but the remote host + hasn't closed its end yet. Thus we do nothing but wait for a + FIN from the other side. */ + if(uip_len > 0) { + uip_add_rcv_nxt(uip_len); + } + if(BUF->flags & TCP_FIN) { + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = UIP_TIME_WAIT; + uip_connr->timer = 0; + uip_connr->len = 0; + } else { + uip_connr->tcpstateflags = UIP_CLOSING; + } + uip_add_rcv_nxt(1); + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + goto tcp_send_ack; + } else if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = UIP_FIN_WAIT_2; + uip_connr->len = 0; + goto drop; + } + if(uip_len > 0) { + goto tcp_send_ack; + } + goto drop; + + case UIP_FIN_WAIT_2: + if(uip_len > 0) { + uip_add_rcv_nxt(uip_len); + } + if(BUF->flags & TCP_FIN) { + uip_connr->tcpstateflags = UIP_TIME_WAIT; + uip_connr->timer = 0; + uip_add_rcv_nxt(1); + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + goto tcp_send_ack; + } + if(uip_len > 0) { + goto tcp_send_ack; + } + goto drop; + + case UIP_TIME_WAIT: + goto tcp_send_ack; + + case UIP_CLOSING: + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = UIP_TIME_WAIT; + uip_connr->timer = 0; + } + } + goto drop; + + + /* We jump here when we are ready to send the packet, and just want + to set the appropriate TCP sequence numbers in the TCP header. */ + tcp_send_ack: + BUF->flags = TCP_ACK; + tcp_send_nodata: + uip_len = UIP_IPTCPH_LEN; + tcp_send_noopts: + BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4; + tcp_send: + /* We're done with the input processing. We are now ready to send a + reply. Our job is to fill in all the fields of the TCP and IP + headers before calculating the checksum and finally send the + packet. */ + BUF->ackno[0] = uip_connr->rcv_nxt[0]; + BUF->ackno[1] = uip_connr->rcv_nxt[1]; + BUF->ackno[2] = uip_connr->rcv_nxt[2]; + BUF->ackno[3] = uip_connr->rcv_nxt[3]; + + BUF->seqno[0] = uip_connr->snd_nxt[0]; + BUF->seqno[1] = uip_connr->snd_nxt[1]; + BUF->seqno[2] = uip_connr->snd_nxt[2]; + BUF->seqno[3] = uip_connr->snd_nxt[3]; + + BUF->proto = UIP_PROTO_TCP; + + BUF->srcport = uip_connr->lport; + BUF->destport = uip_connr->rport; + + uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr); + uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr); + + if(uip_connr->tcpstateflags & UIP_STOPPED) { + /* If the connection has issued uip_stop(), we advertise a zero + window so that the remote host will stop sending data. */ + BUF->wnd[0] = BUF->wnd[1] = 0; + } else { + BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); + BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); + } + + tcp_send_noconn: + BUF->ttl = UIP_TTL; +#if UIP_CONF_IPV6 + /* For IPv6, the IP length field does not include the IPv6 IP header + length. */ + BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8); + BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff); +#else /* UIP_CONF_IPV6 */ + BUF->len[0] = (uip_len >> 8); + BUF->len[1] = (uip_len & 0xff); +#endif /* UIP_CONF_IPV6 */ + + BUF->urgp[0] = BUF->urgp[1] = 0; + + /* Calculate TCP checksum. */ + BUF->tcpchksum = 0; + BUF->tcpchksum = ~(uip_tcpchksum()); +#endif /* UIP_TCP */ + + ip_send_nolen: + +#if UIP_CONF_IPV6 + BUF->vtc = 0x60; + BUF->tcflow = 0x00; + BUF->flow = 0x00; +#else /* UIP_CONF_IPV6 */ + BUF->vhl = 0x45; + BUF->tos = 0; + BUF->ipoffset[0] = BUF->ipoffset[1] = 0; + ++ipid; + BUF->ipid[0] = ipid >> 8; + BUF->ipid[1] = ipid & 0xff; + /* Calculate IP checksum. */ + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); + DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum()); +#endif /* UIP_CONF_IPV6 */ + + UIP_STAT(++uip_stat.tcp.sent); + send: + DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len, + (BUF->len[0] << 8) | BUF->len[1]); + + UIP_STAT(++uip_stat.ip.sent); + /* Return and let the caller do the actual transmission. */ + uip_flags = 0; + return; + drop: + uip_len = 0; + uip_flags = 0; + return; +} +/*---------------------------------------------------------------------------*/ +u16_t +htons(u16_t val) +{ + return HTONS(val); +} +/*---------------------------------------------------------------------------*/ +void +uip_send(const void *data, int len) +{ + if(len > 0) { + uip_slen = len; + if(data != uip_sappdata) { + memcpy(uip_sappdata, (data), uip_slen); + } + } +} +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip.h b/Target/Source/third_party/uip/uip/uip.h new file mode 100644 index 00000000..eca20083 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip.h @@ -0,0 +1,1611 @@ + +/** + * \addtogroup uip + * @{ + */ + +/** + * \file + * Header file for the uIP TCP/IP stack. + * \author Adam Dunkels + * + * The uIP TCP/IP stack header file contains definitions for a number + * of C macros that are used by uIP programs as well as internal uIP + * structures, TCP/IP header structures and function declarations. + * + */ + + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ + * + */ + +#ifndef __UIP_H__ +#define __UIP_H__ + +#include "uipopt.h" + +/** + * Repressentation of an IP address. + * + */ +typedef u16_t uip_ip4addr_t[2]; +typedef u16_t uip_ip6addr_t[8]; +#if UIP_CONF_IPV6 +typedef uip_ip6addr_t uip_ipaddr_t; +#else /* UIP_CONF_IPV6 */ +typedef uip_ip4addr_t uip_ipaddr_t; +#endif /* UIP_CONF_IPV6 */ + +/*---------------------------------------------------------------------------*/ +/* First, the functions that should be called from the + * system. Initialization, the periodic timer and incoming packets are + * handled by the following three functions. + */ + +/** + * \defgroup uipconffunc uIP configuration functions + * @{ + * + * The uIP configuration functions are used for setting run-time + * parameters in uIP such as IP addresses. + */ + +/** + * Set the IP address of this host. + * + * The IP address is represented as a 4-byte array where the first + * octet of the IP address is put in the first member of the 4-byte + * array. + * + * Example: + \code + + uip_ipaddr_t addr; + + uip_ipaddr(&addr, 192,168,1,2); + uip_sethostaddr(&addr); + + \endcode + * \param addr A pointer to an IP address of type uip_ipaddr_t; + * + * \sa uip_ipaddr() + * + * \hideinitializer + */ +#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr)) + +/** + * Get the IP address of this host. + * + * The IP address is represented as a 4-byte array where the first + * octet of the IP address is put in the first member of the 4-byte + * array. + * + * Example: + \code + uip_ipaddr_t hostaddr; + + uip_gethostaddr(&hostaddr); + \endcode + * \param addr A pointer to a uip_ipaddr_t variable that will be + * filled in with the currently configured IP address. + * + * \hideinitializer + */ +#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr) + +/** + * Set the default router's IP address. + * + * \param addr A pointer to a uip_ipaddr_t variable containing the IP + * address of the default router. + * + * \sa uip_ipaddr() + * + * \hideinitializer + */ +#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr)) + +/** + * Set the netmask. + * + * \param addr A pointer to a uip_ipaddr_t variable containing the IP + * address of the netmask. + * + * \sa uip_ipaddr() + * + * \hideinitializer + */ +#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr)) + + +/** + * Get the default router's IP address. + * + * \param addr A pointer to a uip_ipaddr_t variable that will be + * filled in with the IP address of the default router. + * + * \hideinitializer + */ +#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) + +/** + * Get the netmask. + * + * \param addr A pointer to a uip_ipaddr_t variable that will be + * filled in with the value of the netmask. + * + * \hideinitializer + */ +#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) + +/** @} */ + +/** + * \defgroup uipinit uIP initialization functions + * @{ + * + * The uIP initialization functions are used for booting uIP. + */ + +/** + * uIP initialization function. + * + * This function should be called at boot up to initilize the uIP + * TCP/IP stack. + */ +void uip_init(void); + +/** + * uIP initialization function. + * + * This function may be used at boot time to set the initial ip_id. + */ +void uip_setipid(u16_t id); + +/** @} */ + +/** + * \defgroup uipdevfunc uIP device driver functions + * @{ + * + * These functions are used by a network device driver for interacting + * with uIP. + */ + +/** + * Process an incoming packet. + * + * This function should be called when the device driver has received + * a packet from the network. The packet from the device driver must + * be present in the uip_buf buffer, and the length of the packet + * should be placed in the uip_len variable. + * + * When the function returns, there may be an outbound packet placed + * in the uip_buf packet buffer. If so, the uip_len variable is set to + * the length of the packet. If no packet is to be sent out, the + * uip_len variable is set to 0. + * + * The usual way of calling the function is presented by the source + * code below. + \code + uip_len = devicedriver_poll(); + if(uip_len > 0) { + uip_input(); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note If you are writing a uIP device driver that needs ARP + * (Address Resolution Protocol), e.g., when running uIP over + * Ethernet, you will need to call the uIP ARP code before calling + * this function: + \code + #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) + uip_len = ethernet_devicedrver_poll(); + if(uip_len > 0) { + if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { + uip_arp_ipin(); + uip_input(); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { + uip_arp_arpin(); + if(uip_len > 0) { + ethernet_devicedriver_send(); + } + } + \endcode + * + * \hideinitializer + */ +#define uip_input() uip_process(UIP_DATA) + +/** + * Periodic processing for a connection identified by its number. + * + * This function does the necessary periodic processing (timers, + * polling) for a uIP TCP conneciton, and should be called when the + * periodic uIP timer goes off. It should be called for every + * connection, regardless of whether they are open of closed. + * + * When the function returns, it may have an outbound packet waiting + * for service in the uIP packet buffer, and if so the uip_len + * variable is set to a value larger than zero. The device driver + * should be called to send out the packet. + * + * The ususal way of calling the function is through a for() loop like + * this: + \code + for(i = 0; i < UIP_CONNS; ++i) { + uip_periodic(i); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note If you are writing a uIP device driver that needs ARP + * (Address Resolution Protocol), e.g., when running uIP over + * Ethernet, you will need to call the uip_arp_out() function before + * calling the device driver: + \code + for(i = 0; i < UIP_CONNS; ++i) { + uip_periodic(i); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } + \endcode + * + * \param conn The number of the connection which is to be periodically polled. + * + * \hideinitializer + */ +#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ + uip_process(UIP_TIMER); } while (0) + +/** + * + * + */ +#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) + +/** + * Perform periodic processing for a connection identified by a pointer + * to its structure. + * + * Same as uip_periodic() but takes a pointer to the actual uip_conn + * struct instead of an integer as its argument. This function can be + * used to force periodic processing of a specific connection. + * + * \param conn A pointer to the uip_conn struct for the connection to + * be processed. + * + * \hideinitializer + */ +#define uip_periodic_conn(conn) do { uip_conn = conn; \ + uip_process(UIP_TIMER); } while (0) + +/** + * Reuqest that a particular connection should be polled. + * + * Similar to uip_periodic_conn() but does not perform any timer + * processing. The application is polled for new data. + * + * \param conn A pointer to the uip_conn struct for the connection to + * be processed. + * + * \hideinitializer + */ +#define uip_poll_conn(conn) do { uip_conn = conn; \ + uip_process(UIP_POLL_REQUEST); } while (0) + + +#if UIP_UDP +/** + * Periodic processing for a UDP connection identified by its number. + * + * This function is essentially the same as uip_periodic(), but for + * UDP connections. It is called in a similar fashion as the + * uip_periodic() function: + \code + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note As for the uip_periodic() function, special care has to be + * taken when using uIP together with ARP and Ethernet: + \code + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } + \endcode + * + * \param conn The number of the UDP connection to be processed. + * + * \hideinitializer + */ +#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ + uip_process(UIP_UDP_TIMER); } while (0) + +/** + * Periodic processing for a UDP connection identified by a pointer to + * its structure. + * + * Same as uip_udp_periodic() but takes a pointer to the actual + * uip_conn struct instead of an integer as its argument. This + * function can be used to force periodic processing of a specific + * connection. + * + * \param conn A pointer to the uip_udp_conn struct for the connection + * to be processed. + * + * \hideinitializer + */ +#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ + uip_process(UIP_UDP_TIMER); } while (0) + + +#endif /* UIP_UDP */ + +/** + * The uIP packet buffer. + * + * The uip_buf array is used to hold incoming and outgoing + * packets. The device driver should place incoming data into this + * buffer. When sending data, the device driver should read the link + * level headers and the TCP/IP headers from this buffer. The size of + * the link level headers is configured by the UIP_LLH_LEN define. + * + * \note The application data need not be placed in this buffer, so + * the device driver must read it from the place pointed to by the + * uip_appdata pointer as illustrated by the following example: + \code + void + devicedriver_send(void) + { + hwsend(&uip_buf[0], UIP_LLH_LEN); + if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { + hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); + } else { + hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); + hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); + } + } + \endcode + */ +#ifdef UIP_CONF_EXTERNAL_BUFFER +extern u8_t *uip_buf; +#else +extern u8_t uip_buf[UIP_BUFSIZE+2]; +#endif + +/** @} */ + +/*---------------------------------------------------------------------------*/ +/* Functions that are used by the uIP application program. Opening and + * closing connections, sending and receiving data, etc. is all + * handled by the functions below. +*/ +/** + * \defgroup uipappfunc uIP application functions + * @{ + * + * Functions used by an application running of top of uIP. + */ + +/** + * Start listening to the specified port. + * + * \note Since this function expects the port number in network byte + * order, a conversion using HTONS() or htons() is necessary. + * + \code + uip_listen(HTONS(80)); + \endcode + * + * \param port A 16-bit port number in network byte order. + */ +void uip_listen(u16_t port); + +/** + * Stop listening to the specified port. + * + * \note Since this function expects the port number in network byte + * order, a conversion using HTONS() or htons() is necessary. + * + \code + uip_unlisten(HTONS(80)); + \endcode + * + * \param port A 16-bit port number in network byte order. + */ +void uip_unlisten(u16_t port); + +/** + * Connect to a remote host using TCP. + * + * This function is used to start a new connection to the specified + * port on the specied host. It allocates a new connection identifier, + * sets the connection to the SYN_SENT state and sets the + * retransmission timer to 0. This will cause a TCP SYN segment to be + * sent out the next time this connection is periodically processed, + * which usually is done within 0.5 seconds after the call to + * uip_connect(). + * + * \note This function is avaliable only if support for active open + * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. + * + * \note Since this function requires the port number to be in network + * byte order, a conversion using HTONS() or htons() is necessary. + * + \code + uip_ipaddr_t ipaddr; + + uip_ipaddr(&ipaddr, 192,168,1,2); + uip_connect(&ipaddr, HTONS(80)); + \endcode + * + * \param ripaddr The IP address of the remote hot. + * + * \param port A 16-bit port number in network byte order. + * + * \return A pointer to the uIP connection identifier for the new connection, + * or NULL if no connection could be allocated. + * + */ +struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port); + + + +/** + * \internal + * + * Check if a connection has outstanding (i.e., unacknowledged) data. + * + * \param conn A pointer to the uip_conn structure for the connection. + * + * \hideinitializer + */ +#define uip_outstanding(conn) ((conn)->len) + +/** + * Send data on the current connection. + * + * This function is used to send out a single segment of TCP + * data. Only applications that have been invoked by uIP for event + * processing can send data. + * + * The amount of data that actually is sent out after a call to this + * funcion is determined by the maximum amount of data TCP allows. uIP + * will automatically crop the data so that only the appropriate + * amount of data is sent. The function uip_mss() can be used to query + * uIP for the amount of data that actually will be sent. + * + * \note This function does not guarantee that the sent data will + * arrive at the destination. If the data is lost in the network, the + * application will be invoked with the uip_rexmit() event being + * set. The application will then have to resend the data using this + * function. + * + * \param data A pointer to the data which is to be sent. + * + * \param len The maximum amount of data bytes to be sent. + * + * \hideinitializer + */ +void uip_send(const void *data, int len); + +/** + * The length of any incoming data that is currently avaliable (if avaliable) + * in the uip_appdata buffer. + * + * The test function uip_data() must first be used to check if there + * is any data available at all. + * + * \hideinitializer + */ +/*void uip_datalen(void);*/ +#define uip_datalen() uip_len + +/** + * The length of any out-of-band data (urgent data) that has arrived + * on the connection. + * + * \note The configuration parameter UIP_URGDATA must be set for this + * function to be enabled. + * + * \hideinitializer + */ +#define uip_urgdatalen() uip_urglen + +/** + * Close the current connection. + * + * This function will close the current connection in a nice way. + * + * \hideinitializer + */ +#define uip_close() (uip_flags = UIP_CLOSE) + +/** + * Abort the current connection. + * + * This function will abort (reset) the current connection, and is + * usually used when an error has occured that prevents using the + * uip_close() function. + * + * \hideinitializer + */ +#define uip_abort() (uip_flags = UIP_ABORT) + +/** + * Tell the sending host to stop sending data. + * + * This function will close our receiver's window so that we stop + * receiving data for the current connection. + * + * \hideinitializer + */ +#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) + +/** + * Find out if the current connection has been previously stopped with + * uip_stop(). + * + * \hideinitializer + */ +#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) + +/** + * Restart the current connection, if is has previously been stopped + * with uip_stop(). + * + * This function will open the receiver's window again so that we + * start receiving data for the current connection. + * + * \hideinitializer + */ +#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ + uip_conn->tcpstateflags &= ~UIP_STOPPED; \ + } while(0) + + +/* uIP tests that can be made to determine in what state the current + connection is, and what the application function should do. */ + +/** + * Is the current connection a UDP connection? + * + * This function checks whether the current connection is a UDP connection. + * + * \hideinitializer + * + */ +#define uip_udpconnection() (uip_conn == NULL) + +/** + * Is new incoming data available? + * + * Will reduce to non-zero if there is new data for the application + * present at the uip_appdata pointer. The size of the data is + * avaliable through the uip_len variable. + * + * \hideinitializer + */ +#define uip_newdata() (uip_flags & UIP_NEWDATA) + +/** + * Has previously sent data been acknowledged? + * + * Will reduce to non-zero if the previously sent data has been + * acknowledged by the remote host. This means that the application + * can send new data. + * + * \hideinitializer + */ +#define uip_acked() (uip_flags & UIP_ACKDATA) + +/** + * Has the connection just been connected? + * + * Reduces to non-zero if the current connection has been connected to + * a remote host. This will happen both if the connection has been + * actively opened (with uip_connect()) or passively opened (with + * uip_listen()). + * + * \hideinitializer + */ +#define uip_connected() (uip_flags & UIP_CONNECTED) + +/** + * Has the connection been closed by the other end? + * + * Is non-zero if the connection has been closed by the remote + * host. The application may then do the necessary clean-ups. + * + * \hideinitializer + */ +#define uip_closed() (uip_flags & UIP_CLOSE) + +/** + * Has the connection been aborted by the other end? + * + * Non-zero if the current connection has been aborted (reset) by the + * remote host. + * + * \hideinitializer + */ +#define uip_aborted() (uip_flags & UIP_ABORT) + +/** + * Has the connection timed out? + * + * Non-zero if the current connection has been aborted due to too many + * retransmissions. + * + * \hideinitializer + */ +#define uip_timedout() (uip_flags & UIP_TIMEDOUT) + +/** + * Do we need to retransmit previously data? + * + * Reduces to non-zero if the previously sent data has been lost in + * the network, and the application should retransmit it. The + * application should send the exact same data as it did the last + * time, using the uip_send() function. + * + * \hideinitializer + */ +#define uip_rexmit() (uip_flags & UIP_REXMIT) + +/** + * Is the connection being polled by uIP? + * + * Is non-zero if the reason the application is invoked is that the + * current connection has been idle for a while and should be + * polled. + * + * The polling event can be used for sending data without having to + * wait for the remote host to send data. + * + * \hideinitializer + */ +#define uip_poll() (uip_flags & UIP_POLL) + +/** + * Get the initial maxium segment size (MSS) of the current + * connection. + * + * \hideinitializer + */ +#define uip_initialmss() (uip_conn->initialmss) + +/** + * Get the current maxium segment size that can be sent on the current + * connection. + * + * The current maxiumum segment size that can be sent on the + * connection is computed from the receiver's window and the MSS of + * the connection (which also is available by calling + * uip_initialmss()). + * + * \hideinitializer + */ +#define uip_mss() (uip_conn->mss) + +/** + * Set up a new UDP connection. + * + * This function sets up a new UDP connection. The function will + * automatically allocate an unused local port for the new + * connection. However, another port can be chosen by using the + * uip_udp_bind() call, after the uip_udp_new() function has been + * called. + * + * Example: + \code + uip_ipaddr_t addr; + struct uip_udp_conn *c; + + uip_ipaddr(&addr, 192,168,2,1); + c = uip_udp_new(&addr, HTONS(12345)); + if(c != NULL) { + uip_udp_bind(c, HTONS(12344)); + } + \endcode + * \param ripaddr The IP address of the remote host. + * + * \param rport The remote port number in network byte order. + * + * \return The uip_udp_conn structure for the new connection or NULL + * if no connection could be allocated. + */ +struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport); + +/** + * Removed a UDP connection. + * + * \param conn A pointer to the uip_udp_conn structure for the connection. + * + * \hideinitializer + */ +#define uip_udp_remove(conn) (conn)->lport = 0 + +/** + * Bind a UDP connection to a local port. + * + * \param conn A pointer to the uip_udp_conn structure for the + * connection. + * + * \param port The local port number, in network byte order. + * + * \hideinitializer + */ +#define uip_udp_bind(conn, port) (conn)->lport = port + +/** + * Send a UDP datagram of length len on the current connection. + * + * This function can only be called in response to a UDP event (poll + * or newdata). The data must be present in the uip_buf buffer, at the + * place pointed to by the uip_appdata pointer. + * + * \param len The length of the data in the uip_buf buffer. + * + * \hideinitializer + */ +#define uip_udp_send(len) uip_send((char *)uip_appdata, len) + +/** @} */ + +/* uIP convenience and converting functions. */ + +/** + * \defgroup uipconvfunc uIP conversion functions + * @{ + * + * These functions can be used for converting between different data + * formats used by uIP. + */ + +/** + * Construct an IP address from four bytes. + * + * This function constructs an IP address of the type that uIP handles + * internally from four bytes. The function is handy for specifying IP + * addresses to use with e.g. the uip_connect() function. + * + * Example: + \code + uip_ipaddr_t ipaddr; + struct uip_conn *c; + + uip_ipaddr(&ipaddr, 192,168,1,2); + c = uip_connect(&ipaddr, HTONS(80)); + \endcode + * + * \param addr A pointer to a uip_ipaddr_t variable that will be + * filled in with the IP address. + * + * \param addr0 The first octet of the IP address. + * \param addr1 The second octet of the IP address. + * \param addr2 The third octet of the IP address. + * \param addr3 The forth octet of the IP address. + * + * \hideinitializer + */ +#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ + ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \ + ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \ + } while(0) + +/** + * Construct an IPv6 address from eight 16-bit words. + * + * This function constructs an IPv6 address. + * + * \hideinitializer + */ +#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \ + ((u16_t *)(addr))[0] = HTONS((addr0)); \ + ((u16_t *)(addr))[1] = HTONS((addr1)); \ + ((u16_t *)(addr))[2] = HTONS((addr2)); \ + ((u16_t *)(addr))[3] = HTONS((addr3)); \ + ((u16_t *)(addr))[4] = HTONS((addr4)); \ + ((u16_t *)(addr))[5] = HTONS((addr5)); \ + ((u16_t *)(addr))[6] = HTONS((addr6)); \ + ((u16_t *)(addr))[7] = HTONS((addr7)); \ + } while(0) + +/** + * Copy an IP address to another IP address. + * + * Copies an IP address from one place to another. + * + * Example: + \code + uip_ipaddr_t ipaddr1, ipaddr2; + + uip_ipaddr(&ipaddr1, 192,16,1,2); + uip_ipaddr_copy(&ipaddr2, &ipaddr1); + \endcode + * + * \param dest The destination for the copy. + * \param src The source from where to copy. + * + * \hideinitializer + */ +#if !UIP_CONF_IPV6 +#define uip_ipaddr_copy(dest, src) do { \ + ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \ + ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \ + } while(0) +#else /* !UIP_CONF_IPV6 */ +#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) +#endif /* !UIP_CONF_IPV6 */ + +/** + * Compare two IP addresses + * + * Compares two IP addresses. + * + * Example: + \code + uip_ipaddr_t ipaddr1, ipaddr2; + + uip_ipaddr(&ipaddr1, 192,16,1,2); + if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { + printf("They are the same"); + } + \endcode + * + * \param addr1 The first IP address. + * \param addr2 The second IP address. + * + * \hideinitializer + */ +#if !UIP_CONF_IPV6 +#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \ + ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1]) +#else /* !UIP_CONF_IPV6 */ +#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0) +#endif /* !UIP_CONF_IPV6 */ + +/** + * Compare two IP addresses with netmasks + * + * Compares two IP addresses with netmasks. The masks are used to mask + * out the bits that are to be compared. + * + * Example: + \code + uip_ipaddr_t ipaddr1, ipaddr2, mask; + + uip_ipaddr(&mask, 255,255,255,0); + uip_ipaddr(&ipaddr1, 192,16,1,2); + uip_ipaddr(&ipaddr2, 192,16,1,3); + if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { + printf("They are the same"); + } + \endcode + * + * \param addr1 The first IP address. + * \param addr2 The second IP address. + * \param mask The netmask. + * + * \hideinitializer + */ +#define uip_ipaddr_maskcmp(addr1, addr2, mask) \ + (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ + (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ + ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ + (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) + + +/** + * Mask out the network part of an IP address. + * + * Masks out the network part of an IP address, given the address and + * the netmask. + * + * Example: + \code + uip_ipaddr_t ipaddr1, ipaddr2, netmask; + + uip_ipaddr(&ipaddr1, 192,16,1,2); + uip_ipaddr(&netmask, 255,255,255,0); + uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); + \endcode + * + * In the example above, the variable "ipaddr2" will contain the IP + * address 192.168.1.0. + * + * \param dest Where the result is to be placed. + * \param src The IP address. + * \param mask The netmask. + * + * \hideinitializer + */ +#define uip_ipaddr_mask(dest, src, mask) do { \ + ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ + ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ + } while(0) + +/** + * Pick the first octet of an IP address. + * + * Picks out the first octet of an IP address. + * + * Example: + \code + uip_ipaddr_t ipaddr; + u8_t octet; + + uip_ipaddr(&ipaddr, 1,2,3,4); + octet = uip_ipaddr1(&ipaddr); + \endcode + * + * In the example above, the variable "octet" will contain the value 1. + * + * \hideinitializer + */ +#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) + +/** + * Pick the second octet of an IP address. + * + * Picks out the second octet of an IP address. + * + * Example: + \code + uip_ipaddr_t ipaddr; + u8_t octet; + + uip_ipaddr(&ipaddr, 1,2,3,4); + octet = uip_ipaddr2(&ipaddr); + \endcode + * + * In the example above, the variable "octet" will contain the value 2. + * + * \hideinitializer + */ +#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) + +/** + * Pick the third octet of an IP address. + * + * Picks out the third octet of an IP address. + * + * Example: + \code + uip_ipaddr_t ipaddr; + u8_t octet; + + uip_ipaddr(&ipaddr, 1,2,3,4); + octet = uip_ipaddr3(&ipaddr); + \endcode + * + * In the example above, the variable "octet" will contain the value 3. + * + * \hideinitializer + */ +#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) + +/** + * Pick the fourth octet of an IP address. + * + * Picks out the fourth octet of an IP address. + * + * Example: + \code + uip_ipaddr_t ipaddr; + u8_t octet; + + uip_ipaddr(&ipaddr, 1,2,3,4); + octet = uip_ipaddr4(&ipaddr); + \endcode + * + * In the example above, the variable "octet" will contain the value 4. + * + * \hideinitializer + */ +#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) + +/** + * Convert 16-bit quantity from host byte order to network byte order. + * + * This macro is primarily used for converting constants from host + * byte order to network byte order. For converting variables to + * network byte order, use the htons() function instead. + * + * \hideinitializer + */ +#ifndef HTONS +# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN +# define HTONS(n) (n) +# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ +# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) +# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ +#else +#error "HTONS already defined!" +#endif /* HTONS */ + +/** + * Convert 16-bit quantity from host byte order to network byte order. + * + * This function is primarily used for converting variables from host + * byte order to network byte order. For converting constants to + * network byte order, use the HTONS() macro instead. + */ +#ifndef htons +u16_t htons(u16_t val); +#endif /* htons */ +#ifndef ntohs +#define ntohs htons +#endif + +/** @} */ + +/** + * Pointer to the application data in the packet buffer. + * + * This pointer points to the application data when the application is + * called. If the application wishes to send data, the application may + * use this space to write the data into before calling uip_send(). + */ +extern void *uip_appdata; + +#if UIP_URGDATA > 0 +/* u8_t *uip_urgdata: + * + * This pointer points to any urgent data that has been received. Only + * present if compiled with support for urgent data (UIP_URGDATA). + */ +extern void *uip_urgdata; +#endif /* UIP_URGDATA > 0 */ + + +/** + * \defgroup uipdrivervars Variables used in uIP device drivers + * @{ + * + * uIP has a few global variables that are used in device drivers for + * uIP. + */ + +/** + * The length of the packet in the uip_buf buffer. + * + * The global variable uip_len holds the length of the packet in the + * uip_buf buffer. + * + * When the network device driver calls the uIP input function, + * uip_len should be set to the length of the packet in the uip_buf + * buffer. + * + * When sending packets, the device driver should use the contents of + * the uip_len variable to determine the length of the outgoing + * packet. + * + */ +extern u16_t uip_len; + +/** @} */ + +#if UIP_URGDATA > 0 +extern u16_t uip_urglen, uip_surglen; +#endif /* UIP_URGDATA > 0 */ + + +#if UIP_TCP +/** + * Representation of a uIP TCP connection. + * + * The uip_conn structure is used for identifying a connection. All + * but one field in the structure are to be considered read-only by an + * application. The only exception is the appstate field whos purpose + * is to let the application store application-specific state (e.g., + * file pointers) for the connection. The type of this field is + * configured in the "uipopt.h" header file. + */ +struct uip_conn { + uip_ipaddr_t ripaddr; /**< The IP address of the remote host. */ + + u16_t lport; /**< The local TCP port, in network byte order. */ + u16_t rport; /**< The local remote TCP port, in network byte + order. */ + + u8_t rcv_nxt[4]; /**< The sequence number that we expect to + receive next. */ + u8_t snd_nxt[4]; /**< The sequence number that was last sent by + us. */ + u16_t len; /**< Length of the data that was previously sent. */ + u16_t mss; /**< Current maximum segment size for the + connection. */ + u16_t initialmss; /**< Initial maximum segment size for the + connection. */ + u8_t sa; /**< Retransmission time-out calculation state + variable. */ + u8_t sv; /**< Retransmission time-out calculation state + variable. */ + u8_t rto; /**< Retransmission time-out. */ + u8_t tcpstateflags; /**< TCP state and flags. */ + u8_t timer; /**< The retransmission timer. */ + u8_t nrtx; /**< The number of retransmissions for the last + segment sent. */ + + /** The application state. */ + uip_tcp_appstate_t appstate; +}; + + +/** + * Pointer to the current TCP connection. + * + * The uip_conn pointer can be used to access the current TCP + * connection. + */ +extern struct uip_conn *uip_conn; +/* The array containing all uIP connections. */ +extern struct uip_conn uip_conns[UIP_CONNS]; +#endif /* UIP_TCP */ +/** + * \addtogroup uiparch + * @{ + */ + +/** + * 4-byte array used for the 32-bit sequence number calculations. + */ +#if UIP_TCP +extern u8_t uip_acc32[4]; +#endif /* UIP_TCP */ + +/** @} */ + + +#if UIP_UDP +/** + * Representation of a uIP UDP connection. + */ +struct uip_udp_conn { + uip_ipaddr_t ripaddr; /**< The IP address of the remote peer. */ + u16_t lport; /**< The local port number in network byte order. */ + u16_t rport; /**< The remote port number in network byte order. */ + u8_t ttl; /**< Default time-to-live. */ + + /** The application state. */ + uip_udp_appstate_t appstate; +}; + +/** + * The current UDP connection. + */ +extern struct uip_udp_conn *uip_udp_conn; +extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; +#endif /* UIP_UDP */ + +/** + * The structure holding the TCP/IP statistics that are gathered if + * UIP_STATISTICS is set to 1. + * + */ +struct uip_stats { + struct { + uip_stats_t drop; /**< Number of dropped packets at the IP + layer. */ + uip_stats_t recv; /**< Number of received packets at the IP + layer. */ + uip_stats_t sent; /**< Number of sent packets at the IP + layer. */ + uip_stats_t vhlerr; /**< Number of packets dropped due to wrong + IP version or header length. */ + uip_stats_t hblenerr; /**< Number of packets dropped due to wrong + IP length, high byte. */ + uip_stats_t lblenerr; /**< Number of packets dropped due to wrong + IP length, low byte. */ + uip_stats_t fragerr; /**< Number of packets dropped since they + were IP fragments. */ + uip_stats_t chkerr; /**< Number of packets dropped due to IP + checksum errors. */ + uip_stats_t protoerr; /**< Number of packets dropped since they + were neither ICMP, UDP nor TCP. */ + } ip; /**< IP statistics. */ + struct { + uip_stats_t drop; /**< Number of dropped ICMP packets. */ + uip_stats_t recv; /**< Number of received ICMP packets. */ + uip_stats_t sent; /**< Number of sent ICMP packets. */ + uip_stats_t typeerr; /**< Number of ICMP packets with a wrong + type. */ + } icmp; /**< ICMP statistics. */ +#if UIP_TCP + struct { + uip_stats_t drop; /**< Number of dropped TCP segments. */ + uip_stats_t recv; /**< Number of recived TCP segments. */ + uip_stats_t sent; /**< Number of sent TCP segments. */ + uip_stats_t chkerr; /**< Number of TCP segments with a bad + checksum. */ + uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK + number. */ + uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ + uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ + uip_stats_t syndrop; /**< Number of dropped SYNs due to too few + connections was avaliable. */ + uip_stats_t synrst; /**< Number of SYNs for closed ports, + triggering a RST. */ + } tcp; /**< TCP statistics. */ +#endif /* UIP_TCP */ +#if UIP_UDP + struct { + uip_stats_t drop; /**< Number of dropped UDP segments. */ + uip_stats_t recv; /**< Number of recived UDP segments. */ + uip_stats_t sent; /**< Number of sent UDP segments. */ + uip_stats_t chkerr; /**< Number of UDP segments with a bad + checksum. */ + } udp; /**< UDP statistics. */ +#endif /* UIP_UDP */ +}; + +/** + * The uIP TCP/IP statistics. + * + * This is the variable in which the uIP TCP/IP statistics are gathered. + */ +extern struct uip_stats uip_stat; + + +/*---------------------------------------------------------------------------*/ +/* All the stuff below this point is internal to uIP and should not be + * used directly by an application or by a device driver. + */ +/*---------------------------------------------------------------------------*/ +/* u8_t uip_flags: + * + * When the application is called, uip_flags will contain the flags + * that are defined in this file. Please read below for more + * infomation. + */ +extern u8_t uip_flags; + +/* The following flags may be set in the global variable uip_flags + before calling the application callback. The UIP_ACKDATA, + UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, + whereas the others are mutualy exclusive. Note that these flags + should *NOT* be accessed directly, but only through the uIP + functions/macros. */ + +#define UIP_ACKDATA 1 /* Signifies that the outstanding data was + acked and the application should send + out new data instead of retransmitting + the last data. */ +#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent + us new data. */ +#define UIP_REXMIT 4 /* Tells the application to retransmit the + data that was last sent. */ +#define UIP_POLL 8 /* Used for polling the application, to + check if the application has data that + it wants to send. */ +#define UIP_CLOSE 16 /* The remote host has closed the + connection, thus the connection has + gone away. Or the application signals + that it wants to close the + connection. */ +#define UIP_ABORT 32 /* The remote host has aborted the + connection, thus the connection has + gone away. Or the application signals + that it wants to abort the + connection. */ +#define UIP_CONNECTED 64 /* We have got a connection from a remote + host and have set up a new connection + for it, or an active connection has + been successfully established. */ + +#define UIP_TIMEDOUT 128 /* The connection has been aborted due to + too many retransmissions. */ + +/* uip_process(flag): + * + * The actual uIP function which does all the work. + */ +void uip_process(u8_t flag); + +/* The following flags are passed as an argument to the uip_process() + function. They are used to distinguish between the two cases where + uip_process() is called. It can be called either because we have + incoming data that should be processed, or because the periodic + timer has fired. These values are never used directly, but only in + the macrose defined in this file. */ + +#define UIP_DATA 1 /* Tells uIP that there is incoming + data in the uip_buf buffer. The + length of the data is stored in the + global variable uip_len. */ +#define UIP_TIMER 2 /* Tells uIP that the periodic timer + has fired. */ +#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should + be polled. */ +#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram + should be constructed in the + uip_buf buffer. */ +#if UIP_UDP +#define UIP_UDP_TIMER 5 +#endif /* UIP_UDP */ + +/* The TCP states used in the uip_conn->tcpstateflags. */ +#define UIP_CLOSED 0 +#define UIP_SYN_RCVD 1 +#define UIP_SYN_SENT 2 +#define UIP_ESTABLISHED 3 +#define UIP_FIN_WAIT_1 4 +#define UIP_FIN_WAIT_2 5 +#define UIP_CLOSING 6 +#define UIP_TIME_WAIT 7 +#define UIP_LAST_ACK 8 +#define UIP_TS_MASK 15 + +#define UIP_STOPPED 16 + +/* The TCP and IP headers. */ +struct uip_tcpip_hdr { +#if UIP_CONF_IPV6 + /* IPv6 header. */ + u8_t vtc, + tcflow; + u16_t flow; + u8_t len[2]; + u8_t proto, ttl; + uip_ip6addr_t srcipaddr, destipaddr; +#else /* UIP_CONF_IPV6 */ + /* IPv4 header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; +#endif /* UIP_CONF_IPV6 */ + + /* TCP header. */ + u16_t srcport, + destport; + u8_t seqno[4], + ackno[4], + tcpoffset, + flags, + wnd[2]; + u16_t tcpchksum; + u8_t urgp[2]; + u8_t optdata[4]; +}; + +/* The ICMP and IP headers. */ +struct uip_icmpip_hdr { +#if UIP_CONF_IPV6 + /* IPv6 header. */ + u8_t vtc, + tcf; + u16_t flow; + u8_t len[2]; + u8_t proto, ttl; + uip_ip6addr_t srcipaddr, destipaddr; +#else /* UIP_CONF_IPV6 */ + /* IPv4 header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; +#endif /* UIP_CONF_IPV6 */ + + /* ICMP (echo) header. */ + u8_t type, icode; + u16_t icmpchksum; +#if !UIP_CONF_IPV6 + u16_t id, seqno; +#else /* !UIP_CONF_IPV6 */ + u8_t flags, reserved1, reserved2, reserved3; + u8_t icmp6data[16]; + u8_t options[1]; +#endif /* !UIP_CONF_IPV6 */ +}; + + +/* The UDP and IP headers. */ +struct uip_udpip_hdr { +#if UIP_CONF_IPV6 + /* IPv6 header. */ + u8_t vtc, + tcf; + u16_t flow; + u8_t len[2]; + u8_t proto, ttl; + uip_ip6addr_t srcipaddr, destipaddr; +#else /* UIP_CONF_IPV6 */ + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; +#endif /* UIP_CONF_IPV6 */ + + /* UDP header. */ + u16_t srcport, + destport; + u16_t udplen; + u16_t udpchksum; +}; + + + +/** + * The buffer size available for user data in the \ref uip_buf buffer. + * + * This macro holds the available size for user data in the \ref + * uip_buf buffer. The macro is intended to be used for checking + * bounds of available user data. + * + * Example: + \code + snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); + \endcode + * + * \hideinitializer + */ +#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) + + +#define UIP_PROTO_ICMP 1 +#define UIP_PROTO_TCP 6 +#define UIP_PROTO_UDP 17 +#define UIP_PROTO_ICMP6 58 + +/* Header sizes. */ +#if UIP_CONF_IPV6 +#define UIP_IPH_LEN 40 +#else /* UIP_CONF_IPV6 */ +#define UIP_IPH_LEN 20 /* Size of IP header */ +#endif /* UIP_CONF_IPV6 */ +#define UIP_UDPH_LEN 8 /* Size of UDP header */ +#define UIP_TCPH_LEN 20 /* Size of TCP header */ +#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN) /* Size of IP + + UDP + header */ +#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN) /* Size of IP + + TCP + header */ +#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN + + +#if UIP_FIXEDADDR +extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; +#else /* UIP_FIXEDADDR */ +extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr; +#endif /* UIP_FIXEDADDR */ + + + +/** + * Representation of a 48-bit Ethernet address. + */ +struct uip_eth_addr { + u8_t addr[6]; +}; + +/** + * Calculate the Internet checksum over a buffer. + * + * The Internet checksum is the one's complement of the one's + * complement sum of all 16-bit words in the buffer. + * + * See RFC1071. + * + * \param buf A pointer to the buffer over which the checksum is to be + * computed. + * + * \param len The length of the buffer over which the checksum is to + * be computed. + * + * \return The Internet checksum of the buffer. + */ +u16_t uip_chksum(u16_t *buf, u16_t len); + +/** + * Calculate the IP header checksum of the packet header in uip_buf. + * + * The IP header checksum is the Internet checksum of the 20 bytes of + * the IP header. + * + * \return The IP header checksum of the IP header in the uip_buf + * buffer. + */ +u16_t uip_ipchksum(void); + +/** + * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. + * + * The TCP checksum is the Internet checksum of data contents of the + * TCP segment, and a pseudo-header as defined in RFC793. + * + * \return The TCP checksum of the TCP segment in uip_buf and pointed + * to by uip_appdata. + */ +u16_t uip_tcpchksum(void); + +/** + * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. + * + * The UDP checksum is the Internet checksum of data contents of the + * UDP segment, and a pseudo-header as defined in RFC768. + * + * \return The UDP checksum of the UDP segment in uip_buf and pointed + * to by uip_appdata. + */ +u16_t uip_udpchksum(void); + + +#endif /* __UIP_H__ */ + + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip_arch.h b/Target/Source/third_party/uip/uip/uip_arch.h new file mode 100644 index 00000000..5ea45787 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip_arch.h @@ -0,0 +1,138 @@ +/** + * \addtogroup uip + * {@ + */ + +/** + * \defgroup uiparch Architecture specific uIP functions + * @{ + * + * The functions in the architecture specific module implement the IP + * check sum and 32-bit additions. + * + * The IP checksum calculation is the most computationally expensive + * operation in the TCP/IP stack and it therefore pays off to + * implement this in efficient assembler. The purpose of the uip-arch + * module is to let the checksum functions to be implemented in + * architecture specific assembler. + * + */ + +/** + * \file + * Declarations of architecture specific functions. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ + * + */ + +#ifndef __UIP_ARCH_H__ +#define __UIP_ARCH_H__ + +#include "uip.h" + +/** + * Carry out a 32-bit addition. + * + * Because not all architectures for which uIP is intended has native + * 32-bit arithmetic, uIP uses an external C function for doing the + * required 32-bit additions in the TCP protocol processing. This + * function should add the two arguments and place the result in the + * global variable uip_acc32. + * + * \note The 32-bit integer pointed to by the op32 parameter and the + * result in the uip_acc32 variable are in network byte order (big + * endian). + * + * \param op32 A pointer to a 4-byte array representing a 32-bit + * integer in network byte order (big endian). + * + * \param op16 A 16-bit integer in host byte order. + */ +void uip_add32(u8_t *op32, u16_t op16); + +/** + * Calculate the Internet checksum over a buffer. + * + * The Internet checksum is the one's complement of the one's + * complement sum of all 16-bit words in the buffer. + * + * See RFC1071. + * + * \note This function is not called in the current version of uIP, + * but future versions might make use of it. + * + * \param buf A pointer to the buffer over which the checksum is to be + * computed. + * + * \param len The length of the buffer over which the checksum is to + * be computed. + * + * \return The Internet checksum of the buffer. + */ +u16_t uip_chksum(u16_t *buf, u16_t len); + +/** + * Calculate the IP header checksum of the packet header in uip_buf. + * + * The IP header checksum is the Internet checksum of the 20 bytes of + * the IP header. + * + * \return The IP header checksum of the IP header in the uip_buf + * buffer. + */ +u16_t uip_ipchksum(void); + +/** + * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. + * + * The TCP checksum is the Internet checksum of data contents of the + * TCP segment, and a pseudo-header as defined in RFC793. + * + * \note The uip_appdata pointer that points to the packet data may + * point anywhere in memory, so it is not possible to simply calculate + * the Internet checksum of the contents of the uip_buf buffer. + * + * \return The TCP checksum of the TCP segment in uip_buf and pointed + * to by uip_appdata. + */ +u16_t uip_tcpchksum(void); + +u16_t uip_udpchksum(void); + +/** @} */ +/** @} */ + +#endif /* __UIP_ARCH_H__ */ diff --git a/Target/Source/third_party/uip/uip/uip_arp.c b/Target/Source/third_party/uip/uip/uip_arp.c new file mode 100644 index 00000000..96cea8ba --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip_arp.c @@ -0,0 +1,423 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \defgroup uiparp uIP Address Resolution Protocol + * @{ + * + * The Address Resolution Protocol ARP is used for mapping between IP + * addresses and link level addresses such as the Ethernet MAC + * addresses. ARP uses broadcast queries to ask for the link level + * address of a known IP address and the host which is configured with + * the IP address for which the query was meant, will respond with its + * link level address. + * + * \note This ARP implementation only supports Ethernet. + */ + +/** + * \file + * Implementation of the ARP Address Resolution Protocol. + * \author Adam Dunkels + * + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ + * + */ + + +#include "uip_arp.h" + +#include + +struct arp_hdr { + struct uip_eth_hdr ethhdr; + u16_t hwtype; + u16_t protocol; + u8_t hwlen; + u8_t protolen; + u16_t opcode; + struct uip_eth_addr shwaddr; + u16_t sipaddr[2]; + struct uip_eth_addr dhwaddr; + u16_t dipaddr[2]; +}; + +struct ethip_hdr { + struct uip_eth_hdr ethhdr; + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; +}; + +#define ARP_REQUEST 1 +#define ARP_REPLY 2 + +#define ARP_HWTYPE_ETH 1 + +struct arp_entry { + u16_t ipaddr[2]; + struct uip_eth_addr ethaddr; + u8_t time; +}; + +static const struct uip_eth_addr broadcast_ethaddr = + {{0xff,0xff,0xff,0xff,0xff,0xff}}; +static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff}; + +static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; +static u16_t ipaddr[2]; +static u8_t i, c; + +static u8_t arptime; +static u8_t tmpage; + +#define BUF ((struct arp_hdr *)&uip_buf[0]) +#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) +/*-----------------------------------------------------------------------------------*/ +/** + * Initialize the ARP module. + * + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_init(void) +{ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + memset(arp_table[i].ipaddr, 0, 4); + } +} +/*-----------------------------------------------------------------------------------*/ +/** + * Periodic ARP processing function. + * + * This function performs periodic timer processing in the ARP module + * and should be called at regular intervals. The recommended interval + * is 10 seconds between the calls. + * + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_timer(void) +{ + struct arp_entry *tabptr; + + ++arptime; + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && + arptime - tabptr->time >= UIP_ARP_MAXAGE) { + memset(tabptr->ipaddr, 0, 4); + } + } + +} +/*-----------------------------------------------------------------------------------*/ +static void +uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) +{ + register struct arp_entry *tabptr; + /* Walk through the ARP mapping table and try to find an entry to + update. If none is found, the IP -> MAC address mapping is + inserted in the ARP table. */ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + + tabptr = &arp_table[i]; + /* Only check those entries that are actually in use. */ + if(tabptr->ipaddr[0] != 0 && + tabptr->ipaddr[1] != 0) { + + /* Check if the source IP address of the incoming packet matches + the IP address in this ARP table entry. */ + if(ipaddr[0] == tabptr->ipaddr[0] && + ipaddr[1] == tabptr->ipaddr[1]) { + + /* An old entry found, update this and return. */ + memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); + tabptr->time = arptime; + + return; + } + } + } + + /* If we get here, no existing ARP table entry was found, so we + create one. */ + + /* First, we try to find an unused entry in the ARP table. */ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(tabptr->ipaddr[0] == 0 && + tabptr->ipaddr[1] == 0) { + break; + } + } + + /* If no unused entry is found, we try to find the oldest entry and + throw it away. */ + if(i == UIP_ARPTAB_SIZE) { + tmpage = 0; + c = 0; + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(arptime - tabptr->time > tmpage) { + tmpage = arptime - tabptr->time; + c = i; + } + } + i = c; + tabptr = &arp_table[i]; + } + + /* Now, i is the ARP table entry which we will fill with the new + information. */ + memcpy(tabptr->ipaddr, ipaddr, 4); + memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); + tabptr->time = arptime; +} +/*-----------------------------------------------------------------------------------*/ +/** + * ARP processing for incoming IP packets + * + * This function should be called by the device driver when an IP + * packet has been received. The function will check if the address is + * in the ARP cache, and if so the ARP cache entry will be + * refreshed. If no ARP cache entry was found, a new one is created. + * + * This function expects an IP packet with a prepended Ethernet header + * in the uip_buf[] buffer, and the length of the packet in the global + * variable uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +#if 0 +void +uip_arp_ipin(void) +{ + uip_len -= sizeof(struct uip_eth_hdr); + + /* Only insert/update an entry if the source IP address of the + incoming IP packet comes from a host on the local network. */ + if((IPBUF->srcipaddr[0] & uip_netmask[0]) != + (uip_hostaddr[0] & uip_netmask[0])) { + return; + } + if((IPBUF->srcipaddr[1] & uip_netmask[1]) != + (uip_hostaddr[1] & uip_netmask[1])) { + return; + } + uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); + + return; +} +#endif /* 0 */ +/*-----------------------------------------------------------------------------------*/ +/** + * ARP processing for incoming ARP packets. + * + * This function should be called by the device driver when an ARP + * packet has been received. The function will act differently + * depending on the ARP packet type: if it is a reply for a request + * that we previously sent out, the ARP cache will be filled in with + * the values from the ARP reply. If the incoming ARP packet is an ARP + * request for our IP address, an ARP reply packet is created and put + * into the uip_buf[] buffer. + * + * When the function returns, the value of the global variable uip_len + * indicates whether the device driver should send out a packet or + * not. If uip_len is zero, no packet should be sent. If uip_len is + * non-zero, it contains the length of the outbound packet that is + * present in the uip_buf[] buffer. + * + * This function expects an ARP packet with a prepended Ethernet + * header in the uip_buf[] buffer, and the length of the packet in the + * global variable uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_arpin(void) +{ + + if(uip_len < sizeof(struct arp_hdr)) { + uip_len = 0; + return; + } + uip_len = 0; + + switch(BUF->opcode) { + case HTONS(ARP_REQUEST): + /* ARP request. If it asked for our address, we send out a + reply. */ + if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { + /* First, we register the one who made the request in our ARP + table, since it is likely that we will do more communication + with this host in the future. */ + uip_arp_update(BUF->sipaddr, &BUF->shwaddr); + + /* The reply opcode is 2. */ + BUF->opcode = HTONS(2); + + memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); + memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); + memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); + + BUF->dipaddr[0] = BUF->sipaddr[0]; + BUF->dipaddr[1] = BUF->sipaddr[1]; + BUF->sipaddr[0] = uip_hostaddr[0]; + BUF->sipaddr[1] = uip_hostaddr[1]; + + BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); + uip_len = sizeof(struct arp_hdr); + } + break; + case HTONS(ARP_REPLY): + /* ARP reply. We insert or update the ARP table if it was meant + for us. */ + if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) { + uip_arp_update(BUF->sipaddr, &BUF->shwaddr); + } + break; + } + + return; +} +/*-----------------------------------------------------------------------------------*/ +/** + * Prepend Ethernet header to an outbound IP packet and see if we need + * to send out an ARP request. + * + * This function should be called before sending out an IP packet. The + * function checks the destination IP address of the IP packet to see + * what Ethernet MAC address that should be used as a destination MAC + * address on the Ethernet. + * + * If the destination IP address is in the local network (determined + * by logical ANDing of netmask and our IP address), the function + * checks the ARP cache to see if an entry for the destination IP + * address is found. If so, an Ethernet header is prepended and the + * function returns. If no ARP cache entry is found for the + * destination IP address, the packet in the uip_buf[] is replaced by + * an ARP request packet for the IP address. The IP packet is dropped + * and it is assumed that they higher level protocols (e.g., TCP) + * eventually will retransmit the dropped packet. + * + * If the destination IP address is not on the local network, the IP + * address of the default router is used instead. + * + * When the function returns, a packet is present in the uip_buf[] + * buffer, and the length of the packet is in the global variable + * uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_out(void) +{ + struct arp_entry *tabptr; + + /* Find the destination IP address in the ARP table and construct + the Ethernet header. If the destination IP addres isn't on the + local network, we use the default router's IP address instead. + + If not ARP table entry is found, we overwrite the original IP + packet with an ARP request for the IP address. */ + + /* First check if destination is a local broadcast. */ + if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) { + memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6); + } else { + /* Check if the destination address is on the local network. */ + if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) { + /* Destination address was not on the local network, so we need to + use the default router's IP address instead of the destination + address when determining the MAC address. */ + uip_ipaddr_copy(ipaddr, uip_draddr); + } else { + /* Else, we use the destination IP address. */ + uip_ipaddr_copy(ipaddr, IPBUF->destipaddr); + } + + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) { + break; + } + } + + if(i == UIP_ARPTAB_SIZE) { + /* The destination address was not in our ARP table, so we + overwrite the IP packet with an ARP request. */ + + memset(BUF->ethhdr.dest.addr, 0xff, 6); + memset(BUF->dhwaddr.addr, 0x00, 6); + memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); + + uip_ipaddr_copy(BUF->dipaddr, ipaddr); + uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr); + BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ + BUF->hwtype = HTONS(ARP_HWTYPE_ETH); + BUF->protocol = HTONS(UIP_ETHTYPE_IP); + BUF->hwlen = 6; + BUF->protolen = 4; + BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); + + uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN]; + + uip_len = sizeof(struct arp_hdr); + return; + } + + /* Build an ethernet header. */ + memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); + } + memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + + IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); + + uip_len += sizeof(struct uip_eth_hdr); +} +/*-----------------------------------------------------------------------------------*/ + +/** @} */ +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip_arp.h b/Target/Source/third_party/uip/uip/uip_arp.h new file mode 100644 index 00000000..dc829e06 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip_arp.h @@ -0,0 +1,144 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \addtogroup uiparp + * @{ + */ + +/** + * \file + * Macros and definitions for the ARP module. + * \author Adam Dunkels + */ + + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ + * + */ + +#ifndef __UIP_ARP_H__ +#define __UIP_ARP_H__ + +#include "uip.h" + + +extern struct uip_eth_addr uip_ethaddr; + +/** + * The Ethernet header. + */ +struct uip_eth_hdr { + struct uip_eth_addr dest; + struct uip_eth_addr src; + u16_t type; +}; + +#define UIP_ETHTYPE_ARP 0x0806 +#define UIP_ETHTYPE_IP 0x0800 +#define UIP_ETHTYPE_IP6 0x86dd + + +/* The uip_arp_init() function must be called before any of the other + ARP functions. */ +void uip_arp_init(void); + +/* The uip_arp_ipin() function should be called whenever an IP packet + arrives from the Ethernet. This function refreshes the ARP table or + inserts a new mapping if none exists. The function assumes that an + IP packet with an Ethernet header is present in the uip_buf buffer + and that the length of the packet is in the uip_len variable. */ +/*void uip_arp_ipin(void);*/ +#define uip_arp_ipin() + +/* The uip_arp_arpin() should be called when an ARP packet is received + by the Ethernet driver. This function also assumes that the + Ethernet frame is present in the uip_buf buffer. When the + uip_arp_arpin() function returns, the contents of the uip_buf + buffer should be sent out on the Ethernet if the uip_len variable + is > 0. */ +void uip_arp_arpin(void); + +/* The uip_arp_out() function should be called when an IP packet + should be sent out on the Ethernet. This function creates an + Ethernet header before the IP header in the uip_buf buffer. The + Ethernet header will have the correct Ethernet MAC destination + address filled in if an ARP table entry for the destination IP + address (or the IP address of the default router) is present. If no + such table entry is found, the IP packet is overwritten with an ARP + request and we rely on TCP to retransmit the packet that was + overwritten. In any case, the uip_len variable holds the length of + the Ethernet frame that should be transmitted. */ +void uip_arp_out(void); + +/* The uip_arp_timer() function should be called every ten seconds. It + is responsible for flushing old entries in the ARP table. */ +void uip_arp_timer(void); + +/** @} */ + +/** + * \addtogroup uipconffunc + * @{ + */ + + +/** + * Specifiy the Ethernet MAC address. + * + * The ARP code needs to know the MAC address of the Ethernet card in + * order to be able to respond to ARP queries and to generate working + * Ethernet headers. + * + * \note This macro only specifies the Ethernet MAC address to the ARP + * code. It cannot be used to change the MAC address of the Ethernet + * card. + * + * \param eaddr A pointer to a struct uip_eth_addr containing the + * Ethernet MAC address of the Ethernet card. + * + * \hideinitializer + */ +#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ + uip_ethaddr.addr[1] = eaddr.addr[1];\ + uip_ethaddr.addr[2] = eaddr.addr[2];\ + uip_ethaddr.addr[3] = eaddr.addr[3];\ + uip_ethaddr.addr[4] = eaddr.addr[4];\ + uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) + +/** @} */ +/** @} */ + +#endif /* __UIP_ARP_H__ */ diff --git a/Target/Source/third_party/uip/uip/uip_timer.c b/Target/Source/third_party/uip/uip/uip_timer.c new file mode 100644 index 00000000..6bc21b35 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip_timer.c @@ -0,0 +1,127 @@ +/** + * \addtogroup timer + * @{ + */ + +/** + * \file + * Timer library implementation. + * \author + * Adam Dunkels + */ + +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ + */ + +#include "clock.h" +#include "uip_timer.h" + +/*---------------------------------------------------------------------------*/ +/** + * Set a timer. + * + * This function is used to set a timer for a time sometime in the + * future. The function timer_expired() will evaluate to true after + * the timer has expired. + * + * \param t A pointer to the timer + * \param interval The interval before the timer expires. + * + */ +void +timer_set(struct timer *t, clock_time_t interval) +{ + t->interval = interval; + t->start = clock_time(); +} +/*---------------------------------------------------------------------------*/ +/** + * Reset the timer with the same interval. + * + * This function resets the timer with the same interval that was + * given to the timer_set() function. The start point of the interval + * is the exact time that the timer last expired. Therefore, this + * function will cause the timer to be stable over time, unlike the + * timer_rester() function. + * + * \param t A pointer to the timer. + * + * \sa timer_restart() + */ +void +timer_reset(struct timer *t) +{ + t->start += t->interval; +} +/*---------------------------------------------------------------------------*/ +/** + * Restart the timer from the current point in time + * + * This function restarts a timer with the same interval that was + * given to the timer_set() function. The timer will start at the + * current time. + * + * \note A periodic timer will drift if this function is used to reset + * it. For preioric timers, use the timer_reset() function instead. + * + * \param t A pointer to the timer. + * + * \sa timer_reset() + */ +void +timer_restart(struct timer *t) +{ + t->start = clock_time(); +} +/*---------------------------------------------------------------------------*/ +/** + * Check if a timer has expired. + * + * This function tests if a timer has expired and returns true or + * false depending on its status. + * + * \param t A pointer to the timer + * + * \return Non-zero if the timer has expired, zero otherwise. + * + */ +int +timer_expired(struct timer *t) +{ + return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval; +} +/*---------------------------------------------------------------------------*/ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uip_timer.h b/Target/Source/third_party/uip/uip/uip_timer.h new file mode 100644 index 00000000..ac05f009 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uip_timer.h @@ -0,0 +1,86 @@ +/** + * \defgroup timer Timer library + * + * The timer library provides functions for setting, resetting and + * restarting timers, and for checking if a timer has expired. An + * application must "manually" check if its timers have expired; this + * is not done automatically. + * + * A timer is declared as a \c struct \c timer and all access to the + * timer is made by a pointer to the declared timer. + * + * \note The timer library uses the \ref clock "Clock library" to + * measure time. Intervals should be specified in the format used by + * the clock library. + * + * @{ + */ + + +/** + * \file + * Timer library header file. + * \author + * Adam Dunkels + */ + +/* + * Copyright (c) 2004, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * Author: Adam Dunkels + * + * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ + */ +#ifndef __UIP_TIMER_H__ +#define __UIP_TIMER_H__ + +#include "clock.h" + +/** + * A timer. + * + * This structure is used for declaring a timer. The timer must be set + * with timer_set() before it can be used. + * + * \hideinitializer + */ +struct timer { + clock_time_t start; + clock_time_t interval; +}; + +void timer_set(struct timer *t, clock_time_t interval); +void timer_reset(struct timer *t); +void timer_restart(struct timer *t); +int timer_expired(struct timer *t); + +#endif /* __TIMER_H__ */ + +/** @} */ diff --git a/Target/Source/third_party/uip/uip/uiplib.c b/Target/Source/third_party/uip/uip/uiplib.c new file mode 100644 index 00000000..647b0b27 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uiplib.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of + * Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $ + * + */ + + +#include "uip.h" +#include "uiplib.h" + + +/*-----------------------------------------------------------------------------------*/ +unsigned char +uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr) +{ + unsigned char tmp; + char c; + unsigned char i, j; + + tmp = 0; + + for(i = 0; i < 4; ++i) { + j = 0; + do { + c = *addrstr; + ++j; + if(j > 4) { + return 0; + } + if(c == '.' || c == 0) { + *ipaddr = tmp; + ++ipaddr; + tmp = 0; + } else if(c >= '0' && c <= '9') { + tmp = (tmp * 10) + (c - '0'); + } else { + return 0; + } + ++addrstr; + } while(c != '.' && c != 0); + } + return 1; +} + +/*-----------------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/uip/uiplib.h b/Target/Source/third_party/uip/uip/uiplib.h new file mode 100644 index 00000000..6eb0c66f --- /dev/null +++ b/Target/Source/third_party/uip/uip/uiplib.h @@ -0,0 +1,71 @@ +/** + * \file + * Various uIP library functions. + * \author + * Adam Dunkels + * + */ + +/* + * Copyright (c) 2002, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uiplib.h,v 1.1 2006/06/07 09:15:19 adam Exp $ + * + */ +#ifndef __UIPLIB_H__ +#define __UIPLIB_H__ + +/** + * \addtogroup uipconvfunc + * @{ + */ + +/** + * Convert a textual representation of an IP address to a numerical representation. + * + * This function takes a textual representation of an IP address in + * the form a.b.c.d and converts it into a 4-byte array that can be + * used by other uIP functions. + * + * \param addrstr A pointer to a string containing the IP address in + * textual form. + * + * \param addr A pointer to a 4-byte array that will be filled in with + * the numerical representation of the address. + * + * \retval 0 If the IP address could not be parsed. + * \retval Non-zero If the IP address was parsed. + */ +unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr); + +/** @} */ + +#endif /* __UIPLIB_H__ */ diff --git a/Target/Source/third_party/uip/uip/uipopt.h b/Target/Source/third_party/uip/uip/uipopt.h new file mode 100644 index 00000000..94ad88f9 --- /dev/null +++ b/Target/Source/third_party/uip/uip/uipopt.h @@ -0,0 +1,550 @@ +/** + * \defgroup uipopt Configuration options for uIP + * @{ + * + * uIP is configured using the per-project configuration file + * uipopt.h. This file contains all compile-time options for uIP and + * should be tweaked to match each specific project. The uIP + * distribution contains a documented example "uipopt.h" that can be + * copied and modified for each project. + * + * \note Most of the configuration options in the uipopt.h should not + * be changed, but rather the per-project uip-conf.h file. + */ + +/** + * \file + * Configuration options for uIP. + * \author Adam Dunkels + * + * This file is used for tweaking various configuration options for + * uIP. You should make a copy of this file into one of your project's + * directories instead of editing this example "uipopt.h" file that + * comes with the uIP distribution. + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ + * + */ + +#ifndef __UIPOPT_H__ +#define __UIPOPT_H__ + +#ifndef UIP_LITTLE_ENDIAN +#define UIP_LITTLE_ENDIAN 3412 +#endif /* UIP_LITTLE_ENDIAN */ +#ifndef UIP_BIG_ENDIAN +#define UIP_BIG_ENDIAN 1234 +#endif /* UIP_BIG_ENDIAN */ + +#include "uip-conf.h" + +/*------------------------------------------------------------------------------*/ + +/** + * \name Static configuration options + * @{ + * + * These configuration options can be used for setting the IP address + * settings statically, but only if UIP_FIXEDADDR is set to 1. The + * configuration options for a specific node includes IP address, + * netmask and default router as well as the Ethernet address. The + * netmask, default router and Ethernet address are appliciable only + * if uIP should be run over Ethernet. + * + * All of these should be changed to suit your project. +*/ + +/** + * Determines if uIP should use a fixed IP address or not. + * + * If uIP should use a fixed IP address, the settings are set in the + * uipopt.h file. If not, the macros uip_sethostaddr(), + * uip_setdraddr() and uip_setnetmask() should be used instead. + * + * \hideinitializer + */ +#define UIP_FIXEDADDR 0 + +/** + * Ping IP address asignment. + * + * uIP uses a "ping" packets for setting its own IP address if this + * option is set. If so, uIP will start with an empty IP address and + * the destination IP address of the first incoming "ping" (ICMP echo) + * packet will be used for setting the hosts IP address. + * + * \note This works only if UIP_FIXEDADDR is 0. + * + * \hideinitializer + */ +#ifdef UIP_CONF_PINGADDRCONF +#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF +#else /* UIP_CONF_PINGADDRCONF */ +#define UIP_PINGADDRCONF 0 +#endif /* UIP_CONF_PINGADDRCONF */ + + +/** + * Specifies if the uIP ARP module should be compiled with a fixed + * Ethernet MAC address or not. + * + * If this configuration option is 0, the macro uip_setethaddr() can + * be used to specify the Ethernet address at run-time. + * + * \hideinitializer + */ +#define UIP_FIXEDETHADDR 0 + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \name IP configuration options + * @{ + * + */ +/** + * The IP TTL (time to live) of IP packets sent by uIP. + * + * This should normally not be changed. + */ +#define UIP_TTL 64 + +/** + * Turn on support for IP packet reassembly. + * + * uIP supports reassembly of fragmented IP packets. This features + * requires an additonal amount of RAM to hold the reassembly buffer + * and the reassembly code size is approximately 700 bytes. The + * reassembly buffer is of the same size as the uip_buf buffer + * (configured by UIP_BUFSIZE). + * + * \note IP packet reassembly is not heavily tested. + * + * \hideinitializer + */ +#define UIP_REASSEMBLY 0 + +/** + * The maximum time an IP fragment should wait in the reassembly + * buffer before it is dropped. + * + */ +#define UIP_REASS_MAXAGE 40 + +/** @} */ + +/*------------------------------------------------------------------------------*/ +/** + * \name UDP configuration options + * @{ + */ + +/** + * Toggles wether UDP support should be compiled in or not. + * + * \hideinitializer + */ +#ifdef UIP_CONF_UDP +#define UIP_UDP UIP_CONF_UDP +#else /* UIP_CONF_UDP */ +#define UIP_UDP 0 +#endif /* UIP_CONF_UDP */ + +/** + * Toggles if UDP checksums should be used or not. + * + * \note Support for UDP checksums is currently not included in uIP, + * so this option has no function. + * + * \hideinitializer + */ +#ifdef UIP_CONF_UDP_CHECKSUMS +#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS +#else +#define UIP_UDP_CHECKSUMS 0 +#endif + +/** + * The maximum amount of concurrent UDP connections. + * + * \hideinitializer + */ +#ifdef UIP_CONF_UDP_CONNS +#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS +#else /* UIP_CONF_UDP_CONNS */ +#define UIP_UDP_CONNS 10 +#endif /* UIP_CONF_UDP_CONNS */ + +/** + * The name of the function that should be called when UDP datagrams arrive. + * + * \hideinitializer + */ + + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \name TCP configuration options + * @{ + */ + +/** + * Toggles whether TCP support should be compiled in or not. + * + * \hideinitializer + */ +#ifdef UIP_CONF_TCP +#define UIP_TCP UIP_CONF_TCP +#else /* UIP_CONF_TCP */ +#define UIP_TCP 1 +#endif /* UIP_CONF_TCP */ + +/** + * Determines if support for opening connections from uIP should be + * compiled in. + * + * If the applications that are running on top of uIP for this project + * do not need to open outgoing TCP connections, this configration + * option can be turned off to reduce the code size of uIP. + * + * \hideinitializer + */ +#define UIP_ACTIVE_OPEN 1 + +/** + * The maximum number of simultaneously open TCP connections. + * + * Since the TCP connections are statically allocated, turning this + * configuration knob down results in less RAM used. Each TCP + * connection requires approximatly 30 bytes of memory. + * + * \hideinitializer + */ +#ifndef UIP_CONF_MAX_CONNECTIONS +#define UIP_CONNS 10 +#else /* UIP_CONF_MAX_CONNECTIONS */ +#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS +#endif /* UIP_CONF_MAX_CONNECTIONS */ + + +/** + * The maximum number of simultaneously listening TCP ports. + * + * Each listening TCP port requires 2 bytes of memory. + * + * \hideinitializer + */ +#ifndef UIP_CONF_MAX_LISTENPORTS +#define UIP_LISTENPORTS 20 +#else /* UIP_CONF_MAX_LISTENPORTS */ +#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS +#endif /* UIP_CONF_MAX_LISTENPORTS */ + +/** + * Determines if support for TCP urgent data notification should be + * compiled in. + * + * Urgent data (out-of-band data) is a rarely used TCP feature that + * very seldom would be required. + * + * \hideinitializer + */ +#define UIP_URGDATA 0 + +/** + * The initial retransmission timeout counted in timer pulses. + * + * This should not be changed. + */ +#define UIP_RTO 3 + +/** + * The maximum number of times a segment should be retransmitted + * before the connection should be aborted. + * + * This should not be changed. + */ +#define UIP_MAXRTX 8 + +/** + * The maximum number of times a SYN segment should be retransmitted + * before a connection request should be deemed to have been + * unsuccessful. + * + * This should not need to be changed. + */ +#define UIP_MAXSYNRTX 5 + +/** + * The TCP maximum segment size. + * + * This is should not be to set to more than + * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. + */ +#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) + +/** + * The size of the advertised receiver's window. + * + * Should be set low (i.e., to the size of the uip_buf buffer) is the + * application is slow to process incoming data, or high (32768 bytes) + * if the application processes data quickly. + * + * \hideinitializer + */ +#ifndef UIP_CONF_RECEIVE_WINDOW +#define UIP_RECEIVE_WINDOW UIP_TCP_MSS +#else +#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW +#endif + +/** + * How long a connection should stay in the TIME_WAIT state. + * + * This configiration option has no real implication, and it should be + * left untouched. + */ +#define UIP_TIME_WAIT_TIMEOUT 120 + + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \name ARP configuration options + * @{ + */ + +/** + * The size of the ARP table. + * + * This option should be set to a larger value if this uIP node will + * have many connections from the local network. + * + * \hideinitializer + */ +#ifdef UIP_CONF_ARPTAB_SIZE +#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE +#else +#define UIP_ARPTAB_SIZE 8 +#endif + +/** + * The maxium age of ARP table entries measured in 10ths of seconds. + * + * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD + * default). + */ +#define UIP_ARP_MAXAGE 120 + +/** @} */ + +/*------------------------------------------------------------------------------*/ + +/** + * \name General configuration options + * @{ + */ + +/** + * The size of the uIP packet buffer. + * + * The uIP packet buffer should not be smaller than 60 bytes, and does + * not need to be larger than 1500 bytes. Lower size results in lower + * TCP throughput, larger size results in higher TCP throughput. + * + * \hideinitializer + */ +#ifndef UIP_CONF_BUFFER_SIZE +#define UIP_BUFSIZE 400 +#else /* UIP_CONF_BUFFER_SIZE */ +#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE +#endif /* UIP_CONF_BUFFER_SIZE */ + + +/** + * Determines if statistics support should be compiled in. + * + * The statistics is useful for debugging and to show the user. + * + * \hideinitializer + */ +#ifndef UIP_CONF_STATISTICS +#define UIP_STATISTICS 0 +#else /* UIP_CONF_STATISTICS */ +#define UIP_STATISTICS UIP_CONF_STATISTICS +#endif /* UIP_CONF_STATISTICS */ + +/** + * Determines if logging of certain events should be compiled in. + * + * This is useful mostly for debugging. The function uip_log() + * must be implemented to suit the architecture of the project, if + * logging is turned on. + * + * \hideinitializer + */ +#ifndef UIP_CONF_LOGGING +#define UIP_LOGGING 0 +#else /* UIP_CONF_LOGGING */ +#define UIP_LOGGING UIP_CONF_LOGGING +#endif /* UIP_CONF_LOGGING */ + +/** + * Broadcast support. + * + * This flag configures IP broadcast support. This is useful only + * together with UDP. + * + * \hideinitializer + * + */ +#ifndef UIP_CONF_BROADCAST +#define UIP_BROADCAST 0 +#else /* UIP_CONF_BROADCAST */ +#define UIP_BROADCAST UIP_CONF_BROADCAST +#endif /* UIP_CONF_BROADCAST */ + +/** + * Print out a uIP log message. + * + * This function must be implemented by the module that uses uIP, and + * is called by uIP whenever a log message is generated. + */ +void uip_log(char *msg); + +/** + * The link level header length. + * + * This is the offset into the uip_buf where the IP header can be + * found. For Ethernet, this should be set to 14. For SLIP, this + * should be set to 0. + * + * \hideinitializer + */ +#ifdef UIP_CONF_LLH_LEN +#define UIP_LLH_LEN UIP_CONF_LLH_LEN +#else /* UIP_CONF_LLH_LEN */ +#define UIP_LLH_LEN 14 +#endif /* UIP_CONF_LLH_LEN */ + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \name CPU architecture configuration + * @{ + * + * The CPU architecture configuration is where the endianess of the + * CPU on which uIP is to be run is specified. Most CPUs today are + * little endian, and the most notable exception are the Motorolas + * which are big endian. The BYTE_ORDER macro should be changed to + * reflect the CPU architecture on which uIP is to be run. + */ + +/** + * The byte order of the CPU architecture on which uIP is to be run. + * + * This option can be either BIG_ENDIAN (Motorola byte order) or + * LITTLE_ENDIAN (Intel byte order). + * + * \hideinitializer + */ +#ifdef UIP_CONF_BYTE_ORDER +#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER +#else /* UIP_CONF_BYTE_ORDER */ +#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN +#endif /* UIP_CONF_BYTE_ORDER */ + +/** @} */ +/*------------------------------------------------------------------------------*/ + +/** + * \name Appication specific configurations + * @{ + * + * An uIP application is implemented using a single application + * function that is called by uIP whenever a TCP/IP event occurs. The + * name of this function must be registered with uIP at compile time + * using the UIP_APPCALL definition. + * + * uIP applications can store the application state within the + * uip_conn structure by specifying the type of the application + * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. + * + * The file containing the definitions must be included in the + * uipopt.h file. + * + * The following example illustrates how this can look. + \code + +void httpd_appcall(void); +#define UIP_APPCALL httpd_appcall + +struct httpd_state { + u8_t state; + u16_t count; + char *dataptr; + char *script; +}; +typedef struct httpd_state uip_tcp_appstate_t + \endcode + */ + +/** + * \var #define UIP_APPCALL + * + * The name of the application function that uIP should call in + * response to TCP/IP events. + * + */ + +/** + * \var typedef uip_tcp_appstate_t + * + * The type of the application state that is to be stored in the + * uip_conn structure. This usually is typedef:ed to a struct holding + * application state information. + */ + +/** + * \var typedef uip_udp_appstate_t + * + * The type of the application state that is to be stored in the + * uip_conn structure. This usually is typedef:ed to a struct holding + * application state information. + */ +/** @} */ +/** @} */ + +#endif /* __UIPOPT_H__ */ diff --git a/Target/Source/third_party/uip/unix/Makefile b/Target/Source/third_party/uip/unix/Makefile new file mode 100644 index 00000000..67d3c521 --- /dev/null +++ b/Target/Source/third_party/uip/unix/Makefile @@ -0,0 +1,44 @@ +# Copyright (c) 2001, Adam Dunkels. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# This file is part of the uIP TCP/IP stack. +# +# $Id: Makefile,v 1.13 2006/06/11 21:55:03 adam Exp $ +# + +all: uip + +CC = gcc +AR = ar +APPS = webserver +CFLAGS = -Wall -g -I../uip -I. -fpack-struct -Os +-include ../uip/Makefile.include + +uip: $(addprefix $(OBJECTDIR)/, main.o tapdev.o clock-arch.o) apps.a uip.a + +clean: + rm -fr *.o *~ *core uip $(OBJECTDIR) *.a diff --git a/Target/Source/third_party/uip/unix/clock-arch.c b/Target/Source/third_party/uip/unix/clock-arch.c new file mode 100644 index 00000000..f19d1cb5 --- /dev/null +++ b/Target/Source/third_party/uip/unix/clock-arch.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * Implementation of architecture-specific clock functionality + * \author + * Adam Dunkels + */ + +#include "clock-arch.h" +#include + +/*---------------------------------------------------------------------------*/ +clock_time_t +clock_time(void) +{ + struct timeval tv; + struct timezone tz; + + gettimeofday(&tv, &tz); + + return tv.tv_sec * 1000 + tv.tv_usec / 1000; +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/unix/clock-arch.h b/Target/Source/third_party/uip/unix/clock-arch.h new file mode 100644 index 00000000..aa97f0e7 --- /dev/null +++ b/Target/Source/third_party/uip/unix/clock-arch.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ + */ + +#ifndef __CLOCK_ARCH_H__ +#define __CLOCK_ARCH_H__ + +typedef int clock_time_t; +#define CLOCK_CONF_SECOND 1000 + +#endif /* __CLOCK_ARCH_H__ */ diff --git a/Target/Source/third_party/uip/unix/main.c b/Target/Source/third_party/uip/unix/main.c new file mode 100644 index 00000000..ae1bcdfc --- /dev/null +++ b/Target/Source/third_party/uip/unix/main.c @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Adam Dunkels. + * 4. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: main.c,v 1.16 2006/06/11 21:55:03 adam Exp $ + * + */ + + +#include "uip.h" +#include "uip_arp.h" +#include "tapdev.h" + +#include "timer.h" + +#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) + +#ifndef NULL +#define NULL (void *)0 +#endif /* NULL */ + +/*---------------------------------------------------------------------------*/ +int +main(void) +{ + int i; + uip_ipaddr_t ipaddr; + struct timer periodic_timer, arp_timer; + + timer_set(&periodic_timer, CLOCK_SECOND / 2); + timer_set(&arp_timer, CLOCK_SECOND * 10); + + tapdev_init(); + uip_init(); + + uip_ipaddr(ipaddr, 192,168,0,2); + uip_sethostaddr(ipaddr); + uip_ipaddr(ipaddr, 192,168,0,1); + uip_setdraddr(ipaddr); + uip_ipaddr(ipaddr, 255,255,255,0); + uip_setnetmask(ipaddr); + + httpd_init(); + + /* telnetd_init();*/ + + /* hello_world_init();*/ + + /* { + u8_t mac[6] = {1,2,3,4,5,6}; + dhcpc_init(&mac, 6); + }*/ + + /*uip_ipaddr(ipaddr, 127,0,0,1); + smtp_configure("localhost", ipaddr); + SMTP_SEND("adam@sics.se", NULL, "uip-testing@example.com", + "Testing SMTP from uIP", + "Test message sent by uIP\r\n");*/ + + /* + webclient_init(); + resolv_init(); + uip_ipaddr(ipaddr, 195,54,122,204); + resolv_conf(ipaddr); + resolv_query("www.sics.se");*/ + + + + while(1) { + uip_len = tapdev_read(); + if(uip_len > 0) { + if(BUF->type == htons(UIP_ETHTYPE_IP)) { + uip_arp_ipin(); + uip_input(); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + tapdev_send(); + } + } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) { + uip_arp_arpin(); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + tapdev_send(); + } + } + + } else if(timer_expired(&periodic_timer)) { + timer_reset(&periodic_timer); + for(i = 0; i < UIP_CONNS; i++) { + uip_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + tapdev_send(); + } + } + +#if UIP_UDP + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + /* If the above function invocation resulted in data that + should be sent out on the network, the global variable + uip_len is set to a value > 0. */ + if(uip_len > 0) { + uip_arp_out(); + tapdev_send(); + } + } +#endif /* UIP_UDP */ + + /* Call the ARP timer function every 10 seconds. */ + if(timer_expired(&arp_timer)) { + timer_reset(&arp_timer); + uip_arp_timer(); + } + } + } + return 0; +} +/*---------------------------------------------------------------------------*/ +void +uip_log(char *m) +{ + printf("uIP log message: %s\n", m); +} +void +resolv_found(char *name, u16_t *ipaddr) +{ + u16_t *ipaddr2; + + if(ipaddr == NULL) { + printf("Host '%s' not found.\n", name); + } else { + printf("Found name '%s' = %d.%d.%d.%d\n", name, + htons(ipaddr[0]) >> 8, + htons(ipaddr[0]) & 0xff, + htons(ipaddr[1]) >> 8, + htons(ipaddr[1]) & 0xff); + /* webclient_get("www.sics.se", 80, "/~adam/uip");*/ + } +} +#ifdef __DHCPC_H__ +void +dhcpc_configured(const struct dhcpc_state *s) +{ + uip_sethostaddr(s->ipaddr); + uip_setnetmask(s->netmask); + uip_setdraddr(s->default_router); + resolv_conf(s->dnsaddr); +} +#endif /* __DHCPC_H__ */ +void +smtp_done(unsigned char code) +{ + printf("SMTP done with code %d\n", code); +} +void +webclient_closed(void) +{ + printf("Webclient: connection closed\n"); +} +void +webclient_aborted(void) +{ + printf("Webclient: connection aborted\n"); +} +void +webclient_timedout(void) +{ + printf("Webclient: connection timed out\n"); +} +void +webclient_connected(void) +{ + printf("Webclient: connected, waiting for data...\n"); +} +void +webclient_datahandler(char *data, u16_t len) +{ + printf("Webclient: got %d bytes of data.\n", len); +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/unix/tapdev.c b/Target/Source/third_party/uip/unix/tapdev.c new file mode 100644 index 00000000..80c78c42 --- /dev/null +++ b/Target/Source/third_party/uip/unix/tapdev.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Author: Adam Dunkels + * + * $Id: tapdev.c,v 1.8 2006/06/07 08:39:58 adam Exp $ + */ + +#define UIP_DRIPADDR0 192 +#define UIP_DRIPADDR1 168 +#define UIP_DRIPADDR2 0 +#define UIP_DRIPADDR3 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef linux +#include +#include +#include +#define DEVTAP "/dev/net/tun" +#else /* linux */ +#define DEVTAP "/dev/tap0" +#endif /* linux */ + +#include "uip.h" + +static int drop = 0; +static int fd; + + +/*---------------------------------------------------------------------------*/ +void +tapdev_init(void) +{ + char buf[1024]; + + fd = open(DEVTAP, O_RDWR); + if(fd == -1) { + perror("tapdev: tapdev_init: open"); + exit(1); + } + +#ifdef linux + { + struct ifreq ifr; + memset(&ifr, 0, sizeof(ifr)); + ifr.ifr_flags = IFF_TAP|IFF_NO_PI; + if (ioctl(fd, TUNSETIFF, (void *) &ifr) < 0) { + perror(buf); + exit(1); + } + } +#endif /* Linux */ + + snprintf(buf, sizeof(buf), "ifconfig tap0 inet %d.%d.%d.%d", + UIP_DRIPADDR0, UIP_DRIPADDR1, UIP_DRIPADDR2, UIP_DRIPADDR3); + system(buf); + +} +/*---------------------------------------------------------------------------*/ +unsigned int +tapdev_read(void) +{ + fd_set fdset; + struct timeval tv, now; + int ret; + + tv.tv_sec = 0; + tv.tv_usec = 1000; + + + FD_ZERO(&fdset); + FD_SET(fd, &fdset); + + ret = select(fd + 1, &fdset, NULL, NULL, &tv); + if(ret == 0) { + return 0; + } + ret = read(fd, uip_buf, UIP_BUFSIZE); + if(ret == -1) { + perror("tap_dev: tapdev_read: read"); + } + + /* printf("--- tap_dev: tapdev_read: read %d bytes\n", ret);*/ + /* { + int i; + for(i = 0; i < 20; i++) { + printf("%x ", uip_buf[i]); + } + printf("\n"); + }*/ + /* check_checksum(uip_buf, ret);*/ + return ret; +} +/*---------------------------------------------------------------------------*/ +void +tapdev_send(void) +{ + int ret; + /* printf("tapdev_send: sending %d bytes\n", size);*/ + /* check_checksum(uip_buf, size);*/ + + /* drop++; + if(drop % 8 == 7) { + printf("Dropped a packet!\n"); + return; + }*/ + ret = write(fd, uip_buf, uip_len); + if(ret == -1) { + perror("tap_dev: tapdev_send: writev"); + exit(1); + } +} +/*---------------------------------------------------------------------------*/ diff --git a/Target/Source/third_party/uip/unix/tapdev.h b/Target/Source/third_party/uip/unix/tapdev.h new file mode 100644 index 00000000..27aa2f12 --- /dev/null +++ b/Target/Source/third_party/uip/unix/tapdev.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Adam Dunkels. + * 4. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: tapdev.h,v 1.1 2002/01/10 06:22:56 adam Exp $ + * + */ + +#ifndef __TAPDEV_H__ +#define __TAPDEV_H__ + +void tapdev_init(void); +unsigned int tapdev_read(void); +void tapdev_send(void); + +#endif /* __TAPDEV_H__ */ diff --git a/Target/Source/third_party/uip/unix/uip-conf.h b/Target/Source/third_party/uip/unix/uip-conf.h new file mode 100644 index 00000000..95725ba6 --- /dev/null +++ b/Target/Source/third_party/uip/unix/uip-conf.h @@ -0,0 +1,157 @@ +/** + * \addtogroup uipopt + * @{ + */ + +/** + * \name Project-specific configuration options + * @{ + * + * uIP has a number of configuration options that can be overridden + * for each project. These are kept in a project-specific uip-conf.h + * file and all configuration names have the prefix UIP_CONF. + */ + +/* + * Copyright (c) 2006, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack + * + * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ + */ + +/** + * \file + * An example uIP configuration file + * \author + * Adam Dunkels + */ + +#ifndef __UIP_CONF_H__ +#define __UIP_CONF_H__ + +#include + +/** + * 8 bit datatype + * + * This typedef defines the 8-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef uint8_t u8_t; + +/** + * 16 bit datatype + * + * This typedef defines the 16-bit type used throughout uIP. + * + * \hideinitializer + */ +typedef uint16_t u16_t; + +/** + * Statistics datatype + * + * This typedef defines the dataype used for keeping statistics in + * uIP. + * + * \hideinitializer + */ +typedef unsigned short uip_stats_t; + +/** + * Maximum number of TCP connections. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_CONNECTIONS 40 + +/** + * Maximum number of listening TCP ports. + * + * \hideinitializer + */ +#define UIP_CONF_MAX_LISTENPORTS 40 + +/** + * uIP buffer size. + * + * \hideinitializer + */ +#define UIP_CONF_BUFFER_SIZE 420 + +/** + * CPU byte order. + * + * \hideinitializer + */ +#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN + +/** + * Logging on or off + * + * \hideinitializer + */ +#define UIP_CONF_LOGGING 1 + +/** + * UDP support on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP 0 + +/** + * UDP checksums on or off + * + * \hideinitializer + */ +#define UIP_CONF_UDP_CHECKSUMS 1 + +/** + * uIP statistics on or off + * + * \hideinitializer + */ +#define UIP_CONF_STATISTICS 1 + +/* Here we include the header file for the application(s) we use in + our project. */ +/*#include "smtp.h"*/ +/*#include "hello-world.h"*/ +/*#include "telnetd.h"*/ +#include "webserver.h" +/*#include "dhcpc.h"*/ +/*#include "resolv.h"*/ +/*#include "webclient.h"*/ + +#endif /* __UIP_CONF_H__ */ + +/** @} */ +/** @} */