Removed file/folder

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@12 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2007-09-05 10:32:12 +00:00
parent db6f803a02
commit d56e0d923e
23 changed files with 0 additions and 6723 deletions

View File

@ -1,142 +0,0 @@
inherited frConexionBD: TfrConexionBD
Visible = True
ExplicitWidth = 451
ExplicitHeight = 304
object GroupBox1: TGroupBox
Left = 8
Top = 8
Width = 375
Height = 209
Caption = 'Servidor de base de datos'
TabOrder = 0
DesignSize = (
375
209)
object Label1: TLabel
Left = 18
Top = 30
Width = 100
Height = 13
Caption = 'Nombre del servidor:'
end
object Label2: TLabel
Left = 18
Top = 60
Width = 93
Height = 13
Caption = 'Puerto de escucha:'
end
object Label3: TLabel
Left = 18
Top = 92
Width = 72
Height = 13
Caption = 'Base de datos:'
end
object Label4: TLabel
Left = 18
Top = 150
Width = 36
Height = 13
Caption = 'Usuario'
end
object Label5: TLabel
Left = 18
Top = 180
Width = 60
Height = 13
Caption = 'Contrase'#241'a:'
end
object Bevel1: TBevel
Left = 16
Top = 120
Width = 343
Height = 10
Anchors = [akLeft, akTop, akRight]
Shape = bsBottomLine
end
object edtServer: TEdit
Left = 128
Top = 24
Width = 231
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
Text = 'localhost'
end
object edtPort: TEdit
Left = 128
Top = 56
Width = 116
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 1
Text = '3050'
OnExit = edtPortExit
end
object edtUser: TEdit
Left = 128
Top = 144
Width = 116
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 3
Text = 'sysdba'
end
object edtPassword: TEdit
Left = 128
Top = 176
Width = 116
Height = 21
Anchors = [akLeft, akTop, akRight]
PasswordChar = '*'
TabOrder = 4
end
object edtPath: TcxButtonEdit
Left = 128
Top = 88
Properties.Buttons = <
item
Default = True
Kind = bkEllipsis
end>
Properties.OnButtonClick = cxButtonEdit1PropertiesButtonClick
Style.LookAndFeel.Kind = lfUltraFlat
Style.LookAndFeel.NativeStyle = True
StyleDisabled.LookAndFeel.Kind = lfUltraFlat
StyleDisabled.LookAndFeel.NativeStyle = True
StyleFocused.LookAndFeel.Kind = lfUltraFlat
StyleFocused.LookAndFeel.NativeStyle = True
StyleHot.LookAndFeel.Kind = lfUltraFlat
StyleHot.LookAndFeel.NativeStyle = True
TabOrder = 2
Width = 231
end
end
object bProbar: TButton
Left = 240
Top = 224
Width = 143
Height = 25
Caption = 'Probar la conexi'#243'n'
TabOrder = 1
OnClick = bProbarClick
end
object OpenDialog: TOpenDialog
Filter = 'Base de datos Firebird (*.fdb)|*.FDB'
Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
Title = 'Abrir base de datos Firebird'
Left = 264
Top = 56
end
object IBDatabase: TIBDatabase
DatabaseName = 'server:dasadsads'
Params.Strings = (
'user_name=sysdba'
'password=masterkey'
'lc_ctype=ISO8859_1')
LoginPrompt = False
Left = 176
Top = 224
end
end

View File

@ -1,106 +0,0 @@
unit uConexionBD;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, cxShellBrowserDialog, cxControls,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, IBServices,
DB, IBDatabase, uFrameConfiguracion;
type
TfrConexionBD = class(TFrameConfiguracion)
GroupBox1: TGroupBox;
edtServer: TEdit;
edtPort: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
bProbar: TButton;
Label4: TLabel;
edtUser: TEdit;
Label5: TLabel;
edtPassword: TEdit;
Bevel1: TBevel;
OpenDialog: TOpenDialog;
edtPath: TcxButtonEdit;
IBDatabase: TIBDatabase;
procedure cxButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure bProbarClick(Sender: TObject);
procedure edtPortExit(Sender: TObject);
protected
procedure Finalize; override;
public
procedure Init; override;
end;
implementation
uses uDataModuleServer;
{$R *.dfm}
procedure TfrConexionBD.cxButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
if OpenDialog.Execute then
edtPath.Text := OpenDialog.FileName;
end;
procedure TfrConexionBD.bProbarClick(Sender: TObject);
var
Aux : string;
begin
with IBDatabase do
begin
Connected := False;
DatabaseName := edtServer.Text + '/' + edtPort.Text + ':' + edtPath.Text;
LoginPrompt := False;
Params.Clear;
Params.Add('lc_ctype=ISO8859_1');
Params.Add('user_name=' + edtUser.Text);
Params.Add('password=' + edtPassword.Text);
try
Connected := True;
Application.MessageBox('Conexión válida con la base de datos.', 'FactuGES', MB_OK);
Connected := False;
except
on E : Exception do
begin
Aux := 'No se ha podido establecer la conexión con la base de datos.'
+ #13 + #10 + #13 + #10 + PChar(E.Message);
Application.MessageBox(PAnsiChar(Aux), 'Error', MB_OK);
end;
end;
end;
end;
procedure TfrConexionBD.Init;
begin
edtServer.Text := dmServer.FDBServer;
edtPort.Text := dmServer.FDBPort;
edtPath.Text := dmServer.FDBPath;
edtUser.Text := dmServer.FDBUser;
edtPassword.Text := Decrypt(dmServer.FDBPass);
end;
procedure TfrConexionBD.Finalize;
begin
dmServer.FDBServer := edtServer.Text;
dmServer.FDBPort := edtPort.Text;
dmServer.FDBPath := edtPath.Text;
dmServer.FDBUser := edtUser.Text;
dmServer.FDBPass := Encrypt(edtPassword.Text);
end;
procedure TfrConexionBD.edtPortExit(Sender: TObject);
begin
inherited;
if Length(edtPort.Text) = 0 then
edtPort.Text := DBSERVER_PORT;
end;
end.

View File

@ -1,39 +0,0 @@
inherited frConfGeneral: TfrConfGeneral
Visible = True
object GroupBox1: TGroupBox
Left = 8
Top = 8
Width = 375
Height = 105
Caption = 'General'
TabOrder = 0
DesignSize = (
375
105)
object Label2: TLabel
Left = 18
Top = 60
Width = 93
Height = 13
Caption = 'Puerto de escucha:'
end
object edtPort: TEdit
Left = 128
Top = 56
Width = 116
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
Text = '8099'
OnExit = edtPortExit
end
object cbInicioWin: TCheckBox
Left = 17
Top = 27
Width = 232
Height = 17
Caption = 'Iniciar con Windows'
TabOrder = 1
end
end
end

View File

@ -1,52 +0,0 @@
unit uConfGeneral;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uFrameConfiguracion, StdCtrls, ExtCtrls;
type
TfrConfGeneral = class(TFrameConfiguracion)
GroupBox1: TGroupBox;
Label2: TLabel;
edtPort: TEdit;
cbInicioWin: TCheckBox;
procedure edtPortExit(Sender: TObject);
private
{ Private declarations }
protected
procedure Finalize; override;
public
procedure Init; override;
end;
implementation
uses uDataModuleServer;
{$R *.dfm}
{ TfrConfGeneral }
procedure TfrConfGeneral.Finalize;
begin
inherited;
dmServer.FInicioWindows := cbInicioWin.Checked;
dmServer.FServerPort := edtPort.Text;
end;
procedure TfrConfGeneral.Init;
begin
cbInicioWin.Checked := dmServer.FInicioWindows;
edtPort.Text := dmServer.FServerPort;
end;
procedure TfrConfGeneral.edtPortExit(Sender: TObject);
begin
inherited;
if Length(edtPort.Text) = 0 then
edtPort.Text := '8099';
end;
end.

View File

@ -1,179 +0,0 @@
object fConfiguracion: TfConfiguracion
Left = 303
Top = 203
BorderStyle = bsDialog
Caption = 'Configuraci'#243'n'
ClientHeight = 442
ClientWidth = 623
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 445
Top = 407
Width = 75
Height = 25
Action = actAceptar
ModalResult = 1
TabOrder = 0
end
object Button2: TButton
Left = 533
Top = 407
Width = 75
Height = 25
Action = actCancelar
Cancel = True
ModalResult = 2
TabOrder = 1
end
object JvSettingsTreeView1: TJvSettingsTreeView
Left = 8
Top = 8
Width = 193
Height = 385
PageDefault = 0
PageList = JvPageList1
Images = PngImageList1
Indent = 19
TabOrder = 2
OnChanging = JvSettingsTreeView1Changing
Items.NodeData = {
0102000000270000000200000002000000FFFFFFFFFFFFFFFF00000000000000
0007470065006E006500720061006C0037000000FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFF01000000000000000F43006F006E00650078006900F3006E00200063
006F006E00200042004400}
Items.Links = {020000000000000000000000}
end
object JvPageList1: TJvPageList
Left = 216
Top = 8
Width = 394
Height = 385
ActivePage = JvStandardPage1
PropagateEnable = False
object JvStandardPage1: TJvStandardPage
Left = 0
Top = 0
Width = 394
Height = 385
Caption = 'JvStandardPage1'
inline frConfGeneral1: TfrConfGeneral
Left = 0
Top = 0
Width = 394
Height = 385
Align = alClient
ParentBackground = False
TabOrder = 0
ExplicitWidth = 394
ExplicitHeight = 385
end
end
object JvStandardPage2: TJvStandardPage
Left = 0
Top = 0
Width = 394
Height = 385
Caption = 'JvStandardPage2'
inline frConfConexionBD: TfrConexionBD
Left = 0
Top = 0
Width = 394
Height = 385
Align = alClient
ParentBackground = False
TabOrder = 0
ExplicitWidth = 394
ExplicitHeight = 385
end
end
end
object ActionList1: TActionList
Left = 8
Top = 400
object actAceptar: TAction
Caption = '&Aceptar'
OnExecute = actAceptarExecute
end
object actCancelar: TAction
Caption = '&Cancelar'
OnExecute = actCancelarExecute
end
end
object JvAppRegistryStorage1: TJvAppRegistryStorage
StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
Root = 'Software\%APPL_NAME%'
SubStorages = <>
Left = 48
Top = 400
end
object PngImageList1: TPngImageList
PngImages = <
item
PngImage.Data = {
89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA
A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88
88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405
45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF
07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9
684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3
BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC
F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760
888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022
F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8
E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897
D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716
B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844
4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651
A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C
A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E
070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13
CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A
CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269
9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE
426082}
Name = 'PngImage0'
Background = clWindow
end
item
PngImage.Data = {
89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA
A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88
88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405
45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF
07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9
684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3
BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC
F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760
888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022
F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8
E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897
D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716
B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844
4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651
A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C
A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E
070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13
CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A
CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269
9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE
426082}
Name = 'PngImage1'
Background = clWindow
end>
Left = 88
Top = 400
Bitmap = {}
end
end

View File

@ -1,110 +0,0 @@
unit uConfiguracion;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ActnList, JvComponent,
JvAppStorage, JvAppRegistryStorage, Contnrs, ExtCtrls, ImgList,
PngImageList, JvExControls, JvGradientHeaderPanel, uFrameConfiguracion,
JvComponentBase, JvPageList, JvExComCtrls, JvPageListTreeView,
uConexionBD, uConfGeneral;
type
TfConfiguracion = class(TForm)
Button1: TButton;
Button2: TButton;
ActionList1: TActionList;
actAceptar: TAction;
actCancelar: TAction;
JvAppRegistryStorage1: TJvAppRegistryStorage;
PngImageList1: TPngImageList;
JvSettingsTreeView1: TJvSettingsTreeView;
JvPageList1: TJvPageList;
JvStandardPage1: TJvStandardPage;
JvStandardPage2: TJvStandardPage;
frConfGeneral1: TfrConfGeneral;
frConfConexionBD: TfrConexionBD;
procedure tvArbolChange(Sender: TObject; Node: TTreeNode);
procedure actAceptarExecute(Sender: TObject);
procedure actCancelarExecute(Sender: TObject);
procedure JvSettingsTreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
private
FPaginaActual : IConfiguracionFrame;
public
constructor Create(AOwner: TComponent); override;
end;
var
fConfiguracion: TfConfiguracion;
implementation
uses uDataModuleServer;
{$R *.dfm}
type
TFrameClass = class of TFrameConfiguracion;
function CreateFrame(Parent: TWinControl; FrameClass: TFrameClass): IConfiguracionFrame;
var
aFrame : TFrameConfiguracion;
begin
aFrame := FrameClass.Create(NIL);
aFrame.Name:='Frame'+IntToStr(Random(10000));
aFrame.Parent := Parent;
aFrame.Init;
aFrame.Show;
Result := aFrame;
end;
procedure TfConfiguracion.tvArbolChange(Sender: TObject; Node: TTreeNode);
begin
{ if Assigned(FPaginaActual) then
FPaginaActual.Finalize;
case Node.Index of
0 : FPaginaActual := CreateFrame(pnlPagina, TfrConfGeneral);
1 : FPaginaActual := CreateFrame(pnlPagina, TfrConexionBD);
2 : FPaginaActual := CreateFrame(pnlPagina, TfrConfFicherosEDI);
end;
Self.Update;
pnlHeader.LabelCaption := Node.Text;}
end;
procedure TfConfiguracion.actAceptarExecute(Sender: TObject);
begin
if Assigned(FPaginaActual) then
FPaginaActual.Finalize;
dmServer.SalvarConfiguracion;
Close;
end;
procedure TfConfiguracion.actCancelarExecute(Sender: TObject);
begin
Close;
end;
constructor TfConfiguracion.Create(AOwner: TComponent);
begin
inherited;
end;
procedure TfConfiguracion.JvSettingsTreeView1Changing(Sender: TObject;
Node: TTreeNode; var AllowChange: Boolean);
begin
if Assigned(FPaginaActual) then
FPaginaActual.Finalize;
case Node.Index of
0 : FPaginaActual := frConfGeneral1;
1 : FPaginaActual := frConfConexionBD;
end;
if Assigned(FPaginaActual) then
FPaginaActual.Init;
Self.Update;
end;
end.

View File

@ -1,10 +0,0 @@
object FrameConfiguracion: TFrameConfiguracion
Left = 0
Top = 0
Width = 443
Height = 277
Align = alClient
ParentBackground = False
TabOrder = 0
Visible = False
end

View File

@ -1,30 +0,0 @@
unit uFrameConfiguracion;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
IConfiguracionFrame = interface
['{07F3EDBF-DFED-4B76-ADC7-0D3B83FB6F9B}']
procedure Init;
procedure Finalize;
end;
TFrameConfiguracion = class(TFrame, IConfiguracionFrame)
protected
procedure Finalize; virtual; abstract;
public
procedure Init; virtual; abstract;
end;
implementation
{$R *.dfm}
{ TFrameConfiguracion }
end.

View File

@ -1,540 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<PersonalityInfo>
<Option>
<Option Name="Personality">Delphi.Personality</Option>
<Option Name="ProjectType"></Option>
<Option Name="Version">1.0</Option>
<Option Name="GUID">{EBDCD25D-40D7-4146-91EC-A0EA4AA1DCD1}</Option>
</Option>
</PersonalityInfo>
<Delphi.Personality>
<Source>
<Source Name="MainSource">FactuGES_Server.dpr</Source>
</Source>
<FileVersion>
<FileVersion Name="Version">7.0</FileVersion>
</FileVersion>
<Compiler>
<Compiler Name="A">8</Compiler>
<Compiler Name="B">0</Compiler>
<Compiler Name="C">1</Compiler>
<Compiler Name="D">1</Compiler>
<Compiler Name="E">0</Compiler>
<Compiler Name="F">0</Compiler>
<Compiler Name="G">1</Compiler>
<Compiler Name="H">1</Compiler>
<Compiler Name="I">1</Compiler>
<Compiler Name="J">0</Compiler>
<Compiler Name="K">0</Compiler>
<Compiler Name="L">1</Compiler>
<Compiler Name="M">0</Compiler>
<Compiler Name="N">1</Compiler>
<Compiler Name="O">0</Compiler>
<Compiler Name="P">1</Compiler>
<Compiler Name="Q">0</Compiler>
<Compiler Name="R">0</Compiler>
<Compiler Name="S">0</Compiler>
<Compiler Name="T">0</Compiler>
<Compiler Name="U">0</Compiler>
<Compiler Name="V">1</Compiler>
<Compiler Name="W">0</Compiler>
<Compiler Name="X">1</Compiler>
<Compiler Name="Y">1</Compiler>
<Compiler Name="Z">1</Compiler>
<Compiler Name="ShowHints">True</Compiler>
<Compiler Name="ShowWarnings">True</Compiler>
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
<Compiler Name="NamespacePrefix"></Compiler>
<Compiler Name="GenerateDocumentation">False</Compiler>
<Compiler Name="DefaultNamespace"></Compiler>
<Compiler Name="SymbolDeprecated">True</Compiler>
<Compiler Name="SymbolLibrary">True</Compiler>
<Compiler Name="SymbolPlatform">True</Compiler>
<Compiler Name="SymbolExperimental">True</Compiler>
<Compiler Name="UnitLibrary">True</Compiler>
<Compiler Name="UnitPlatform">True</Compiler>
<Compiler Name="UnitDeprecated">True</Compiler>
<Compiler Name="UnitExperimental">True</Compiler>
<Compiler Name="HResultCompat">True</Compiler>
<Compiler Name="HidingMember">True</Compiler>
<Compiler Name="HiddenVirtual">True</Compiler>
<Compiler Name="Garbage">True</Compiler>
<Compiler Name="BoundsError">True</Compiler>
<Compiler Name="ZeroNilCompat">True</Compiler>
<Compiler Name="StringConstTruncated">True</Compiler>
<Compiler Name="ForLoopVarVarPar">True</Compiler>
<Compiler Name="TypedConstVarPar">True</Compiler>
<Compiler Name="AsgToTypedConst">True</Compiler>
<Compiler Name="CaseLabelRange">True</Compiler>
<Compiler Name="ForVariable">True</Compiler>
<Compiler Name="ConstructingAbstract">True</Compiler>
<Compiler Name="ComparisonFalse">True</Compiler>
<Compiler Name="ComparisonTrue">True</Compiler>
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
<Compiler Name="UnsupportedConstruct">True</Compiler>
<Compiler Name="FileOpen">True</Compiler>
<Compiler Name="FileOpenUnitSrc">True</Compiler>
<Compiler Name="BadGlobalSymbol">True</Compiler>
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
<Compiler Name="InvalidDirective">True</Compiler>
<Compiler Name="PackageNoLink">True</Compiler>
<Compiler Name="PackageThreadVar">True</Compiler>
<Compiler Name="ImplicitImport">True</Compiler>
<Compiler Name="HPPEMITIgnored">True</Compiler>
<Compiler Name="NoRetVal">True</Compiler>
<Compiler Name="UseBeforeDef">True</Compiler>
<Compiler Name="ForLoopVarUndef">True</Compiler>
<Compiler Name="UnitNameMismatch">True</Compiler>
<Compiler Name="NoCFGFileFound">True</Compiler>
<Compiler Name="MessageDirective">True</Compiler>
<Compiler Name="ImplicitVariants">True</Compiler>
<Compiler Name="UnicodeToLocale">True</Compiler>
<Compiler Name="LocaleToUnicode">True</Compiler>
<Compiler Name="ImagebaseMultiple">True</Compiler>
<Compiler Name="SuspiciousTypecast">True</Compiler>
<Compiler Name="PrivatePropAccessor">True</Compiler>
<Compiler Name="UnsafeType">False</Compiler>
<Compiler Name="UnsafeCode">False</Compiler>
<Compiler Name="UnsafeCast">False</Compiler>
<Compiler Name="OptionTruncated">True</Compiler>
<Compiler Name="WideCharReduced">True</Compiler>
<Compiler Name="DuplicatesIgnored">True</Compiler>
<Compiler Name="UnitInitSeq">True</Compiler>
<Compiler Name="LocalPInvoke">True</Compiler>
<Compiler Name="CodePage"></Compiler>
</Compiler>
<Linker>
<Linker Name="MapFile">3</Linker>
<Linker Name="OutputObjs">0</Linker>
<Linker Name="ConsoleApp">1</Linker>
<Linker Name="DebugInfo">False</Linker>
<Linker Name="RemoteSymbols">False</Linker>
<Linker Name="GenerateDRC">False</Linker>
<Linker Name="MinStackSize">16384</Linker>
<Linker Name="MaxStackSize">1048576</Linker>
<Linker Name="ImageBase">4194304</Linker>
<Linker Name="ExeDescription"></Linker>
<Linker Name="GenerateHpps">False</Linker>
</Linker>
<Directories>
<Directories Name="OutputDir">..\Output\Servidor</Directories>
<Directories Name="UnitOutputDir"></Directories>
<Directories Name="PackageDLLOutputDir"></Directories>
<Directories Name="PackageDCPOutputDir"></Directories>
<Directories Name="SearchPath">..\DataAbstract_D10\Lib</Directories>
<Directories Name="Packages">rtl;vclx;vcl;dbrtl;vcldb;dbxcds;dbexpress;vclib;ibxpress;indy;dclOfficeXP;VclSmp;dsnap;bdertl;teeui;teedb;tee;vcldbx;vclactnband;dxBarExtItemsD10;dxComnD10;dxBarD10;cxLibraryD10;cxEditorsD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarDBNavD10;dxBarExtDBItemsD10;tbx_d10;tb2k_d10;ccpack10;ccpack10dsg;cxExportD10;cxIntl5D10;adortl;DataAbstract_Core_D10;DataAbstract_DBXDriver_D10;DataAbstract_Scripting_D10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;fqb100;frx10;frxADO10;frxBDE10;frxDB10;frxDBX10;frxe10;frxIBX10;frxTee10;fs10;fsADO10;fsBDE10;fsDB10;fsIBX10;fsTee10;dxLayoutControlcxEditAdaptersD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSDBTeeChartD10;dxPSTeeChartD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;GUISDK_D10;JvAppFrmD10R;JvCoreD10R;Jcl;JclVcl;JvSystemD10R;JvStdCtrlsD10R;JvBandsD10R;JvDBD10R;JvDlgsD10R;JvBDED10R;JvCmpD10R;JvCryptD10R;JvCtrlsD10R;JvCustomD10R;JvDockingD10R;JvDotNetCtrlsD10R;JvEDID10R;JvGlobusD10R;JvHMID10R;JvInterpreterD10R;JvJansD10R;JvManagedThreadsD10R;JvMMD10R;JvNetD10R;JvPageCompsD10R;JvPluginD10R;JvPrintPreviewD10R;JvRuntimeDesignD10R;JvTimeFrameworkD10R;JvUIBD10R;JvValidatorsD10R;JvWizardD10R;JvXPCtrlsD10R;PluginSDK_D10R;PNG_D10;PngComponentsD10;inet;RemObjects_WebBroker_D10;RemObjects_RODX_D10;RemObjects_BPDX_D10;RemObjects_Indy_D10;PascalScript_RO_D10;IndyProtocols;IndyCore;IndySystem;DataAbstract_IDE_D10</Directories>
<Directories Name="Conditionals">EUREKALOG;EUREKALOG_VER5</Directories>
<Directories Name="DebugSourceDirs"></Directories>
<Directories Name="UsePackages">False</Directories>
</Directories>
<Parameters>
<Parameters Name="RunParams"></Parameters>
<Parameters Name="HostApplication"></Parameters>
<Parameters Name="Launcher"></Parameters>
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="DebugCWD"></Parameters>
<Parameters Name="RemoteHost"></Parameters>
<Parameters Name="RemotePath"></Parameters>
<Parameters Name="RemoteLauncher"></Parameters>
<Parameters Name="RemoteCWD"></Parameters>
<Parameters Name="RemoteDebug">False</Parameters>
<Parameters Name="Debug Symbols Search Path"></Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<Language>
<Language Name="ActiveLang"></Language>
<Language Name="ProjectLang">$00000000</Language>
<Language Name="RootDir"></Language>
</Language>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1034</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys>
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename">FactuGES_Server.exe</VersionInfoKeys>
<VersionInfoKeys Name="ProductName">FactuGES_Server</VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
</VersionInfoKeys> <Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxComnD10.bpl">ExpressCommonLibrary by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxEditorsD10.bpl">ExpressEditors Library 5 by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxDataD10.bpl">ExpressDataController by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxExtEditorsD10.bpl">ExpressExtendedEditors Library 5 by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxGridD10.bpl">ExpressQuantumGrid 5 by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxSchedulerD10.bpl">ExpressScheduler 2 by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxTreeListD10.bpl">ExpressQuantumTreeList 4 by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\cxVerticalGridD10.bpl">ExpressVerticalGrid by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxDockingD10.bpl">ExpressDocking Library by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxLayoutControlD10.bpl">ExpressLayout Control by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxNavBarD10.bpl">ExpressNavBar by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxPSCoreD10.bpl">ExpressPrinting System by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxsbD10.bpl">ExpressSideBar by Developer Express Inc.</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvAppFrmD10R.bpl">JVCL Application and Form Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvCoreD10R.bpl">JVCL Core Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\Jcl100.bpl">JEDI Code Library RTL package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JclVcl100.bpl">JEDI Code Library VCL package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvSystemD10R.bpl">JVCL System Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvStdCtrlsD10R.bpl">JVCL Standard Controls Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvBandsD10R.bpl">JVCL Band Objects Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvBDED10R.bpl">JVCL BDE Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvCtrlsD10R.bpl">JVCL Controls Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvCmpD10R.bpl">JVCL Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvDotNetCtrlsD10R.bpl">JVCL DotNet Controls Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvEDID10R.bpl">JVCL EDI Components</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvGlobusD10R.bpl">JVCL Globus Components</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvHMID10R.bpl">JVCL HMI Controls runtime package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvInterpreterD10R.bpl">JVCL Interpreter Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvJansD10R.bpl">JVCL Jans Components</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvManagedThreadsD10R.bpl">JVCL Managed Threads - runtime package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvMMD10R.bpl">JVCL Multimedia and Image Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvNetD10R.bpl">JVCL Network Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvPageCompsD10R.bpl">JVCL Page Style Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvPluginD10R.bpl">JVCL Plugin Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvPrintPreviewD10R.bpl">JVCL Print Preview Components</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvRuntimeDesignD10R.bpl">JVCL Runtime Design Components Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvTimeFrameworkD10R.bpl">JVCL Time Framework</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvValidatorsD10R.bpl">JVCL Validators and Error Indicator Components</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvWizardD10R.bpl">JVCL Wizard Run Time Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\JvXPCtrlsD10R.bpl">JVCL XP Controls Runtime Package</Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxGDIPlusD10.bpl">ExpressGDI+ Library by Developer Express Inc.</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<ModelSupport>False</ModelSupport>
<!-- EurekaLog First Line
[Exception Log]
EurekaLog Version=519
Activate=1
Activate Handle=1
Save Log File=1
Foreground Tab=0
Freeze Activate=0
Freeze Timeout=0
Freeze Message=The application seems to be frozen.
SMTP From=eurekalog@email.com
SMTP Host=
SMTP Port=25
SMTP UserID=
SMTP Password=
Append to Log=0
Show TerminateBtn=1
TerminateBtn Operation=1
Errors Number=32
Errors Terminate=3
Email Address=
Email Object=
Email Send Options=0
Output Path=
Encrypt Password=
AutoCloseDialogSecs=0
WebSendMode=0
SupportULR=
HTMLLayout Count=15
HTMLLine0="%3Chtml%3E"
HTMLLine1=" %3Chead%3E"
HTMLLine2=" %3C/head%3E"
HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E"
HTMLLine4=" %3Ctable width="100%%" border="0"%3E"
HTMLLine5=" %3Ctr%3E"
HTMLLine6=" %3Ctd nowrap%3E"
HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E"
HTMLLine8=" %3C%%HTML_TAG%%%3E"
HTMLLine9=" %3C/font%3E"
HTMLLine10=" %3C/td%3E"
HTMLLine11=" %3C/tr%3E"
HTMLLine12=" %3C/table%3E"
HTMLLine13=" %3C/body%3E"
HTMLLine14="%3C/html%3E"
AutoCrashOperation=1
AutoCrashNumber=10
AutoCrashMinutes=1
WebURL=
WebUserID=
WebPassword=
WebPort=0
AttachedFiles=
Count=0
EMail Message Line Count=0
loNoDuplicateErrors=0
loAppendReproduceText=0
loDeleteLogAtVersionChange=0
loAddComputerNameInLogFileName=0
loSaveModulesSection=1
loSaveCPUSection=1
soAppStartDate=1
soAppName=1
soAppVersionNumber=1
soAppParameters=1
soAppCompilationDate=1
soExcDate=1
soExcAddress=1
soExcModule=1
soExcType=1
soExcMessage=1
soActCtlsFormClass=1
soActCtlsFormText=1
soActCtlsControlClass=1
soActCtlsControlText=1
soCmpName=1
soCmpUser=1
soCmpTotalMemory=1
soCmpFreeMemory=1
soCmpTotalDisk=1
soCmpFreeDisk=1
soCmpSysUpTime=1
soCmpProcessor=1
soCmpDisplayMode=1
soOSType=1
soOSBuildN=1
soOSUpdate=1
soOSLanguage=1
soNetIP=1
soNetSubmask=1
soNetGateway=1
soNetDNS1=1
soNetDNS2=1
soNetDHCP=1
sndShowSendDialog=1
sndShowSuccessFailureMsg=0
sndSendEntireLog=0
sndSendXMLLogCopy=0
sndSendScreenshot=0
sndUseOnlyActiveWindow=0
sndSendLastHTMLPage=1
sndSendInSeparatedThread=0
sndAddDateInFileName=0
sndCompressAllFiles=0
edoShowExceptionDialog=1
edoSendEmailChecked=1
edoAttachScreenshotChecked=1
edoShowCopyToClipOption=1
edoShowDetailsButton=1
edoShowInDetailedMode=0
edoShowInTopMostMode=0
edoUseEurekaLogLookAndFeel=0
csoShowDLLs=1
csoShowBPLs=1
csoShowBorlandThreads=1
csoShowWindowsThreads=1
csoShowProcedureOffset=0
boActivateCrashDetection=0
boPauseBorlandThreads=0
boDoNotPauseMainThread=0
boPauseWindowsThreads=0
boUseMainModuleOptions=1
boCopyLogInCaseOfError=1
boSaveCompressedCopyInCaseOfError=0
Count mtInformationMsgCaption=1
mtInformationMsgCaption0="Information."
Count mtQuestionMsgCaption=1
mtQuestionMsgCaption0="Question."
Count mtDialog_Caption=1
mtDialog_Caption0="Error."
Count mtDialog_ErrorMsgCaption=2
mtDialog_ErrorMsgCaption0="An error has occurred during program execution."
mtDialog_ErrorMsgCaption1="Please read the following information for further details."
Count mtDialog_GeneralCaption=1
mtDialog_GeneralCaption0="General"
Count mtDialog_GeneralHeader=1
mtDialog_GeneralHeader0="General Information"
Count mtDialog_CallStackCaption=1
mtDialog_CallStackCaption0="Call Stack"
Count mtDialog_CallStackHeader=1
mtDialog_CallStackHeader0="Call Stack Information"
Count mtDialog_ModulesCaption=1
mtDialog_ModulesCaption0="Modules"
Count mtDialog_ModulesHeader=1
mtDialog_ModulesHeader0="Modules Information"
Count mtDialog_CPUCaption=1
mtDialog_CPUCaption0="CPU"
Count mtDialog_CPUHeader=1
mtDialog_CPUHeader0="CPU Information"
Count mtDialog_CustomDataCaption=1
mtDialog_CustomDataCaption0="Other"
Count mtDialog_CustomDataHeader=1
mtDialog_CustomDataHeader0="Other Information"
Count mtDialog_OKButtonCaption=1
mtDialog_OKButtonCaption0="%26OK"
Count mtDialog_TerminateButtonCaption=1
mtDialog_TerminateButtonCaption0="%26Terminate"
Count mtDialog_RestartButtonCaption=1
mtDialog_RestartButtonCaption0="%26Restart"
Count mtDialog_DetailsButtonCaption=1
mtDialog_DetailsButtonCaption0="%26Details"
Count mtDialog_SendMessage=1
mtDialog_SendMessage0="%26Send this error via Internet"
Count mtDialog_ScreenshotMessage=1
mtDialog_ScreenshotMessage0="%26Attach a Screenshot image"
Count mtDialog_CopyMessage=1
mtDialog_CopyMessage0="%26Copy to Clipboard"
Count mtDialog_SupportMessage=1
mtDialog_SupportMessage0="Go to the Support Page"
Count mtLog_AppHeader=1
mtLog_AppHeader0="Application"
Count mtLog_AppStartDate=1
mtLog_AppStartDate0="Start Date"
Count mtLog_AppName=1
mtLog_AppName0="Name/Description"
Count mtLog_AppVersionNumber=1
mtLog_AppVersionNumber0="Version Number"
Count mtLog_AppParameters=1
mtLog_AppParameters0="Parameters"
Count mtLog_AppCompilationDate=1
mtLog_AppCompilationDate0="Compilation Date"
Count mtLog_ExcHeader=1
mtLog_ExcHeader0="Exception"
Count mtLog_ExcDate=1
mtLog_ExcDate0="Date"
Count mtLog_ExcAddress=1
mtLog_ExcAddress0="Address"
Count mtLog_ExcModule=1
mtLog_ExcModule0="Module"
Count mtLog_ExcType=1
mtLog_ExcType0="Type"
Count mtLog_ExcMessage=1
mtLog_ExcMessage0="Message"
Count mtLog_ActCtrlsHeader=1
mtLog_ActCtrlsHeader0="Active Controls"
Count mtLog_ActCtrlsFormClass=1
mtLog_ActCtrlsFormClass0="Form Class"
Count mtLog_ActCtrlsFormText=1
mtLog_ActCtrlsFormText0="Form Text"
Count mtLog_ActCtrlsControlClass=1
mtLog_ActCtrlsControlClass0="Control Class"
Count mtLog_ActCtrlsControlText=1
mtLog_ActCtrlsControlText0="Control Text"
Count mtLog_CmpHeader=1
mtLog_CmpHeader0="Computer"
Count mtLog_CmpName=1
mtLog_CmpName0="Name"
Count mtLog_CmpUser=1
mtLog_CmpUser0="User"
Count mtLog_CmpTotalMemory=1
mtLog_CmpTotalMemory0="Total Memory"
Count mtLog_CmpFreeMemory=1
mtLog_CmpFreeMemory0="Free Memory"
Count mtLog_CmpTotalDisk=1
mtLog_CmpTotalDisk0="Total Disk"
Count mtLog_CmpFreeDisk=1
mtLog_CmpFreeDisk0="Free Disk"
Count mtLog_CmpSystemUpTime=1
mtLog_CmpSystemUpTime0="System Up Time"
Count mtLog_CmpProcessor=1
mtLog_CmpProcessor0="Processor"
Count mtLog_CmpDisplayMode=1
mtLog_CmpDisplayMode0="Display Mode"
Count mtLog_OSHeader=1
mtLog_OSHeader0="Operating System"
Count mtLog_OSType=1
mtLog_OSType0="Type"
Count mtLog_OSBuildN=1
mtLog_OSBuildN0="Build #"
Count mtLog_OSUpdate=1
mtLog_OSUpdate0="Update"
Count mtLog_OSLanguage=1
mtLog_OSLanguage0="Language"
Count mtLog_NetHeader=1
mtLog_NetHeader0="Network"
Count mtLog_NetIP=1
mtLog_NetIP0="IP Address"
Count mtLog_NetSubmask=1
mtLog_NetSubmask0="Submask"
Count mtLog_NetGateway=1
mtLog_NetGateway0="Gateway"
Count mtLog_NetDNS1=1
mtLog_NetDNS10="DNS 1"
Count mtLog_NetDNS2=1
mtLog_NetDNS20="DNS 2"
Count mtLog_NetDHCP=1
mtLog_NetDHCP0="DHCP"
Count mtLog_CustInfoHeader=1
mtLog_CustInfoHeader0="Custom Information"
Count mtCallStack_Address=1
mtCallStack_Address0="Address"
Count mtCallStack_Name=1
mtCallStack_Name0="Module"
Count mtCallStack_Unit=1
mtCallStack_Unit0="Unit"
Count mtCallStack_Class=1
mtCallStack_Class0="Class"
Count mtCallStack_Procedure=1
mtCallStack_Procedure0="Procedure/Method"
Count mtCallStack_Line=1
mtCallStack_Line0="Line"
Count mtCallStack_MainThread=1
mtCallStack_MainThread0="Main"
Count mtCallStack_ExceptionThread=1
mtCallStack_ExceptionThread0="Exception Thread"
Count mtCallStack_RunningThread=1
mtCallStack_RunningThread0="Running Thread"
Count mtCallStack_CallingThread=1
mtCallStack_CallingThread0="Calling Thread"
Count mtCallStack_ThreadID=1
mtCallStack_ThreadID0="ID"
Count mtCallStack_ThreadPriority=1
mtCallStack_ThreadPriority0="Priority"
Count mtCallStack_ThreadClass=1
mtCallStack_ThreadClass0="Class"
Count mtSendDialog_Caption=1
mtSendDialog_Caption0="Send."
Count mtSendDialog_Message=1
mtSendDialog_Message0="Message"
Count mtSendDialog_Resolving=1
mtSendDialog_Resolving0="Resolving DNS..."
Count mtSendDialog_Connecting=1
mtSendDialog_Connecting0="Connecting with server..."
Count mtSendDialog_Connected=1
mtSendDialog_Connected0="Connected with server."
Count mtSendDialog_Sending=1
mtSendDialog_Sending0="Sending message..."
Count mtReproduceDialog_Caption=1
mtReproduceDialog_Caption0="Request"
Count mtReproduceDialog_Request=1
mtReproduceDialog_Request0="Please describe the steps to reproduce the error:"
Count mtReproduceDialog_OKButtonCaption=1
mtReproduceDialog_OKButtonCaption0="%26OK"
Count mtModules_Handle=1
mtModules_Handle0="Handle"
Count mtModules_Name=1
mtModules_Name0="Name"
Count mtModules_Description=1
mtModules_Description0="Description"
Count mtModules_Version=1
mtModules_Version0="Version"
Count mtModules_Size=1
mtModules_Size0="Size"
Count mtModules_LastModified=1
mtModules_LastModified0="Modified"
Count mtModules_Path=1
mtModules_Path0="Path"
Count mtCPU_Registers=1
mtCPU_Registers0="Registers"
Count mtCPU_Stack=1
mtCPU_Stack0="Stack"
Count mtCPU_MemoryDump=1
mtCPU_MemoryDump0="Memory Dump"
Count mtSend_SuccessMsg=1
mtSend_SuccessMsg0="The message was sent successfully."
Count mtSend_FailureMsg=1
mtSend_FailureMsg0="Sorry, sending the message didn't work."
EurekaLog Last Line -->
</BorlandProject>

View File

@ -1,45 +0,0 @@
program FactuGES_Server;
{#ROGEN:..\Servicios\FactuGES.rodl} // RemObjects: Careful, do not remove!
uses
ExceptionLog,
uROComInit,
Forms,
uServerMainForm in 'uServerMainForm.pas' {fServerForm},
uAcercaDe in 'uAcercaDe.pas' {fAcercaDe},
uConexionBD in 'Configuracion\uConexionBD.pas',
uConfGeneral in 'Configuracion\uConfGeneral.pas',
uConfiguracion in 'Configuracion\uConfiguracion.pas' {fConfiguracion},
uFrameConfiguracion in 'Configuracion\uFrameConfiguracion.pas' {FrameConfiguracion: TFrame},
uDataModuleServer in 'uDataModuleServer.pas' {dmServer: TDataModule},
FactuGES_Intf in '..\Servicios\FactuGES_Intf.pas',
FactuGES_Invk in '..\Servicios\FactuGES_Invk.pas',
srvContactos_Impl in '..\Modulos\Contactos\Servidor\srvContactos_Impl.pas' {srvContactos: TDARemoteService},
uDatabaseUtils in 'Utiles\uDatabaseUtils.pas',
srvLogin_Impl in '..\Servicios\srvLogin_Impl.pas',
srvPresupuestos_Impl in '..\Modulos\Presupuestos\Servidor\srvPresupuestos_Impl.pas' {srvPresupuestos: TDARemoteService},
schPresupuestosClient_Intf in '..\Modulos\Presupuestos\Model\schPresupuestosClient_Intf.pas',
schPresupuestosServer_Intf in '..\Modulos\Presupuestos\Model\schPresupuestosServer_Intf.pas',
srvEmpresas_Impl in '..\Modulos\Empresas\Servidor\srvEmpresas_Impl.pas',
schEmpresasClient_Intf in '..\Modulos\Empresas\Model\schEmpresasClient_Intf.pas',
schEmpresasServer_Intf in '..\Modulos\Empresas\Model\schEmpresasServer_Intf.pas',
uSesionesUtils in 'Utiles\uSesionesUtils.pas',
uUsersManager in 'uUsersManager.pas',
schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas',
schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas',
srvFacturasCliente_Impl in '..\Modulos\Facturas de cliente\Servidor\srvFacturasCliente_Impl.pas' {srvFacturasCliente: TDARemoteService},
schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas',
schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas';
{$R *.res}
{$R ..\Servicios\RODLFile.res}
begin
Application.Initialize;
Application.Title := 'FactuGES (Servidor)';
Application.CreateForm(TdmServer, dmServer);
Application.CreateForm(TfServerForm, fServerForm);
Application.Run;
Application.Terminate;
end.

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
<?xml version="1.0"?>
<TgConfig Version="3" SubLevelDisabled="False" />

View File

@ -1,32 +0,0 @@
unit uDatabaseUtils;
interface
function GetNextAutoInc(const GeneratorName: String): Integer;
implementation
uses
SysUtils,
uDADataTable, uDAClasses, uDAInterfaces,
uDataModuleServer;
function GetNextAutoInc(const GeneratorName: String): Integer;
var
vConn : IDAConnection;
ds: IDADataset;
begin
vConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName);
vConn.BeginTransaction;
try
ds := vConn.NewDataset(Format('SELECT GEN_ID(%s,1) FROM RDB$Database', [GeneratorName]));
ds.Open;
Result := ds.Fields[0].AsInteger;
finally
vConn.CommitTransaction;
ds := NIL;
end;
end;
end.

View File

@ -1,135 +0,0 @@
unit uSesionesUtils;
interface
uses
{VCL:} SysUtils, Contnrs, SyncObjs, Variants,
{RemObjects} uROSessions;
type
TSesionesHelper = class
private
lObjects: TObjectList;
csObjects: TCriticalSection;
function AddObject( aObj: TObject ) : integer;
procedure DeleteObject( aObj: TObject );
function GetObject (aIndex : Integer) : TObject;
public
constructor Create;
destructor Destroy; override;
function GetSessionObject(aSession: TROSession; aObjName: string): TObject;
procedure SaveSessionObject(aSession: TROSession; aObjName: string; aObj: TObject);
procedure DeleteSessionObject(aSession: TROSession; aObjName: string);
end;
var
SesionesHelper: TSesionesHelper;
implementation
{ TSesionesHelper }
function TSesionesHelper.AddObject(aObj: TObject) : integer;
begin
csObjects.Enter;
try
Result := lObjects.Add(aObj);
finally
csObjects.Leave;
end;
end;
constructor TSesionesHelper.Create;
begin
csObjects := TCriticalSection.Create;
lObjects := TObjectList.Create;
end;
procedure TSesionesHelper.DeleteObject(aObj: TObject);
var
idx: Integer;
begin
csObjects.Enter;
try
idx := lObjects.IndexOf( aObj );
if idx > -1 then
begin
lObjects.Remove(aObj);
end;
finally
csObjects.Leave;
end;
end;
procedure TSesionesHelper.DeleteSessionObject(aSession: TROSession;
aObjName: string);
var
oldObj: TObject;
begin
oldObj := GetSessionObject(aSession, aObjName);
if Assigned(oldObj) then
begin
DeleteObject( oldObj );
aSession.Values[aObjName] := NULL;
end;
end;
destructor TSesionesHelper.Destroy;
begin
// Free class members
FreeAndNil( lObjects );
FreeAndNil( csObjects );
inherited;
end;
function TSesionesHelper.GetObject(aIndex: Integer): TObject;
begin
csObjects.Enter;
try
if (AIndex > -1) and (AIndex < lObjects.Count) then
Result := lObjects.Items[AIndex];
finally
csObjects.Leave;
end;
end;
function TSesionesHelper.GetSessionObject(aSession: TROSession;
aObjName: string): TObject;
var
aValue : Variant;
begin
Result := NIL;
aValue := aSession.Values[aObjName];
if VarIsType(aValue, varInteger) then
Result := GetObject(aValue);
end;
// Saves a delhpi TObject to a session variable
procedure TSesionesHelper.SaveSessionObject(aSession: TROSession;
aObjName: string; aObj: TObject);
var
oldObj: TObject;
aIndex : Integer;
begin
// Free the existing object if it has already been assigned
DeleteSessionObject(aSession, aObjName);
if Assigned( aObj ) then
begin
// Add the object name to the sessionobjectslist
AIndex := AddObject(aObj);
aSession.Values[aObjName] := AIndex;
end
else
aSession.Values[aObjName] := NULL;
end;
initialization
SesionesHelper := TSesionesHelper.Create;
finalization
FreeAndNil( SesionesHelper );
end.

View File

@ -1,959 +0,0 @@
object fAcercaDe: TfAcercaDe
Left = 531
Top = 365
ActiveControl = bAceptar
BorderStyle = bsDialog
Caption = 'Acerca de...'
ClientHeight = 401
ClientWidth = 427
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object JvGradient1: TJvGradient
Left = 0
Top = 88
Width = 427
Height = 4
Align = alTop
StartColor = 2971346
EndColor = 4828405
end
object Bevel1: TBevel
Left = 128
Top = 359
Width = 290
Height = 9
Shape = bsTopLine
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 427
Height = 88
Align = alTop
BevelOuter = bvNone
TabOrder = 0
object Image1: TImage
Left = -19
Top = 0
Width = 450
Height = 88
Picture.Data = {
0B544A76474946496D616765826E0000474946383961C201FA00F70000FFFFFF
626262BD810AD3D3D3BA7C0AB36C08C9C7C4FEBC49A45103C98B28EAEAE9CDA5
15AB734B554F4CA9A4A3C8A645A24B020098009BD884A8DB96C99D128C4105F1
E6D3AE66062A2F299C44036443098D8D8DCFAD8B0D120E96D77CC1890CB57108
AF6E31A95A0588D367EFD78BB77508B3DFA6B58F6AE7D4ADCC4E3CECDBC8C695
10016001FCF6B8D1A931C8BBACC6831EBDA991CF6254BBE2B0D5AE68787878B7
B7B7B4332BC38C0ED0EEC8B58855999797C5920EC4E4BCCFC3B75A39035EBD55
AC9690F7C550E7CC79F5F4F4B88639F9F4E8C7954BDADEDAA2DA8DB16A0671C4
6590420477CF51E9A83BF4EBE172CD4B944204CDCBC99742028ED570B9791DFE
E79B1D221D66CB3C2EAC27DEC470CE8673C79B12BF840C0058007CD058AC4E45
CB9B97B9760AA6591AB8780A5E575525A91CAB5F06B06807D5D1CBA75804E7B7
AE9744029E4703874008DBB84AC63C2EAC631BA16631FCF9F56C6C6C9A561CDE
C39865C15AF9F6F10082008B817B884006B1E79CFAFAFAAD620672541E464B42
665C5B86BB7C1EA518AF68085868569E5E256FCD4481D15FDCBB87484906716A
684AB0406C63618AC57B9142027FC96B968986AD751CAFB5B572663A89A88032
7E32E1978F9C4C0C828483C1B3A0FDFDFAAEAAA9FDFDFD964D13FDFBF9B26E1B
AD630EB8A6359EA6A6B36E08954A0B432A00FFFFFD8C4408BE9F7AAA5B0ACB9F
1A0E940576D248A4500A8D96978D4911C997139ED269934404D6D5D5BCBFBF95
9290AB6306DCBC60363935914609954405934402FFFDFCA95503E2E2E2747171
B2640463775ED7D9DAC69019D6D7D7DDDAD6A3B650676B1912A011CFD2D3A1C7
99A08525D2D1D1697575656665DEDEDEFBFDFDB6700CF7F7F78E480DBA7206B0
6409CECECE3945029B5010ADDD9ED89A32A7AEAF6BD743EEEDED994708F2F1F0
CA9625B7730AB46E10C38F0E1F9404328232964907A85709A85810AEAEAE676A
676E6765A1A0A0D1CFCE69615F1A8B1492511AFDFFFFC1C1C1686868CFA324D9
D9D95ED9429DBF5A959D9EA251145A6414C78908C48212B56E05089B082C0000
0000C201FA000008FF0017081C48B0A0C18308132A1CA80585914D00224A9C48
B1A2C58B18336ADCC8B1A3C78F20438A1C49B2A4C9932853AACCB8B0A5CB9707
5DBC216161CECA9B3873EADCC9B3A7CF9F40512E5C05B32851976FB4E43012B4
A9D3A750A34A9D4A15C0827A03B10AD47A35ABD7AD07B98AFDDA15AC40172E70
39ACCAB6ADDBB770E3E62C4AB72E4217432CC8DDCBB7AFDFBF50ED0A169CB405
E0C388132B5E6C71B063BAB8549C624CB9B2E5CB4F1F6B6E29B3C51C8898438B
1E4DDAE3020AA70B525885FA256AD4445B27942D5B60ED370EE74C2ECDBBB76F
CB028F1614DE523651E20B90DB1E483B79F27A78553CFC4DBDBA75B9CE61A78E
9DFAF5F6EEA75983FFF74E3E7C79EEC7D3D2047DBDBDFBF73F352BDF5CF0CD10
CFF0F3EBDF6F32F572EFCBFD371E73D98187DE800182B7805A4CF1B743001046
08612625CD2321841B00D5CE8501B4A3D286177A88D300DC5006A2842266A4CE
859C3C75A0763012F8A28CDF3537E372E8D533530BBBE547C433010029649001
28409285433E93E14F1B2699E249ED2419C0283729B08392261229E493161141
8796364025DE6AAF8D3966776696A9A6796C92D9669ADDBD61474D3DBE270587
1286399285172EE9D38911725912A0100A5A123711FAA918A11D6A6483842D42
55DEA403526A699B959ED99C0B0D19D1897E576A292A857B8A8AE54FA3986AE8
48518ABA6A48F37CFF29A4A289A5EA6446D3D0B1A554AC51E0EBAFC006FB6BAF
640A6BECB1C812CB9A4C347DE2E397784668A4487C4A48EB4E8CBE1A52B62855
9B689621663449A05391C91A9C6EA67BAEB9EC8EE9EB69BEAEFBE69AEFDAD742
83EF5D63AAA97AC26AEAB5FC5984A49600F346043041161C94B0C4226BACB2C3
46EC70C312AFB6006E2DB0D7DE83D17E4B2D870A072C91B7188AFC1417AB70F1
AEB92AA386F2CB2B530033CB0BA0CC2EBCAFAD6CA6CD328717DD1C9FBA87F090
99E82AEA341F2719B2C903CF6AB25314C412B5AF5C542DB5D4BE5E3DB5CC2A4B
6D75D554770D6CD52D6B3D3617B1B4FC6B3D6A3DA1717577B2C8B184936444C4
24D076380F002407FFE0E70617D610111136E4BDC1DE13D95043A2884FC46D44
8B4B2878443664C2B8458F4FF4CB2480F769033414756C6D449D4B1811A218AA
9338DE1CD66083EA1BCD537888364C4B51E6144153B9E4EA487151E4114E0E80
3A9663D8B847C2AAAC76F232373F76F3CA1B1BBDC3D30F2B670B9FD4495DAB43
5E6383940AEB2BA5928F2A2DD106490A2EC5F8534604CDE2E0DFAEAA4435A40F
002DB28A7A2DF744522911110F62DFAE2422408291CE5400B0DC9044348F020A
890ED7C0C8358C26C07620CD71F3A3C82FD0B72F20D5801615811F910487BFF1
2DAD2253F31ADAC8A6C2B4B99085604BDBD7ACF62B19AE506C578B21D76C28B5
0768410573E8457BFFF216212210014F441098E8F0F4B7C0F52D4FD020E2854A
2491CC010F42351880E8B89439225C5174AF90C8124B0680D245E851170221A3
44E7BB8AA0718C35B01D00700780B88DB15F900B1C2DB6F811B2F9D18F324B19
D7FE58B594111290833C64CB14F947664DC73AE2D312A914A8A5E34544011DCC
E4A9CA98240A66726899B49DADB494A2FA69C993EC9323FF8094A22669B29211
7160C20ED849FBADEF959DBCA044CA87CB20912A22A31C60442229CB67E05184
4002A500E5A8112EAC6085CF4CDB3367E84C68DED09A7E94A635B529CDA945B3
9ADCE442385C90082B184188D5E10487F4A4CE0BEDA022731BA3C7CA28CF7A46
087673E45029ED19FFA1BA55519F83E3501801A08057B42E22F25C9219A315A6
85CAD30013D9233F0380CF2E4A718CA0CBE344F1D84C467AF4A3200D292357C1
3614D4C43ACA0C52467FB12F5D02E047A6CAC42FEE674AF391AE98BD1CD23B23
E24A61D634A701D8294FA5E43F5A48498EF5B38152671A4B5C2A14970A98C6BE
36905100844AA713E1E0AD087A5522D12189F9DCEA1CC7A7A7A611C94FC8CCA9
5037B2C217BAB5AD707DAB5CE34AD7B9DA156DABF0210A6C421D894A880E13B9
E8F1EC2821DBB11464E7C3D30E92D84E0E65C248848DD02FADA8D8241A004FC2
CB67B8F8B64E8FF4ED5A0E0D001D7C7737890C40A98FFAAAE61C2B1168E02952
12D10387DAF8382FFF71C89F11892C84A6F54508BD2289BA0D40663B2AD2E21A
F7B8645B850B486018EA70424A6BED2A90D6FA5CFD51047036E5A4A8329B89F1
D96E95C295483083544A296516BCE7959288A0C1BE0D28D5921431EB26132B25
F8DA4D71E6DDA5A9E8E052003C6A07EF9DC8789F2122620609B014A1A490F494
D6679CD754C3CD485D277CD70A53F8C276659B5EA873517CD69143AA8D483C21
04DB888CAB4F89651106033791BE098FB22A1ED941FFB959005C144FEA602667
517C5D2472441DB38B96F01A1BA1B56EE471448690910190E44601A0B7548C88
8B3D42C86956D3CA55C332D9B48C362B7F33CB7F7CA698B77C6532AF422D9FF1
0D4B719AA4366A77FF481C95EFDFEAEB38F5B638BF3CCDE093A584C7066EB7CE
A2F21F6771EAE1411BB0C749FAA5456C005EF6092F805A2AF1913338608EFAF7
5F794C529F214C6569AE60CC62FE345CBFF9E950933A16A046B533450D6A565F
D9D562A6C003F28207DF34B99E4275A8253F9B62091D0F7753CE738D7B7BBC60
0B1B452B966794773CBA1ED7982227B6A7F01C6AE98C3C8E51967EA3C788DDE2
1973A4D5624635AC576D6A7197DA99E626F7ABC10DEB4FABFADCB1D011099EA0
3DD13438A7087E3391E28CE99B8AEAD744BDF39F81A9E79F02A9D8781EAAAB28
728DEEF6D27672AE0876C16491EA8E0FC0EC1DB855F9F591018BA8A741CA76BF
1B5C6C4E77A4D428FF4FB9CA578E721EB0FCE53067B9CB3F4D0C0DF39534879D
688468CB2149477B9EBA4E36B964CCE2630FFDC91C2A79D18D5EA88BBCAE78D1
822DAF9D9DA78AB856A020BCA4B7E9F852E1DA60123600AB6691CD640E2DB9C9
54E436D125E79198BB7DE5C478BBDC591EF752E3E6E6A3B1385087E4BFEF8D8A
2290769ABF8704F0858F2CE1202730FDE87C788D8F35D01B5140E5A02BE3ECD2
179614599158739B705E3ED08DFD4E7C81F75B1105873CD39897B2C9BFFD6997
BB7E05AF8F3DEC672FFB96CFBEF52FAF7DA9652FFB593F019DA381BACE451B91
9C4B88A900303ED0932EF4A6AF3D7834263BD22FA474B647FFE8BA53EAE2AAFA
5229FAC9D8BD8E10FF7C471C008E0A1F8BADC5131EBDD8D9B10FFD88B79D4870
C1AA76D52F7D2373973BB951BEFF15981BE6FDC7726C634EF556196BB677A6D2
46F92324353053C56070B334784452787C277043223C1EB778FF66812304680B
040052157081252AF86460403253BF9075132724F0B58207560C52667A1E3411
10F80C91F20B0E3724C0005619A8709AA67A76867A2CD86DF67372BAC77BB497
8448B8844AD8844C287B5CF00091817797F1733BE774784245569850E10721BF
0650CF877E4CE764D3E76BDD767F8F437E4E06401C3200E9D73154147414716B
70247F3A575160485037263AB6537FCC067D27977BBB3788B8877BAF6788B797
8833A78884C88885FF881BF88219321800FDD55AE38360B9C26611A86F07E781
44F2247E7681FF24561088708E075EFE93716C6664A8A4253BE582CF005F7BA4
893338119A97538A267A1361829A743C2447845A126118417B3C107BC5588CC4
788C83A88CB0E77AC7B888CAE88CD1F88CCF488CBBB70D43A002CE8219CA3721
19716359175C89F2454D447DCD47867F2886EEE77C65287E67687D6398224F14
2D7A207694D3314F658EF0B444EDC02815B14678528FE7C825E2D87EF4C37C61
185E815888CB480C3CE0904EB88C11697BB6F78429078DA230136E83197E9724
920678FB52821DF44E0637671B584522286509D7837B76922A798A41985B2935
3E86420493E860B4FF947A134104B03881979624DC2765ADB879044794C9A755
FB9209594783A6527245C811D5488D523995545995562995CD488D59598DC440
4ED2218978E26616B1222036110AC03A850251EDE8375D18005FF86CC6066366
98900FF66C523609E7D7216197118A433B07A48F16210580B201930056983445
17213BE4583B98938714715A575403EAB09414E187E0A711AEE790C8788CC440
0E3CE099A0397BA1A98CA0598C9DD9849EF97AA5599AC5989AC4480EB4470CE1
20274F40854F739BB88919E4009ABBF999BDB99BBCC99ABE199CC3E99BCF489C
C0599CC9D99BD4B89CBB299B18F336B9399DD4791838D099E4709DBBA99DD9D9
999F899DE4809DDCFF399EE2E99DE1E999E4B99DE5099AE6D99EEA199EB30644
D5399FF4D917D9999D388003F7999FFAC99FF8B99DF8E99FFC39A0F9B99F014A
A008DA9F060AA00ADA9FE140036B519F123AA155C1A0F709A016AA9F190A9C0D
BAA006DAA120CAA1228AA1F7490C0F90089E518014BAA22C9A13FB59A002FAA1
013AA30D0AA330FAA2FD69A3390AA23A2AA3B33927B6D9A2423AA426D1A1C029
A31AEAA11B1AA20A6AA14B8AA4482A9B0C42A4545AA52341A01F80A3587AA0FA
99A509FAA5FCE9A5034A0E1F00A6664AA0E4100E3FB48D56DAA66E7A11315AA6
59BA9D38E0A5F759A60A2AA7376AA77C5AA72FAAA7805AA7822AA71F5AA078FA
A028406F6FBAA88CFF3AA88E1AA85D8A9F810AA81F30A9755AA98F9AA9964AA8
620AA9F54003D2A1A28C3AAA2B4AA9804AA6838AA9789AA95D5AA6647AA7AAEA
A790AAA98FAAAA772AA8268AA2416A321DC996BFC10930F8164942997917AC38
51A9C89AACCABAACCCDAACCEFAACD01AADCAFA0028506BD4A96D27441952B038
6EF81669541ADB1A00DD7AACCB8AAA593AA9B6CAA997AAACB25AA9641AADEB1A
ABEC8AACE6FAAEE19017D2C9AB4392AD8AA1001347AC5531ACA3E1AF4402B029
11AF94DA05CF4AABCC8AB00EABB0F39AACA9DAB0806AA226B5ABFC81ADBC7145
063B15DF6A6F12D2B12741B1EB5AAB9B8AB0128BACF1DA0FCDEAB0729AB2F27A
A938F00034306FF9FF9AB1FBBAB14362AC6D21B0F6B6B33AF1010A3BB4425BB4
447BB4469BB448BBB44ADBB44CFBB44E5BB41FF0A0E6949B1A5B1A5734AE6DF1
B1A191B5412BAD601BB6623BB6CEFA0076801FFA310D16B703BFD0ABB4720DFC
E33A3A66112244425785479E278F39EB5F840700D7C04174D02F48992472740D
7AE75E16410B9EE77595781152A040810B003E1B11D3D0975B625FBB78348135
244B09B717C898BBD4B77F0B24912B8184DB5AF8E58AD58611C80AB14D5BA9AE
1BBBAD9BB4B00BB1B23BB4B6DB05440BBBB42BB542ABBBAF5BB4C4400376F004
FAF10B17257C7E42B00CB511C053037D930960A56DF2D86CDA263B02F5977832
2D3C192D7440995BFF182174807C18C128E7B794F318008FF58D74F38662C8BC
EAA75FE2A76DBEA5BD1C322DE11B3C736B11B76BB4C0CBBB002CB5BACB0FBBFB
BFBE8BBB083CBB018CB4B04BC0C1DB0530400CB881076C7A1DD35083D6F552F7
06671A214233495EF7284CA1E8ABBD1A785A024283AB25D3729344C254B72440
C29838C594758B6B5EF638875815C2A7C77E05A42725DC4128BC4CF7234BDA32
115D200047FCBBBA8BC4BABBC4499CC04D1CC54DCCC451ECBF527CC4575CB454
7CC5518CC45E8CC50A1B0E89F095EE91BF3C069017B2BF1AB544464296ECE82D
4B42BFD15222A1B55B00803AA2530349343774003A034044981B117BF8AD87C9
8F18617CF9267C46FF82C68575696344C71D6324757C21377C114EDCC4FD80C9
97ACBB99CCC94BDCC95DD0C95B0CCAA01CC5A26CCA5C7CCA9AECC9ACDC05E1F0
00CDE21E0A16473F7956206878D0A060AB2B84011041B3B86FB5AC782F092471
5C4C68C5B912118244B2587C0B4B5AC55F11C109C0A0546AECB7A212260A9083
4102427AF7413AFC0CD07C110A063A3045CCB75C810090CB14D7AB0274CC059B
CCA212412FA54C628911530CC6F7BCC954FCC54ECCCF52BCCF5C1CD0FE1CD002
0DC688AAA8D741446E6646197259F3743F12A2682124215186C76C49BDCF17C7
884904B2354F1C2B11841562EEF74E23E65E3610C88913D112E157100242C2A7
B56654CF13F17361FF42587B43588AA24592E5C81152221CDD6CED28B294B350
282D11A14CD0575CCA48BDD449CDD4AB4CD0A49CC5349BA8C0F71BE51C24B6E3
B6C1AC49F946B75AE2662F1C5E79DB78E6DCCCA4AB5F82D7924062AC9EB7564D
434205B403D57C8BC2DC5442024240B5CBCAFC0C24FD795B2D4080D5ABF9E679
EEBCD6152179ECAC93F6FCC500EDC54C0CD04B2C008C8DCF92EDD8FEBCCF924D
D958DCD8479CD993BDC9530BAA91E81B856CC7F6573266CC2119F1D111C1D282
E3C66478B557FB87682521E30A284FA2D36298DA74A0C6B8CD941182D7F55468
2009218095375404DB4BC4D3BE4ADB0719215A0BBF1D53D41131D9D6EDD99B9D
DD95DDD98C5DD9DEFF6DDDDCEDDDD9DDCFE1BDDDE0CDCF66EB36A21A1A57FD0C
599DB3359C49ABFDD5202D8A848D92B66CD6CDDD34851D004B49D76E1D8CA88B
C182561174FD24029BD71911D64D9351F1CD3EFAFD7D87A6D6FE9DCC06C709B5
834CD40D009EFDDD962DDEE6EDE1DC5DDE22EEE1DF3DE221FEE1290EE295FD01
C4BB911C3697F4F42D0E4D46217145152D217AC0DCE20AD1D60BD470FCDC2DFD
7C5D0D284B465036104F5D4D11DA263C2C5DE12F4D1279033CBF84D38E02E440
CDDA7FA86880CC1126DEE102D00F276EDE620EE666FEDD65FEE52B3EE66A6EE2
DCDD0F0900A1781034BE11780DB8D519B2D7E5D7DAC8B4CB48D73D00500C9EA4
3A0F9EC15A0D849BFFF8536132537ACECCEC8C384AB501E19C405E75C8244850
DAFC0CDC4C3419D553937E11740DCC947BCD7CBECE7B6B689BA4E8C917CC9980
341B94241BDEE6B2EEDD0420EBB53EEBB89EEBB9DE05CC00AAD6EA1B05D96C8C
6CDC950CDC4BE486352E3A1A3D4F416EBF11723A75787545D6DA406D11798927
2054DA1DE3E7EEE363D7E7BD4934DBCD3EE317323CF514EB0270EBBA4EEBEBDE
EEEA1EE6EAFEEEEDEEDD6A2A9FBF91E95335381B4C24F28C11FB9ED643A9CDC5
9CDFA8EE277A2724466293AFC454292C25421DD60244C3AF24D11891E946C6C3
9924CF875EF01271F058FDCBE6A5D81751D9F14E00B57EF2E94EF2247FEB257F
F2269FEE2F8FF2F1FF9EF2332FD92F0FF3286FF32C4FF32AEFF2040003473027
D4A1008205D4EFD331323DD189E258B6A35B1B50DACB6EE3E34EF41C9275DD8B
594BA9001D1D2D493F872003284B69D17D52EC8BC6B5ADD55B57788FCC0ED454
FFAD620F21275D751BE1F3341FF33C6FF2742FF378BFF77C8FF3768FF7759FF7
7E2FF87DEFF3373FBC5680B1A1A10016D70EBFA000A74E395D25B71C814CB430
BAA265690D47BAD8BCB71BCFDF9AD35572BD8B875B6D36305E9960038D2B300A
E43A61B5CD9A333B97FB11571DC3FE35F9A04B39A70EFA12F10BA23F2DF39083
ED0083982424146F117C9FFCCABFFCCCDFFCCEFFFCD01FFD557004896001A34D
A55A4EAA2213FDDCFFDFFDDEFFFDDC5F053040BC27D5A696AFFD4F03FD64C0F7
EBBFFCEDCFFCEF9FFCEBFFFEF1AFFCF57FFF0450FFF22F0045001034EC3CE904
C0E0418409152E64D8D0E1438811254AAC11C062005A13356EE4D8D1E3479021
458E3C48C0A4490127539E64D9D2E54B9830C9C4A4496065CD97330974099708
85119241850E6D58F159806719892E65DAD4E9D3A004664E955A95CCD5AB52B1
52E59A95AB55AF5609882123A62AD9AF53C35E35DB352D589D307AAA9803D5EE
DD85152F2AC5DBD7EF5FC01AB18A1D4CB66D59C46F0FA72D4BD8EB63B591C742
76CC982A5A93FD8ED8A11BD8B350A348F97E265DDA34D1C4880D635D4DB684EA
D46C61CB6E0DBB76FF6DDA885FDF8E4D66B76FDB65BB1C49D4F9F471E4C9952F
1F8A36B5F3ADD0B7B29E2EDBFA73EAD79D4BD75E1D7BF5ED9AED58D8C4DCFC79
F4E99597787D95FD7BF7EFE5B3C74ADFF7FCD7F9F1EF6F7F5FBEFBF8F8F3AF3E
F6C4E00FBE1286E3EC13F51A74F0410885CA0FB8092BA4F0420B33C470430D3B
E4F0430F351463B8442CE82542145354714583E8834F1C17631467400463D48F
3D18F59BB1C61BC980F147FC689C0F481D857CED471FAB38028527EA62F14928
A33CAD471E6DA430C8FD8CF4CF4523059C8F432CAFFCF2BD226860524A34D354
F32901702C4192F7E0841184F7E8C4CFCE374B98334E3ED993B3043CF9C3934E
18FFC4134E3FF504FF545144DFDBB350F88A4885C982D6B4F4524C352A420031
C428541C5041950FD43F711435515443FD54D544493555D5501165F555585D85
753E4962D573C6236850C18813331576D861532902064FE904419C6541709659
689565569A669F5516D065A795165469B365D6DA50B3C5B6596ABFADF65C68B9
2DD7D96601D5561C027AFD95587AEB4DF3050E8E28428C6A088DD6DD66990538
5A81735C94DB1F139E53D476C50DB54E82039698E085276E98603288B3C0497B
3BF618C2345EA0E18422A875961476513E396596D975F9E595619619049567A6
59E69A73C6B9E5976B56723C3C2AFD7868A2951B20E47CF715C366A6C1B57866
739D76795165618EFFB669ACCF75591C18046AB268B0C326AD185A42D6E48804
AA31396BB69BAEB96DB8E38E79EB2A52198F63B1F3D6DBA901EC29DB87658C25
8BDDB50B279C7095A549FC64C39D2D7C71C70FA759F1C81D871C84C631971CF3
CB4DEE7A20A1F7DE9B91084A37FD74D453577D75D65B77FD75D8556744A80106
289B161F3421998C7108218590020A204578528A0FBEF8E191173E78DF83171E
78E2914F5E79E9AB1F3E7AEB8DBFDEF8E88F777E7BEABF4719E5AE7F6250F4BD
81887D7DF6DB77DFFD2C846A6680F9ED3126F7238EA842F1E497EFFFFFEE0150
80E30381FFB4E73F04562F810754DECD12F8C00116501C45280EB0D0A7B73BBC
4F831BE420FB8020FFBFF9D98E1603988726527184A53D6F7AC96BDEEF58A840
1716CF77D9435E0BB5D7C219522F87367CA1F570F84215CAB07855A0200AF070
C1B0790300A4FB47049AF80F28E6C174522C1D152360452C4E518B55DCE215BB
98452E86D18B1B6C620466171465D08F7EB4B0873D0C60875484A30A055C2129
C6E1BC7118EF8ED82B401E5788BD3F1640097BB4A31EC557BC3C7A4F907E3460
1D1539C8E041F278075452718286C48F71A21D41E00420BC80814F86121033D0
86094A794A53A6F294DA58E50458A90D574E4096B34CC2046A298124E4129712
E0651278E9015E4A0098C3F400153CE0886252419923A002249AD9CC11400211
90F80235A9F9852FFF2082112CC8030BCC213F77344319E1B4C730EC2185179C
B00A8254C20E0B003C78FEEE9DD5F35D0E87A704E7E15379F03C5E3DDF794817
46F29F3314643EF95850E60DF49F42C467018858C16061B25E3BB0852D760088
0E5C41A31AED002072D003908654A42325294867D08393A674062B65E90C4CE0
5213C434A6AD7CE52C6D79D35CEA3298B210A6048CE981642A73991E40861758
C0024BC86F00699C5F33EAD70C1FC4E008E3F047439D7755AC6615AB4A208555
97A755B07E15ABFDD3AA57AF0AC0B07E0F9FE3F8990A2E29517AED80A2EDC8C5
46AF80018D7AB4A47B2D694A51DA52970656A6305DE52B61094B9BE6D296BED4
E92F810A54630A55FFA8CCF400238C8A54A1D8A319EEB88653373B80629C339D
FAAB863FFC818602A096104A40AD12DAB9DA76BED3B5ECC42721D000CFD9BAB6
9D6840436DBB2A5B42C016B7F8D42D3BE1D9DBD4F25690F22C2E6F5BCB5ADBE6
16BAAE25445BF106D74C396007EDE0442E3AF0DD2B64B4030DC841793FCA5793
86D4AF2CFDEB4A5FFA5E99CED494863DAC2C6B79DF9CEED297C17C6C31FD2BD9
C826C1B2474D6A507EA159713A957EA1A585140CC08107C0A00A77BCAD6A57FB
4EDB16F4B6C42DE86E3BFCE10A171478B54DED87397C620D0BD2B617065E6B55
BCE1175F189F217E6D1136E3D6D061D7526500448F77608349D820130D684021
CA500824AF03BD7DFF6D6F7B59FA5E98CAB7B0884DEC6273BADF5F0AB3BFFF15
AA2CEE910530C3E3B2DF0C8A37A0610FFA85D3B3B62B461A1E6CAC09B3B3C2D4
E5AD6B9DAB5BDDF2D6B675C6336B373C5DE8F2F9CE7DCEB39EED1CDDDDF636CF
88F6B3A2E9AC683D57D2883ACE1406C42B8583CCE31935A88878AF0052658434
D4E95DAF93DD2BD8F8AA92BEB1C4A99519BB4BFE3E1699C674C464A930020F98
C18B2CB86C814942046FFC021A6956F0FCD89806296862644518076BDBF9ECE0
5E20B52B5E6DB457DCDBD55EE0D917082EB45FABED6C1302DCD01677B9C71D6E
6E8F9BDB7346F7B6BBCDED6A97BBBA1ADB448E292DA55CE0B503F338880D9EE1
8C1A9461A31858B2FF48D70BD8530F36BEF4AD6F62F18B4B2C6719B241B5B507
B250BA7FE4A1D743990638844DBFCE3A359CA045F60B74C7ECD4923BBA7586B7
122E808675C35CE6E086F96BB33D739CC7FBE62F7FB9CE71CE7399DF36B8B6ED
F96E690E6E71CFBC0A3AB0E4BDD764E9F05EE32006A007A703F0DD8C96340748
D8FA47BDDE83AF83F4BC066FF24AF92058C2AA920FACC6AF2E5F1D4CC93213D7
17776237093C944E745CD8B4D8AC679B410BC037230DF8D35FB3BF2D6E97137D
E8E56EADB9BBBDF8C56B3BDDE6B6F9D02F006F6BC77BF22E9F3CE679EEF86863
1EF4D6757A9A025008226FA01DED18450D0041E432384318B227690E92208825
E45EF7BBE7FD12EEFFE07BDEFF5EF8C017FE1D8C6F7C20DC21F940C002F29BAF
FCE7339F1158000280994905BA677CCC44E9441F88F0713537B576B7CBDD0974
3061DE5E5EFDE2BE3CFBD33DF3F6AF5FFEF1A7FFFBD35D7FF7E71FE8F3BF7FFA
61AEFFF833376E5BBAE2B8AED25B11ED6A0707F02EAC132F8F322F5043A91E40
022090220BF4A20BCC400CDC400DEC400E441D28822256488664C8382F923B68
42042AD0B5BADBB8A0382283C83B058086115AB3106A23634027752A00F50B40
F5B386CE73BC201C421F1442011C422384B9FBBB002004C2FFEB3C202CC2CE7B
28E3384016912B5BA02BBBC2AB2BD0ABBDCA810C7A9F101C43322C4333FC8712
2441121C84641884FF41C88264309D7FB8B5651A0166CA3E8DBBBBA068018EF1
3E614333BF530605033C29F0811392841E4C44455C44466CC444743F47544421
64C4238CC4F52384712882F1F8047BB3C2076907B96A078C0AAF8DEA004B282F
B0233B245802308A1D5688805724A3314CC33624412772A265BAB51150413C3C
2ACC0A0A12E0C383E804225080031B80F06BAA625846748A810758A76050023F
90C45BA0BF5B80C46ACCC6FA5BC45B88426EABC61ED4C66BE43FF5F3036B0047
6EEC41485C4471FB190B381F4F44914CC8841AC8041E038442C8857CC3800698
076E588665A8BD307422337043833C48841C043330832C6048876CC8865C4888
7CC3877C4830CB02FF46C0488C64848CF42256A0433BB443ECC3B83CF426A1D0
82F13082F20000EF0BB611EAAC344A2311A2057748B65408817108866050C45B
B88569ACC69F0CC769F40370ECC96964C4A3BC00A34C44A20CCACB43C71E244A
474C4AA84CC70BA0423C88A8787410A8EB004C33084DB33A4F233590BA030B34
035BD22FB57C35B6D4AF2BBBAF9B8A25868B2FB4E30341302AA30AC95D440415
6441EDD34392700121084605988313E9BE60F31B35532363B39F34389B22A882
500806A054CA0B084ACCB4CCCCACCC70BC4CCDFCCCCA0C4DCF044ACA543FCEBC
CCD274CAD404CDD15C3FD2DBCA07C9B7F0E23783F0378013388D22B8910243D3
318324782C2D2326FFE10CCE9E02A66062CB9C8A4B59AA2F564A2513E881BBF4
45BDDCC53B244917248905588037D00226398518EC036F50007BE02C0513C4BF
63235A30004D8881C8BC4CA2F4C9A6EC499F94CFA6F4CCA1544A9F2CC7FC34CA
F9E4CFCA1C4AFAA44FFD94CFA77C4FCFBC3C3F78CFF79C4F00D5C65070C77A83
CD06A9ABD93C885A0800600086ABCB4D5534CBD2F1CD2D0B511105AAE20CA6B5
7CCBB8442CFA3201BBC44B16D04B44D8C51524495FF4B591580017D04E2DB082
AF894170104F64F42CF39C1FB2B91F0E2019502084041DCA50E8C65B68D2736C
52CBFCCF2865D26C94D29F8C52276D4D2785D227DDD22DBD4F6DBC4F73FC522D
3DD3A1B48607DD0CFF0B804109450FD9BC825AE88369E8031B08003A000681C3
000CC80581ECCDDF2CD161125442354E2CBBB2569BA5FA52A5989A81E83C2A5D
B4C3181DC9163C2A32C3CEECD4CE372001BA38915EE8831F35065AB806CE1AD2
F12B1B7C49051D08016B388304954F5885D5F88C4F590D50FE5CD05AA5D558AD
D55BED4F06F5D55DDDD5057DD02DE00C037CD3E4D8810DB02840B82B67B53440
402903582909A4560FCD03101D51112DD1E33CCEE4844B9B5AD1526AD4476501
BE8CD16CFA8211F0CB92B45191C8D41C7D834DFD151894411A2436A6AA1DB219
BC4438219C24CA33B885801DD860ED49823D58814D58845D58F964D880855586
3558859D58873D83FF810D8535355664350F2CD4C281CBABB1532F94E2CD0FFD
4D12054E943DD99E3251B744D45A924B574225547ACE72A5CE738D513CBCCE1B
CD54781D0212B00023F04E00988619A4C166B80665304F7D259B4294AA100085
50B0588A8DD581B558A9B5DAABC5DAA9C5DA87DDDA8935D8AB5558AD3DD8ACAD
5AB23D032A3CD68D2D8D04EC2EAC23C5F132AF1C38B81EF0D008C8566DDD326E
EDA59685CB975554C3724E168D4EA38AD19B555776AD51A1C05178CD4E17D8D4
1670D369084FA3153F1BA4491FE0006391048C3D83A8B5D8A815D8D0355B8105
DD8B35DBB255D8D12D5DCF3DDD9EFC5CB3855DD5B5DAD9355DD125D85000051D
B89B4E5C5BCF2883FF06E8315B5007759884212BB23258874208006190409322
D9BB0DD4419DDEBDEDD6B704572A0BDC996D549ABDAC173D5C9CB54E4B5D5C9E
2D5F5C20012BC80127F984EFBB57911352117287A84A05061887330886335005
113883FDC5DAFDFD5FFE0D60001E60012EE0FEB558FD2DE0AA3D6002FE5FFD7D
E0063660AB558500A6E033D0DDA6F3DDD3E8CAAF0480B0EC345254296B3D4B93
CD5B428535B74CD4707D25C11D2C47F5DEC3C5A67515DF5FC4D4F2AD874C7D83
C1DC984AE90363F41B1B3C557B2839F694043FE05AD44562255E6226B6D803A6
DD264662028EE22616585028020EF81578D460CF90CD7DEBB77F0BB881ABD691
1D48BC254E945D59FF13652C147D59E664E171E55E97824E183E576C52D79C05
CC9D2DDFF27D83F3FD959504CF03E3BB045BB3D04A8390311650B85F06B6DA46
7662478E64489EE400CE5F1148E047AE644D666008B6E04CE6E44B7E64428001
0E480323D8622EFE8BAE943A83A03AB1042FBAB55BBCD5D6EAE5DBEB55CEE53C
ACED7561C23557444857194E5C3D7E573EE6633FE6D43908E4F00444C6742AC0
1BA1C1D3041D58642466DDD27D626B8EE26C4E5D2566DDB1E5667026DD6EBE60
2C369F540E0CD44B3D0718054E703DE41586751086E61561E805D142556396ED
A56FFDDBE58CA5F98A63287BA9932AD75FFEE53B46843C36C9A028E6627EDC21
601227D9841F1D06FF5A10C490EBBBFAB99F1860801008053FF85F1150833310
69918664921E69947660023E699646699106E0933669979EE99316019BA6699C
DE5F960E8510A081347802543E67BB48C0056C4007945B84AB5B121E5134CEE7
57B3B270954B164E35B47B615FBCE32F6802AD460476D5596266E8F2750117D0
82609C03EF3C05A2A5C16B2055BFAB1D7B68B31252D545566903C6644C16E09B
0E65FEB56BBAD66BBFC6E4BC16E0BB06E9061E6CFECDEB0456852BE6809FD04A
A1868A8EA5D0DC04D98363A91C509F924D59EA65593676599BCAE5E6DCE5C0B2
6C82C6EA26C8A68476D790C8D455606DD76EED4CC50514680123E80383004FCD
82C9B6B61DD07287FF745AD538D05F9B1E6EE22E6EE33E6EE44E6EE55E6EE66E
EEE1060519B8041F00EAC7BE0B50DCAE51CC288E222FF57AB29392E588CB675B
863836C6E59A92A97175A9B31BED26EB01477051D3CE6AAEA6D1615E6DD7E6D9
D6866D787D8321B0828D31884F3033BF0952BFFB3B7B8086C18B0145A6E0E1DE
6BC23EEC076F70BF46ECBECE6B0B8FF00B77700D9FF0BEE66BFE8D839E1E88A0
AE6EA2D8007AB4C71E6B807DC40040D006800C487A1EC841708425C087258084
1ABFF11A17044810047CE0711E87841E7704218704473872243FF26540720970
84256FF2277F710958860900021836ED2640681ABED43DA68005F07230FF7231
6F6D2FC7D14DED51FF50DD3BFA294F054B8306CB1DFA0505E1766E3AAF733BBF
F3E60E814B588327782B125F0A0ECEB44DAB8142F0B484FB6E2AD2382F587446
6F74477F74488F74498F745F6401AD3EED2568022898EF4AADE1912073B0066B
79E554A000805E98833FA449777007C67CE69A34A1F38B5A090F69E43E6C3518
EE5BB7E95CB7F097E6755C276E5BFF755D17765AD7750827F65E1FEE509001AF
19F13F1F092FA64D00B04D31CE4DC07A4ECCCEB84ADF766EEF766FFF7670FFF6
ACCE6A4D3FEDAEAE6F9010732F0775761F7331C7D1B1FE89529F5C0530860140
5AA712C49944D5182099E0F6855FDFF55D1FF65B2F785A1FF8622F6E833778E2
5EF8837F788747F8FF8857F890CEDD235883367D76A2A0D02FAE4D0CD550EDC6
80967A29A5361DEF0D77944F79953F2AA3C226AD86024DFF0261F67491D0EF50
07EB7A10CC1EA0ED8220C6192C86DA2970DB79EBC10B9C2288033C57035540F8
E21E69859FF384D775A8C7F3395F7A9BB67AE406855428113C105A8D87762E9C
87EEEB843BCDD340C84D911F79307C456D5F79B77F7B713FED4B3FED84E6F277
0DF3327F7777C77B311FEBFE2EF54EF8D1335BF3425E2AA01FBC1738812AF085
A5578382777CC70F69C89F7C04887CCAB77CC8AF7CC7D7FCC95703CD97FCCE07
FDCEE77CD2CF7CCCDFFCC90F695588031DC86237FDFA9050D648B08566C52BDB
EF2897AA05398E2FFF5693252A5F8624007EE10FFE292F7E4768F2634AFE5AAB
356762FE688AA6698AA66AFA822518F74CBF7E2858022880F997DF7E99A761D5
068976E7D9BC2FFF0568F77AE06FDA8ED0C93DC6CF6A2A63A3851C4CFC220801
A40F697480FCFC3F78C70708746A060A14A1C6E040830605121CA886E1438708
23267408F1A2448B1A156A6CA826CE91442A8C002869F224CA942A57B26CE9F2
25CC983267D26C996F87AD76B9AEF0BC828127A01C3386CE3051B4A889A449B5
9960AA4DDB04A813A64E4D62358904AC582570F520C1AB070F54C452295B7604
95116AD7221A8108D117B85F9ACC6D62B70994BCADCC4488F02F8F17162C2CD5
6CB98AC2020A8713FF3346ECB83164C40BDE0CB162014F27007DC0FDB2D7CC9D
B2CFCD9A0D18408B561A1F2F529D0861CD971AD808D4CC1E589B36EEDBBA1DCE
EE9DFBB76DDEB865FFDE1DDC77F0E4C507AA027584860A22BD0A53AF6EFD3AF6
EC2ADBD9B2B50350879E3C3B34E043D4287AA54E9B3E951A35C904F857B766E5
DA352CFEB166CDA255DBF6FF5B727D31575D764181575E5FF0E5571E820DA65D
498F4918198512AE3299163D586044669D10D1D9009F29A34C88250E600F2D06
70704408A0A8828E2F181184003A34D626E343365EA4E38DB6C948A3453A7644
518E02FD5823926A84028A0E1C8C042194514A39E54C0EB4B30327B974105E78
40E5D0430E421935FF547A4E3DC55E545451259F56F5D9079658F9ED97565A6B
F917605C03D275D75D7A2DF857602C9803E561142866E8A186168AA8A2882E6A
A80B6F9080C2137D00E061679F5DD34C68A3B933C030D0D0228526A9E810822A
B421809CAABDADEACAAA08B8928D43D9BCEA5BACB0D6B61BAEC5AD8A9B72B9C6
DA2AB0BAF6E60B02BEA45304744F644625B4D14A8B1D20B9E4828103D7B873CD
0E0D045046198000820D204AA9C7DE53694AC5E67C6EBE895F9C6539C21F9D90
AC05099E70C945D78106E605C52101EFD517A0821106E1A1892D36A1630B3BDC
3005F5508682111C76324DA6A395481AC7A5A5A6C90992A4DA1B92BD9A5C728D
B9954C1BCA3CAECCFFA3CA2E9F6C23CB34934CF218473809CE74D3FAFC33D02A
FD7445070698540B3DC0D450867847996B66BAEEAD79557DF47D955FBC73F667
E75B6EE9AB6781FEFE7B0814033318E8C1DA31DAA8A10A27FAF6A27173518F0B
5AA0B061497D28004D68DA6E3A5A680314534C6A1C9C50848BC91EDB1BACB022
DBF8E2B4214B1BE4BFCA7AF9AD8F5F2EF96CD9C0CA39E49C73BEEAE4B1927EF9
E77130AB023841BBFEBAB43B113D8F493604000C30017489C1D34DA1EB9E36F0
5545759BEFC2AB9FD675FEE7F55B790E58D781D18F2DF09F0D1A0C25C31556B8
706387D14D590B46CC7129110AA0085AA7A39D86E20006BC10038B71C07873CD
35239BB2CD35DE4FFF7FFE8AEBDFFFCBFE87BF01F28F80FB43C71856F7849EC1
AE810EB4CE4FB6740D9318800E35C884EEBAE434F59C296A6AAA4A7CDA64B5E3
C9693F5BE35ABE9E379756F0E95F002B5BF502352884396A6D6C835B0D6FE8A8
3768810423D90400A6B1B7628C06704534CD69DCE18318B4260EC8321DE65C15
45D3B5CA58A69B55AC6C25456355118AB7B29C17C318C52A2E2B1594FAC403D3
A8C6982CA210DFBA602632F18C5C54AB01C2C884302AD13B0F4A8D5DC5B3CF57
AE863C13D2C94EF86A0BBEE24297012DA14F796902D9C87607EA110C30D7A321
0E6F18B7436D5293AB88D4105430BE207A031AF60851A74C741A5A283106A960
401CA0F83929E2CFFF576334D92C63969B5BEDF296CB61DCB07065393524D08C
4F5823329389122B05214B5BDAD27882C2871CF0C15CBF4BD307E76315775D8D
8466F1407FEAC4160039EF792D945E24037608B315EC4108E3820DE329CF7932
8A0BF67441289F80874DF4E143D028CD118F689A6618A0540C00C5FCA0A84504
2C548C626C681821EAD0895274A1129555088E60070BA051991E4D2377BC031E
F1100D10D55C0A07F928BC106EF38FDDC4DA9C0AE9969906E86BFB821E82F292
CE8061819DD673A7DA1243012EAC029EF4CCE1DA3A49D4B9B9400826C801114E
A199BD9DD21D45248D694CE30E29D820063AA8C2186AB42AB1A20E57562C6BCD
BC584B61512E56F8FFFB6201C358B9CBADD515CBD2C1463BFAD1BDBAAE1D5772
66977A224D31ED112A5203614BB7F92641C2B490E2A4690A55183617461260EB
8CA16066A81D2EC462A89CB5E7518DBAB6CE7676A8A4FD2C5127B3D127A0711A
DE00D1A648D431D3D8230DEF3B9CFC56050104EC76A1BB5D95AD76FB5B866691
B7C6ED6DAC844B5CE01AD7B7C92D2E73958B5CDD42D7B8C04DA01D7EF12CBE72
775A35A00330E8B08E42ACE3190DB016061A50894A64A212EBF1E09AE2C35211
76E5A56119247FD802D9E6999340D183E4F4787A889E6216A8D9812782871ADA
A31A2AC10EE6C264864082CB7CA213E050002D34C6318D15C394A959CD0912E7
45639D15AE250E66FFABAE2857619998A224667114E3A00391E8B5BB36965204
3B30C19254F0826578E615AE7958F9B60B90F62D213865EA1FC83A6F917CC24B
2B746A59750EF8B295441B94EC895A0A74D69EB1D0F297BD0CE6318BB9CCA825
6AA47C68844FF4E1B5A7016888AE0A50292C51077118C34431F15CEAAE4ACF7C
B6AE43FD8C0041133A5682369DA0875BE83E8B310E0C4884058078E349434876
1DA05D496C873BDDF10403ED312C0887079FAA01123F8C8DE909F76BD33D4D16
419515301606EC5307A5EDC05ABE35AE73AD6B5D7B56D7E1F8A4A4468246BDFD
A2189BB2EA869B510C5A1823354C84A52F9E38458A4EF4C4D4BE36B6AF2DE38D
3290D2DEA6CEB566FF57BB6738A30681E834EFCC844D35F9712B5B819337937C
16FD925340E6EC93ABA7ACCE581FA2C09A3DF00A3E1BF02F0F9C0B050FB83D0F
2EF033137CE15F8E05DDECF604239C6233C556865507904A24A2A6A03180658D
A47BDC918BBCE4243FB9C9538EF2959B5CCFCA4580EA44D287ED7EBBE631B134
A601A069671462779F5E379189C74D78DD972C84548BBD00C45F4512E89C5226
5BACA38E859E0EE2CA97DCACAE1BAE755C239CEBBB3E73C23FD9C3F075620EE5
13559C676B1A0FBFEF54E90074B6E30EC5E122DA1574BFF670EF4E5119AFE117
98B139E05F12EE4B8FBBDC4CEB747B3E1874C596FAA5F83DCB6397D73C7BD705
A74FA77295A73EF5FF7E5BDDC0D8F9ECC3412FFAD0937EF4A62F7DE85770211E
0A7B1342FC6733AE31220D9B868874365C08A8BB5B97035AE5BE5FB9EE4F1EFC
DF13DF747C5781A502AF7C95E0BC76B7CBDDEED4C5EE1092DA7812D08FD1E965
A7254F1E6C7BC23765F79DF9016FBEEA0CA27596BFAEFEF5B37FD7756BC186E6
606110794AC31A1B8031A4F0821330230E6FE72D046082AE40C0001AD7A1199A
AE08609F25E071256001EA96DD019A020E1A03EE9E032E2004C64A08CC98282D
9F079AC4E0E59C0D909BB9A1DBCF4D9F3671C5BB1D19F2A0C5BC711FF3505EAB
851F95451DF971DED9645696A1DEE9F5200FFE600F02DB10500C105DD83064D8
35FC0DEDD1C200F8FF00C89C8A2A40801462821456E1145621155EA116062016
76A1157EA17081A11566611872A11402A01996E118BA82A37180318CD2072A9F
A5194D49D4C2EDF01C976080F4C5574B0D9DE391C5BC40DE92C5202240427FD1
45231DC812FCCB2409184F6D9EE61D82F9B553AD7D5EFB5D2226AA5FC4510C1E
CCC13470863DB803685CD5680CCEA82C512A84401CC00A17A2A1DD49610412A0
70C5622C36E02C5621CB9D61C9BDA22CF2162DEE621546A05D318093FC5D1C02
9E2D444226D842B5A017063C232068C33248C032F4D17C551FBC35D659C8C201
0841377EA3378623388EA33896E31B08C11BDC83D4695E241658255E870FC623
10CEA30FC6C20AACFF403DE0821DA88005C8DF879C929C715831D416A9984A08
BCDD17A2A115A22143E2A243EAA2184A57444264424A64C951A414EA4308A4C2
1A90C431DA1C77EC403B8C947874804925DED4F4E10805D2F1240F371E004CC6
A44CCE244DD6644CBE810DB263244EE24FBDA375DC5AC005A5C10D65C2E99A50
1665D71DE550765DAE8559DD5881B3581CDA75CC8665956D7955088C81DD51E1
56A65C2DBA5C570E1A150E1AC9FD2257B62217D6225A1AE058822558CEA2CBA1
431C5C820AE0C147D65C1074C748769A4F78094AAECB7CF5214B12DDE371A337
C2E4617E2362C66462362663C2643AE6A44EE2603BFD1B76D8E33D66A6666EA6
6662E6667A266786FF66667A2668C6C2C440551FB419DFA49DC6698C32108EFE
315111A443159EC342EE966D06E03900E06E82616E42C06F4EA41806676D16A7
6F46A471F5E6198202477AE45D4E9A0388A40368099095141F5C271FA0207D2D
169C3842F6ED07373A414C8A27798EA74D9EE701A46337AC2723685E1660417B
26435F44000B78817DB2009404A568DEE352F2A77E66667F0A25806E66801ADC
66AEC21BE0829A6DC227BC963D1011ED91C69BD1826AA4421168255A8EA57469
28870A5787F2D68766A8878E288892A88896288A8A281B1E810F74E273DE5803
884B2EEC402DD4E806344019144203140220148225A4E4761A4FD10D123E8483
2814C1039080925AFF01935A410B2829095801944AA91054A99556E90190A713
886738EC03327CA92CBC4198BE819892A928B8C03188829A8A4222E4E77EBE69
66F2009CDE233164669DCEA99CD62931A419A58003115C18341443FA08D440DA
836A04819DF1E2707E611B7CA16D366A44FEA6A41AA7A3522A710AA71506271B
72A4054CC38B76170670891498C43C3C430DD400A7750006C8C73572E7F521D9
371D433FC0000C24400B34690BE46AAE3629AF5AC1955EE9966E831308AB1314
8129FCC00F68C0793A6637E6276886E6B37266B4AEC0B46AA6C1556B67D68313
D84DF8F45329B1E66C0D4E1A18800F18CE18F8C243A6211992211A52A186EAA2
BB7261BCB62B5A6EFF61BCB2EB897AE1886A240DF880B37C2A5F8560E195A04F
E861BBA9607DD9D7E3C96A02C0C036F06AF8EC6AAF322909FCAA956E29C66E69
02288206742CB32A26C80E819BC6E90AC8A99C6AA6C992EC3DA6ECC9922CCB86
E6CBAE6CC9966C2C84833EF2231E7CE22FFCD3B6704A116D4A69D49657190286
36AAD142C0D1266D151EAD143E2AA32EEDD3422AD42AAD1432ED4452EDD26AE4
11ACC113C021C02653A812CD8E018001D0C3A9665078B0AA552CC34AC209F6ED
C7BC1C03ADD6EAAD32A9AE4AECC45A6C95662CC62640B2FEC01FA0274D0A819B
B6ACE1AAECCCAE2C661EAECC366EE2DAE3E2226ECBAE4038488C8276EAC5EC4D
12FECDC69446B3A1FFE2A9D89DD42AADD5622DE9222DD4562DEA8EEEEAA26E18
9AEED4BA6EEB42C0186C24D7D6D8D7AAD1331402B864C20EFCAE33884B8C3282
3014EFE2594D7D7913BD5081ACD2EA36402909544CC5F400F442E91090292E90
6982BEC13624C0367CEFF75641B27A2C397A637992272EB4430CAC2F76CCECCB
BEAFFBC62FFCCEAFFCD6EFFCD6ACC4A8D934BC9EC6219B9CD102E1D89626B89D
2B9CAE01B7EE012730022FB00237B0EB6EEA1A5C46EE225374B6036071897562
679125AFE39545F6AD05F3CE6D0268010927C276A1002E90B00A6B012E1CC103
1C8128B8B00BD36A15CC2D0C48C2DFFE81DE0A41B00EAB0F2780291CEB0FB46F
E2CE6911F3C0E472FF66122BB111CBACC94ACC10EA13A62061FA94082D208131
1843419D800EC8C118A8AE038731038F710267A118B78119BB821C6C010748F0
04A7515EE60420F0E5D0981490BA94C27E279D8470C31E81160CC11FEB150A90
302017322E3C0022273222372CAD366C024842C776EC10E86D96F2EDB08EEF1F
6007126F3239F040279BAC276FF22697AC27BBAF289332CB22F1CC76F2279FB2
9CB272288B3239ACC036E002A5E0816A86C835A49D4035C387998A1CA4431B0C
331917F3191B33321F331A8F4193A880A7BEB1035D89486A09D1F484495E6712
F081DA0ADD0879802CC44BF6C96D2303B21D68C14990C01F0F412103B2282872
2233B223F3832408FFB106ECB0256BECF86A8026DBAFFDAA32FDFE733FCF3240
B36C2CD48D1DE48037F0D36B158328722E56AD9214CC03131D241893313137F0
453370461BED456F74327BF430A3711CB0314741730365C2A9EA4121E8288F5A
0B1D2D432508422540024D1BE21240C2127C414E37124F43C122FE3414DC4150
1FC21D1C03331CB528E0022ED0002EA4010A38350D3C402AD0C03148350D1C29
331CA9286475115481247CB524108224C4812120832150023A0A012EA4350F0B
AB5B0FABDF766C265F07278BB25D23312CDFB55EDB755EEB752BEF3560D7AC0B
8844D7FE29882803E79248699CC635A8C82BC5012684B4644F76489F0365B781
655F76656BF66667FF00676B766663F6676336EDCA402AA8006B99B4EB84AD8E
5190D9A22A06E7C17CCA765FD07604D8366ECFF67CCEE73FB0020CD4B0F81EAB
10232B7117B77123AB22246B1077C01F90803A0F413BCBF00B3F4011FCF6DCD6
302447F23E0F343F73B777AF002B77B7FC3A811058810A28803794CF2F3061B2
95E2E00CC05532831C886E1B6400D2763447DB7748DF3747F7377FFFF7307B76
804B368077B480E377811F381AEB43115CC219759B6A478BC0661A099E5B5FEE
368667B8866F785F9443ADD26A2487B8888F38892B421037F71F6B813B27F211
88F07563B226CB3239CCF85FCFB85F7B328DE7388D73728DDB385FB3B28EF3B8
8F934341E3C210A4FF413F76C2DEB03729360313C2F755C212D27E83685B7606
5C797D7FC39567C03758B996D7B7687FC39753B967B3019873F995B3019673B9
659BB9977BF69667809B67399C7F399A5FF997ABB92B30C016A4C13145B8CF34
5FA6DD61CF751A871F3AA277B80D6BC0DF32BAA3373AA43FBAA307B129FC0120
93703B2372A653B70D37320E6B375D9B725EAFB23F933A2C9F7A2C93B240AB7A
A9BF72289FBAA9AF32391083B60AC12D138137980F2B61DCC69422164BB40EC0
520183399987349C9F39B19FF9988F794817FBB13B7BB327FBB10FB867173BB4
573B9863C246B20EA04FCBB5FC840D1081B8AB430080D7E1FD44A2A7BB867B38
0C30030C68C01FC0FFBBBCC73BBDCFBBBDD73BA3FF0032A0333BBB70743F8028
10430DD370754332BD63878EE30039283C0EE078272B3C90CF38C32F3CC5EF38
C43B3C8D4F7CC4E3F8C4437CC6B732C513C327E9A305540A1E28C03034831464
DCC61DA13BBC8026206A1C40409CDFB9CD6B399ED77CCEEB3CCEDBBCCEEFBCCF
6F79CF0FBDD0177DCDEB8369A340EB743BB484D477F4C4D0F884834C3DD557BD
D55FFDD50BAED6A327898BB8227CBD2220C32974C2D863070E1083C4A3FDC2AB
FDD9A73D2BB33DDCBBFDDACB7DDBCFBD27C7FDDCE77DDBF340DD9343E5BE811D
40E5270E915559D5C69D8631B803B0FB5F80DB39B26FF9E3C7797DAFF9E34FFE
B143FEE59FF99A53FF7EE6C3F9E6433E338701EBD01CD343481CEF655FFEC44F
603DEBB77EEB9FE3632EA6EC83ECC786A31374BDD77FBD304009C5777CEF7FFC
C5FBBEF057FCEFFBBEC5173FF27BBCC62F3C0F986622DC8D11B8D67AAFBC1202
4E874143332C5110308021D0FCCF7F3FF887BFF88F3FF98FBF3E30803195BE94
383D498A0706B83EFCC7BF606C3DFDD3643EDF7F24837DD843C9F203040E7202
090E24775020C283060B1654D890A141850F255684A870C5035C242CE021E20D
5A3391CD068C143900A5BB342F623088832943CC0CDF64D26C3333C34D9B3875
CA8CD913284FA13B89E61C6AD46751A0FA8A705041044054A953A956B57A156B
56AD5BB976F50A60FFC70E5BED725D317B05C3D93C2CD8B675FB166E5CB96EDF
1CB07B176F5EBD7985DC15F24643E0C03F34FC305C581136C5C8BE6E8D3871E1
C5C80C71245C78B932C1CA0337677E3CD921C2849DC9117B4063088A2778FA78
FB35E0DA3577EE4E921C408BD6CA540C42D4693325E637363E83FB1C1EF37886
E4C071CA3C4ED37974E4C5A52BAF9E3C794E303A52A998D3187C78F1E3C94B05
E70DFD2F7B48EC415BBF1E498EF8F3E5D7A77FDF7E7EFCF39849EA4F82042B02
B4A2052B043C304000855890C1059D7810C207090B6C9B082D7CC0095CCAA3AA
B4CB20EBF0338488A1C843D022922C34114BB48C45727858A51E5C50E8A80F70
1428A6996B9A51A6FFA4926819A098DC7CD0249522C680093AE26EEA89B8E698
FBC9A824976C8ECA2477BA89BA2A637A92B86FF491E11215C0E964C332CD3C13
CD34AF32028604DA24D0C0168C90B34003E134B0C1060FB0D0896D04FBE18005
031DB4AFBE484093B286325B74331319D52CB24725958C22CD1AF5CC521E16C0
C50E157EF1C6C6617E6C86B666D2E0F1B66206F0E185201830C4959B809B3583
2769BDB5D65CB794C9565E7DDD95D6E17ADD95585D739DD54B195249E38953D4
7C16DA68A5ADCA0218AC85C14E025BD8B6CE6CF1CCD3413E9D98500327F6F24B
0834217208870F16FA80B475C981D7DD75DB3DF15E79F56DB7337ED725261C17
6898B1934E40A265FF479214462948845F48458710C6C0B2562B81CDD2628C2F
D61263646BFA983A5A6742F6CBEEF09816E5945516EF896B13001040398D3042
40986D7EA32E9C737622816D7CF639813FDF6070CFA2CD3D808676628841930D
37A397337AF9851AD37E2B83D7D2A817D53AB30FB0E62CEBABFD9D37DF7EBDFE
201C1A3822021C707E81A6A4520750E6245AECD1ED0406E48069BABE8FB5CE6F
ECA2C355F0C0732D1CF0C49F1436574C18E80EAA95259F9CF2A8AABD568BCC71
31422A1570C91CF4CC8F78E00851461FBD0818AAB8B68A2A8466F0C10A65E799
5CA7B5961A77AFB716FB6BDECD9E1A6CE071EF7A6AE287A7FA6A78891138B527
A6990624914A3D29FFD562A49887C88831C1B2D75D8C656ECAEF7F4D1C719F16
F7D57BF047CE357D5EBD6C4A85932B9F9FFE675B76B3082D86C8BC85CE33DF1F
805A78C0000938C070B8AC4DAE1B4CA00425AE6D4CE80F1B3A1BBD7437C17E4C
706A15C4E0048F57C1766DD0831CFCA008CF96410EEA0E07A6498D05BC410405
4043553A5A1849EC360029B0246247BAD81476011CC60D078887B38E0F8548C4
1FF6B05653B8151B1817855DFC30035150A272901885BF31254C447056FDB8D8
45F154AB1F30E807E83627150BE86F08004C63010BE8A63685518C84318C1360
07A10A3D2801B52B4F098FD72E1888307914FC1A06FD553C1286D0901AECE308
3918B558B8400B9DFF52C0477E8123BA2DCC1DB418060CD330A413E8C01010C0
1570BC07C5201211958A1B1F29A7182CEBB48F56B064DF10ADC314A780C38BB9
D4E5568C908023F8920689A08116D2A0826226E201C7A0C16994F9005114E199
D12C427FAA20890414E1084588C71F90F18737E0C241B3BB631E0313C13D9E10
9D2364243A41C8CE43BED39DE974E70801F6864E3D81086FC3CD25E73612BADD
E686AED2C7379458D0631514A10805E214AC38AB829EF2A0065DA811AD73CA84
4E740A4164C337EAA003A7C86F9721152911E6F18292EAA10691E0C41F4CF183
961A06A63195294C0BF3871D38A01D0E78C01B06280AD23D2075ABB3D6EA2421
180D487082F3522AFF09EFE52EA7C6739D5E9B57521BE954433695AA4D6DEA52
C97636626CE30D89B082028CC0B64AC6466E2329863D8C618087E9400EAE0096
129F58D1213231891355CE14D9F01B5ED555AF1AAD285FED2A58C14EE11B71D8
02079EF009913E56977878C11A5EF0023DE8C1162B35EA6639DB590DFC21080E
704010D848C0232070A810446A3C591BCF2E28B29D517D2D6BD5C9C713D6F603
B32DCD6950A082279CA79274BB641A6CD3B06BF82006A9D81B4D101A0526B2E1
894CA42B7495085D364C77BAC2A2AE7399F8C4EC5AB7BBD7E5E173A30B5EF346
97A1DF1883472D60842D4216BE9503C70B3441DF48D420B37F906361F8BB5FFF
F6B7A6B618AD037CFFDA5302A6EE5AD64A80240E73D473CA7383268C2A3C6D5B
E108F791A9824CA486BDC68F7AA06646A052C02F7E34BD85D9ED6E9A38811CE4
900DBF56573978D5AEB032BA57543EF7A1300E6C8C354AD8E7C638A34094B178
D98009436CE105F18BEF9227D707153C590539B5C509FE504E0DB8E1B357CE32
96ABCC652D6B801241D04324F4E04C33FB5414C410AA828BE0BA2A9B933C679B
6D6EE55C67AFCD19CF76A6F39DF59C673EFF79CF81F6B3A0FB5C671C84236D76
78C21CF00012BAD1869F3CAAA11488A487BDE595C8E7AD2E7AB97B5EE94A31A3
E5153579491DDEF04AD1BB0C956E90D910856F1C990316702C93693DAD16D8A5
2FE7D2F5AE0FF040FFCF76361E64D6C30E5CA30005ACB6B5C956F6B299DDEC78
1243461620AB375E588C47D78624AAEAA48A9961084CF455A2431E2F5E753C64
1A8F5BC8E9E6F1BA7F8CE320F790DC35BEAEAB15FB82C6D61ADFCF32C2A070ED
177FF71BE0FC2694AF7F6DD41F182212640E02389EA0006F48F0B511A7B3C429
3E718B571CE317D778C639BE718F773CE287D6080A90C01A6F0C0336B331094A
7223855AA818AEFA102F4319DA439B4BD1B93D7422CEC7ABF39E5B17E7BB40F5
7669BE73553F71E848AF39CF710E5D4CD4E1046BC065BEA96EA67DF31AEB7B11
C2364CF127AF0F46307F10F60E6C646C64F379CE800679A0D929F109561CD06F
D7B3DC3B4EF73D57FF66E4EDA5360C492237940009376E8DC10942908E73D4EA
BAD7456246599DE3EAAE9AD5CF4D3CE3273FF3C483DAF238766E4641FD782626
36156B300299AA5E7AF15C3DEB58CF75A0085EF0C15062030A3F8FD91F4CF12E
B85DD0B7CFADEE6F1FF1DEE7D9F7B8EFBDC6D14EE8E20F1FF9BC9F38EF7BDF8F
0AD9210D1678826BEC511219F61348F6A08514289D376F2BDE893C14BFD03F7D
F3772F1DDEDE15FACDCDBFF31ED69C87520CAF12C35F74F233D1D54716BDE9F9
CF15141CE108B6E10810A440EA244110840418284FC4859C7EE00F3841058C41
0590200227300291001A8C4D019EA013FAE013FA6043D62EF82E8EF94610F996
0FF8740FED5470E3FF58D0044BB0CE92CFEDBE2A11426CC4A00161F86986008A
48F4261BE08DF22E8AF1AA8B8776C1E6E88F088950BC308FF29850098D50FC2C
2F08274FBDBA63D6FA0F0BAB0205DA0406B6E14EE88466B2A50049005CC2C542
8A4011CAE9D82AE7F7DA5000DA100EDFF00D6F4F0EBB600EE1100FE3300FF7F0
0EE9D00EFFB00EEBD00FEF30106FEFAB0EA0537E61F6864119E4869F06E06E0C
207BE480C6822E0A2E51E8948817C26F1397CE138D2EA378A1D52EF1133331FE
688E173C710A3A5114A5A815978E0DE48003D2E03BB2D016A3620B154C0CB9C5
5BEC840486065C62A74FF0488EE08C726470F7BAA01FE8701999AF0F7FAF1995
B1F990711A6F2F1AFFAFB11AFBB01909B1F704201A77EF19FDB00BF8A10BEAA9
0615D146ECC11E46A2476EA386DC614874200EDAA00DE66D099530FE52B1F2C6
AF09258FE6A6300A8770F3F6D1F31A6FF23021046840053AA1176E310B73B10B
ED845BB6452225920CCB904F0E809C3E8B7E00D123B9F1F740F20FC5710F43D2
0DF150103FF2240B31250B711055321C9C60609060FAAAAD1179E492B2AD188C
01B92CAD0E3061158D2EFC840E135731FED8CFFDE82F153B3129D72FE8E20FD5
EAEF12A36029418D296F0E21D740016AD121F9CF0E5C860486202C676666C2D2
2CC5728D78EA0D9C402D7BC62DB72101AAA0183B321A4BD22EED3219F3302FAB
710FBF110FEBF22EFFFFB2F7F8E1AB0646058C201D7304DB8A4B55DC2A0840E9
373491FEC02F15C92FFEAE6B1315CF282D13FEF4F114770EFC42F33247933341
4DE80C4107ECC002BAB2FFB6D04D8E2074480F00F6277434E7CCCECC8D5CA6A8
CAA9235D52255BB21B3DF2255972247FB338459238933338819339ED50000420
1C1E6085A44D3D1A51364C4224ECA6936200AEEAE01B9812FD2CD129E96AE736
D129339113851213DD8F3DCFB33D8572FD74C1104EC0073890354B0F22138036
B56013A482043EA73671213A0D6C8012EC5A18ACA6E8A7399593418D931B7DB3
411754381D542587D323D1661B124135C1611A5EC81D62A3367C2448A400B952
C1D2666E2AD96F0AFF6661285B942845F1326761FD8E9246D7F30877A11559F4
E66C340A74F4124BE17150001C1AF23EF38D04AE651BD2487FA6222CD1328D48
400B5C60A7A694A7DC2401DCA41F128010684A41E5F039BFD44BC1544CC1D439
C3B44CC9F44BCF744CC5544D9FB34DCD344DE3744DE5944DDDF4D068A053A4EF
6D54053BB313374C85255E251B086A2ADFD3479D92452F71167861FD78615159
14527B545213B54779611321D551DF53512775523DE171C4A448F34D05688054
83699862A0B2E80B624441078E40075855079881191840566795196E41120C21
14B0A9087440188081121860EA28C71BBFB41FE4F058EDF0589F33598B95598D
1559A3F55995555AFF9DD55A97F55AA195599DB359B1D54DADF55BBD954EDD94
183204058C013D5E6824DCA124EA461DDB8ADBC6A01452D44541F33277AE475B
2DF166A1D5DC73FD12D532FFB55F4793479D722A3D014C942C54A96E1ADAC161
DB61A6225662FB4B0738A11DE6C11BE6E11AE66100E6674E05A00AD634649F73
643FD6644F566451566557B66455D634EC0009D2F54F1386242E0961E051C518
A00EB2612A59F452A952527FF6521D355385366827B5688BF6687D3668959669
9F16613F6A61F3CD1B062C08F80BECB2166BB776427E800146EB05ECC1066CA0
1668C16357166DD3566DD7966DD9761B86C9072C001C5C086E3E34446F03251C
1332E96F3D7DD46FFF77EE6F1B7553717451852E7025F51C6414709D484619B5
525B4D4765F4C8EC8D2BA776C9C041B41C2006FEE0CDB2AC733FD77343B7621D
E005A0C106E6611EECE16CDB566D0980755FB76D5D17655DB71C13AD23DC066E
FA94E570031E1FD3DB8832528397538517536781098237538917691F757893B7
5291B714D6EB0564CD72AB77C9C09400C45565B3177BC5947BD754763F367CBB
1776C557005C377BC7177C9F931FC2C19E2CE01746AC927A4461B2B318A0613B
57AC0ED8E01CE8D55FDF13511DB7510B1780772E71FBF73CF9557177815FDD8F
5F77A114E220157C6058ADD78277E97C09007D35388337D88335188441B88343
988445B8843D7884FF4DB8843B38853958853FF8844398854F5800AA214B8309
05A081DA5E8354E8D74F69E11AA48013564C1FCEE11198E0128D96458F380A98
4089A3808999808981B6892F558A9118688D378A8FF85191F88A9B788A1DD513
C0A03B7A41362F188DEB077D67F87CDB788DDF988D4D78865D7885E11885EFD8
8DF3D88EF5388E5BD88E5D388F61C05C55C0D82C00096023446DA33DD220062A
C1070BD57001D78BFB56929BD8928FD789B09828BDD8472FD99289D693271993
852E1B1840137E611AD25895E927865BD9955F199663599667999669B90B7AE6
01ECA007D2B51840B466DD750024913B43A01418CA782D19156681458F579927
399997B947670115FF42999A45B99AAFD99A77A10E18E0057E6195BF79726A59
9CC7999CCBD99C637819D3660808D9D8D4316E6AE3478264DB56CC1330E11239
B999A3199A99F998F9D99AFF199B031AA075A1A35000A4C019A1A3E59C69990C
62B9A117DA951F7A9CC5C0A13598188E20117C207EDDA69763A35D454219D491
163CE955E6350A2AE0111CF58A8DB79F535A8B397913BF58A6B7D88B691A8C6B
1AA76FFAA6E5007212DAA79FE595FD3886853AA821FA9C1F9AA86759A25D3701
6A109FAA8D1D7750244814620CA11438F978B33A8A7901A75FBA8959DA89B5DA
8BB95AA7C3BA8AB31AACC19A8B57BAA362ED0A7F1AAECB830024BAA1EB7AAE41
D8AE35D8AEF7FAAEFFF97AA9FB1AAFC9C0AF017BB0F5FAAE0DBBAE059BB0175B
B0FF9AAF43B8B119BB1F128D90E7C06D06E0434DCC368CE18620460EEAE09E8F
9809469BB4459BB44FDBB48D77B455FBB48FF711D67AB453FB8A633B994B9BB4
8D97A3A28E73E29AB7C723AF015B0C14DBB0191AAF0FBBB821FB847F9B9CE9DA
B81DFBB88BDBB9873B84C3E834C4A446E637AA19A618AC47125DC510FAF7B5BD
1815641AAC6F7AADD39A09C67BB5C37AADCFFB8AD51BADC51AAC754182BDE38C
7B1BBFB7820C823BB805BBBFC5A0BF1B5BC0079CC0079CBF0D7CBF0B9CC0035C
C11BBCC119FCC113DCBF131CC227BCC235F80806061AA6EF17860147B0D31D5B
AE07EB605E2BA0B5FFC37ABD49DBC45B9BB54F3CBD1F61C56721C66D3BB66FDB
C64FDB5335217EEE3BBF7BBC2A0E1CC8259CC2873CC88B9CC81BDBC893FCC80F
5CC0955CC92D7CC9A3DCC929DCA273F917F0E03C7237917F043774430E0C6117
8E5817563AAB477BBCC71CAC477BCC4FFBCC5D5C17C27BBDD79C09C6BCCDD59C
B4C7FC88E5E004148DC77DDCCF0120C14B20D0853CB805BDD007FDD0139D0C0C
7DD11B9BD11F1DD11B5DD1215DB0217DD2237DC22D5DD2375DD33B5DC0FBE101
CED5E1A88F66EBB719ECA118DC41135C450E3CE11C66DBC54FBBC5639DD64D3B
C5693DD61FC113E4600B7CEBCF7F5D2A14BCC21D9CD88BBDC98DDDC1871DD997
9DD8037CD80920C3FFA16F35A6A1C37524276948556E883B99A10E8CB889CD7C
CEC3DDCEC71CCFC53DDCE9FCDCEF3CDDC11DDDED7CDCD37BCEE3C1A37EE1AD81
BDC7C940121A3BDF057BDFF15D0CC401DF2B5DD0F9DDD1FBBBDFFB7DE01B7DD1
4B80E119BEBF139EE1099EDFFF3DE0055EE2FD7DE2C521E22F1EE1233EDF1B5E
DFC900E00F9EE23FBE04FA9D007C29A32789FADE991D6F4354E6210622A1A451
7AB4571CD7735EE7771ED709FA04ECCDDEFF1CD913BED21B9CE88D5DD0935EE1
1D7DE905FCE88BDEE9975EE98BFDE89FBEE91B1DE2A3BE1FA25DDA6C44CBB16D
00A0011AE0D5B3AFDAB4DB1DDEC77BBC8F18BEEB3CDCDBFEED5B5BCEC19DDDE5
DE1096C508EA3DE8FFE33AE241DEEFFB1EF0933EF0175EF00B9FF009BFE10DFF
EF157FF017FFF01D1FF21B5FF2195FF109A008F0D4B75C0307FBC9D4F1560A0C
803BADFAE699C0C4717EF4D3BBF449FFC4E15EF54F9FEEE15DC55B5FF557DC13
4280038C61B7F7BEB729BFEF1F1FEB7D5FE9173FF11F3FF08B3FF8895FF1B17E
F80B7FF9113FF9FDDEF9135FFA0BFF86138190FBC085EC4119A4C024886BBB85
C401F47789C11DBEDDBD02D09EF4C93DEED19DFDD31EDED15DEDD75F3E53F309
741FBF1B5EE325A104341E0400A284B81204074A228830A142840313824078D0
A0C2810F134AB4C850E1C185154B6C2CF1F02248811E497EEC789264C891121B
12807184060A0B78FFBC29B0D7AC993B77CD940D18400B6833039A523130448D
4905A54C9A2E5DEAB4A9D4A752AB5ABD3A152B54ACBA0C9D48030E80D8B164CB
9A3D8B36ADDAB56CDB023076E9928A4F6EEBDA254BC446A646EFDA79BB0B38F0
D98264081B1658187189C289172F169718B2E3858A2736BE6C98B163CD091B77
2EF8B9B264D198278A6B581AA3B89824543C01E70D1ACE9CB49BFDB4472BCD8B
183AE4C4D32515555426C29B0A2F0EF538F1E5CA9B2F37CE3C78F4E3A518A452
81E794E0EDDCBB937D2143068A69DECB1B60572650203DEE1418005B3EBED991
0F4188B37F3AE4FDD305F3D3E7AF1F7EFBE577DF7FF51978DA800A0608A04005
1E689F7D074148DFFF7FFE5188E182163E781F0862149140222A1831476C035C
C3D300B401959B14BBF5068B7115CCB8142A34D6389D53C2DD88A38D333AE723
8DC709C95C1D0C84F10B5DF22DC9645936A493C21A733409D82F99ACA78E26EA
48E100307AD042657C0D919420990E8E39509AFD6554669BFC81861F9BFCB9A9
669A6F9279A79D7566041A686AF649129C73068AA79E208913CE10C6BCE6CD2F
D0A8B8E28AB9F9A0C9097294324B541520F7E323C7794A5C72342AF5E98C4C80
8A0AA84A99AAAAA9A90A478D273AF8804798B696E7430A5192776B5BB404D2C8
3C626DA2402481B02345AFDC81C06C7DCD3E1B21B4D2420B92B4F7494311B3D5
46EB6CB30F4ABBEDFFB6CF863B6DB9E6364BEEB9E7EE07823420F4130E0D3E58
E0CD34B129E3CE35B5FD34401A03CC13831EBE3155C123A1DE68B08D09171CEA
C208377CF0A605D3E830C507CBC1C12FCACAF744C7D33CF1CB13BD88D5C7132A
9CEC8D92647D02B20A9AE813E5942CFFB2860A6B842CD634213F21163821AB9C
B302EE48610F1165C5363434468B6513270D04320F34E04C638C1E653462C32F
0A4CA3C02FE07402401F5D1BDD09380A6C0D406C06A86343330A801DF6D94410
618FD26381038D14D7FCC26B5A1822882EB78746C8A1E08443C8EE83802B8EF8
E185335EE1DFF525DE78E4DA6618E1E0035601030D76D04B84028F36A3EF8A40
E1368F263A84F0DBFF533BBA9E2390A1AE9AA3A9CFB94A3BEE36D6A1831D4F7C
32F2C6DCD9B0C51A3E6C91C2253CE3E14E2432A420C3162A4C295627781C1FBD
0C70C0B106790A8411420A7040AF3C002A8421C31A9F7412C6169718113C0044
CC034C200DB0A3CE589D4063CB3B6594B1081B84050036A8013B1A5006762CC2
0106D083FFAE060C5BFC22128BE0445814A0073D18407E3600C60EA0D1877634
E27F4F8BC42FC0660F5BE8611EEA6007309255364E2C223DC01020DCCE2289FA
E410243B84560E3BD42D20F2905BCC7297344871B91FB64B874C1C22B37AD843
660911044A4C6213A978C52A669189E3C2E2B6A6E82E208AA173899889D9A0A1
0C9DEC6B00C528C6FF00A4502906D44117A21A95EC6477232011294843CAE372
36E51514884C78DC89440AC0C0801B8C4F050008C3F8A20786F1716069C5129F
0C18203EEE9147056080DE161830BE4B80E3139158641A30B986F811F07F3588
4423F4003703CCB00C99A85F196C013675D4AF010D784720DA61033DD8EF698D
88840232D18048180300B5F05F10CA56835B9EAD0681C8C40E5C59063D280000
D7604720805186A7ED0000BFB01A3B361089FF39C01E7E7357119BE5CE25BE73
9EF2AC673CEF09CF7CD2139FFBD4A73DFDC9CF7FF673A0022D6840F15985221C
4144AF7154506C1329DBD8430A36080233EA500A57F9E8554EA991468BE329D8
A5CA549B220E2A6CFFC4C7519574A4BA90430C7E47C8ED6CA193C97BC116BC91
864ECAC03552A029237B1106F1C94505418864F700F0849ABDE6097A801ECF54
80C92D6CE1065BE0D95888608B32BCC318DEB88601FA203FAB2DC200BFF8C50E
7AF95570D8C36965B0813114000E5A203310EA80C62F4258066034A30F4140A0
36BDD1880668A20FF373C72F88000EA705021A0070C70C1B508317B0AD0F3BB8
1A27BA668B062C629C6801011299F559CF360B89A41DAD68435BDACF9262B5A9
152D684DFBDAD79276B5AEAD2D6A616B5BDCDE36B6B9E5ED6E7B0BDCCF8AA10A
0B4581D7CC368C13D52627031846312855898BCEC2751243298FAE8BDDECF228
48DABD9127AE03B4FF98DA251291AC2A397B31D5288D85138A5C0339B5B753B1
18A0BDD41B8B31C200CA14680C00F300031860E65EB24CA31DBC74C036C3C65F
FB711600F6A0433697668006FC619939DB40031A9186B10C40AB2F98C622021B
C05F20305964A1853A16C1CB6536831EFF334027B806D8BC92D518956D0030FC
46CF67B933B4E5FAAD6C4FBBE3784E8BC7A785166977AC632243EB88B5ED316E
D5E5592143595AC495890AC071465A2CD736B468E3357CC09B39EEB1A4A4AA2E
75CB8C6689A57948365A3375AB23C81B8AB72EE90DB058A6BAD3E0F5140E97E8
434E53B005B012707B6BA8D51CCEF7491944320556054710B667DEB218230807
ACC13C96E680A7E5FF2F6791B8F0816B814077C04D01166E048901300D70B603
1A6508023577300F1B6BAC0FB470801E80018C0396014CCD404F2406C860FB6D
C0161F1EE63BFC365B528C83B4E328006D59EBD9D52E9B14CE4EADB459DBEC6B
8BB6DA456E2D12AB3D6D65437BB5D59636B7BD1DED73475BDCAC25F7BABB7DDA
67C3DBDDE82EAD1812E0B934BC4674C3C8094FD2E80E5AD8C31E69F0413B9811
8F5274D4CC15D8C38F24D65DEC3A5C48108FF849E5900AF8CC79BC3788EF58B4
970215C0AD19E59DC31A8C5A2B00BC409197984627F60C872D54F40621CF5918
6E4055469EC506286E803AC272D640D8407F160EC4816DC04B7708DA1BC87CC7
A90190596038AD19FFEA78C7661B1084BF48E18081A8412DD4C14B7636C37F9C
581A006811CE0DEC801D0AC47524D2428A23529BB505C8760198ACEC723BBBEE
7BB73BDEE55E7766F77DF0D4B6BBE109CFF7C2EF9DEE878F32B90F3FF7C7231E
F28927F76A014FF9CCAF561C0A15D11CEC050D5AF08427B42986C09501661D18
22A51BB56EC48574D2EEC63E8FB397982E3C71240BA872E36BC1B3CEEF4C73F5
89E5E47CEE840F687E09EACDA3BD65D3031CC0A0F347335A2C69588422B92767
0074026CD0E874195E000075A4C70163F1868517F117668E78D49D7EC706C762
8340E4B50C48B0C70C81E1732274E2AC659807D862BD6B00D00CCF50060E006C
D0603FB6B035E030FF37730377966779052081ED466D13588115B877164881CE
460874378112988121888123088224A881E4F681E53677255882ED26811D4808
2928822DA88133288326C881C49508FA360D44F00BF6A022A5930629627A52C0
1B94E009DCD570AEE7704DD8704FD8844C08855088520EE7060F870A134723F1
A00385165EBC87167A4073BF070041C07270638637E05EFD1573E4E10D61000B
37700967B708311716C6905E1A33415495481E9733B4202C61636135D007BF70
407A0061E11409BC82740DA0744C834C0D500B4C434EF8F7340AD0079900080D
00082EE60D7AA0597FA10004D600621700AD066C0AF00E9A750D633151147616
B3A5772BB881B418FF8191177920B078BB488BB3A882BD088CBC288CF2768B8B
578CC1088C2E486DEB968CB6487773270D30806F286004A8263A03902FFB2270
CD006627701449F170145785B1B70759B8846656854B187B3E528E0CA7851580
7B9AF00BF505866911091D67676F11497CD63E38377DB4B08F6110095BA00760
A08625538760803E5B708F70C0336608072A600191240382A67D9CB01E9CC009
AB680B2ED70EE154030ED00E5C070D7063039B28057043049CB089C0D00EB660
0B5F63610DA0077F418A81A03178905965B0037A10093B900B8EC84D01D000ED
006C4490699AD50E9C90559130746831771D788CBF688C51E98CC3B8781D5895
55798B5A898C5E99FF95B8C88B60F98C58898CC7A88CBE588B8B370E63241353
C335BF207AFA9246B6D146435314DF4847E618856E90857FE98456F8977E598E
57188585C9974B489854880A816455F59816625873FAE30306897338B7537401
0E37779932A0090679537DC05E3807074160038A640CD04091620191A934162F
C04B9B08087A600F60338A81109441893F64D1885220689DF00B35C08941A907
61C1560E603406B08AC529162F10089BF803ED300F81A001C23200A76894FAA3
0041B08AB9D9003BF07465117862697869996D79A77865A979E9A977E7C97892
C79ED39678F3B96C9E259F901781993779D8D677E6096E5C599E05A004D5806F
BE33077D60365A46FF7A39410B5D46702F22477B1985D5B58E87695D175A8E13
87A1E70898EA880A9E50041C303D90991606100637631688163D724116BFA009
522517E0B00697B00617D43EEEF304DE10174F600C33AA737041A337A4001515
091BE0006072552FD00EE8140406D03700000D0EE000FBA5619C100991D00EBE
F9161A992469530B0EF08800000E36B0A4533A0D3670A40030A40E90064F2AA6
3E704D1B10049C70586921A020A804ACA5042DB85A7B2A8179EA827AE7A7BFA8
A7788AA785FAA7869AA87A77A77F4A817D7AA81E78A730B881025AA8923AA879
0A838ADAA81E4877996AA85540036BF004D380A072493A5BA6652E12300C9084
56488581B9848739FFABB52AAB196A8E86D9A16E000B60900A6B508D242AACC3
BA24D9D71D20C8A72BC8A82C88AC16E8A718C8A7CD8AAC922AADCC5A6DD58A82
28D8ACDA1A832AB86E9D1A79D64A83D32AAD9E0A81D0FA82E2806F3EA00053C2
35CAA00CA52329FD923ADE180FE6785219EAA1B8AAAFFC7A5280F997F90AB0FC
AA8EF1C0009A303DBB47AC0BCBB073C6A97B0AA878AA0410FBB01338B1790AAA
8BDAA8E05A81196BA914ABB1194B0A18BBB1AB1583173BB2162BB18B9AB2CEE6
B1A00AA9216BA8111BB2D1282FF328A6BFE0460B6A1B409106B44029DE5807D4
40ABFE6AB4B33AB0497BB416DA980CE0034F60AC0D2BB5531B266870A7568BAC
79EAB21B4B0884F0FFAC05400868E0B5776A795F8BA7615B815DABB515880626
38A862BBA7589B82564BB1717BA8564BB70590B719A8B537F8AC7BDAAD291883
1768AD61ABB71BFBB7613B0E9DF339783007A1630FC510293F2170C6004727A0
7A444B8EFFBA29469BB49B22B0ED08B0A1EBA19B827B3160011649B5AB0B867D
10B55472B1B12BBBB38B06628B064A60BB621BB65E8BBBB53BBBB2ABB6131BB6
B81BB6B7DBBBB98BBCBBCBBBB5CBBBB16BBBCEABBBCDFBBB175BBC702BBCB5FB
BC4A30BCDACBBCD55BBD13CBBCD6DBBBCBBBBD132B0DC4258FB5A233A697463F
D1B341410B06600395C000F1D0707B90A1F8CB9759B8078BD9AFFCEBBFFB8BBF
FFDB84FD0B0B86F0FFABAA3BAC9DE00DC096B366F76216D907D340C10286042E
1736A67A55BF907E6133371AAC7D66D337A1A3C039C32B84451E82160DDEE00D
16E983C0D609A173437DF0173D6891C3509241035762110DAEBBC1C0160D206C
8D07761675ABB7B87BB5137BB5C1BBBBB7EBB527BBBB466CB7C28BBB4A7001D7
6BB8DCDBC45BFCC44A6CBB770AB151BCC44F0CC6659CB7B63BBC78BBC580EBC5
C3EBB5680CB77AEBC64B4CB7624CC53A4813A7103AD0500C3C8B8DCD500C1335
0F1675AF9E8BAB84A9B4A880C8870CC0898CBFB0C03B76E0C0C35A0C938004D5
A300F3300906907E0A500C548A04C5700DCAC02BDE6000D7E00DB62905FBA500
CAB0C9A99C369A3CFF0FB0EC0DB560036FA3A6B5E0A466010EF0CA3493500B70
0536BF500BF380C10A700D3630CB6053CB9340CA62F10BA340CCB530407D300A
937037B5300907263A7FC1C0F3A00C443C0C51037FB5A00C69D1B584700168B0
CEEBFCC4EC0CCF57DCB5EEACB6E90CCFE9DCB5EC5CCFF1CCCFF28CCFF5FCCFB9
2BCFECACBDFF4CCF61DBCE058DD0F79CCEEEACD0057D01DF9BCEC7CBBDD1FBCF
F8CCBDFE1CD1D88BCFFC4C08E3A0832AA07F628304CD2005AA8A8D2ED20E3A60
BF56D8BF2FED06302DD3318DBF31ED06370DC0332DD3F9CBABB0C0001C60019F
A01DC43A09AF300FD11036DCA0D4D72C16C5C00DAD2816B5C00DA3900FB05CD4
D080C1D7900F9308FF0093209D9C706950FA0ACE9009C3201648E00CF9B05FD0
9009DCD0C163A100A3C00D62310C99B00EB57042FCD5D6BC3209F9700DAF700D
468304AFD0D6DBD409D750083640D6FB159CF930409DB001F9B034C560038C35
0D7D3D0FBF390A99F07E7DF00A468DCE60ABCEA31DD15E1BD1A74DDAA95DDAA9
3DCFAAEDDAA82DCF60ABBD05B0DA64DCDAB0ADCEB26DDAAFFDDAB37DDBAE8DCF
B08DC416EDDB56ACB61ACDDA5DABDBAE8D0620BD505660042F161B5BC65C3E9B
7AF1400D9DABBF36DDC8DC4DD38ADCBF8309DE7E49DEE3DDDD8D990A3E90320B
3B0DDC3009B3360AB550C9730D00C3300950CD5F93300AA33040EA900F64A10C
A370CE0070CDC43CFF094613CD847DC90030D86E5D3DD0900FC3907D0A3009F4
8D049BEDD8FFF70ADC20684A0D0EF18DE09F6DCC00100DCAF00AF9F00AD22C16
459D09F8CDD4747D0D8C4504DC7059D5030E84FD7E6A3A0AAF80CEF3DCCFB6DB
CE3F1EE4F67CD0426EE407DDD1B59DE43FDED147CEE40D7DE44B1EE4ED7CD1F9
5CDAFA3CE5FA7CD159DECE17000A47700982D40734EC5C3B21AF5C467006E000
3A4009BA50D3FD7BD3370DE7714EE7733EE7745EE7787EE7BC8A716930070A0B
86BF6003EFAD7D957CCD664D4EC03C40BFD0D7932068953C0FB86CDF035EC993
300920444E52BD010BFE0BF910E939A30CDC500C0AEC0DC04CD7F3B0DFE9770D
EF0D3703C00D527DFF57E4E4DEB71C36C3E0E9C0AC319D20D52FDED581484E64
45E248F0EA7F110D4EEDE94653884ADDE3AB8DDBCD2ECFCDCEDBD02EED060DDC
0D9DDA568CDBBF3DEDD27E01A7DDEDD1AECEDF9EEDA3DDDAC15DEDDA9EDAE310
13AE310725127A750929CC65D206C01BF66BD33A7DEFF98EEFFBAEEFF96E080C
6007D9C1BA034FF082D1BBDE5EBBDD9EF0A41DD1B8DBEDEB8CE5AAFDF0134FF1
155FF1CC4BF10C3FF113ABF0EC3CF1EA8CBD164FF11E2FF2E21EEEDE5EF229AF
F22B3FF1A0308D16B07D3ED36F6A643A6990060660514851D3798EE7362DE771
BEE73D6FE7407FD3B0200761003F05AFF44BBF16CD46F216AFF1D80EF5B0CDF2
559FF1285FF24F6FFFF556AFF11ABFF55FAFF21FAD509FF30984253A0ABA46B8
41EF96E2093312E78A2CF4DECDF33D4FF4E66DD3B0100FA980CB4CCFF77D0F00
45300E526FF1B750F5277FF2603FF8157FF888CFF8226FF88D0FF9835F055B60
075E43C15DF350DA387052C00996120F740FFAA12FFAA30F0B3A70657E8FFA4A
7F04801F0C841FF9AF0FFBB12FFBB3BFF55D0B1376801D61D3283B1BEF40F128
DD2807D430FAC34FFCA00F0B27F0B45F98FACBBFB09502F8B44DF1AECFF2D23F
F1D26FFD564FFD2A7FFD29BFFD1790FDDDFEFDDEAFFDD8FFF0DD1FFEE75FF121
6D04636E13926B1B0007147DCCF996020BC56FFFC56FF461900629C7FC000140
E04082050D1E4498FF50E142860D1D3E2C682051AA2355C659BB708BD0858C1D
39DEF2C8B123489017368EE4B8919046932D45963CE9B264CA8F23637AC49892
A4C7933B77FA11E9B2E6D095288516050AB3A64F944C45F60C49A8C891352A8C
74EA434441315ACDBC0E68464BEC0003314EC841B5678F1BB66DDDBE851B576E
5B58B00CE958F304E25EBE7DFDFE051C58705F7B3E34510C318EA39F5BB74231
060AF98264CA8D4335762C99E4E5979635DF8A8CB971D2C6933D83CE78FAA365
CCA633B346FD993448C68E475F46BD79B4EBC7B961BF9E8D3B786BC6A1AA1C49
8402DC2600447ED9A3A54C99BBAF03A01BE0A4231EACB57035CC05FF1D7C5B39
A97E0D469F5EFD7A67F6ED0742B327C507875445AA2C9D9CF171C7A49C99FE6C
2A3FA69212B0C0FE00A4AD29CEF043D040FD1A6CF040FE022490C0FF0A047031
0A2F38A38A049203A797E614B067007794F1AA99018A81A61829CC9283BBF166
A4F1AD784E48C33D1D77E4B1C7F50202003B}
end
end
object bAceptar: TButton
Left = 344
Top = 367
Width = 75
Height = 25
Cancel = True
Caption = '&Aceptar'
Default = True
ModalResult = 1
TabOrder = 1
end
object memModulos: TMemo
Left = 128
Top = 112
Width = 289
Height = 233
BevelInner = bvNone
BevelOuter = bvNone
BorderStyle = bsNone
ParentColor = True
TabOrder = 2
end
end

View File

@ -1,47 +0,0 @@
unit uAcercaDe;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JvGIF, ExtCtrls, JvExControls, JvComponent, JvGradient, StdCtrls;
type
TfAcercaDe = class(TForm)
JvGradient1: TJvGradient;
Panel1: TPanel;
Image1: TImage;
Bevel1: TBevel;
bAceptar: TButton;
memModulos: TMemo;
procedure FormShow(Sender: TObject);
end;
implementation
{$R *.dfm}
uses JclFileUtils;
procedure TfAcercaDe.FormShow(Sender: TObject);
var
Obj : TJclFileVersionInfo;
begin
memModulos.Lines.Clear;
Obj := TJclFileVersionInfo.Create(Application.ExeName);
try
with Obj do
begin
memModulos.Lines.Add(ProductName + ' - Versión ' + FileVersion);
memModulos.Lines.Add(CompanyName);
memModulos.Lines.Add('');
memModulos.Lines.Add('Se autoriza el uso de este programa a:');
memModulos.Lines.Add('CONSTRUCCIONES CNJ S.A.');
end;
finally
FreeAndNil(Obj);
end;
end;
end.

View File

@ -1,325 +0,0 @@
object dmServer: TdmServer
OldCreateOrder = False
OnCreate = DataModuleCreate
OnDestroy = DataModuleDestroy
Height = 307
Width = 382
object HTTPServer: TROIndyHTTPServer
Encryption.UseCompression = True
Dispatchers = <
item
Name = 'BINMessage'
Message = BINMessage
Enabled = True
PathInfo = 'Bin'
end>
OnBeforeServerActivate = HTTPServerBeforeServerActivate
IndyServer.Bindings = <>
IndyServer.CommandHandlers = <>
IndyServer.DefaultPort = 8099
IndyServer.Greeting.NumericCode = 0
IndyServer.MaxConnectionReply.NumericCode = 0
IndyServer.ReplyExceptionCode = 0
IndyServer.ReplyTexts = <>
IndyServer.ReplyUnknownCommand.NumericCode = 0
Port = 8099
Left = 40
Top = 16
end
object BINMessage: TROBinMessage
Left = 136
Top = 16
end
object IBXDriver: TDAIBXDriver
Left = 304
Top = 16
end
object DriverManager: TDADriverManager
DriverDirectory = '%SYSTEM%\'
AutoLoad = False
TraceActive = True
TraceFlags = [toPrepare, toExecute, toFetch, toError, toStmt, toConnect, toTransact, toBlob, toService, toMisc, toParams]
OnTraceEvent = DriverManagerTraceEvent
Left = 136
Top = 80
end
object ConnectionManager: TDAConnectionManager
MaxPoolSize = 10
PoolTimeoutSeconds = 60
PoolBehaviour = pbWait
WaitIntervalSeconds = 1
Connections = <
item
Name = 'IBX'
ConnectionString =
'IBX?Server=localhost;Database=D:\Proyectos\FactuGES (Luis Leon)\Codigo' +
'\BD\FACTUGES.FDB;UserID=sysdba;Password=masterkey;Dialect=3;Char' +
'set=ISO8859_1;'
Default = True
Tag = 0
end>
DriverManager = DriverManager
PoolingEnabled = True
Left = 40
Top = 80
end
object JvAppRegistryStorage: TJvAppRegistryStorage
StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
RegRoot = hkLocalMachine
Root = 'Software\%APPL_NAME%'
SubStorages = <>
Left = 304
Top = 208
end
object JvLogFile1: TJvLogFile
FileName = 'serverlog.txt'
AutoSave = True
Left = 248
Top = 208
end
object DBSessionManager: TDADBSessionManager
SessionDuration = -1
OnSessionCreated = DBSessionManagerSessionCreated
OnSessionDeleted = SessionManagerSessionDeleted
Schema = schSesiones
FieldNameSessionID = 'SessionID'
FieldNameCreated = 'Created'
FieldNameLastAccessed = 'LastAccessed'
FieldNameData = 'Data'
InsertSessionCommand = 'Insert_Session'
UpdateSessionCommand = 'Update_Session'
DeleteSessionCommand = 'Delete_Session'
ClearSessionsCommand = 'ClearSessions'
GetSessionCountDataSet = 'GetSessionCount'
GetSessionDataSet = 'GetSession'
Connection = 'IBX'
Left = 48
Top = 216
end
object schSesiones: TDASchema
ConnectionManager = ConnectionManager
Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL = 'SELECT'#10' COUNT(*)'#10' FROM'#10' Sessions'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'GetSessionCount'
Fields = <>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item
Params = <
item
Name = 'SessionID'
DataType = datString
Size = 38
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
SQL =
'SELECT'#10' SessionID, Created, LastAccessed, Data'#10' FROM'#10' Ses' +
'sions'#10' WHERE'#10' SessionID = :SessionID'
StatementType = stSQL
ColumnMappings = <
item
DatasetField = 'SessionID'
TableField = 'SessionID'
end
item
DatasetField = 'Created'
TableField = 'Created'
end
item
DatasetField = 'LastAccessed'
TableField = 'LastAccessed'
end
item
DatasetField = 'Data'
TableField = 'Data'
end>
end>
Name = 'GetSession'
Fields = <
item
Name = 'SessionID'
DataType = datString
Size = 38
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = True
Calculated = False
Lookup = False
LookupCache = False
end
item
Name = 'Created'
DataType = datDateTime
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end
item
Name = 'LastAccessed'
DataType = datDateTime
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end
item
Name = 'Data'
DataType = datBlob
BlobType = dabtBlob
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end>
Commands = <
item
Params = <
item
Name = 'SessionID'
DataType = datString
Size = 38
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end
item
Name = 'Created'
DataType = datDateTime
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end
item
Name = 'LastAccessed'
DataType = datDateTime
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end
item
Name = 'Data'
DataType = datBlob
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
TargetTable = '[TABLENAME]'
SQL =
'INSERT'#10' INTO Sessions'#10' (SessionID, Created, LastAccessed, Da' +
'ta)'#10' VALUES'#10' (:SessionID, :Created, :LastAccessed, :Data)'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'Insert_Session'
end
item
Params = <
item
Name = 'LastAccessed'
DataType = datDateTime
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end
item
Name = 'Data'
DataType = datBlob
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end
item
Name = 'SessionID'
DataType = datString
Size = 38
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
SQL =
'UPDATE'#10' Sessions'#10' SET'#10' LastAccessed = :LastAccessed,'#10' ' +
'Data = :Data'#10' WHERE'#10' SessionID = :SessionID'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'Update_Session'
end
item
Params = <
item
Name = 'LastAccessed'
DataType = datDateTime
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
SQL =
'DELETE'#10' FROM'#10' Sessions'#10' WHERE'#10' LastAccessed < :LastAcces' +
'sed'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ClearSessions'
end
item
Params = <
item
Name = 'SessionID'
DataType = datString
Size = 38
BlobType = dabtUnknown
Value = ''
ParamType = daptInput
end>
Statements = <
item
Connection = 'IBX'
SQL = 'DELETE'#10' FROM'#10' Sessions'#10' WHERE'#10' SessionID = :SessionID'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'Delete_Session'
end>
RelationShips = <>
UpdateRules = <>
Left = 48
Top = 160
end
end

View File

@ -1,261 +0,0 @@
unit uDataModuleServer;
interface
uses
SysUtils, Classes, uDAEngine, uDAIBXDriver, uDAClasses, uDADriverManager,
uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer,
uROSessions, uDADataTable, uDABINAdapter, IBSQLMonitor, JvComponent,
JvAppStorage, JvAppRegistryStorage, uDAInterfaces,
JvComponentBase, uDAADODriver, uDADBXDriver, uROEventRepository, JvLogFile,
uRODBSessionManager, uDADBSessionManager, SyncObjs;
const
SERVER_PORT = '8099'; // Puerto por defecto
DBSERVER_PORT = '3050'; // Puerto de la BD por defecto
SESION_LOGININFO = 'LoginInfo';
type
TdmServer = class(TDataModule)
HTTPServer: TROIndyHTTPServer;
BINMessage: TROBinMessage;
IBXDriver: TDAIBXDriver;
DriverManager: TDADriverManager;
JvAppRegistryStorage: TJvAppRegistryStorage;
JvLogFile1: TJvLogFile;
DBSessionManager: TDADBSessionManager;
schSesiones: TDASchema;
ConnectionManager: TDAConnectionManager;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure HTTPServerBeforeServerActivate(Sender: TObject);
procedure DriverManagerTraceEvent(Sender: TObject; const Text: string;
Tag: Integer);
procedure SessionManagerSessionDeleted(const aSessionID: TGUID;
IsExpired: Boolean);
procedure DBSessionManagerSessionCreated(const aSession: TROSession);
private
fCritical : TCriticalSection;
FConnectionName : string;
function GetConnectionString: string;
public
FDBServer : string;
FDBPort : string;
FDBPath : string;
FDBUser : string;
FDBPass : string;
FInicioWindows : Boolean;
FServerPort : string;
procedure LeerConfiguracion;
procedure SalvarConfiguracion;
procedure RefrescarConexion;
property ConnectionName : string read FConnectionName write FConnectionName;
end;
function DarRutaInformes : String;
function Encrypt (const Source : string) : String;
function Decrypt (const Source : string) : String;
function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer;
var
dmServer: TdmServer;
implementation
{$R *.dfm}
uses
DateUtils, JclFileUtils, ActiveX, Forms, Registry, Windows, Dialogs,
uSesionesUtils, uServerMainForm;
function DarRutaInformes : String;
begin
Result := ExtractFilePath(Application.ExeName) + 'Informes' + PathDelim;
end;
function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer;
var
ds: IDADataset;
begin
ds := AConnection.NewDataset(Format('SELECT Gen_id(%s,1) FROM RDB$Database', [GeneratorName]));
ds.Open;
result := ds.Fields[0].Value;
ds.Close;
end;
procedure WriteAutoRun(Name, Value : String);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := False;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
reg.WriteString(Name, Value);
reg.CloseKey;
finally
reg.free;
end;
end;
procedure DeleteAutoRun(Name : String);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := False;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
if reg.ValueExists(Name) then
reg.DeleteValue(Name);
reg.CloseKey;
finally
reg.free;
end;
end;
function Encrypt (const Source : string) : String;
var
i:integer;
begin
Randseed := 28;
Result := '';
for i:=1 to length(Source) do
Result := Result + chr(ord(Source[i]) + Random(10) + 1);
end;
function Decrypt (const Source : string) : String;
var
i : integer;
begin
Randseed:= 28;
Result := '';
for i := 1 to length(Source) do
Result := Result + chr(ord(Source[i]) - Random(10) - 1);
end;
procedure TdmServer.DataModuleCreate(Sender: TObject);
begin
fCritical := TCriticalSection.Create;
LeerConfiguracion;
RefrescarConexion;
JvLogFile1.Clear;
end;
function TdmServer.GetConnectionString: string;
begin
Result := 'IBX?Server=' + FDBServer + '/' + FDBPort
+ ';Database=' + FDBPath
+ ';UserID=' + FDBUser
+ ';Password=' + Decrypt(FDBPass)
+ ';Dialect=3;Charset=ISO8859_1;';
end;
procedure TdmServer.LeerConfiguracion;
begin
with JvAppRegistryStorage do
begin
FDBServer := ReadString('ServerDB', 'localhost');
FDBPort := ReadString('PortDB', DBSERVER_PORT);
FDBPath := ReadString('PathDB');
FDBUser := ReadString('UserDB', '');
FDBPass := ReadString('PassDB', '');
FServerPort := ReadString('ServerPort', SERVER_PORT);
FInicioWindows := ReadBoolean('InicioWindows', False);
end;
end;
procedure TdmServer.SalvarConfiguracion;
begin
with JvAppRegistryStorage do
begin
BeginUpdate;
try
WriteString('ServerDB', FDBServer);
WriteString('PortDB', FDBPort);
WriteString('PathDB', FDBPath);
WriteString('UserDB', FDBUser);
WriteString('PassDB', FDBPass);
WriteString('ServerPort', FServerPort);
WriteBoolean('InicioWindows', FInicioWindows);
if FInicioWindows then
WriteAutoRun('AdminPV_Server', Application.ExeName)
else
DeleteAutoRun('AdminPV_Server');
finally
EndUpdate
end;
end;
end;
procedure TdmServer.SessionManagerSessionDeleted(const aSessionID: TGUID;
IsExpired: Boolean);
var
aSession : TROSession;
idx: integer;
begin
fCritical.Enter;
try
idx := fServerForm.ListBox.Items.IndexOf(GUIDToString(aSessionID));
if (idx>=0) then
fServerForm.ListBox.Items.Delete(idx);
finally
fCritical.Leave;
end;
// if (csDestroying in ComponentState) then Exit; // See destructor
aSession := DBSessionManager.FindSession(aSessionID);
if Assigned(aSession) then
SesionesHelper.DeleteSessionObject(aSession, SESION_LOGININFO);
end;
procedure TdmServer.DataModuleDestroy(Sender: TObject);
begin
FreeAndNIL(fCritical); // This executes before the SessionDeleted event!
DBSessionManager.ClearSessions(False);
HTTPServer.Active := False;
end;
procedure TdmServer.DBSessionManagerSessionCreated(const aSession: TROSession);
begin
fCritical.Enter;
try
fServerForm.ListBox.Items.Add(GUIDToString(aSession.SessionID));
finally
fCritical.Leave;
end;
end;
procedure TdmServer.DriverManagerTraceEvent(Sender: TObject; const Text: string;
Tag: Integer);
begin
JvLogFile1.Add('', Text + #10#13 + #10#13);
end;
procedure TdmServer.RefrescarConexion;
begin
HTTPServer.Active := False;
ConnectionManager.Connections.GetDefaultConnection.ConnectionString := '';
ConnectionName := ConnectionManager.GetDefaultConnectionName;
ConnectionManager.Connections.GetDefaultConnection.ConnectionString := GetConnectionString;
CoInitialize(nil);
HTTPServer.Active := TRUE;
end;
procedure TdmServer.HTTPServerBeforeServerActivate(Sender: TObject);
begin
HTTPServer.Port := StrToInt(FServerPort);
end;
end.

File diff suppressed because it is too large Load Diff

View File

@ -1,122 +0,0 @@
unit uServerMainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer,
uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, frxClass, frxPreview,
JvComponent, JvTrayIcon, ActnList, Menus, XPMan, JvExControls,
JvGradient, JvGIF, ExtCtrls, JvComponentBase, JvLogFile,
uROSessions;
type
TfServerForm = class(TForm)
PopupMenu1: TPopupMenu;
ActionList: TActionList;
actCerrar: TAction;
Cerrar1: TMenuItem;
actRestart: TAction;
actOpciones: TAction;
actConexiones: TAction;
Opciones1: TMenuItem;
Refrescarconexin1: TMenuItem;
N2: TMenuItem;
XPManifest1: TXPManifest;
JvTrayIcon: TJvTrayIcon;
Panel1: TPanel;
Image1: TImage;
JvGradient1: TJvGradient;
actAcerca: TAction;
Acercade1: TMenuItem;
N1: TMenuItem;
ListBox: TListBox;
Button1: TButton;
Button2: TButton;
procedure actCerrarExecute(Sender: TObject);
procedure actRestartExecute(Sender: TObject);
procedure actOpcionesExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure actAcercaExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fServerForm : TfServerForm;
implementation
uses
uDataModuleServer, uConfiguracion, uAcercaDe;
{$R *.dfm}
procedure TfServerForm.actCerrarExecute(Sender: TObject);
begin
Close;
end;
procedure TfServerForm.actRestartExecute(Sender: TObject);
begin
dmServer.RefrescarConexion;
end;
procedure TfServerForm.Button1Click(Sender: TObject);
var
ASession : TROSession;
begin
ASession := dmServer.DBSessionManager.FindSession(StringToGUID(ListBox.Items[0]));
if Assigned(ASession) then
ShowMessage('Session ' + ListBox.Items[0] + 'encontrada');
end;
procedure TfServerForm.Button2Click(Sender: TObject);
begin
ShowMessage(IntToStr(dmServer.DBSessionManager.GetSessionCount));
end;
procedure TfServerForm.actOpcionesExecute(Sender: TObject);
var
AForm : TForm;
begin
AForm := TfConfiguracion.Create(NIL);
try
AForm.ShowModal;
finally
AForm.Free;
actRestart.Execute;
end;
end;
procedure TfServerForm.FormCreate(Sender: TObject);
begin
//JvTrayIcon.HideApplication;
JvTrayIcon.Hint := 'FactuGES (Servidor)' +
#10#13 + dmServer.ConnectionName;
JvTrayIcon.Active := True;
end;
procedure TfServerForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
JvTrayIcon.Active := False;
end;
procedure TfServerForm.actAcercaExecute(Sender: TObject);
begin
with TfAcercaDe.Create(NIL) do
try
ShowModal;
finally
Free;
end;
end;
end.

View File

@ -1,94 +0,0 @@
unit uUsersManager;
interface
uses
uROSessions, FactuGES_Intf, uSesionesUtils, uDataModuleServer;
type
TUserInfo = class(TObject)
private
FSession : TROSession;
FLoginInfo : TRdxLoginInfo;
function GetLoginInfo: TRdxLoginInfo;
procedure SetLoginInfo(const Value: TRdxLoginInfo);
function GetEsAdministrador: Boolean;
function GetEmpresas: String;
public
constructor Create(ASession : TROSession); overload;
constructor Create(ASessionID : TGUID); overload;
destructor Destroy; override;
property LoginInfo : TRdxLoginInfo read GetLoginInfo write SetLoginInfo;
property EsAdministrador : Boolean read GetEsAdministrador;
property Empresas : String read GetEmpresas;
end;
implementation
uses Classes, srvLogin_Impl, SysUtils;
{ TUserInfo }
constructor TUserInfo.Create(ASession: TROSession);
begin
FSession := ASession;
FLoginInfo := TRdxLoginInfo(SesionesHelper.GetSessionObject(FSession, SESION_LOGININFO));
end;
constructor TUserInfo.Create(ASessionID: TGUID);
begin
Create(dmServer.DBSessionManager.FindSession(ASessionID));
end;
destructor TUserInfo.Destroy;
begin
inherited;
end;
function TUserInfo.GetEmpresas: String;
var
I: Integer;
AList : TStringList;
begin
Result := '';
AList := TStringList.Create;
try
AList.Sorted := True;
AList.Delimiter := ',';
AList.Duplicates := dupIgnore;
for I := 0 to FLoginInfo.Empresas.Count - 1 do
AList.Add(IntToStr(FLoginInfo.Empresas.Items[I]));
Result := AList.DelimitedText;
finally
AList.Free;
AList := NIL;
end;
end;
function TUserInfo.GetEsAdministrador: Boolean;
var
I: Integer;
begin
Result := False;
for I := 0 to FLoginInfo.Perfiles.Count - 1 do
if FLoginInfo.Perfiles.Items[I] = PERFIL_ADMINISTRADORES then
begin
Result := True;
Break;
end;
end;
function TUserInfo.GetLoginInfo: TRdxLoginInfo;
begin
Result := FLoginInfo;
end;
procedure TUserInfo.SetLoginInfo(const Value: TRdxLoginInfo);
begin
FLoginInfo := Value;
SesionesHelper.SaveSessionObject(FSession, SESION_LOGININFO, FLoginInfo);
end;
end.