1、增加 Embarcadero.Delphi.10.1.Berlin.Activator.v13.2

This commit is contained in:
Lsuper 2017-03-25 14:13:13 +08:00
parent 1b87b746fb
commit 5d3ba2753a
32 changed files with 9778 additions and 0 deletions

View File

@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<PersonalityInfo>
<Option>
<Option Name="Personality">Delphi.Personality</Option>
<Option Name="ProjectType">VCLApplication</Option>
<Option Name="Version">1.0</Option>
<Option Name="GUID">{5CDEFC4B-53B9-445E-9A4F-AE44E310FA07}</Option>
</Option>
</PersonalityInfo>
<Delphi.Personality>
<Source>
<Source Name="MainSource">Activator.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">0</Compiler>
<Compiler Name="D">0</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">1</Compiler>
<Compiler Name="K">0</Compiler>
<Compiler Name="L">0</Compiler>
<Compiler Name="M">0</Compiler>
<Compiler Name="N">1</Compiler>
<Compiler Name="O">1</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">0</Compiler>
<Compiler Name="Z">1</Compiler>
<Compiler Name="ShowHints">True</Compiler>
<Compiler Name="ShowWarnings">True</Compiler>
<Compiler Name="UnitAliases">Classes=;mirror=</Compiler>
<Compiler Name="NamespacePrefix"></Compiler>
<Compiler Name="GenerateDocumentation">False</Compiler>
<Compiler Name="DefaultNamespace"></Compiler>
<Compiler Name="SymbolDeprecated">False</Compiler>
<Compiler Name="SymbolLibrary">True</Compiler>
<Compiler Name="SymbolPlatform">False</Compiler>
<Compiler Name="SymbolExperimental">True</Compiler>
<Compiler Name="UnitLibrary">True</Compiler>
<Compiler Name="UnitPlatform">False</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="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="MessageDirective">True</Compiler>
<Compiler Name="TypeInfoImplicitlyAdded">True</Compiler>
<Compiler Name="XMLWhitespaceNotAllowed">True</Compiler>
<Compiler Name="XMLUnknownEntity">True</Compiler>
<Compiler Name="XMLInvalidNameStart">True</Compiler>
<Compiler Name="XMLInvalidName">True</Compiler>
<Compiler Name="XMLExpectedCharacter">True</Compiler>
<Compiler Name="XMLCRefNoResolve">True</Compiler>
<Compiler Name="XMLNoParm">True</Compiler>
<Compiler Name="XMLNoMatchingParm">True</Compiler>
<Compiler Name="CodePage"></Compiler>
</Compiler>
<Linker>
<Linker Name="MapFile">0</Linker>
<Linker Name="OutputObjs">0</Linker>
<Linker Name="GenerateHpps">False</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>
<Directories>
<Directories Name="OutputDir">..\Release</Directories>
<Directories Name="UnitOutputDir">..\Dcu</Directories>
<Directories Name="PackageDLLOutputDir"></Directories>
<Directories Name="PackageDCPOutputDir"></Directories>
<Directories Name="SearchPath">..\KOL</Directories>
<Directories Name="Packages">vcl;rtl</Directories>
<Directories Name="Conditionals">KOL_MCK;NOT_USE_RICHEDIT;USE_MHTOOLTIP;xDEBUGMODE</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="Debug Symbols Search Path"></Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<Signing>
<Signing Name="SignAssembly">False</Signing>
</Signing>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">24</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">25048</VersionInfo>
<VersionInfo Name="Build">9432</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">1033</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">24.0.25048.9432</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">24.0.25048.9432</VersionInfoKeys>
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
</VersionInfoKeys>
<buildevents/>
</Delphi.Personality>
</BorlandProject>

View File

@ -0,0 +1,45 @@
-$A8
-$B-
-$C-
-$D-
-$E-
-$F-
-$G+
-$H+
-$I+
-$J+
-$K-
-$L-
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$Y-
-$Z1
-cg
-AClasses=;mirror=
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-E"..\Release"
-N0"..\Dcu"
-LE"C:\Users\Public\Documents\RAD Studio\5.0\Bpl"
-LN"C:\Users\Public\Documents\RAD Studio\5.0\Dcp"
-U"..\KOL"
-O"..\KOL"
-I"..\KOL"
-R"..\KOL"
-DKOL_MCK;NOT_USE_RICHEDIT;USE_MHTOOLTIP;xDEBUGMODE
-w-SYMBOL_DEPRECATED
-w-SYMBOL_PLATFORM
-w-UNIT_PLATFORM

View File

@ -0,0 +1,33 @@
{ KOL MCK } // Do not remove this line!
program Activator;
uses
KOL,
FileUtils in 'FileUtils.pas',
PatchData in 'PatchData.pas',
WinUtils in 'WinUtils.pas',
AnsiStrings in '..\Keygen\AnsiStrings.pas',
FGInt in '..\Keygen\FGInt.pas',
RadKeygen in '..\Keygen\RadKeygen.pas',
RadLicense in '..\Keygen\RadLicense.pas',
RadVersion in '..\Keygen\RadVersion.pas',
Sha1 in '..\Keygen\Sha1.pas',
SHFolderDll in '..\Keygen\SHFolderDll.pas',
MainFrm in 'MainFrm.pas' {MainForm};
{$R *.res}
begin // PROGRAM START HERE -- Please do not remove this comment
{$IF Defined(KOL_MCK)} {$I Activator_0.inc} {$ELSE}
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
{$IFEND}
end.

Binary file not shown.

View File

@ -0,0 +1,20 @@
{ KOL MCK } // Do not remove this line!
{ Activator_0.inc
Do not edit this file manually - it is generated automatically.
You can only modify Activator_1.inc and Activator_3.inc
files. }
{$IFDEF Pcode}
InstallCollapse;
{$ENDIF Pcode}
NewMainForm( MainForm, nil );
{$I Activator_1.inc}
{$I Activator_2.inc}
{$I Activator_3.inc}
Run( MainForm.Form );
{$I Activator_4.inc}

View File

@ -0,0 +1,9 @@
{ Activator_1.inc
This file is for you. Place here any code to run it
just following Applet creation (if it present) but
before creating other forms. E.g., You can place here
<IF> statement, which prevents running of application
in some cases. TIP: always use Applet for such checks
and make it invisible until final decision if to run
application or not. }

View File

@ -0,0 +1,4 @@
{ KOL MCK } // Do not remove this line!
{ Activator_2.inc
Do not modify this file manually - it is generated automatically. }

View File

@ -0,0 +1,4 @@
{ Activator_3.inc
This file is for you. Place here any code to run it
after forms creating, but before Run call, if necessary. }

View File

@ -0,0 +1,4 @@
{ Activator_4.inc
This file is for you. Place here any code to be inserted
after Run call, if necessary. }

Binary file not shown.

View File

@ -0,0 +1,65 @@
{ *********************************************************************** }
{ }
{ 工具单元 }
{ }
{ 设计Lsuper 2013.02.16 }
{ 备注: }
{ 审核: }
{ }
{ Copyright (c) 1998-2014 Super Studio }
{ }
{ *********************************************************************** }
unit FileUtils;
interface
uses
SysUtils, Classes;
function LoadDataFromFile(const AFile: string): AnsiString;
procedure SaveDataToFile(const AFile: string; const ABuffer; ASize: Integer);
implementation
uses
Windows;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2010.01.19
//功能:加载文件内容
//参数:
////////////////////////////////////////////////////////////////////////////////
function LoadDataFromFile(const AFile: string): AnsiString;
begin
with TFileStream.Create(AFile, fmOpenRead or fmShareDenyWrite) do
try
SetLength(Result, Size);
ReadBuffer(PAnsiChar(Result)^, Size);
finally
Free;
end;
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2010.01.19
//功能:保存文件内容
//参数:
////////////////////////////////////////////////////////////////////////////////
procedure SaveDataToFile(const AFile: string; const ABuffer;
ASize: Integer);
var
F: string;
begin
F := ExtractFileDir(AFile);
ForceDirectories(F);
with TFileStream.Create(AFile, fmCreate or fmShareDenyWrite) do
try
Position := 0;
WriteBuffer(ABuffer, ASize);
finally
Free;
end;
end;
end.

View File

@ -0,0 +1,425 @@
object MainForm: TMainForm
Left = 0
Top = 0
HorzScrollBar.Visible = False
VertScrollBar.Visible = False
Caption = 'Delphi 10.1 Berlin Activator'
ClientHeight = 122
ClientWidth = 534
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = True
Scaled = False
PixelsPerInch = 96
TextHeight = 13
object btnExit: TKOLButton
Tag = 0
Left = 428
Top = 16
Width = 90
Height = 90
Hint = 'Exit'
HelpType = htKeyword
HelpContext = 0
IgnoreDefault = True
AnchorLeft = False
AnchorTop = False
AnchorRight = False
AnchorBottom = False
AcceptChildren = False
MouseTransparent = False
TabOrder = 2
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
PlaceDown = False
PlaceRight = False
PlaceUnder = False
Visible = True
Enabled = True
DoubleBuffered = False
Align = caNone
CenterOnParent = False
Caption = '&Exit'
Ctl3D = True
Color = clBtnFace
parentColor = False
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
parentFont = True
OnClick = btnExitClick
EraseBackground = False
Localizy = loForm
Border = 2
TextAlign = taCenter
VerticalAlign = vaCenter
TabStop = True
autoSize = False
DefaultBtn = False
CancelBtn = False
windowed = True
Flat = False
WordWrap = False
LikeSpeedButton = False
end
object btnAbout: TKOLButton
Tag = 0
Left = 325
Top = 16
Width = 90
Height = 90
Hint = 'About'
HelpType = htKeyword
HelpContext = 0
IgnoreDefault = True
AnchorLeft = False
AnchorTop = False
AnchorRight = False
AnchorBottom = False
AcceptChildren = False
MouseTransparent = False
TabOrder = 0
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
PlaceDown = False
PlaceRight = False
PlaceUnder = False
Visible = True
Enabled = True
DoubleBuffered = False
Align = caNone
CenterOnParent = False
Caption = '&About'
Ctl3D = True
Color = clBtnFace
parentColor = False
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
parentFont = True
OnClick = btnAboutClick
EraseBackground = False
Localizy = loForm
Border = 2
TextAlign = taCenter
VerticalAlign = vaCenter
TabStop = True
autoSize = False
DefaultBtn = False
CancelBtn = False
windowed = True
Flat = False
WordWrap = False
LikeSpeedButton = False
end
object btnReset: TKOLButton
Tag = 0
Left = 222
Top = 16
Width = 90
Height = 90
Hint = 'Reset Delphi 10.1'
HelpType = htKeyword
HelpContext = 0
IgnoreDefault = True
AnchorLeft = False
AnchorTop = False
AnchorRight = False
AnchorBottom = False
AcceptChildren = False
MouseTransparent = False
TabOrder = 1
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
PlaceDown = False
PlaceRight = False
PlaceUnder = False
Visible = True
Enabled = True
DoubleBuffered = False
Align = caNone
CenterOnParent = False
Caption = 'Re&set'
Ctl3D = True
Color = clBtnFace
parentColor = False
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
parentFont = True
OnClick = btnResetClick
EraseBackground = False
Localizy = loForm
Border = 2
TextAlign = taCenter
VerticalAlign = vaCenter
TabStop = True
autoSize = False
DefaultBtn = False
CancelBtn = False
windowed = True
Flat = False
WordWrap = False
LikeSpeedButton = False
end
object btnRunX10: TKOLButton
Tag = 0
Left = 119
Top = 16
Width = 90
Height = 90
Hint = 'Run Delphi 10.1'
HelpType = htKeyword
HelpContext = 0
IgnoreDefault = True
AnchorLeft = False
AnchorTop = False
AnchorRight = False
AnchorBottom = False
AcceptChildren = False
MouseTransparent = False
TabOrder = 3
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
PlaceDown = False
PlaceRight = False
PlaceUnder = False
Visible = True
Enabled = True
DoubleBuffered = False
Align = caNone
CenterOnParent = False
Caption = '&Run'
Ctl3D = True
Color = clBtnFace
parentColor = False
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
parentFont = True
OnClick = btnRunX10Click
EraseBackground = False
Localizy = loForm
Border = 2
TextAlign = taCenter
VerticalAlign = vaCenter
TabStop = True
autoSize = False
DefaultBtn = False
CancelBtn = False
windowed = True
Flat = False
WordWrap = False
LikeSpeedButton = False
end
object btnActive: TKOLButton
Tag = 0
Left = 16
Top = 16
Width = 90
Height = 90
Hint = 'Active Delphi 10.1'
HelpType = htKeyword
HelpContext = 0
IgnoreDefault = True
AnchorLeft = False
AnchorTop = False
AnchorRight = False
AnchorBottom = False
AcceptChildren = False
MouseTransparent = False
TabOrder = 4
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
PlaceDown = False
PlaceRight = False
PlaceUnder = False
Visible = True
Enabled = True
DoubleBuffered = False
Align = caNone
CenterOnParent = False
Caption = '&Active'
Ctl3D = True
Color = clBtnFace
parentColor = False
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
parentFont = True
OnClick = btnActiveClick
EraseBackground = False
Localizy = loForm
Border = 2
TextAlign = taCenter
VerticalAlign = vaCenter
TabStop = True
autoSize = False
DefaultBtn = False
CancelBtn = False
windowed = True
Flat = False
WordWrap = False
LikeSpeedButton = False
end
object kolActivator: TKOLProject
Locked = False
Localizy = False
projectName = 'Activator'
projectDest = 'Activator'
sourcePath = 'F:\LITE\D10.1\13.2\Crack\Activator\'
outdcuPath = '0"..\Dcu\'
dprResource = True
protectFiles = True
showReport = False
isKOLProject = True
autoBuild = True
autoBuildDelay = 500
BUILD = False
consoleOut = False
SupportAnsiMnemonics = 0
PaintType = ptWYSIWIG
ShowHint = True
ReportDetailed = False
GeneratePCode = False
NewIF = True
DefaultFont.Color = clWindowText
DefaultFont.FontStyle = []
DefaultFont.FontHeight = 0
DefaultFont.FontWidth = 0
DefaultFont.FontWeight = 0
DefaultFont.FontName = 'System'
DefaultFont.FontOrientation = 0
DefaultFont.FontCharset = 1
DefaultFont.FontPitch = fpDefault
DefaultFont.FontQuality = fqDefault
FormCompactDisabled = False
Left = 32
Top = 8
end
object kolMainForm: TKOLForm
Tag = 0
ForceIcon16x16 = False
Caption = 'Delphi 10.1 Berlin Activator'
Visible = True
OnMessage = kolMainFormMessage
OnDestroy = kolMainFormDestroy
AllBtnReturnClick = False
Tabulate = False
TabulateEx = False
UnitSourcePath = 'F:\LITE\D10.1\13.2\Crack\Activator\'
Locked = False
formUnit = 'MainFrm'
formMain = True
Enabled = True
defaultSize = False
defaultPosition = False
MinWidth = 0
MinHeight = 0
MaxWidth = 0
MaxHeight = 0
HasBorder = True
HasCaption = True
StayOnTop = False
CanResize = False
CenterOnScreen = True
Ctl3D = True
WindowState = wsNormal
minimizeIcon = False
maximizeIcon = False
closeIcon = True
helpContextIcon = False
borderStyle = fbsSingle
HelpContext = 0
Color = clBtnFace
Font.Color = clWindowText
Font.FontStyle = []
Font.FontHeight = 0
Font.FontWidth = 0
Font.FontWeight = 0
Font.FontName = 'System'
Font.FontOrientation = 0
Font.FontCharset = 1
Font.FontPitch = fpDefault
Font.FontQuality = fqDefault
FontDefault = True
Brush.Color = clBtnFace
Brush.BrushStyle = bsSolid
DoubleBuffered = False
PreventResizeFlicks = False
Transparent = False
AlphaBlend = 255
Border = 2
MarginLeft = 0
MarginRight = 0
MarginTop = 0
MarginBottom = 0
MinimizeNormalAnimated = False
RestoreNormalMaximized = False
zOrderChildren = False
statusSizeGrip = True
Localizy = False
ShowHint = True
KeyPreview = False
OnShow = kolMainFormShow
OnFormCreate = kolMainFormFormCreate
EraseBackground = False
supportMnemonics = False
FormCompact = False
GenerateCtlNames = False
Unicode = False
OverrideScrollbars = False
AssignTabOrders = False
Left = 64
Top = 8
end
end

View File

@ -0,0 +1,760 @@
{ KOL MCK } // Do not remove this line!
{$DEFINE KOL_MCK}
unit MainFrm;
interface
{$IFDEF KOL_MCK}
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, mirror;
{$ENDIF}
type
{$IF Defined(KOL_MCK)}
{$I MCKfakeClasses.inc}
{$IFDEF KOLCLASSES} {$I TMainFormclass.inc} {$ELSE OBJECTS} PMainForm = ^TMainForm; {$ENDIF CLASSES/OBJECTS}
{$IFDEF KOLCLASSES}{$I TMainForm.inc}{$ELSE} TMainForm = object(TObj) {$ENDIF}
Form: PControl;
{$ELSE not_KOL_MCK}
TMainForm = class(TForm)
{$IFEND KOL_MCK}
btnAbout: TKOLButton;
btnActive: TKOLButton;
btnExit: TKOLButton;
btnReset: TKOLButton;
btnRunX10: TKOLButton;
kolActivator: TKOLProject;
kolMainForm: TKOLForm;
procedure btnAboutClick(Sender: PObj);
procedure btnActiveClick(Sender: PObj);
procedure btnExitClick(Sender: PObj);
procedure btnResetClick(Sender: PObj);
procedure btnRunX10Click(Sender: PObj);
procedure kolMainFormDestroy(Sender: PObj);
procedure kolMainFormFormCreate(Sender: PObj);
function kolMainFormMessage(var Msg: TMsg; var Rslt: Integer): Boolean;
procedure kolMainFormShow(Sender: PObj);
private
FAppPath,
FBdsPath: string;
FCurFileBuild: Integer;
FSerialNumber,
FRegCode,
FInformation: string;
private
function FindBdsPath: Boolean;
function GetSystemHostsFile: string;
procedure BeginCursor;
procedure EndCursor;
procedure BuildGenuineCglmFile(const ASerialNumber: string = '');
procedure BuildGenuineSlipFile;
procedure BuildTrialCglmFile;
procedure BuildTrialSlipFile;
procedure CopyFile(const ASrcFile, ADestFile: string);
procedure DeleteFile(const AFile: string);
procedure DeleteFiles(const AFileMask: string);
procedure GenerateRegistrationCode;
procedure GenerateKeyGenLicense;
procedure PatchLicenseHostsFile;
procedure RestoreLicenseHostsFile;
procedure PatchBdsFile;
procedure RestoreBdsFile;
procedure DeleteTrialFiles;
procedure DeleteTrialRegKeys;
procedure DoActive;
procedure DoReset;
procedure DoRunX10;
procedure ShowAboutMessage;
procedure Execute;
end;
var
MainForm {$IFDEF KOL_MCK} : PMainForm {$ELSE} : TMainForm {$ENDIF} ;
{$IFDEF KOL_MCK}
procedure NewMainForm( var Result: PMainForm; AParent: PControl );
{$ENDIF}
implementation
{.$DEFINE DEBUGMODE}
uses
SysUtils, ShellAPI, Registry, FileUtils, PatchData, WinUtils, RadKeygen, RadVersion;
{$IF Defined(KOL_MCK)}{$ELSE}{$R *.DFM}{$IFEND}
{$IFDEF KOL_MCK}
{$I MainFrm_1.inc}
{$ENDIF}
{$IFDEF DEBUGMODE}
{$R WindowsXP.res}
{$ELSE}
{$R 'Admin.res'} { 管理员运行 }
{$ENDIF}
const
CSIDL_APPDATA = $001A; // Application Data, new for NT4, <user name>\Application Data
CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data
UM_SHOWABOUT = 100;
const
defAppMessage = 'Based on the hard work of unis, x-force, cjack. 3x ;>';
defAppVersion = '13.2';
defAppHelperFileName = 'SHFolder.dll';
defBdsVersion = '18.0';
defBdsdLicenseManager = '"%s" -reg -skey 8218_21 -loadKey 2024 -a';
defBdsPatchFileName = defAppHelperFileName;
defLicenseHosts: array[0..10] of string = (
'127.0.0.1 comapi.embarcadero.com',
'127.0.0.1 license.embarcadero.com',
'127.0.0.1 track.embarcadero.com',
'127.0.0.1 external.ws.sanctx.embarcadero.com',
'127.0.0.1 object.ws.sanctx.embarcadero.com',
'127.0.0.1 license.codegear.com',
'127.0.0.1 license-stage.codegear.com',
'127.0.0.1 services.server.v8.srs.sanctuary.codegear.com',
'127.0.0.1 LicenseRenewalServicesImpl.services.server.v8.srs.sanctuary.codegear.com',
'127.0.0.1 LicenseUsageServicesImpl.services.server.v8.srs.sanctuary.codegear.com',
'127.0.0.1 RegistrationServicesImpl.services.server.v8.srs.sanctuary.codegear.com'
);
{ TMainForm }
procedure TMainForm.BeginCursor;
begin
SetCursor(LoadCursor(0, IDC_WAIT));
end;
procedure TMainForm.btnAboutClick(Sender: PObj);
begin
{$IFDEF DEBUGMODE}
LogMessage('About');
{$ENDIF}
ShowAboutMessage;
end;
procedure TMainForm.btnActiveClick(Sender: PObj);
begin
{$IFDEF DEBUGMODE}
LogMessage('Active');
{$ENDIF}
BeginCursor;
try
DoActive;
finally
EndCursor;
end;
end;
procedure TMainForm.btnExitClick(Sender: PObj);
begin
{$IFDEF DEBUGMODE}
LogMessage('Exit');
{$ENDIF}
Self.Form.Close;
end;
procedure TMainForm.btnResetClick(Sender: PObj);
begin
{$IFDEF DEBUGMODE}
LogMessage('Reset');
{$ENDIF}
BeginCursor;
try
DoReset;
finally
EndCursor;
end;
end;
procedure TMainForm.btnRunX10Click(Sender: PObj);
begin
{$IFDEF DEBUGMODE}
LogMessage('Run');
{$ENDIF}
BeginCursor;
try
DoRunX10;
finally
EndCursor;
end;
end;
procedure TMainForm.BuildGenuineCglmFile(const ASerialNumber: string);
var
F: AnsiString;
S: string;
begin
SetLength(F, Length(defCglmFileDatas));
Move(defCglmFileDatas, Pointer(F)^, Length(defCglmFileDatas));
if ASerialNumber <> '' then
F := AnsiString(StringReplace(string(F), defCglmSerialNumber, ASerialNumber, [rfReplaceAll]));
S := FBdsPath + 'Bin\cglm.ini';
SaveDataToFile(S, Pointer(F)^, Length(F));
S := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\Studio\' + defBdsVersion + '\cglm.ini';
SaveDataToFile(S, Pointer(F)^, Length(F));
end;
procedure TMainForm.BuildGenuineSlipFile;
var
S: string;
begin
S := FBdsPath + 'License\*.slip';
DeleteFiles(S);
S := FBdsPath + 'License\RADStudio10_1.slip';
SaveDataToFile(S, defGenuineLicFileDatas, Length(defGenuineLicFileDatas));
end;
procedure TMainForm.BuildTrialCglmFile;
var
S: string;
begin
S := FBdsPath + 'Bin\cglm.ini';
SaveDataToFile(S, defCglmFileDatas, Length(defCglmFileDatas));
end;
procedure TMainForm.BuildTrialSlipFile;
var
S: string;
begin
S := FBdsPath + 'License\*.slip';
DeleteFiles(S);
S := FBdsPath + 'License\RADStudio10_1.slip';
SaveDataToFile(S, defTrialLicFileDatas, Length(defTrialLicFileDatas));
end;
procedure TMainForm.CopyFile(const ASrcFile, ADestFile: string);
{$IFDEF DEBUGMODE}
var
bRet: Boolean;
{$ENDIF}
begin
{$IFDEF DEBUGMODE}
bRet := Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False);
if bRet then
LogMessage('CopyFile.OK: ' + ADestFile)
else LogMessage('CopyFile.Error: ' + ADestFile + ', ' + SysErrorMessage(GetLastError));
{$ELSE}
Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False);
{$ENDIF}
end;
procedure TMainForm.DeleteFile(const AFile: string);
{$IFDEF DEBUGMODE}
var
bRet: Boolean;
{$ENDIF}
begin
{$IFDEF DEBUGMODE}
LogMessage('DeleteFile: ' + AFile + ' ...');
bRet := Windows.DeleteFile(PChar(AFile));
if bRet then
LogMessage('DeleteFile.OK: ' + AFile)
else LogMessage('DeleteFile.Error: ' + AFile + ', ' + SysErrorMessage(GetLastError));
{$ELSE}
Windows.DeleteFile(PChar(AFile));
{$ENDIF}
end;
procedure TMainForm.DeleteFiles(const AFileMask: string);
////////////////////////////////////////////////////////////////////////////////
//设计: Lsuper 2005.09.21
//功能: 判断特殊文件
//参数:
////////////////////////////////////////////////////////////////////////////////
function IsDirNotation(const AName: string): Boolean;
begin
Result := (AName = '.') or (AName = '..');
end;
var
cSearchRec: TSearchRec;
strFilePath: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('DeleteFiles: ' + AFileMask + ' ...');
{$ENDIF}
strFilePath := ExtractFilePath(AFileMask);
if FindFirst(AFileMask, faAnyFile, cSearchRec) = 0 then
repeat
if (cSearchRec.Name <> '') and not IsDirNotation(cSearchRec.Name) then
begin
{$IFDEF DEBUGMODE}
LogMessage('DeleteFiles, File: ' + strFilePath + cSearchRec.Name);
{$ENDIF}
SysUtils.DeleteFile(strFilePath + cSearchRec.Name);
end;
until FindNext(cSearchRec) <> 0;
SysUtils.FindClose(cSearchRec);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2011.01.05
//功能:清理授权信息
//参数:
////////////////////////////////////////////////////////////////////////////////
procedure TMainForm.DeleteTrialFiles;
var
AllUsersPath, UserPath: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('DeleteTrialFiles');
{$ENDIF}
AllUsersPath := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\';
UserPath := GetShellFolderPath(CSIDL_APPDATA) + 'Embarcadero\';
{$IFDEF DEBUGMODE}
LogMessage('DeleteTrialFiles.AllUsersPath: ' + AllUsersPath);
LogMessage('DeleteTrialFiles.UserPath: ' + UserPath);
{$ENDIF}
DeleteFile(UserPath + '.cgb_license');
DeleteFile(AllUsersPath + '.cgb_license');
DeleteFile(UserPath + '.licenses\.cg_license');
DeleteFile(AllUsersPath + '.licenses\.cg_license');
DeleteFile(AllUsersPath + 'RAD Studio Activation.slip');
DeleteFiles(AllUsersPath + '.82*.slip');
end;
procedure TMainForm.DeleteTrialRegKeys;
begin
{$IFDEF DEBUGMODE}
LogMessage('DeleteTrialRegKeys');
{$ENDIF}
end;
procedure TMainForm.DoActive;
var
S: string;
nBuild: Integer;
begin
{$IFDEF DEBUGMODE}
LogMessage('DoActive');
{$ENDIF}
if not FindBdsPath then
begin
ShowError('No BDS find!');
Exit;
end;
S := FBdsPath + 'Bin\bds.exe';
nBuild := GetFileBuildVersion(S);
if nBuild <> FCurFileBuild then
begin
ShowError('BDS version not support!');
Exit;
end;
BuildTrialCglmFile;
BuildTrialSlipFile;
RestoreBdsFile;
GenerateRegistrationCode;
GenerateKeyGenLicense;
BuildGenuineCglmFile;
BuildGenuineSlipFile;
PatchBdsFile;
PatchLicenseHostsFile;
{
ShowMessage('Active', 'OK!');
}
ShowMessage('Active', 'OK! Code: ' + FRegCode + ', Serial: ' + FSerialNumber);
end;
procedure TMainForm.DoReset;
begin
{$IFDEF DEBUGMODE}
LogMessage('DoReset');
{$ENDIF}
if not FindBdsPath then
begin
ShowError('No BDS find!');
Exit;
end;
DeleteTrialFiles;
DeleteTrialRegKeys;
BuildTrialCglmFile;
BuildTrialSlipFile;
RestoreBdsFile;
RestoreLicenseHostsFile;
ShowMessage('Reset', 'OK!');
end;
procedure TMainForm.DoRunX10;
var
BdsExe: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('DoRunX10');
{$ENDIF}
if not FindBdsPath then
begin
ShowError('No BDS find!');
Exit;
end;
FBdsPath := FBdsPath + 'Bin';
BdsExe := FBdsPath + '\bds.exe';
ShellExecute(0, 'open', PChar(BdsExe), '-pDelphi', PChar(FBdsPath), SW_NORMAL);
Delay(20);
end;
procedure TMainForm.EndCursor;
begin
SetCursor(LoadCursor(0, IDC_ARROW));
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2011.09.20
//功能:直接执行 Lite 的安装任务
//参数:
////////////////////////////////////////////////////////////////////////////////
procedure TMainForm.Execute;
var
S: string;
nBuild: Integer;
begin
if not FindBdsPath then
begin
LogMessage('No BDS find!');
Exit;
end;
S := FBdsPath + 'Bin\bds.exe';
nBuild := GetFileBuildVersion(S);
if nBuild <> FCurFileBuild then
begin
LogMessage('BDS version not support!');
Exit;
end;
GenerateRegistrationCode;
GenerateKeyGenLicense;
BuildGenuineCglmFile;
BuildGenuineSlipFile;
PatchBdsFile;
PatchLicenseHostsFile;
{
LogMessage('Done.');
}
LogMessage('Done. Code: ' + FRegCode + ', Serial: ' + FSerialNumber);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2013.02.15
//功能:查找 Delphi
//参数:
////////////////////////////////////////////////////////////////////////////////
function TMainForm.FindBdsPath: Boolean;
begin
Result := False;
with TRegistry.Create do
try
Access := KEY_READ;
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly('SOFTWARE\Embarcadero\BDS\' + defBdsVersion) then
begin
FBdsPath := ReadString('RootDir');
CloseKey;
end;
finally
Free;
end;
if FBdsPath <> '' then
begin
FBdsPath := IncludeTrailingPathDelimiter(FBdsPath);
Result := FileExists(FBdsPath + 'Bin\bds.exe');
end;
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2013.05.01
//功能:
//参数:
//注意:设置环境变量,用于 IPC 通知、通讯
////////////////////////////////////////////////////////////////////////////////
procedure TMainForm.GenerateKeyGenLicense;
function CurrentRadStudioVersion: PRadStudioVersion; inline;
begin
Assert(RadStudioVersionList.Count > 0);
Result := PRadStudioVersion(RadStudioVersionList.Objects[0]);
end;
begin
{$IFDEF DEBUGMODE}
LogMessage('GenerateKeyGenLicense');
{$ENDIF}
FSerialNumber := RadKeygen.GenerateSerialNumber;
FRegCode := RadKeygen.GetRegistrationCode;
RadKeygen.GenerateLicenseFile(FSerialNumber, FRegCode, CurrentRadStudioVersion, FInformation);
end;
////////////////////////////////////////////////////////////////////////////////
//设计: Lsuper 2006.09.19
//功能: 注入启动
//参数:
//注意:设置环境变量,用于 IPC 通知、通讯
////////////////////////////////////////////////////////////////////////////////
procedure TMainForm.GenerateRegistrationCode;
var
si: TStartupInfo;
pi: TProcessInformation;
nExitCode: LongWord;
strHelper, strCommandLine, strWorkDir: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('GenerateRegistrationCode');
{$ENDIF}
strHelper := FAppPath + defAppHelperFileName;
if not FileExists(strHelper) then
SaveDataToFile(strHelper, defHelperDatas, Length(defHelperDatas));
strWorkDir := FBdsPath + 'Bin';
strCommandLine := Format('%s\LicenseManager.exe', [strWorkDir]);
if not FileExists(strCommandLine) then
raise Exception.CreateFmt('File %s not exists!', [strCommandLine]);
strCommandLine := Format(defBdsdLicenseManager, [strCommandLine]);
FillChar(si, SizeOf(TStartupInfo), 0);
with si do
begin
cb := SizeOf(TStartupInfo);
dwFlags := STARTF_USESHOWWINDOW + STARTF_FORCEONFEEDBACK;
wShowWindow := SW_HIDE;
end;
if CreateProcessEx(nil, PChar(strCommandLine), nil, nil, False, 0, nil, PChar(strWorkDir), si, pi, AnsiString(strHelper)) then
try
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, nExitCode);
if nExitCode = 0 then
raise Exception.Create('BdsReg error!');
finally
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
end
else RaiseLastOSError;
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2009.01.30
//功能取Windows系统目录
//参数:
////////////////////////////////////////////////////////////////////////////////
function TMainForm.GetSystemHostsFile: string;
const
defHostsFilePath = 'drivers\etc\hosts';
var
nRet: LongWord;
begin
SetLength(Result, MAX_PATH);
nRet := GetSystemDirectory(PChar(Result), MAX_PATH);
if nRet = 0 then
Result := ''
else begin
SetLength(Result, nRet);
Result := IncludeTrailingPathDelimiter(Result) + defHostsFilePath;
end;
end;
procedure TMainForm.kolMainFormDestroy(Sender: PObj);
begin
LogMessage('Destroy');
{$IFNDEF DEBUGMODE}
DeleteFiles(FAppPath + '*.*');
RemoveDirectory(PChar(FAppPath));
{$ENDIF}
end;
procedure TMainForm.kolMainFormFormCreate(Sender: PObj);
var
S: string;
begin
LogMessage('Create');
FAppPath := GetShellFolderPath(CSIDL_APPDATA);
FAppPath := IncludeTrailingPathDelimiter(FAppPath) + 'Activator\' + defAppVersion + '\';
ForceDirectories(FAppPath);
S := GetModuleName(HInstance);
FCurFileBuild := GetFileBuildVersion(S);
SetEnvironmentVariable('SESSIONNAME', 'Conso1e');
if ParamStr(1) = '-process' then
begin
Execute;
Halt(1);
end;
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2003.09.21
//功能:处理系统菜单
//参数:
////////////////////////////////////////////////////////////////////////////////
function TMainForm.kolMainFormMessage(var Msg: TMsg;
var Rslt: Integer): Boolean;
begin
if (Msg.message = WM_SYSCOMMAND) and (Msg.WParam = UM_SHOWABOUT) then
ShowAboutMessage;
Result := False;
end;
procedure TMainForm.kolMainFormShow(Sender: PObj);
var
hMain : HMENU;
begin
LogMessage('Show');
hMain := GetSystemMenu(Self.Form.Handle, False);
AppendMenu(hMain, MF_SEPARATOR, 0, nil);
AppendMenu(hMain, MF_STRING{ or MF_CHECKED}, UM_SHOWABOUT, 'About ...');
SetMainFormHandle(Self.Form.Handle);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2011.09.21
//功能:修改 BDS.exe 文件
//参数:
////////////////////////////////////////////////////////////////////////////////
procedure TMainForm.PatchBdsFile;
var
S: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('PatchBdsFile');
{$ENDIF}
S := FBdsPath + 'Bin\' + defBdsPatchFileName;
{$IFDEF DEBUGMODE}
LogMessage('Patch: ' + S);
{$ENDIF}
SaveDataToFile(S, defBdsPatchDllDatas, SizeOf(defBdsPatchDllDatas));
end;
procedure TMainForm.PatchLicenseHostsFile;
var
F, S: string;
nIndex, I: Integer;
pList, pHosts: PStrListEx;
begin
{$IFDEF DEBUGMODE}
LogMessage('PatchLicenseHostsFile');
{$ENDIF}
F := GetSystemHostsFile;
pHosts := NewStrListEx;
with pHosts^ do
try
if FileExists(F) then
LoadFromFile(F);
pList := NewStrListEx;
for S in defLicenseHosts do
pList.Add(S);
for I := 0 to Count - 1 do
begin
S := Trim(Items[I]);
nIndex := pList.IndexOf(S);
if nIndex >= 0 then
pList.Delete(nIndex);
end;
if pList.Count > 0 then
try
{$IFDEF DEBUGMODE}
LogMessage('PatchLicenseHostsFile, SaveToFile: ' + F);
{$ENDIF}
AddStrings(pList);
FileSetReadOnly(F, False);
SaveToFile(F);
except
on E: Exception do
LogMessage('Disable Hosts Error: ' + E.Message);
end;
pList.Free;
finally
Free;
end;
end;
procedure TMainForm.RestoreBdsFile;
var
S: string;
begin
{$IFDEF DEBUGMODE}
LogMessage('RestoreBdsFile');
{$ENDIF}
S := FBdsPath + 'Bin\' + defBdsPatchFileName;
{$IFDEF DEBUGMODE}
LogMessage('Restore: ' + S);
{$ENDIF}
Self.DeleteFile(S);;
end;
procedure TMainForm.RestoreLicenseHostsFile;
var
F, S: string;
nIndex, nRet, I: Integer;
pList, pHosts: PStrListEx;
begin
{$IFDEF DEBUGMODE}
LogMessage('RestoreLicenseHostsFile');
{$ENDIF}
F := GetSystemHostsFile;
if not FileExists(F) then
Exit;
pHosts := NewStrListEx;
with pHosts^ do
try
LoadFromFile(F);
pList := NewStrListEx;
for S in defLicenseHosts do
pList.Add(S);
nRet := 0;
for I := Count - 1 downto 0 do
begin
S := Trim(Items[I]);
nIndex := pList.IndexOf(S);
if nIndex < 0 then
Continue;
pHosts.Delete(I);
Inc(nRet);
end;
if nRet > 0 then
try
{$IFDEF DEBUGMODE}
LogMessage('RestoreLicenseHostsFile, SaveToFile: ' + F);
{$ENDIF}
FileSetReadOnly(F, False);
SaveToFile(F);
except
on E: Exception do
LogMessage('Disable Hosts Error: ' + E.Message);
end;
pList.Free;
finally
Free;
end;
end;
procedure TMainForm.ShowAboutMessage;
begin
with Self.Form^ do
ShellAbout(Handle, PChar(string(Caption) + ', Lsuper'), PAnsiChar(AnsiString(defAppMessage)), Icon);
end;
end.

View File

@ -0,0 +1,49 @@
{ KOL MCK } // Do not remove this line!
procedure NewMainForm( var Result: PMainForm; AParent: PControl );
begin
{$IFDEF KOLCLASSES}
Result := PMainForm.Create;
{$ELSE OBJECTS}
New( Result, Create );
{$ENDIF KOL CLASSES/OBJECTS}
Result.Form := NewForm( AParent, 'Delphi 10.1 Berlin Activator' ).SetPosition( 8, 8 );
Applet := Result.Form;
Result.Form.Add2AutoFree( Result );
Result.Form.Style := Result.Form.Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
Result.Form.SetClientSize( 534, 122 );
Result.Form.OnMessage := Result.kolMainFormMessage;
Result.Form.OnShow := Result.kolMainFormShow;
Result.Form.OnDestroy := Result.kolMainFormDestroy;
Result.btnAbout := NewButton( Result.Form, '&About' ).SetPosition( 325, 16 ).SetSize( 90, 90 );
{$IFDEF USE_MHTOOLTIP}
Result.btnAbout.Hint.Text := 'About';
{$ENDIF USE_MHTOOLTIP}
Result.btnReset := NewButton( Result.Form, 'Re&set' ).SetPosition( 222, 16 ).SetSize( 90, 90 );
{$IFDEF USE_MHTOOLTIP}
Result.btnReset.Hint.Text := 'Reset Delphi 10.1';
{$ENDIF USE_MHTOOLTIP}
Result.btnExit := NewButton( Result.Form, '&Exit' ).SetPosition( 428, 16 ).SetSize( 90, 90 );
{$IFDEF USE_MHTOOLTIP}
Result.btnExit.Hint.Text := 'Exit';
{$ENDIF USE_MHTOOLTIP}
Result.btnRunX10 := NewButton( Result.Form, '&Run' ).SetPosition( 119, 16 ).SetSize( 90, 90 );
{$IFDEF USE_MHTOOLTIP}
Result.btnRunX10.Hint.Text := 'Run Delphi 10.1';
{$ENDIF USE_MHTOOLTIP}
Result.btnActive := NewButton( Result.Form, '&Active' ).SetPosition( 16, 16 ).SetSize( 90, 90 );
{$IFDEF USE_MHTOOLTIP}
Result.btnActive.Hint.Text := 'Active Delphi 10.1';
{$ENDIF USE_MHTOOLTIP}
Result.btnAbout.OnClick := Result.btnAboutClick;
Result.btnReset.OnClick := Result.btnResetClick;
Result.btnExit.OnClick := Result.btnExitClick;
Result.btnRunX10.OnClick := Result.btnRunX10Click;
Result.btnActive.OnClick := Result.btnActiveClick;
Result.Form.CenterOnParent.CanResize := False;
Result.Form.Perform( WM_INITMENU, 0, 0 );
Result.kolMainFormFormCreate( Result );
end;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
{ *********************************************************************** }
{ }
{ 工具单元 }
{ }
{ 设计Lsuper 2013.02.16 }
{ 备注: }
{ 审核: }
{ }
{ Copyright (c) 1998-2014 Super Studio }
{ }
{ *********************************************************************** }
unit PatchData;
interface
uses
SysUtils, Classes;
const
{$I PatchData.inc} { 文件补丁数据 }
implementation
end.

View File

@ -0,0 +1 @@
TMainForm = class(TObj)

View File

@ -0,0 +1 @@
TMainForm = class; PMainForm = TMainForm;

View File

@ -0,0 +1,383 @@
{ *********************************************************************** }
{ }
{ Win 辅助函数单元 }
{ }
{ 设计Lsuper 2013.04.26 }
{ 备注: }
{ 审核: }
{ }
{ Copyright (c) 1998-2014 Super Studio }
{ }
{ *********************************************************************** }
unit WinUtils;
{$WARNINGS OFF}
interface
uses
SysUtils, Windows;
function GetCommandLineOutput(const ACommandLine, AWorkDir: string;
out ExitCode: LongWord): string;
function GetFileBuildVersion(const AFile: string): Integer;
function GetShellFolderPath(nFolder: Integer): string;
function GetWindowsPath: string;
function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string;
const Icon, Buttons: Integer): Integer;
function IsWindowsVista: Boolean;
procedure Delay(ASeconds: Double);
function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar;
lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean;
function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean;
procedure LogMessage(const AMessage: string);
procedure ShowMessage(const ACaption, AMessage: string);
procedure ShowError(const AMessage: string);
procedure SetMainFormHandle(const AHandle: HWND);
implementation
uses
ShlObj;
const
TD_BUTTON_OK = 01;
TD_BUTTON_YES = 02;
TD_BUTTON_NO = 04;
TD_BUTTON_CANCEL = 08;
TD_BUTTON_RETRY = 16;
TD_BUTTON_CLOSE = 32;
TD_ICON_BLANK = 00;
TD_ICON_WARNING = 84;
TD_ICON_QUESTION = 99;
TD_ICON_ERROR = 98;
TD_ICON_INFORMATION = 81;
TD_ICON_SHIELD_QUESTION = 104;
TD_ICON_SHIELD_ERROR = 105;
TD_ICON_SHIELD_OK = 106;
TD_ICON_SHIELD_WARNING = 107;
var
MainFormHandle: HWND = 0;
////////////////////////////////////////////////////////////////////////////////
// 说明用于延迟n秒
// 参数ASeconds -- 延迟秒数
////////////////////////////////////////////////////////////////////////////////
procedure Delay(ASeconds: Double);
////////////////////////////////////////////////////////////////////////////////
//设计: Lsuper 2004.11.10
//功能: 调用消息循环,防止僵死
//参数:
////////////////////////////////////////////////////////////////////////////////
procedure ProcessMessages;
const
WM_QUIT = $0012;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
begin
if Msg.Message = WM_QUIT then
Halt(Msg.wParam);
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
var
nTimeOut: TDateTime;
nHours, nMins, nSeconds, nMilliSecs: Integer;
begin
nSeconds := Trunc(ASeconds);
nMilliSecs := Round(Frac(ASeconds) * 1000);
nHours := nSeconds div 3600;
nMins := (nSeconds mod 3600) div 60;
nSeconds := nSeconds mod 60;
nTimeOut := Now + EncodeTime(nHours, nMins, nSeconds, nMilliSecs);
// wait until the TimeOut time
while Now < nTimeOut do
ProcessMessages;
end;
////////////////////////////////////////////////////////////////////////////////
//设计: Lsuper 2003.09.21
//功能: 取得运行命令行的输出
//参数:
////////////////////////////////////////////////////////////////////////////////
function GetCommandLineOutput(const ACommandLine, AWorkDir: string;
out ExitCode: LongWord): string;
var
strCommandLine,
strWorkDir: string;
strOutLine,
strBuffer: AnsiString;
bRunResult: Boolean;
nBytesRead: Cardinal;
nStdOutPipeRead,
nStdOutPipeWrite: THandle;
PI: TProcessInformation;
SA: TSecurityAttributes;
SI: TStartupInfo;
begin
with SA do
begin
nLength := SizeOf(SA);
bInheritHandle := True;
lpSecurityDescriptor := nil;
end;
if not CreatePipe(nStdOutPipeRead, nStdOutPipeWrite, @SA, 0) then
RaiseLastOSError;
try
with SI do
begin
FillChar(SI, SizeOf(SI), 0);
cb := SizeOf(SI);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
hStdInput := GetStdHandle(STD_INPUT_HANDLE);
hStdOutput := nStdOutPipeWrite;
hStdError := nStdOutPipeWrite;
end;
if DirectoryExists(AWorkDir) then
strWorkDir := AWorkDir
else strWorkDir := GetCurrentDir;
strCommandLine := ACommandLine;
UniqueString(strCommandLine);
bRunResult := CreateProcess(nil, PChar(strCommandLine), nil, nil, True, 0, nil,
PChar(strWorkDir), SI, PI);
CloseHandle(nStdOutPipeWrite);
if bRunResult then
try
strOutLine := '';
SetLength(strBuffer, MAXBYTE);
repeat
nBytesRead := 0;
bRunResult := ReadFile(nStdOutPipeRead, PAnsiChar(strBuffer)^, Length(strBuffer), nBytesRead, nil);
if nBytesRead > 0 then
strOutLine := strOutLine + Copy(strBuffer, 1, nBytesRead);
until not bRunResult or (nBytesRead = 0);
WaitForSingleObject(PI.hProcess, INFINITE);
GetExitCodeProcess(PI.hProcess, ExitCode);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end
else RaiseLastOSError;
finally
CloseHandle(nStdOutPipeRead);
Result := string(strOutLine);
end;
end;
function GetFileBuildVersion(const AFile: string): Integer;
var
nInfoSize, dwHandle: DWORD;
cFileInfo: PVSFixedFileInfo;
nVerSize: DWORD;
strBuffer: AnsiString;
begin
Result := 0;
nInfoSize := GetFileVersionInfoSize(PChar(AFile), dwHandle);
if nInfoSize = 0 then
Exit;
SetLength(strBuffer, nInfoSize);
if not GetFileVersionInfo(PChar(AFile), dwHandle, nInfoSize, Pointer(strBuffer)) then
Exit;
if VerQueryValue(Pointer(strBuffer), '\', Pointer(cFileInfo), nVerSize) then
Result := LOWORD(cFileInfo.dwFileVersionLS);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2010.04.09
//功能:获取 Shell 文件夹位置,如 GetSpecialFolderPath(CSIDL_COMMON_APPDATA)
//参数:
////////////////////////////////////////////////////////////////////////////////
function GetShellFolderPath(nFolder: Integer): string;
begin
SetLength(Result, MAX_PATH);
SHGetSpecialFolderPath(0, PChar(Result), nFolder, False);
SetLength(Result, StrLen(PChar(Result)));
if (Result <> '') and (Result[Length(Result)] <> '\') then
Result := Result + '\';
end;
function GetWindowsPath: string;
var
nRet: LongWord;
begin
SetLength(Result, MAX_PATH);
nRet := GetWindowsDirectory(PChar(Result), MAX_PATH);
if nRet = 0 then
Result := ''
else begin
SetLength(Result, nRet);
if (Result <> '') and (Result[Length(Result)] <> '\') then
Result := Result + '\';
end;
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2013.05.01
//功能:创建注入进程
//参数:
//注意:加入 500ms 等待时间,确保 dll 加载成功后执行
////////////////////////////////////////////////////////////////////////////////
function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar;
lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean;
begin
Result := False;
if not CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags or CREATE_SUSPENDED, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation) then
Exit;
Result := InjectLibraryModule(lpProcessInformation.hProcess, ALibraryName);
{
Result := uallHook.InjectLibrary(lpProcessInformation.dwProcessId, PChar(ALibraryName));
}
Sleep(500);
ResumeThread(lpProcessInformation.hThread);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2013.05.01
//功能:注入 DLL
//参数:
////////////////////////////////////////////////////////////////////////////////
function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean;
var
dwProcessID2: DWord;
dwMemSize: DWord;
dwWritten: DWord;
dwThreadID: DWord;
pLLA: Pointer;
pTargetMemory: Pointer;
begin
Assert(ALibraryName <> '');
Result := False;
dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS, False, AProcessID);
if (dwProcessID2 <> 0) then
AProcessID := dwProcessID2;
dwMemSize := Length(ALibraryName) + 1;
pTargetMemory := VirtualAllocEx(AProcessID, nil, dwMemSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
pLLA := GetProcAddress(GetModuleHandleA('kernel32.dll'), 'LoadLibraryA');
if (pLLA <> nil) and (pTargetMemory <> nil) then
begin
if WriteProcessMemory(AProcessID, pTargetMemory, PChar(ALibraryName), dwMemSize, dwWritten) and (dwWritten = dwMemSize) then
Result := CreateRemoteThread(AProcessID, nil, 0, pLLA, pTargetMemory, 0, dwThreadID) <> 0;
end;
if (dwProcessID2 <> 0) then
CloseHandle(dwProcessID2);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2009.10.25
//功能:判断是否 Vista/7
//参数:
////////////////////////////////////////////////////////////////////////////////
function IsWindowsVista: Boolean;
var
hKernel32: HMODULE;
begin
hKernel32 := GetModuleHandle('kernel32');
if hKernel32 > 0 then
Result := GetProcAddress(hKernel32, 'GetLocaleInfoEx') <> nil
else Result := false;
end;
procedure LogMessage(const AMessage: string);
begin
OutputDebugString(PChar(AMessage));
end;
procedure SetMainFormHandle(const AHandle: HWND);
begin
MainFormHandle := AHandle;
end;
procedure ShowError(const AMessage: string);
begin
TaskMessageBox(MainFormHandle, AMessage, 'Error', TD_ICON_ERROR, TD_BUTTON_OK);
end;
procedure ShowMessage(const ACaption, AMessage: string);
begin
TaskMessageBox(MainFormHandle, AMessage, ACaption, TD_ICON_INFORMATION, TD_BUTTON_OK);
end;
////////////////////////////////////////////////////////////////////////////////
//设计Lsuper 2009.10.25
//功能: 内部使用的用于显示对话框的函数,适应 Vista/7 系统风格
//参数:
//注意:参考 Application MessageBox Dialogs 代码,忽略多显示器判断代码
// http://www.tmssoftware.com/site/atbdev5.asp
////////////////////////////////////////////////////////////////////////////////
function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string;
const Icon, Buttons: Integer): Integer;
const
conTaskDialogProcName = 'TaskDialog';
var
DLLHandle: THandle;
wTitle, wContent: array[0..1024] of widechar;
TaskDialogProc: function(HWND: THandle; hInstance: THandle; cTitle,
cDescription, cContent: PWideChar; Buttons: Integer; Icon: Integer;
ResButton: PInteger): Integer; cdecl stdcall;
Flags: Integer;
begin
Result := 0;
if IsWindowsVista then
begin
DLLHandle := LoadLibrary(comctl32);
@TaskDialogProc := GetProcAddress(DLLHandle, conTaskDialogProcName);
end
else TaskDialogProc := nil;
if Assigned(TaskDialogProc) then
begin
StringToWideChar(ACaption, wTitle, SizeOf(wTitle));
StringToWideChar(AText, wContent, SizeOf(wContent));
TaskDialogProc(AHandle, 0, wTitle, nil, wContent, Buttons, Icon, @Result);
end
else begin
Flags := 0;
if Buttons = TD_BUTTON_OK then
Flags := MB_OK;
if Buttons = TD_BUTTON_OK or TD_BUTTON_CANCEL then
Flags := MB_OKCANCEL;
if Buttons = TD_BUTTON_CLOSE or TD_BUTTON_RETRY or TD_BUTTON_CANCEL then
Flags := MB_ABORTRETRYIGNORE;
if Buttons = TD_BUTTON_YES or TD_BUTTON_NO or TD_BUTTON_CANCEL then
Flags := MB_YESNOCANCEL;
if Buttons = TD_BUTTON_YES or TD_BUTTON_NO then
Flags := MB_YESNO;
if Buttons = TD_BUTTON_RETRY or TD_BUTTON_CANCEL then
Flags := MB_RETRYCANCEL;
case Icon of
TD_ICON_BLANK:
;
TD_ICON_WARNING, TD_ICON_SHIELD_WARNING:
Flags := Flags or MB_ICONWARNING;
TD_ICON_QUESTION, TD_ICON_SHIELD_QUESTION:
Flags := Flags or MB_ICONQUESTION;
TD_ICON_ERROR, TD_ICON_SHIELD_ERROR:
Flags := Flags or MB_ICONERROR;
TD_ICON_INFORMATION, TD_ICON_SHIELD_OK:
Flags := Flags or MB_ICONINFORMATION;
end;
Result := Windows.MessageBox(AHandle, PChar(AText), PChar(ACaption), Flags);
end;
end;
end.

View File

@ -0,0 +1,9 @@
{ KOL MCK } // Do not remove this line!
{ uses.inc
This file is generated automatically - do not modify it manually.
It is included to be recognized by compiler, but replacing word
<uses> with compiler directive <$I uses.inc> fakes auto-completion
preventing it from automatic references adding to VCL units into
uses clause aimed for KOL environment only. }
uses

1
10.1.UP2/Dcu/dirinfo.txt Normal file
View File

@ -0,0 +1 @@
This directory is intended as a common place for sample application's EXE files

View File

@ -0,0 +1,7 @@
unit AnsiStrings;
interface
implementation
end.

2282
10.1.UP2/Keygen/FGInt.pas Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,392 @@
unit RadKeygen;
interface
uses SysUtils,Classes,Windows,Registry,SHFolder,Sha1,FGInt,RadVersion,RadLicense,SHFolderDll;
function GenerateSerialNumber():string;
function GetRegistrationCode():string;
function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
function PatchFile(RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
implementation
function GetAppDataPath():string;
var
Path:array [0..MAX_PATH-1] of Char;
begin
if Succeeded(SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, @Path[0])) then
Result:=string(Path)
else
Result:='';
end;
function GenerateSerialNumber():string;
const
StrMap:string='ABC2DE34FGHJKLM5NPQRST6U7VWX8YZ9';
ByteMap:array[0..255] of Byte=($00, $07, $0E, $09, $1C, $1B, $12, $15, $38, $3F,
$36, $31, $24, $23, $2A, $2D, $70, $77, $7E, $79,
$6C, $6B, $62, $65, $48, $4F, $46, $41, $54, $53,
$5A, $5D, $E0, $E7, $EE, $E9, $FC, $FB, $F2, $F5,
$D8, $DF, $D6, $D1, $C4, $C3, $CA, $CD, $90, $97,
$9E, $99, $8C, $8B, $82, $85, $A8, $AF, $A6, $A1,
$B4, $B3, $BA, $BD, $C7, $C0, $C9, $CE, $DB, $DC,
$D5, $D2, $FF, $F8, $F1, $F6, $E3, $E4, $ED, $EA,
$B7, $B0, $B9, $BE, $AB, $AC, $A5, $A2, $8F, $88,
$81, $86, $93, $94, $9D, $9A, $27, $20, $29, $2E,
$3B, $3C, $35, $32, $1F, $18, $11, $16, $03, $04,
$0D, $0A, $57, $50, $59, $5E, $4B, $4C, $45, $42,
$6F, $68, $61, $66, $73, $74, $7D, $7A, $89, $8E,
$87, $80, $95, $92, $9B, $9C, $B1, $B6, $BF, $B8,
$AD, $AA, $A3, $A4, $F9, $FE, $F7, $F0, $E5, $E2,
$EB, $EC, $C1, $C6, $CF, $C8, $DD, $DA, $D3, $D4,
$69, $6E, $67, $60, $75, $72, $7B, $7C, $51, $56,
$5F, $58, $4D, $4A, $43, $44, $19, $1E, $17, $10,
$05, $02, $0B, $0C, $21, $26, $2F, $28, $3D, $3A,
$33, $34, $4E, $49, $40, $47, $52, $55, $5C, $5B,
$76, $71, $78, $7F, $6A, $6D, $64, $63, $3E, $39,
$30, $37, $22, $25, $2C, $2B, $06, $01, $08, $0F,
$1A, $1D, $14, $13, $AE, $A9, $A0, $A7, $B2, $B5,
$BC, $BB, $96, $91, $98, $9F, $8A, $8D, $84, $83,
$DE, $D9, $D0, $D7, $C2, $C5, $CC, $CB, $E6, $E1,
$E8, $EF, $FA, $FD, $F4, $F3);
var
i,v1,v2,v3,v4,v5,v6,v7,v8,v9:Integer;
SumValue:string;
ByteArray:array[0..19] of Byte;
begin
Randomize();
v1:=0;
v2:=0;
v3:=0;
v4:=0;
v5:=1;
v6:=8217;
v7:=53;
v8:= Random(32) shl 8;
v8:=v8 xor Random(32);
v8:= v8 mod $10000;
SumValue:=Format('%d',[v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8]);
v9:=0;
for i := 0 to Length(SumValue)-1 do
begin
v9:=v9 xor ByteMap[Ord(SumValue[i+1])];
end;
ByteArray[0] := ((v8 shr 1) and 8) or ((v8 shr 5) and 4) or (2 * v5 and 2);
ByteArray[1] := ((v7 shr 1) and 16) or ((v7 shr 4) and 8) or ((v6 shr 5) and 2) or ((v6 shr 8) and 1);
ByteArray[2] := (2 * v7 and 16) or (8 * v8 and 8) or ((v5 shr 1) and 4) or ((v6 shr 4) and 2) or (v3 and 1);
ByteArray[3] := (4 * v5 and 16);
ByteArray[4] := (4 * v9 and 16) or ((v6 shr 4) and 8);
ByteArray[5] := (8 * v4 and 8) or ((v8 shr 1) and 4) or ((v8 shr 12) and 2);
ByteArray[6] := ((v9 shr 3) and 8) or ((v8 shr 4) and 4) or (2 * v1 and 2);
ByteArray[7] := ((v8 shr 11) and 16) or ((v8 shr 7) and 8) or (4 * v6 and 4) or ((v5 shr 3) and 2);
ByteArray[8] := ((v8 shr 7) and 16) or ((v6 shr 1) and 1);
ByteArray[9] := (4 * v6 and 16) or (v9 and 8) or (v8 and 4);
ByteArray[10] := ((v8 shr 9) and 8);
ByteArray[11] := (4 * v9 and 8) or (4 * v9 and 4) or (v8 and 2) or ((v8 shr 5) and 1);
ByteArray[12] := ((v8 shr 8) and 1);
ByteArray[13] := ((v6 shr 7) and 16) or ((v9 shr 7) and 1);
ByteArray[14] := (2 * v7 and 2) or ((v7 shr 1) and 1);
ByteArray[15] := (v6 and 8) or ((v6 shr 2) and 4) or ((v8 shr 9) and 1);
ByteArray[16] := (16 * v2 and 16) or (2 * v7 and 8) or ((v5 shr 1) and 1);
ByteArray[17] := ((v9 shr 3) and 2);
ByteArray[18] := (v7 and 16) or ((v6 shr 6) and 8) or ((v6 shr 8) and 4) or ((v8 shr 13) and 2) or ((v9 shr 5) and 1);
ByteArray[19] := ((v6 shr 9) and 16) or ((v7 shr 3) and 8) or ((v6 shr 11) and 2);
Result:='';
for i := 0 to Length(ByteArray)-1 do
begin
if (i=4) or (i=10) or (i=16) then Result:=Result+'-';
Result:=Result+StrMap[ByteArray[i]+1];
end;
end;
function GetRegistrationCode():string;
function GetKey():DWORD;
const
KeyMap:string='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890X';
var
ComputerName:array[0..MAX_PATH-1] of Char;
Key:string;
nSize:Cardinal;
i,j:Integer;
begin
Result:=$ED864640;
if (GetComputerName(@ComputerName[0],nSize)=False) then
Key:='localhost'
else
Key:=string(ComputerName);
Key:=UpperCase(Key);
for i := 0 to Length(Key)-1 do
begin
for j := 0 to Length(KeyMap)-1 do
begin
if (Key[i+1]=KeyMap[j+1]) then Break;
end;
if j>=Length(KeyMap) then
Result:=Result+16*88
else
Result:=Result+16*Ord(KeyMap[36-j]);
end;
end;
var
FileName:string;
MemoryStream:TMemoryStream;
dwVerify,dwSize:DWORD;
pBuf,p:PByte;
i,j,eax,ebx,esi:Cardinal;
begin
Result:='';
MemoryStream:=TMemoryStream.Create;
try
if GetAppDataPath<>'' then
begin
FileName:=GetAppDataPath+'\Embarcadero\.licenses\.cg_license';
if FileExists(FileName) then
begin
MemoryStream.LoadFromFile(FileName);
end
else
begin
FileName:=GetAppDataPath+'\Embarcadero\.cg_license';
if FileExists(FileName) then
begin
MemoryStream.LoadFromFile(FileName);
end;
end;
end;
if MemoryStream.Size>8 then
begin
MemoryStream.Position:=0;
MemoryStream.Read(dwVerify,SizeOf(dwVerify));
MemoryStream.Read(dwSize,SizeOf(dwSize));
dwVerify:=(Swap(loWord(dwVerify)) shl 16) or Swap(HiWord(dwVerify));
dwSize:=(Swap(loWord(dwSize)) shl 16) or Swap(HiWord(dwSize));
pBuf:=AllocMem(dwSize);
MemoryStream.Read(pBuf^,dwSize);
p:=pBuf;
eax:=GetKey();
for i := 0 to dwSize-1 do
begin
esi:=p^;
if (esi and $80)=$80 then esi:=esi or $ffffff00;
ebx:=(eax shr 24) and $FF;
p^:=p^ xor ebx;
inc(p);
eax:=eax xor esi;
ebx:=eax shl 8;
eax:=eax xor ebx;
ebx:=eax shl 16;
eax:= eax xor ebx;
ebx:=eax shl 24;
eax:=eax xor ebx;
end;
eax:=eax and $7FFFFFFF;
if eax=dwVerify then
begin
for i := 0 to dwSize-1 do
begin
if PByte(Cardinal(pBuf)+i)^=36 then Break; //$
end;
Inc(i);
j:=0;
while (i<dwSize) and (PByte(Cardinal(pBuf)+i)^<>13) and (j<10) do
begin
Result:=Result+Chr(PByte(Cardinal(pBuf)+i)^);
Inc(i);
inc(j);
end;
end;
FreeMem(pBuf,dwSize);
end;
finally
MemoryStream.Free;
end;
end;
procedure PatchmOasisRuntime(RadStudioVersion:PRadStudioVersion);
var
Stream:TMemoryStream;
FileName:string;
P:PByte;
begin
FileName:=Format('%s\%s\OFFLINE\mOasisDesigntime.dll\mOasisRuntime.dll',[GetAppDataPath,RadStudioVersion^.SetupGUID]);
if FileExists(FileName) then
begin
if SHA1Print(SHA1File(FileName))=RadStudioVersion^.mOasisRuntimePatchInfo.Sha1 then
begin
Stream:=TMemoryStream.Create;
try
Stream.LoadFromFile(FileName);
P:= PByte(DWORD(Stream.Memory)+RadStudioVersion^.mOasisRuntimePatchInfo.PatchOffset);
P^:=$EB;
Stream.SaveToFile(FileName);
finally
Stream.Free;
end;
end;
end;
end;
function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
const
ModStr:string='8EBD9E688D7106E57BCF63D41BADCE133FEB4CDB718F48F7BF39F6A26EB60BAE'+
'0E930DC984FDED2537750C9DCFBB87D7AC7F3AA4D65D9E35C2D277BCB0ECDCA0'+
'2D7DAE739AC8BCAE86914F6E77C17A82C77438421FC315DC38F09C7E840AF41E'+
'663C5562222E661ED22578A234B58481F862CEABF477C89AE70F15134F83BC7E'+
'C2EF57E7274EB74353DE22283113485D9803D4050EF46DB1467EE9D066B104EB'+
'385D3C36BD29B58E237E22C0BE66D450BDFCED524481B6DCE3F83BBEC547F926'+
'AD23057504DEDB9723EBFD26218167AAC79485FF608F8881D9A6AF5C57BE9A2F'+
'B52047ABA92F806955580517F6D147BA1FD5DB3EEF1CEE4CA250D1C0FA824CD9';
ExpStr:string='7E8325B1791B628766F2EB82057E4895DB234C1D7B4B09DB3B8BBE433D68F075'+
'36C9B38096F51088D9DC4E7058BBD7AC9A60B1B383A3BA23E026F6A53112DE80'+
'C191115BB9268DC509D424D8BE1FA7DBDDB7EE5CFD15C57C48A349B1008B4CCE'+
'DCC240D31784945260E3814612FD871242FA203F5C1006A6F47FF3A807E3B4DE'+
'39535FB5523ABED7B4337606E69245EC13BF9B553FD6F45B0FD290D7CBBEB8C8'+
'DF2252DE7EB6A83A679873CC9842B52A093ED00742F11CD23CB5278873253E79'+
'0E30B16AC72B7ACF9824B568ED971D768B95CA9D4C9A40C884542B8696AADF58'+
'184CE6376E51451EF8D266ECA691ECAB25E15AA8E527312755A55C2B7D390AD9';
var
Slip,Tmp:AnsiString;
Len,v2,v5:Cardinal;
FGInt,exp,modb,res:TFGInt;
i:Integer;
Stream:TMemoryStream;
SearchRec:TSearchRec;
begin
Result:=False;
if (Trim(SerialNumber)='') or (Trim(RegistrationCode)='') or
(TryStrToInt(Trim(RegistrationCode),i)=False) then Exit;
Slip:=AnsiString(CreateLicenseText(SerialNumber,RegistrationCode,RadStudioVersion));
Len:= Length(Slip);
Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len));
Tmp:=PChar(@Len)^+(PChar(@Len)+1)^+(PChar(@Len)+2)^+(PChar(@Len)+3)^+Slip;
Tmp:='01'+StringOfChar('F',66)+'00'+UpperCase(SHA1Print(SHA1String(Tmp)));
ConvertHexStringToBase256String(Tmp,Tmp);
Base256StringToFGInt(Tmp,FGInt);
ConvertHexStringToBase256String(ExpStr,Tmp);
Base256StringToFGInt(Tmp,exp);
ConvertHexStringToBase256String(ModStr,Tmp);
Base256StringToFGInt(Tmp,modb);
FGIntModExp(FGInt,exp,modb,res);
FGIntToBase256String(res,Tmp);
PGPConvertBase256to64(Tmp,Tmp);
FGIntDestroy(FGInt);
FGIntDestroy(exp);
FGIntDestroy(modb);
FGIntDestroy(res);
Slip:=StringReplace(Slip,'e.sign'#10'0'#10,'e.sign'#10'CgeEeu66fCgQJBaqKQwwyiqyHYb22nc2VZRmQVasSDnZAtB/QTLt0CYdgdN16XCz/Nt032fMwTsytchG0l2UeA=='#10,[rfReplaceAll]);
Slip:=StringReplace(Slip,'e.sign2'#10'0'#10,'e.sign2'#10'JWKzOwTKBL+zOP5wrouG5ta/mH+Fvsgb7hb8oJTzu4r3gK/6sh95zKAWKiydqsgvV9pxPXTAlkxv9wAecqJKTQ=='#10,[rfReplaceAll]);
Slip:=StringReplace(Slip,'e.sign3'#10'0'#10,'e.sign3'#10+Tmp+#10,[rfReplaceAll]);
v2:=$E7F931C2;
for i := 0 to Length(Slip) - 1 do
begin
Slip[i+1]:=Chr(Ord(Slip[i+1]) xor ((v2 shr 24) and $FF));
v5:=Ord(Slip[i+1]);
if (v5 and $80)=$80 then v5:=v5 or $ffffff00;
v5:= v5 xor v2;
v5:=(v5 shl 8) xor v5;
v5:=(v5 shl 16) xor v5;
v5:=(v5 shl 24) xor v5;
v2:=v5;
end;
v2:=(Swap(loWord(v2)) shl 16) or Swap(HiWord(v2));
Len:=Length(Slip);
Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len));
Stream:=TMemoryStream.Create;
try
Stream.Write(v2,4);
Stream.Write(Len,4);
Stream.Write(Slip[1],Length(Slip));
if (FileName='') or (not DirectoryExists(ExtractFilePath(FileName))) then
begin
if DirectoryExists(GetAppDataPath+'\Embarcadero') then
begin
Tmp:=Format('%s\Embarcadero\.%d_%d.19*.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU]);
{
if (FindFirst(Tmp,faAnyFile,SearchRec)=0) and
(MessageBox(0,PAnsiChar(Format('Do you want to Delete the old slip file int %s folder',[GetAppDataPath])), 'Rad Studio Keygen',MB_YESNO + MB_ICONQUESTION) = IDYES) then
}
if (FindFirst(Tmp,faAnyFile,SearchRec)=0) then
begin
DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name])));
while FindNext(SearchRec)=0 do
begin
DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name])));
end;
end;
SysUtils.FindClose(SearchRec);
FileName:=Format('%s\Embarcadero\.%d_%d.19%d%d%d%d%d%d%d%d%d%d%d.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU,
Random(10),Random(10),Random(10),Random(10),Random(10),
Random(10),Random(10),Random(10),Random(10),Random(10),Random(10)]);
end
else
FileName:=ExtractFileDir(ParamStr(0))+'\RAD Studio Activation.slip';
end;
Stream.SaveToFile(FileName);
PatchmOasisRuntime(RadStudioVersion);
Result:=True;
finally
Stream.Free;
end;
end;
function PatchFile(RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean;
var
Stream:TMemoryStream;
Reg:TRegistry;
RootDir:string;
begin
Result:=False;
RootDir:='';
FileName:='';
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey(Format('SOFTWARE\Embarcadero\BDS\%s',[RadStudioVersion^.BDSVersion]), False);
RootDir:=Reg.ReadString('RootDir');
finally
Reg.Free;
end;
if DirectoryExists(RootDir+'\Bin') and FileExists(RootDir+'\Bin\bds.exe') and FileExists(RootDir+'\Bin\LicenseManager.exe') then
begin
if (SHA1Print(SHA1File(RootDir+'\Bin\bds.exe'))=RadStudioVersion^.BdsPatchInfo.Sha1) and
(SHA1Print(SHA1File(RootDir+'\Bin\LicenseManager.exe'))=RadStudioVersion^.LicenseManagerPatchInfo.Sha1) then
begin
CreateSHFolderData(RadStudioVersion);
FileName:= RootDir+'\Bin\SHFolder.dll';
Stream:=TMemoryStream.Create;
try
Stream.Write(SHFolderData,Length(SHFolderData));
Stream.SaveToFile(FileName);
Result:=True;
finally
Stream.Free;
end;
end;
end;
end;
end.

View File

@ -0,0 +1,313 @@
unit RadLicense;
interface
uses RadVersion,SysUtils;
function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string;
implementation
function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string;
var
pid,skuid:string;
begin
pid:=IntToStr(RadStudioVersion^.LicHostPID);
skuid:=IntToStr(RadStudioVersion^.LicHostSKU);
Result:='11'#10;
Result:=Result+'e.pkg'#10'RAD Studio '+ RadStudioVersion^.LicVerStr +' Architect'#10;
Result:=Result+'e.pt'#10'10'#10;
Result:=Result+'e.sign'#10'0'#10;
Result:=Result+'e.sign2'#10'0'#10;
Result:=Result+'e.sign3'#10'0'#10;
Result:=Result+'export.allowed'#10'0'#10;
Result:=Result+'import.allowed'#10'1'#10;
Result:=Result+'import.silent'#10'1'#10;
Result:=Result+'licensed.serialno'#10+SerialNumber+#10;
Result:=Result+'nodelock.node'#10'0'#10;
Result:=Result+'nodelock.session'#10+ActiveCode+#10;
Result:=Result+'2'#10;
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'1'#10;
Result:=Result+'platform_label'#10'Windows'#10;
Result:=Result+'product'#10'2000'#10;
Result:=Result+'productid'#10+ RadStudioVersion^.LicDelphiPID +#10;
Result:=Result+'productid_label'#10'Delphi '+ RadStudioVersion^.LicVerStr +#10;
Result:=Result+'productsku'#10+skuid+#10;
Result:=Result+'productsku_label'#10'Architect'#10;
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10+skuid+#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Permanent'#10;
Result:=Result+'title'#10'Delphi '+ RadStudioVersion^.LicVerStr +' Architect'#10;
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'24'#10;
Result:=Result+'27'#10;
Result:=Result+'Android'#10'T'#10;
Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10;
Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10;
Result:=Result+'Desktop'#10'T'#10;
Result:=Result+'FULLQA'#10'TRUE'#10;
Result:=Result+'FirstRegistered'#10'9151978200000'#10;
Result:=Result+'FulliOS'#10'T'#10;
Result:=Result+'MODELLING'#10'TRUE'#10;
Result:=Result+'Mobile'#10'T'#10;
Result:=Result+'OSX32'#10'T'#10;
Result:=Result+'Win32'#10'T'#10;
Result:=Result+'Win64'#10'T'#10;
Result:=Result+'a100'#10'MakeThingsHappen'#10;
Result:=Result+'a1000'#10'PrintMoreMoney'#10;
Result:=Result+'a101'#10'ImGivinItAllShesGot'#10;
Result:=Result+'a200'#10'StampIt'#10;
Result:=Result+'a250'#10'ItsToolTimeBaby'#10;
Result:=Result+'a300'#10'TheMalteseFalcon'#10;
Result:=Result+'a301'#10'GlueSolvent'#10;
Result:=Result+'a3013'#10'GlueSolvent'#10;
Result:=Result+'crd'#10'9151978200000'#10;
Result:=Result+'hostsuite'#10+pid+#10;
Result:=Result+'iOSDevice'#10'T'#10;
Result:=Result+'iOSDevice32'#10'T'#10;
Result:=Result+'iOSDevice64'#10'T'#10;
Result:=Result+'iOSSimulator'#10'T'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'1'#10;
Result:=Result+'platform_label'#10'Windows'#10;
Result:=Result+'product'#10'4000'#10;
Result:=Result+'productid'#10+ RadStudioVersion^.LicCBuilderPID +#10;
Result:=Result+'productid_label'#10'C++Builder '+ RadStudioVersion^.LicVerStr +#10;
Result:=Result+'productsku'#10+skuid+#10;
Result:=Result+'productsku_label'#10'Architect'#10; //Architect
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10+skuid+#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Permanent'#10;
Result:=Result+'title'#10'C++Builder '+ RadStudioVersion^.LicVerStr +' Architect'#10;
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'17'#10;
Result:=Result+'26'#10;
Result:=Result+'Android'#10'T'#10;
Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10;
Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10;
Result:=Result+'Desktop'#10'T'#10;
Result:=Result+'FULLQA'#10'TRUE'#10;
Result:=Result+'FirstRegistered'#10'9151978200000'#10;
Result:=Result+'FulliOS'#10'T'#10;
Result:=Result+'MODELLING'#10'TRUE'#10;
Result:=Result+'Mobile'#10'T'#10;
Result:=Result+'OSX32'#10'T'#10;
Result:=Result+'Win32'#10'T'#10;
Result:=Result+'Win64'#10'T'#10;
Result:=Result+'a100'#10'MakeThingsHappen'#10;
Result:=Result+'a1000'#10'PrintMoreMoney'#10;
Result:=Result+'a101'#10'ImGivinItAllShesGot'#10;
Result:=Result+'a200'#10'StampIt'#10;
Result:=Result+'a250'#10'ItsToolTimeBaby'#10;
Result:=Result+'a300'#10'TheMalteseFalcon'#10;
Result:=Result+'a301'#10'GlueSolvent'#10;
Result:=Result+'crd'#10'9151978200000'#10;
Result:=Result+'hostsuite'#10+pid+#10;
Result:=Result+'iOSDevice'#10'T'#10;
Result:=Result+'iOSDevice32'#10'T'#10;
Result:=Result+'iOSDevice64'#10'T'#10;
Result:=Result+'iOSSimulator'#10'T'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
{
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'0'#10;
Result:=Result+'platform_label'#10'Cross platform'#10;
Result:=Result+'product'#10'7000'#10;
Result:=Result+'productid'#10'7111'#10;
Result:=Result+'productid_label'#10'InterBase XE7'#10; //InterBase XE7
Result:=Result+'productsku'#10'0'#10;
Result:=Result+'productsku_label'#10'Server'#10; //Server
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10'0'#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Unlimited'#10;
Result:=Result+'title'#10'InterBase XE7 Server'#10; //InterBase XE7 Server
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'6'#10;
Result:=Result+'22'#10;
Result:=Result+'FirstRegistered'#10'9151978200000'#10;
Result:=Result+'changeView'#10'1'#10;
Result:=Result+'connectionMonitoring'#10'1'#10;
Result:=Result+'connectionsPerUser'#10'200'#10;
Result:=Result+'customVarId'#10' '#10;
Result:=Result+'databaseAccess'#10'1'#10;
Result:=Result+'dbEncryption'#10'1'#10;
Result:=Result+'ddlOperations'#10'1'#10;
Result:=Result+'devLicense'#10'1'#10;
Result:=Result+'externalFileAccess'#10'1'#10;
Result:=Result+'internetAccess'#10'1'#10;
Result:=Result+'languages'#10'ALL'#10;
Result:=Result+'licensedCpus'#10'32'#10;
Result:=Result+'licensedUsers'#10'5000'#10;
Result:=Result+'nodeID'#10' '#10;
Result:=Result+'otwEncryption'#10'1'#10;
Result:=Result+'remoteAccess'#10'1'#10;
Result:=Result+'serverAccess'#10'1'#10;
Result:=Result+'togoAccess'#10'0'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
Result:=Result+'useAddons'#10'0'#10;
Result:=Result+'version'#10'12.0'#10;
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'0'#10;
Result:=Result+'platform_label'#10'Cross platform'#10;
Result:=Result+'product'#10'7000'#10;
Result:=Result+'productid'#10'7111'#10;
Result:=Result+'productid_label'#10'InterBase XE7'#10; //InterBase XE7
Result:=Result+'productsku'#10'16'#10;
Result:=Result+'productsku_label'#10'ToGo Edition'#10; //ToGo Edition
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10'16'#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Unlimited'#10;
Result:=Result+'title'#10'InterBase XE7 ToGo Edition'#10; //InterBase XE7 ToGo Edition
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'6'#10;
Result:=Result+'22'#10;
Result:=Result+'FirstRegistered'#10'9151978200000'#10;
Result:=Result+'changeView'#10'1'#10;
Result:=Result+'connectionMonitoring'#10'1'#10;
Result:=Result+'connectionsPerUser'#10'200'#10;
Result:=Result+'customVarId'#10' '#10;
Result:=Result+'databaseAccess'#10'1'#10;
Result:=Result+'dbEncryption'#10'1'#10;
Result:=Result+'ddlOperations'#10'1'#10;
Result:=Result+'devLicense'#10'1'#10;
Result:=Result+'externalFileAccess'#10'1'#10;
Result:=Result+'internetAccess'#10'1'#10;
Result:=Result+'languages'#10'ALL'#10;
Result:=Result+'licensedCpus'#10'32'#10;
Result:=Result+'licensedUsers'#10'5000'#10;
Result:=Result+'nodeID'#10' '#10;
Result:=Result+'otwEncryption'#10'1'#10;
Result:=Result+'remoteAccess'#10'1'#10;
Result:=Result+'serverAccess'#10'1'#10;
Result:=Result+'togoAccess'#10'1'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
Result:=Result+'useAddons'#10'0'#10;
Result:=Result+'version'#10'12.0'#10;
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'1'#10;
Result:=Result+'platform_label'#10'Windows'#10;
Result:=Result+'product'#10'2700'#10;
Result:=Result+'productid'#10'2705'#10;
Result:=Result+'productid_label'#10'HTML5 Builder'#10; //HTML5 Builder
Result:=Result+'productsku'#10'0'#10;
Result:=Result+'productsku_label'#10'RadPHP'#10; //RadPHP
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10'0'#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Permanent'#10;
Result:=Result+'title'#10'HTML5 Builder'#10; //HTML5 Builder
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'5'#10;
Result:=Result+'1'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
Result:=Result+'26'#10;
Result:=Result+'active'#10'T'#10;
Result:=Result+'beta'#10'0'#10;
Result:=Result+'exportable'#10'0'#10;
Result:=Result+'hostpid'#10+pid+#10;
Result:=Result+'hostskuid'#10+skuid+#10;
Result:=Result+'internaluse'#10'0'#10;
Result:=Result+'naggy'#10'0'#10;
Result:=Result+'noncommercial'#10'0'#10;
Result:=Result+'noncommercial_label'#10'No'#10;
Result:=Result+'platform'#10'1'#10;
Result:=Result+'platform_label'#10'Windows'#10;
Result:=Result+'product'#10'14100'#10;
Result:=Result+'productid'#10'14110'#10;
Result:=Result+'productid_label'#10'ER/Studio 2016'#10;
Result:=Result+'productsku'#10'15'#10;
Result:=Result+'productsku_label'#10'Developer MultiPlatform'#10; //Developer MultiPlatform
Result:=Result+'rndkey'#10'13371337'#10;
Result:=Result+'serialno'#10+SerialNumber+#10;
Result:=Result+'sku'#10'15'#10;
Result:=Result+'templicense'#10'0'#10;
Result:=Result+'termtype'#10'0'#10;
Result:=Result+'termtype_label'#10'Permanent'#10;
Result:=Result+'title'#10'ER/Studio Developer 2016'#10;
Result:=Result+'trial'#10'0'#10;
Result:=Result+'upgrade'#10'0'#10;
Result:=Result+'version'#10'10'#10;
Result:=Result+'3'#10;
Result:=Result+'CrossPlatform'#10'T'#10;
Result:=Result+'baseLicense'#10'Developer'#10;
Result:=Result+'updatelevel'#10'0.0'#10;
}
end;
end.

View File

@ -0,0 +1,168 @@
unit RadVersion;
interface
uses Windows,Classes,SysUtils;
type
TPatchInfo=record
Crc:DWORD;
Sha1:string;
PatchOffset:DWORD;
FinalizeArrayOffset:DWORD;
end;
TRadStudioVersion=record
Name:string; // Rad Studio 10.1 Berlin Update1
Ver:string; // 24.0.24468.8770
BDSVersion:string; // 18.0
LicVerStr:string; // 10.1 Berlin
LicHostPID:Integer; // 8218
LicHostSKU:Integer; // 53
LicDelphiPID:string;
LicCBuilderPID:string;
BdsPatchInfo:TPatchInfo;
LicenseManagerPatchInfo:TPatchInfo;
mOasisRuntimePatchInfo:TPatchInfo;
SetupGUID:string;
ISOUrl:string;
ISOMd5:string;
end;
PRadStudioVersion=^TRadStudioVersion;
var
RadStudioVersionList:TStringList;
implementation
procedure InitRadStudioVersion(VerList:TStringList);
var
RadStudioVersion:PRadStudioVersion;
begin
New(RadStudioVersion);
with RadStudioVersion^ do
begin
Name:='Rad Studio 10.1 Berlin Update1';
Ver:= '24.0.24468.8770';
BDSVersion:='18.0';
LicVerStr:= '10.1 Berlin';
LicHostPID:= 8218;
LicHostSKU:= 53;
LicDelphiPID:='2024';
LicCBuilderPID:='4021';
BdsPatchInfo.Crc:=$9626A6DC;
BdsPatchInfo.Sha1:='82d3cd849786f2ece428ab7518ec9ecf47d475e6';
BdsPatchInfo.PatchOffset:=$51449;
BdsPatchInfo.FinalizeArrayOffset:=$264584;
LicenseManagerPatchInfo.Crc:=$3B314A18;
LicenseManagerPatchInfo.Sha1:='79b342e41f97728e16c6302e08b44f89b0655a9e';
LicenseManagerPatchInfo.PatchOffset:=$1E8FB5;
LicenseManagerPatchInfo.FinalizeArrayOffset:=$6729E0;
mOasisRuntimePatchInfo.Sha1:='7aa466dd1d2c685edd69ee41d1c8ebc1d2b56bb4';
mOasisRuntimePatchInfo.PatchOffset:=$00162CBD;
SetupGUID:='{37C118B3-EF7F-4110-BFE5-E866FB456C8E}';
ISOUrl:='http://altd.embarcadero.com/download/radstudio/10.1/delphicbuilder10_1_upd1.iso';
ISOMd5:='a85a0fba4f8bab121312184cda85c198';
end;
VerList.AddObject(RadStudioVersion^.Name,TObject(RadStudioVersion));
New(RadStudioVersion);
with RadStudioVersion^ do
begin
Name:='Rad Studio 10.1 Berlin';
Ver:= '24.0.22858.6822';
BDSVersion:='18.0';
LicVerStr:= '10.1 Berlin';
LicHostPID:= 8218;
LicHostSKU:= 53;
LicDelphiPID:='2024';
LicCBuilderPID:='4021';
BdsPatchInfo.Crc:=$1BA3E394;
BdsPatchInfo.Sha1:='a492883335230bced0651338584fbe8c49bd94a8';
BdsPatchInfo.PatchOffset:=$51449;
BdsPatchInfo.FinalizeArrayOffset:=$264584;
LicenseManagerPatchInfo.Crc:=$D2BAA257;
LicenseManagerPatchInfo.Sha1:='d0d024b97d02608a505fb0e667dd564b53c91b13';
LicenseManagerPatchInfo.PatchOffset:=$1E9035;
LicenseManagerPatchInfo.FinalizeArrayOffset:=$6719B8;
mOasisRuntimePatchInfo.Sha1:='7aa466dd1d2c685edd69ee41d1c8ebc1d2b56bb4';
mOasisRuntimePatchInfo.PatchOffset:=$00162CBD;
SetupGUID:='{655CBACE-A23C-42B8-B924-A88E80F352B5}';
ISOUrl:='http://altd.embarcadero.com/download/radstudio/10.1/delphicbuilder10_1.iso';
ISOMd5:='466d2db93e5b3b631eabba69d052b28f';
end;
VerList.AddObject(RadStudioVersion^.Name,TObject(RadStudioVersion));
New(RadStudioVersion);
with RadStudioVersion^ do
begin
Name:='Rad Studio 10 Seattle Update1';
Ver:= '23.0.21418.4207';
BDSVersion:='17.0';
LicVerStr:= '10 Seattle';
LicHostPID:= 8217;
LicHostSKU:= 53;
LicDelphiPID:='2023';
LicCBuilderPID:='4020';
BdsPatchInfo.Crc:=$b5bd665f;
BdsPatchInfo.Sha1:='e8cc301efc449f90750d921ab73be31d824c08c6';
BdsPatchInfo.PatchOffset:=$4fe51;
BdsPatchInfo.FinalizeArrayOffset:=$225f84;
LicenseManagerPatchInfo.Crc:=$8395454d;
LicenseManagerPatchInfo.Sha1:='0ca4640d6c1c2f470ff3182809b881a97e76e534';
LicenseManagerPatchInfo.PatchOffset:=$1ca696;
LicenseManagerPatchInfo.FinalizeArrayOffset:=$6306ac;
mOasisRuntimePatchInfo.Sha1:='7aa466dd1d2c685edd69ee41d1c8ebc1d2b56bb4';
mOasisRuntimePatchInfo.PatchOffset:=$00162CBD;
SetupGUID:='{5D50B637-4756-435A-816E-68ABFE86FC69}';
ISOUrl:='http://altd.embarcadero.com/download/radstudio/10/delphicbuilder10___upd1.iso';
ISOMd5:='34bf51b0f017541b8521e7efd2b6fbee';
end;
VerList.AddObject(RadStudioVersion^.Name,TObject(RadStudioVersion));
New(RadStudioVersion);
with RadStudioVersion^ do
begin
Name:='Rad Studio 10 Seattle';
Ver:= '23.0.20618.2753';
BDSVersion:='17.0';
LicVerStr:= '10 Seattle';
LicHostPID:= 8217;
LicHostSKU:= 53;
LicDelphiPID:='2023';
LicCBuilderPID:='4020';
BdsPatchInfo.Crc:=$59176e2b;
BdsPatchInfo.Sha1:='0f4255ee60dc860bdcf75c3358d03674757474a5';
BdsPatchInfo.PatchOffset:=$500ea;
BdsPatchInfo.FinalizeArrayOffset:=$225ec8;
LicenseManagerPatchInfo.Crc:=$d06c02b0;
LicenseManagerPatchInfo.Sha1:='4ff37906e7283448aecab34c73c8dbe3d45f55a6';
LicenseManagerPatchInfo.PatchOffset:=$1ca98a;
LicenseManagerPatchInfo.FinalizeArrayOffset:=$630634;
mOasisRuntimePatchInfo.Sha1:='7aa466dd1d2c685edd69ee41d1c8ebc1d2b56bb4';
mOasisRuntimePatchInfo.PatchOffset:=$00162CBD;
SetupGUID:='{09FECC13-2950-4AE6-BB23-05C206979F18}';
ISOUrl:='http://altd.embarcadero.com/download/radstudio/10/delphicbuilder10.iso';
ISOMd5:='9d4bac568aced7f1f82d4a44124fb37c';
end;
VerList.AddObject(RadStudioVersion^.Name,TObject(RadStudioVersion));
end;
procedure FinallyRadStudioVersion(VerList:TStringList);
var
RadStudioVersion:PRadStudioVersion;
begin
while VerList.Count>0 do
begin
RadStudioVersion:=PRadStudioVersion(VerList.Objects[0]);
if RadStudioVersion<>nil then Dispose(RadStudioVersion);
VerList.Delete(0);
end;
end;
initialization
RadStudioVersionList:= TStringList.Create;
InitRadStudioVersion(RadStudioVersionList);
finalization
FinallyRadStudioVersion(RadStudioVersionList);
FreeAndNil(RadStudioVersionList);
end.

View File

@ -0,0 +1,894 @@
unit SHFolderDll;
interface
uses RadVersion,Windows;
procedure CreateSHFolderData(RadStudioVersion:PRadStudioVersion);
var
SHFolderData: array[0..13823] of byte = (
$4D, $5A, $90, $00, $03, $00, $00, $00, $04, $00, $00, $00, $FF, $FF, $00, $00,
$B8, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $D8, $00, $00, $00,
$0E, $1F, $BA, $0E, $00, $B4, $09, $CD, $21, $B8, $01, $4C, $CD, $21, $54, $68,
$69, $73, $20, $70, $72, $6F, $67, $72, $61, $6D, $20, $63, $61, $6E, $6E, $6F,
$74, $20, $62, $65, $20, $72, $75, $6E, $20, $69, $6E, $20, $44, $4F, $53, $20,
$6D, $6F, $64, $65, $2E, $0D, $0D, $0A, $24, $00, $00, $00, $00, $00, $00, $00,
$C9, $E7, $94, $1A, $8D, $86, $FA, $49, $8D, $86, $FA, $49, $8D, $86, $FA, $49,
$68, $DF, $FE, $48, $88, $86, $FA, $49, $84, $FE, $69, $49, $88, $86, $FA, $49,
$8D, $86, $FB, $49, $A7, $86, $FA, $49, $7F, $DF, $F3, $48, $8A, $86, $FA, $49,
$7F, $DF, $FA, $48, $8C, $86, $FA, $49, $7F, $DF, $05, $49, $8C, $86, $FA, $49,
$7F, $DF, $F8, $48, $8C, $86, $FA, $49, $52, $69, $63, $68, $8D, $86, $FA, $49,
$00, $00, $00, $00, $00, $00, $00, $00, $50, $45, $00, $00, $4C, $01, $05, $00,
$E1, $70, $F1, $55, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $00, $02, $21,
$0B, $01, $0E, $00, $00, $1C, $00, $00, $00, $18, $00, $00, $00, $00, $00, $00,
$80, $18, $00, $00, $00, $10, $00, $00, $00, $30, $00, $00, $00, $00, $00, $10,
$00, $10, $00, $00, $00, $02, $00, $00, $05, $00, $01, $00, $00, $00, $00, $00,
$05, $00, $01, $00, $00, $00, $00, $00, $00, $70, $00, $00, $00, $04, $00, $00,
$FD, $77, $00, $00, $02, $00, $40, $05, $00, $00, $10, $00, $00, $10, $00, $00,
$00, $00, $10, $00, $00, $10, $00, $00, $00, $00, $00, $00, $10, $00, $00, $00,
$B0, $36, $00, $00, $6B, $00, $00, $00, $28, $38, $00, $00, $3C, $00, $00, $00,
$00, $50, $00, $00, $E0, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $00, $00, $E0, $01, $00, $00,
$30, $36, $00, $00, $1C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$50, $36, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $30, $00, $00, $B0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$2E, $74, $65, $78, $74, $00, $00, $00, $0D, $1A, $00, $00, $00, $10, $00, $00,
$00, $1C, $00, $00, $00, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $20, $00, $00, $60, $2E, $72, $64, $61, $74, $61, $00, $00,
$32, $0C, $00, $00, $00, $30, $00, $00, $00, $0E, $00, $00, $00, $20, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $40,
$2E, $64, $61, $74, $61, $00, $00, $00, $8C, $05, $00, $00, $00, $40, $00, $00,
$00, $04, $00, $00, $00, $2E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $40, $00, $00, $C0, $2E, $72, $73, $72, $63, $00, $00, $00,
$E0, $01, $00, $00, $00, $50, $00, $00, $00, $02, $00, $00, $00, $32, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $40,
$2E, $72, $65, $6C, $6F, $63, $00, $00, $E0, $01, $00, $00, $00, $60, $00, $00,
$00, $02, $00, $00, $00, $34, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $40, $00, $00, $42, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$51, $53, $56, $33, $F6, $56, $68, $80, $00, $00, $00, $6A, $03, $56, $6A, $01,
$68, $00, $00, $00, $80, $51, $FF, $15, $00, $30, $00, $10, $8B, $D8, $83, $FB,
$FF, $0F, $84, $81, $00, $00, $00, $57, $8D, $44, $24, $0C, $89, $74, $24, $0C,
$50, $53, $FF, $15, $04, $30, $00, $10, $8B, $F8, $83, $FF, $FF, $74, $61, $39,
$74, $24, $0C, $75, $5B, $55, $56, $56, $56, $6A, $02, $56, $53, $FF, $15, $08,
$30, $00, $10, $8B, $E8, $83, $FD, $FF, $74, $45, $56, $56, $56, $6A, $04, $55,
$FF, $15, $0C, $30, $00, $10, $8B, $D0, $85, $D2, $74, $2C, $83, $CE, $FF, $8B,
$CA, $85, $FF, $74, $1A, $0F, $B6, $01, $8D, $49, $01, $33, $C6, $C1, $EE, $08,
$0F, $B6, $C0, $33, $34, $85, $D0, $30, $00, $10, $83, $EF, $01, $75, $E6, $52,
$F7, $D6, $FF, $15, $10, $30, $00, $10, $55, $FF, $15, $14, $30, $00, $10, $5D,
$53, $FF, $15, $14, $30, $00, $10, $5F, $8B, $C6, $5E, $5B, $59, $C3, $CC, $CC,
$C7, $44, $24, $10, $00, $00, $00, $00, $C7, $44, $24, $0C, $00, $00, $00, $00,
$FF, $25, $A4, $30, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$FF, $25, $A8, $30, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$33, $C0, $40, $C2, $04, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$51, $81, $B9, $F0, $0F, $00, $00, $78, $56, $34, $12, $53, $8D, $99, $F0, $0F,
$00, $00, $74, $52, $56, $57, $8B, $3D, $18, $30, $00, $10, $8D, $44, $24, $0C,
$50, $6A, $40, $8D, $B1, $40, $F6, $02, $00, $6A, $02, $56, $FF, $D7, $B8, $B3,
$01, $00, $00, $66, $89, $06, $8D, $44, $24, $0C, $50, $FF, $74, $24, $10, $6A,
$02, $56, $FF, $D7, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $04, $53, $FF, $D7,
$8D, $44, $24, $0C, $C7, $03, $78, $56, $34, $12, $50, $FF, $74, $24, $10, $6A,
$04, $53, $FF, $D7, $5F, $5E, $5B, $59, $C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$53, $8B, $5C, $24, $14, $56, $57, $8B, $7C, $24, $18, $53, $57, $FF, $74, $24,
$1C, $FF, $74, $24, $1C, $FF, $15, $44, $45, $00, $10, $8B, $F0, $85, $F6, $75,
$5C, $85, $DB, $74, $58, $F7, $C7, $00, $00, $FF, $FF, $74, $50, $66, $39, $07,
$74, $4B, $8B, $57, $04, $F7, $C2, $00, $00, $FF, $FF, $74, $40, $8B, $CA, $66,
$39, $02, $74, $13, $66, $8B, $01, $83, $C1, $02, $66, $83, $F8, $5C, $0F, $44,
$D1, $66, $83, $39, $00, $75, $ED, $0F, $B7, $02, $83, $F8, $73, $74, $05, $83,
$F8, $53, $75, $17, $68, $D0, $34, $00, $10, $52, $FF, $15, $1C, $30, $00, $10,
$85, $C0, $75, $07, $8B, $0B, $E8, $15, $FF, $FF, $FF, $8B, $C6, $5F, $5E, $5B,
$C2, $10, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$50, $A1, $54, $45, $00, $10, $3B, $44, $24, $04, $75, $06, $8B, $45, $B4, $C6,
$00, $01, $58, $FF, $25, $58, $45, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$53, $8B, $5C, $24, $08, $56, $8B, $74, $24, $10, $57, $56, $53, $FF, $15, $3C,
$45, $00, $10, $8B, $F8, $85, $FF, $75, $77, $3B, $1D, $5C, $45, $00, $10, $75,
$6F, $F7, $C6, $00, $00, $FF, $FF, $74, $67, $B9, $F4, $34, $00, $10, $8B, $C6,
$8A, $10, $3A, $11, $75, $1A, $84, $D2, $74, $12, $8A, $50, $01, $3A, $51, $01,
$75, $0E, $83, $C0, $02, $83, $C1, $02, $84, $D2, $75, $E4, $33, $C0, $EB, $05,
$1B, $C0, $83, $C8, $01, $85, $C0, $74, $32, $B8, $10, $35, $00, $10, $66, $90,
$8A, $0E, $3A, $08, $75, $1A, $84, $C9, $74, $12, $8A, $4E, $01, $3A, $48, $01,
$75, $0E, $83, $C6, $02, $83, $C0, $02, $84, $C9, $75, $E4, $33, $C0, $EB, $05,
$1B, $C0, $83, $C8, $01, $85, $C0, $8B, $C7, $75, $05, $B8, $E0, $10, $00, $10,
$5F, $5E, $5B, $C2, $08, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$53, $55, $8B, $6C, $24, $0C, $8B, $5C, $24, $10, $8B, $4C, $24, $14, $8B, $44,
$24, $18, $8B, $54, $24, $1C, $F0, $0F, $C7, $4D, $00, $5D, $5B, $C2, $14, $00,
$74, $67, $60, $8B, $4D, $0C, $03, $C8, $8D, $51, $02, $81, $3A, $49, $6E, $74,
$65, $75, $4F, $81, $7A, $04, $72, $6C, $6F, $63, $75, $46, $81, $7A, $08, $6B,
$65, $64, $43, $75, $3D, $81, $7A, $0C, $6F, $6D, $70, $61, $75, $34, $81, $7A,
$10, $72, $65, $45, $78, $75, $2B, $81, $7A, $14, $63, $68, $61, $6E, $75, $22,
$81, $7A, $18, $67, $65, $36, $34, $75, $19, $80, $7A, $1C, $00, $75, $13, $B8,
$B0, $12, $00, $10, $8B, $55, $14, $89, $02, $61, $33, $C0, $FF, $25, $4C, $45,
$00, $10, $61, $FF, $25, $50, $45, $00, $10, $B8, $7A, $00, $00, $C0, $FF, $25,
$4C, $45, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$51, $56, $8B, $35, $24, $30, $00, $10, $68, $30, $35, $00, $10, $FF, $D6, $68,
$4C, $35, $00, $10, $A3, $60, $45, $00, $10, $FF, $D6, $8B, $35, $28, $30, $00,
$10, $68, $3C, $45, $00, $10, $68, $64, $35, $00, $10, $FF, $35, $60, $45, $00,
$10, $A3, $5C, $45, $00, $10, $FF, $D6, $BA, $10, $12, $00, $10, $8B, $C8, $E8,
$1A, $0B, $00, $00, $68, $74, $35, $00, $10, $FF, $35, $64, $45, $00, $10, $FF,
$D6, $85, $C0, $0F, $84, $6F, $01, $00, $00, $83, $3D, $60, $45, $00, $10, $00,
$0F, $84, $62, $01, $00, $00, $8B, $0D, $64, $45, $00, $10, $53, $55, $8D, $98,
$00, $FC, $FF, $FF, $8B, $51, $3C, $57, $8D, $78, $C0, $8B, $6C, $0A, $2C, $03,
$E9, $8B, $4C, $0A, $1C, $03, $CD, $3B, $DD, $89, $4C, $24, $10, $0F, $42, $DD,
$3B, $FB, $0F, $86, $2D, $01, $00, $00, $8D, $77, $03, $0F, $1F, $44, $00, $00,
$8B, $07, $25, $FF, $F8, $FF, $00, $3D, $C1, $E8, $1F, $00, $0F, $85, $E4, $00,
$00, $00, $8D, $56, $08, $8B, $CE, $3B, $F2, $0F, $83, $D7, $00, $00, $00, $90,
$8B, $01, $25, $FF, $F8, $FF, $00, $3D, $80, $E0, $01, $00, $74, $0A, $41, $3B,
$CA, $72, $ED, $E9, $BE, $00, $00, $00, $3B, $CA, $0F, $83, $B6, $00, $00, $00,
$83, $C1, $03, $8D, $51, $08, $3B, $CA, $0F, $83, $A8, $00, $00, $00, $66, $90,
$8B, $01, $25, $FF, $C7, $FF, $00, $3D, $88, $45, $13, $00, $74, $0A, $41, $3B,
$CA, $72, $ED, $E9, $8E, $00, $00, $00, $3B, $CA, $0F, $83, $86, $00, $00, $00,
$83, $C1, $03, $8D, $41, $08, $3B, $C8, $0F, $83, $78, $00, $00, $00, $BA, $0F,
$85, $00, $00, $66, $39, $11, $74, $07, $41, $3B, $C8, $72, $F6, $EB, $67, $3B,
$C8, $73, $63, $83, $C1, $06, $8D, $51, $08, $3B, $CA, $73, $59, $0F, $1F, $00,
$8B, $01, $25, $FF, $C7, $FF, $00, $3D, $8B, $45, $0C, $00, $74, $07, $41, $3B,
$CA, $72, $ED, $EB, $41, $3B, $CA, $73, $3D, $83, $C1, $03, $8D, $41, $08, $3B,
$C8, $73, $33, $BA, $0F, $84, $00, $00, $66, $39, $11, $74, $07, $41, $3B, $C8,
$72, $F6, $EB, $22, $3B, $C8, $73, $1E, $8D, $51, $06, $03, $51, $02, $3B, $D5,
$72, $14, $3B, $54, $24, $10, $73, $0E, $80, $3A, $B8, $75, $09, $81, $7A, $01,
$7A, $00, $00, $C0, $74, $10, $4F, $4E, $3B, $FB, $0F, $87, $00, $FF, $FF, $FF,
$5F, $5D, $5B, $5E, $59, $C3, $8D, $41, $06, $A3, $50, $45, $00, $10, $8D, $42,
$05, $68, $40, $45, $00, $10, $BA, $D0, $12, $00, $10, $A3, $4C, $45, $00, $10,
$E8, $99, $09, $00, $00, $5F, $5D, $5B, $5E, $59, $C3, $CC, $CC, $CC, $CC, $CC,
$81, $EC, $14, $01, $00, $00, $53, $8B, $1D, $50, $30, $00, $10, $55, $56, $57,
$33, $FF, $33, $ED, $57, $6A, $01, $68, $68, $45, $00, $10, $FF, $D3, $8B, $35,
$6C, $30, $00, $10, $85, $C0, $74, $1D, $83, $FF, $20, $73, $04, $6A, $00, $EB,
$02, $6A, $01, $FF, $D6, $6A, $00, $6A, $01, $68, $68, $45, $00, $10, $47, $FF,
$D3, $85, $C0, $75, $E3, $39, $2D, $6C, $45, $00, $10, $75, $1A, $6A, $00, $6A,
$00, $6A, $00, $FF, $15, $44, $30, $00, $10, $A3, $6C, $45, $00, $10, $85, $C0,
$75, $0A, $8D, $68, $09, $EB, $05, $BD, $01, $00, $00, $00, $6A, $00, $68, $68,
$45, $00, $10, $FF, $15, $40, $30, $00, $10, $85, $ED, $0F, $85, $BC, $00, $00,
$00, $68, $8C, $35, $00, $10, $FF, $15, $24, $30, $00, $10, $68, $44, $45, $00,
$10, $68, $A0, $35, $00, $10, $50, $A3, $64, $45, $00, $10, $FF, $15, $28, $30,
$00, $10, $BA, $60, $11, $00, $10, $8B, $C8, $E8, $E0, $08, $00, $00, $85, $C0,
$0F, $85, $87, $00, $00, $00, $32, $C0, $8D, $7C, $24, $10, $B9, $14, $01, $00,
$00, $F3, $AA, $8D, $44, $24, $10, $C7, $44, $24, $10, $14, $01, $00, $00, $50,
$FF, $15, $20, $30, $00, $10, $85, $C0, $74, $13, $83, $7C, $24, $20, $02, $75,
$07, $83, $7C, $24, $14, $05, $77, $05, $E8, $43, $FD, $FF, $FF, $33, $FF, $57,
$6A, $01, $68, $68, $45, $00, $10, $FF, $D3, $85, $C0, $74, $20, $0F, $1F, $00,
$83, $FF, $20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $D6, $6A, $00, $6A,
$01, $68, $68, $45, $00, $10, $47, $FF, $D3, $85, $C0, $75, $E3, $83, $3D, $6C,
$45, $00, $10, $00, $74, $0A, $B9, $01, $00, $00, $00, $E8, $ED, $06, $00, $00,
$6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30, $00, $10, $5F, $5E, $5D,
$5B, $81, $C4, $14, $01, $00, $00, $C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$53, $8B, $1D, $50, $30, $00, $10, $56, $33, $F6, $56, $6A, $01, $68, $68, $45,
$00, $10, $FF, $D3, $85, $C0, $74, $26, $57, $8B, $3D, $6C, $30, $00, $10, $90,
$83, $FE, $20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $D7, $6A, $00, $6A,
$01, $68, $68, $45, $00, $10, $46, $FF, $D3, $85, $C0, $75, $E3, $5F, $83, $3D,
$6C, $45, $00, $10, $00, $5E, $5B, $74, $07, $33, $C9, $E8, $7D, $06, $00, $00,
$6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30, $00, $10, $E9, $51, $07,
$00, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$51, $57, $68, $AC, $35, $00, $10, $FF, $15, $2C, $30, $00, $10, $8B, $F8, $85,
$FF, $0F, $84, $80, $00, $00, $00, $53, $56, $68, $C8, $35, $00, $10, $57, $FF,
$15, $28, $30, $00, $10, $8B, $1D, $18, $30, $00, $10, $8B, $F0, $85, $F6, $74,
$24, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $05, $56, $FF, $D3, $8D, $44, $24,
$0C, $C7, $06, $33, $C0, $C2, $0C, $50, $FF, $74, $24, $10, $C6, $46, $04, $00,
$6A, $FF, $56, $FF, $D3, $68, $D8, $35, $00, $10, $57, $FF, $15, $28, $30, $00,
$10, $8B, $F0, $85, $F6, $74, $24, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $05,
$56, $FF, $D3, $8D, $44, $24, $0C, $C7, $06, $33, $C0, $C2, $0C, $50, $FF, $74,
$24, $10, $C6, $46, $04, $00, $6A, $FF, $56, $FF, $D3, $5E, $5B, $C6, $05, $48,
$45, $00, $10, $00, $5F, $59, $C3, $C6, $05, $48, $45, $00, $10, $01, $5F, $59,
$C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC,
$81, $EC, $14, $04, $00, $00, $53, $56, $57, $6A, $00, $FF, $15, $24, $30, $00,
$10, $8B, $D8, $8D, $44, $24, $10, $68, $08, $02, $00, $00, $50, $53, $FF, $15,
$30, $30, $00, $10, $66, $83, $7C, $24, $10, $00, $8D, $4C, $24, $10, $8B, $F1,
$74, $13, $66, $8B, $01, $83, $C1, $02, $66, $83, $F8, $5C, $0F, $44, $F1, $66,
$83, $39, $00, $75, $ED, $8B, $3D, $1C, $30, $00, $10, $68, $EC, $35, $00, $10,
$56, $FF, $D7, $85, $C0, $75, $25, $8D, $4C, $24, $10, $E8, $10, $F8, $FF, $FF,
$3D, $DC, $A6, $26, $96, $74, $07, $3D, $E2, $F5, $99, $11, $75, $72, $8D, $83,
$49, $14, $05, $00, $8D, $BB, $84, $45, $26, $00, $EB, $28, $68, $FC, $35, $00,
$10, $56, $FF, $D7, $85, $C0, $75, $58, $8D, $4C, $24, $10, $E8, $DF, $F7, $FF,
$FF, $3D, $18, $4A, $31, $3B, $75, $48, $8D, $83, $B5, $8F, $1E, $00, $8D, $BB,
$E0, $29, $67, $00, $8B, $35, $18, $30, $00, $10, $A3, $54, $45, $00, $10, $8B,
$07, $A3, $58, $45, $00, $10, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $04, $57,
$FF, $D6, $8D, $44, $24, $0C, $C7, $07, $F0, $11, $00, $10, $50, $FF, $74, $24,
$10, $6A, $04, $57, $FF, $D6, $E8, $75, $FE, $FF, $FF, $E8, $B0, $FC, $FF, $FF,
$5F, $5E, $5B, $81, $C4, $14, $04, $00, $00, $C3, $CC, $CC, $CC, $CC, $CC, $CC,
$8B, $44, $24, $08, $83, $F8, $03, $77, $2F, $FF, $24, $85, $C0, $18, $00, $10,
$E8, $FB, $FE, $FF, $FF, $B8, $01, $00, $00, $00, $C2, $0C, $00, $80, $3D, $48,
$45, $00, $10, $00, $74, $12, $E8, $35, $FE, $FF, $FF, $B8, $01, $00, $00, $00,
$C2, $0C, $00, $E8, $B8, $FD, $FF, $FF, $B8, $01, $00, $00, $00, $C2, $0C, $00,
$B3, $18, $00, $10, $90, $18, $00, $10, $9D, $18, $00, $10, $9D, $18, $00, $10,
$56, $8B, $35, $88, $45, $00, $10, $33, $C0, $85, $F6, $74, $12, $8B, $15, $80,
$45, $00, $10, $3B, $0A, $74, $0B, $40, $83, $C2, $28, $3B, $C6, $72, $F4, $83,
$C8, $FF, $5E, $C3, $8B, $0D, $80, $45, $00, $10, $85, $C9, $75, $2B, $68, $00,
$05, $00, $00, $51, $FF, $35, $6C, $45, $00, $10, $C7, $05, $84, $45, $00, $10,
$20, $00, $00, $00, $FF, $15, $74, $30, $00, $10, $8B, $C8, $89, $0D, $80, $45,
$00, $10, $85, $C9, $75, $3D, $33, $C0, $C3, $8B, $15, $88, $45, $00, $10, $A1,
$84, $45, $00, $10, $3B, $D0, $72, $31, $6B, $C0, $50, $50, $51, $6A, $00, $FF,
$35, $6C, $45, $00, $10, $FF, $15, $70, $30, $00, $10, $8B, $C8, $85, $C9, $74,
$D5, $A1, $84, $45, $00, $10, $03, $C0, $89, $0D, $80, $45, $00, $10, $A3, $84,
$45, $00, $10, $8B, $15, $88, $45, $00, $10, $6B, $C2, $28, $03, $C1, $42, $89,
$15, $88, $45, $00, $10, $C3, $55, $8B, $EC, $81, $EC, $D8, $02, $00, $00, $A1,
$04, $40, $00, $10, $33, $C5, $89, $45, $FC, $8B, $C1, $C7, $85, $30, $FD, $FF,
$FF, $01, $00, $01, $00, $56, $8D, $8D, $30, $FD, $FF, $FF, $89, $85, $28, $FD,
$FF, $FF, $51, $50, $8B, $F2, $FF, $15, $7C, $30, $00, $10, $85, $C0, $0F, $84,
$C3, $00, $00, $00, $53, $83, $FE, $FF, $75, $0A, $8B, $1D, $88, $45, $00, $10,
$33, $F6, $EB, $03, $8D, $5E, $01, $3B, $F3, $0F, $83, $A7, $00, $00, $00, $6B,
$D6, $28, $2B, $DE, $57, $8B, $BD, $28, $FD, $FF, $FF, $89, $95, $2C, $FD, $FF,
$FF, $8B, $35, $80, $45, $00, $10, $8B, $45, $08, $03, $F2, $83, $E8, $00, $74,
$1A, $83, $E8, $01, $74, $10, $83, $E8, $01, $75, $12, $8B, $7E, $14, $C1, $E7,
$1D, $C1, $FF, $1F, $EB, $07, $33, $FF, $47, $EB, $02, $33, $FF, $8B, $56, $14,
$8B, $C2, $C1, $E0, $1E, $C1, $F8, $1F, $3B, $C7, $74, $41, $85, $FF, $74, $70,
$C1, $EA, $03, $33, $C9, $83, $E2, $0F, $76, $14, $0F, $B6, $44, $0E, $18, $03,
$06, $39, $85, $E8, $FD, $FF, $FF, $74, $4D, $41, $3B, $CA, $72, $EC, $33, $C9,
$85, $C9, $74, $19, $8D, $85, $30, $FD, $FF, $FF, $89, $8D, $E8, $FD, $FF, $FF,
$50, $FF, $B5, $28, $FD, $FF, $FF, $FF, $15, $88, $30, $00, $10, $8B, $95, $2C,
$FD, $FF, $FF, $83, $C2, $28, $89, $95, $2C, $FD, $FF, $FF, $83, $EB, $01, $0F,
$85, $6C, $FF, $FF, $FF, $5F, $5B, $8B, $4D, $FC, $33, $CD, $5E, $E8, $50, $0E,
$00, $00, $8B, $E5, $5D, $C3, $0F, $B6, $4C, $31, $20, $03, $4E, $08, $EB, $B0,
$F6, $C2, $01, $74, $0D, $8B, $0E, $8D, $41, $FB, $39, $85, $E8, $FD, $FF, $FF,
$74, $9E, $C1, $EA, $03, $33, $C9, $83, $E2, $0F, $76, $92, $0F, $B6, $44, $0E,
$20, $03, $46, $08, $39, $85, $E8, $FD, $FF, $FF, $74, $0A, $41, $3B, $CA, $72,
$EB, $E9, $78, $FF, $FF, $FF, $0F, $B6, $4C, $31, $18, $03, $0E, $E9, $6E, $FF,
$FF, $FF, $55, $8B, $EC, $83, $EC, $20, $A1, $04, $40, $00, $10, $33, $C5, $89,
$45, $FC, $56, $57, $6A, $00, $6A, $04, $8B, $F1, $FF, $15, $68, $30, $00, $10,
$8B, $F8, $83, $FF, $FF, $0F, $84, $AE, $00, $00, $00, $8D, $45, $E0, $C7, $45,
$E0, $1C, $00, $00, $00, $50, $57, $FF, $15, $58, $30, $00, $10, $E9, $88, $00,
$00, $00, $83, $7D, $E0, $10, $72, $70, $FF, $15, $80, $30, $00, $10, $39, $45,
$EC, $75, $65, $FF, $15, $5C, $30, $00, $10, $39, $45, $E8, $74, $5A, $83, $3E,
$00, $75, $22, $68, $00, $02, $00, $00, $6A, $00, $FF, $35, $6C, $45, $00, $10,
$C7, $46, $04, $80, $00, $00, $00, $FF, $15, $74, $30, $00, $10, $89, $06, $85,
$C0, $74, $4F, $EB, $25, $8B, $46, $04, $39, $46, $08, $72, $1D, $C1, $E0, $03,
$50, $FF, $36, $6A, $00, $FF, $35, $6C, $45, $00, $10, $FF, $15, $70, $30, $00,
$10, $85, $C0, $74, $2D, $D1, $66, $04, $89, $06, $8B, $56, $08, $8B, $0E, $8B,
$45, $E8, $89, $04, $91, $FF, $46, $08, $8D, $45, $E0, $C7, $45, $E0, $1C, $00,
$00, $00, $50, $57, $FF, $15, $54, $30, $00, $10, $85, $C0, $0F, $85, $70, $FF,
$FF, $FF, $57, $FF, $15, $14, $30, $00, $10, $8B, $4D, $FC, $5F, $33, $CD, $5E,
$E8, $1D, $0D, $00, $00, $8B, $E5, $5D, $C3, $55, $8B, $EC, $51, $53, $56, $8B,
$F1, $89, $55, $FC, $33, $DB, $89, $1E, $89, $5E, $04, $89, $5E, $08, $E8, $FF,
$FE, $FF, $FF, $39, $1E, $74, $42, $57, $8B, $FB, $39, $5E, $08, $76, $39, $8B,
$06, $FF, $34, $B8, $53, $6A, $5A, $FF, $15, $8C, $30, $00, $10, $8B, $D8, $85,
$DB, $74, $1C, $53, $FF, $15, $60, $30, $00, $10, $FF, $75, $08, $8B, $55, $FC,
$8B, $CB, $E8, $6F, $FD, $FF, $FF, $59, $53, $FF, $15, $14, $30, $00, $10, $47,
$6A, $00, $5B, $3B, $7E, $08, $72, $C7, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $56,
$8B, $F1, $83, $3E, $00, $74, $44, $57, $33, $FF, $39, $7E, $08, $76, $2B, $53,
$8B, $06, $FF, $34, $B8, $6A, $00, $6A, $5A, $FF, $15, $8C, $30, $00, $10, $8B,
$D8, $85, $DB, $74, $0E, $53, $FF, $15, $64, $30, $00, $10, $53, $FF, $15, $14,
$30, $00, $10, $47, $3B, $7E, $08, $72, $D7, $5B, $FF, $36, $6A, $00, $FF, $35,
$6C, $45, $00, $10, $FF, $15, $48, $30, $00, $10, $5F, $5E, $C3, $55, $8B, $EC,
$83, $EC, $10, $53, $6B, $D9, $28, $56, $57, $6A, $05, $8B, $F2, $03, $1D, $80,
$45, $00, $10, $58, $89, $75, $F0, $89, $45, $FC, $F6, $43, $14, $01, $8B, $3B,
$89, $7D, $F8, $74, $0B, $2B, $F8, $6A, $07, $58, $89, $7D, $F8, $89, $45, $FC,
$8D, $4D, $F4, $51, $6A, $40, $50, $57, $FF, $15, $18, $30, $00, $10, $85, $C0,
$75, $05, $6A, $0A, $58, $EB, $7F, $85, $F6, $74, $1D, $C6, $07, $E9, $8B, $43,
$04, $2B, $C7, $83, $E8, $05, $89, $47, $01, $F6, $43, $14, $01, $74, $29, $8B,
$03, $66, $C7, $00, $EB, $F9, $EB, $20, $F6, $43, $14, $01, $74, $0F, $8D, $73,
$0C, $A5, $66, $A5, $A4, $8B, $7D, $F8, $8B, $75, $F0, $EB, $0B, $8B, $43, $0C,
$89, $07, $8A, $43, $10, $88, $47, $04, $8D, $45, $F4, $50, $FF, $75, $F4, $FF,
$75, $FC, $57, $FF, $15, $18, $30, $00, $10, $FF, $75, $FC, $57, $FF, $15, $4C,
$30, $00, $10, $50, $FF, $15, $84, $30, $00, $10, $83, $E6, $01, $8B, $CE, $83,
$E1, $FD, $8D, $04, $36, $0B, $C8, $8B, $43, $14, $03, $C9, $83, $E0, $F9, $0B,
$C8, $33, $C0, $89, $4B, $14, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $55, $8B, $EC,
$83, $EC, $10, $53, $8B, $1D, $88, $45, $00, $10, $8B, $D1, $56, $57, $33, $FF,
$89, $55, $FC, $8B, $F7, $85, $DB, $0F, $84, $83, $00, $00, $00, $8B, $0D, $80,
$45, $00, $10, $83, $C1, $14, $8B, $01, $C1, $E0, $1E, $C1, $F8, $1F, $3B, $C2,
$75, $0A, $46, $83, $C1, $28, $3B, $F3, $72, $EC, $EB, $64, $83, $FE, $FF, $74,
$5F, $33, $C0, $8D, $4D, $F0, $85, $D2, $0F, $95, $C0, $83, $CA, $FF, $50, $E8,
$25, $FE, $FF, $FF, $8B, $15, $88, $45, $00, $10, $59, $3B, $F2, $73, $39, $8B,
$4D, $FC, $6B, $DE, $28, $A1, $80, $45, $00, $10, $8B, $44, $03, $14, $C1, $E0,
$1E, $C1, $F8, $1F, $3B, $C1, $74, $18, $8B, $D1, $8B, $CE, $E8, $AC, $FE, $FF,
$FF, $8B, $F8, $85, $FF, $75, $11, $8B, $15, $88, $45, $00, $10, $8B, $4D, $FC,
$46, $83, $C3, $28, $3B, $F2, $72, $CD, $8D, $4D, $F0, $E8, $3F, $FE, $FF, $FF,
$8B, $C7, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $56, $33, $F6, $EB, $12, $83, $FE,
$20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $15, $6C, $30, $00, $10, $46,
$6A, $00, $6A, $01, $68, $68, $45, $00, $10, $FF, $15, $50, $30, $00, $10, $85,
$C0, $75, $DB, $5E, $C3, $6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30,
$00, $10, $C3, $57, $E8, $C0, $FF, $FF, $FF, $83, $3D, $6C, $45, $00, $10, $00,
$74, $70, $33, $C9, $E8, $04, $FF, $FF, $FF, $8B, $F8, $85, $FF, $75, $66, $A1,
$74, $45, $00, $10, $53, $33, $DB, $89, $1D, $74, $45, $00, $10, $85, $C0, $74,
$17, $56, $8B, $30, $68, $00, $80, $00, $00, $53, $50, $FF, $15, $90, $30, $00,
$10, $8B, $C6, $85, $F6, $75, $EB, $5E, $FF, $35, $80, $45, $00, $10, $53, $FF,
$35, $6C, $45, $00, $10, $FF, $15, $48, $30, $00, $10, $FF, $35, $6C, $45, $00,
$10, $FF, $15, $78, $30, $00, $10, $89, $1D, $6C, $45, $00, $10, $89, $1D, $80,
$45, $00, $10, $89, $1D, $84, $45, $00, $10, $89, $1D, $88, $45, $00, $10, $5B,
$EB, $03, $6A, $02, $5F, $E8, $6B, $FF, $FF, $FF, $8B, $C7, $5F, $C3, $55, $8B,
$EC, $83, $EC, $30, $A1, $04, $40, $00, $10, $33, $C5, $89, $45, $FC, $8B, $45,
$08, $53, $56, $57, $8B, $FA, $89, $45, $D0, $89, $7D, $D4, $8B, $F1, $33, $DB,
$E8, $14, $FF, $FF, $FF, $39, $1D, $6C, $45, $00, $10, $0F, $84, $EB, $00, $00,
$00, $8B, $CE, $E8, $8A, $04, $00, $00, $85, $C0, $0F, $84, $D8, $00, $00, $00,
$8B, $CF, $E8, $7B, $04, $00, $00, $85, $C0, $0F, $84, $C9, $00, $00, $00, $8B,
$CE, $E8, $CA, $F9, $FF, $FF, $83, $F8, $FF, $0F, $85, $B5, $00, $00, $00, $E8,
$9D, $03, $00, $00, $8B, $F8, $85, $FF, $0F, $84, $A2, $00, $00, $00, $8B, $45,
$D4, $8D, $4D, $D8, $89, $75, $D8, $89, $45, $DC, $89, $7D, $E0, $E8, $E2, $00,
$00, $00, $85, $C0, $74, $7E, $E8, $B9, $F9, $FF, $FF, $8B, $D0, $85, $D2, $74,
$6F, $8B, $45, $D8, $8B, $4D, $E8, $8B, $7D, $E0, $83, $E1, $0F, $89, $02, $8B,
$45, $DC, $89, $42, $04, $8B, $45, $E4, $83, $E0, $01, $C1, $E1, $03, $0B, $C8,
$89, $7A, $08, $8B, $42, $14, $83, $E0, $80, $0B, $C8, $8B, $45, $EC, $89, $42,
$18, $8B, $45, $F0, $89, $42, $1C, $8B, $45, $F4, $89, $42, $20, $8B, $45, $F8,
$89, $4A, $14, $89, $42, $24, $39, $5D, $E4, $74, $0F, $83, $C6, $FB, $8D, $7A,
$0C, $A5, $66, $A5, $A4, $8B, $7D, $E0, $EB, $0B, $8B, $06, $89, $42, $0C, $8A,
$46, $04, $88, $42, $10, $8B, $45, $D0, $85, $C0, $74, $23, $89, $38, $EB, $1F,
$6A, $09, $EB, $02, $6A, $08, $5B, $8B, $CF, $E8, $67, $03, $00, $00, $EB, $0F,
$6A, $09, $EB, $0A, $6A, $03, $EB, $06, $6A, $07, $EB, $02, $6A, $02, $5B, $E8,
$41, $FE, $FF, $FF, $8B, $4D, $FC, $8B, $C3, $5F, $5E, $33, $CD, $5B, $E8, $EF,
$08, $00, $00, $8B, $E5, $5D, $C2, $04, $00, $56, $8B, $F1, $8A, $06, $84, $C0,
$74, $0C, $3C, $90, $74, $08, $3C, $CC, $74, $04, $33, $C0, $5E, $C3, $33, $C9,
$41, $3B, $D1, $76, $0A, $38, $04, $31, $75, $F0, $41, $3B, $CA, $72, $F6, $33,
$C0, $40, $5E, $C3, $55, $8B, $EC, $83, $EC, $58, $A1, $04, $40, $00, $10, $33,
$C5, $89, $45, $FC, $53, $33, $DB, $C6, $45, $AC, $E8, $56, $8B, $F1, $89, $5D,
$AD, $8A, $C3, $89, $75, $C4, $57, $C6, $45, $BC, $E9, $89, $5D, $BD, $66, $C7,
$45, $B4, $0F, $80, $89, $5D, $B6, $88, $45, $DF, $89, $5D, $D8, $89, $5D, $D4,
$89, $5E, $0C, $89, $5E, $10, $0F, $B6, $C8, $8D, $55, $E0, $8B, $46, $08, $0F,
$B6, $FB, $03, $C1, $03, $3E, $89, $4D, $A8, $8B, $CF, $89, $45, $C8, $E8, $2C,
$03, $00, $00, $F7, $45, $F8, $00, $10, $00, $00, $8B, $C8, $89, $4D, $D0, $0F,
$85, $19, $02, $00, $00, $89, $7D, $CC, $80, $FB, $05, $0F, $82, $84, $00, $00,
$00, $8B, $C7, $33, $D2, $2B, $45, $C8, $83, $E8, $05, $42, $6A, $05, $89, $45,
$BD, $8D, $45, $BC, $59, $89, $45, $CC, $89, $4D, $D0, $89, $55, $D4, $8B, $45,
$D8, $3B, $F8, $73, $0C, $0F, $B6, $45, $E0, $3B, $C8, $0F, $85, $DD, $01, $00,
$00, $8B, $45, $A8, $03, $C1, $83, $F8, $20, $0F, $87, $CF, $01, $00, $00, $8B,
$46, $10, $83, $F8, $08, $0F, $83, $C3, $01, $00, $00, $8A, $55, $DF, $88, $5C,
$30, $14, $8B, $46, $10, $02, $5D, $E0, $88, $54, $30, $1C, $8A, $C2, $8B, $7E,
$08, $FF, $46, $10, $03, $7D, $A8, $02, $45, $D0, $8B, $75, $CC, $8B, $55, $D4,
$88, $45, $DF, $F3, $A4, $85, $D2, $0F, $85, $2E, $01, $00, $00, $8B, $75, $C4,
$E9, $41, $FF, $FF, $FF, $8A, $55, $E6, $80, $FA, $E8, $75, $23, $0F, $B6, $45,
$E0, $2B, $45, $C8, $83, $C0, $FB, $03, $45, $F0, $03, $C7, $89, $45, $AD, $8D,
$45, $AC, $6A, $05, $59, $89, $45, $CC, $89, $4D, $D0, $E9, $6E, $FF, $FF, $FF,
$8A, $C2, $24, $FD, $3C, $E9, $75, $50, $0F, $B6, $4D, $E0, $03, $CF, $80, $FA,
$EB, $75, $08, $0F, $BE, $45, $F0, $03, $C8, $EB, $03, $03, $4D, $F0, $8B, $06,
$3B, $C1, $77, $1D, $83, $C0, $05, $3B, $C8, $73, $16, $8B, $45, $D8, $3B, $C1,
$0F, $83, $BD, $00, $00, $00, $89, $4D, $D8, $8B, $4D, $D0, $E9, $2D, $FF, $FF,
$FF, $2B, $4D, $C8, $8D, $45, $BC, $83, $E9, $05, $89, $45, $CC, $6A, $05, $89,
$4D, $BD, $59, $89, $4D, $D0, $EB, $29, $8A, $75, $E7, $8A, $E2, $80, $E4, $F0,
$80, $FC, $70, $74, $2C, $8A, $C2, $24, $FC, $3C, $E0, $74, $24, $8A, $C6, $24,
$F0, $3C, $80, $74, $1C, $80, $E2, $FE, $80, $FA, $C2, $0F, $85, $ED, $FE, $FF,
$FF, $8B, $45, $D8, $3B, $F8, $1B, $D2, $42, $89, $55, $D4, $E9, $E0, $FE, $FF,
$FF, $8A, $45, $E0, $0F, $B6, $C8, $03, $CF, $80, $FC, $70, $74, $0D, $8A, $C2,
$24, $FC, $3C, $E0, $74, $05, $03, $4D, $F0, $EB, $06, $0F, $BE, $45, $F0, $03,
$C8, $8B, $06, $3B, $C1, $77, $0B, $83, $C0, $05, $3B, $C8, $0F, $82, $69, $FF,
$FF, $FF, $8A, $C2, $24, $FC, $3C, $E0, $0F, $84, $90, $00, $00, $00, $0F, $B6,
$C2, $80, $FA, $0F, $75, $03, $0F, $B6, $C6, $2B, $4D, $C8, $24, $0F, $0C, $80,
$83, $E9, $06, $88, $45, $B5, $8D, $45, $B4, $89, $4D, $B6, $6A, $06, $E9, $01,
$FF, $FF, $FF, $8B, $4D, $D0, $E9, $76, $FE, $FF, $FF, $80, $FB, $05, $73, $59,
$8B, $7D, $C4, $0F, $B6, $F3, $6A, $05, $5A, $8B, $07, $2B, $D6, $03, $C6, $8B,
$C8, $89, $45, $C4, $E8, $90, $FD, $FF, $FF, $85, $C0, $75, $3C, $80, $FB, $02,
$73, $11, $8B, $4D, $C4, $6A, $02, $5A, $2B, $D6, $E8, $7A, $FD, $FF, $FF, $85,
$C0, $74, $2B, $8B, $0F, $83, $C1, $FB, $E8, $F5, $00, $00, $00, $85, $C0, $74,
$1D, $8B, $0F, $6A, $05, $83, $E9, $05, $5A, $E8, $5B, $FD, $FF, $FF, $85, $C0,
$74, $0C, $C7, $47, $0C, $01, $00, $00, $00, $33, $C0, $40, $EB, $02, $33, $C0,
$8B, $4D, $FC, $5F, $5E, $33, $CD, $5B, $E8, $25, $06, $00, $00, $8B, $E5, $5D,
$C3, $8B, $15, $74, $45, $00, $10, $56, $33, $F6, $EB, $07, $39, $72, $04, $75,
$4F, $8B, $12, $85, $D2, $75, $F5, $6A, $40, $68, $00, $30, $00, $00, $68, $00,
$10, $00, $00, $56, $FF, $15, $94, $30, $00, $10, $8B, $D0, $85, $D2, $74, $41,
$8D, $4A, $20, $89, $72, $04, $89, $72, $08, $8B, $F1, $2B, $F2, $8B, $42, $04,
$83, $C6, $20, $89, $01, $89, $4A, $04, $83, $C1, $20, $81, $FE, $E0, $0F, $00,
$00, $76, $EA, $A1, $74, $45, $00, $10, $89, $02, $89, $15, $74, $45, $00, $10,
$85, $D2, $74, $0D, $8B, $42, $04, $5E, $8B, $08, $FF, $42, $08, $89, $4A, $04,
$C3, $33, $C0, $5E, $C3, $8B, $15, $74, $45, $00, $10, $8B, $C1, $56, $33, $F6,
$25, $00, $F0, $FF, $FF, $EB, $08, $3B, $D0, $74, $0A, $8B, $F2, $8B, $12, $85,
$D2, $75, $F4, $5E, $C3, $8B, $42, $04, $89, $01, $83, $6A, $08, $01, $89, $4A,
$04, $75, $1D, $8B, $02, $85, $F6, $74, $04, $89, $06, $EB, $05, $A3, $74, $45,
$00, $10, $68, $00, $80, $00, $00, $6A, $00, $52, $FF, $15, $90, $30, $00, $10,
$5E, $C3, $55, $8B, $EC, $83, $EC, $1C, $6A, $1C, $8D, $45, $E4, $50, $51, $FF,
$15, $98, $30, $00, $10, $81, $7D, $F4, $00, $10, $00, $00, $75, $0B, $F6, $45,
$F8, $F0, $74, $05, $33, $C0, $40, $EB, $02, $33, $C0, $8B, $E5, $5D, $C3, $55,
$8B, $EC, $83, $EC, $24, $8B, $C1, $89, $55, $E8, $53, $57, $89, $45, $DC, $8B,
$D8, $33, $C0, $C7, $45, $EC, $10, $40, $00, $10, $6A, $1C, $89, $45, $F0, $8B,
$FA, $88, $45, $FF, $32, $C0, $59, $F3, $AA, $B5, $10, $8A, $0B, $43, $0F, $B6,
$C1, $88, $4D, $FE, $83, $F8, $66, $7F, $30, $74, $25, $83, $F8, $26, $74, $17,
$83, $F8, $2E, $74, $12, $83, $F8, $36, $74, $0D, $83, $F8, $3E, $74, $08, $83,
$C0, $9C, $83, $F8, $01, $77, $50, $80, $4D, $FF, $40, $88, $4A, $03, $EB, $42,
$80, $4D, $FF, $08, $88, $4A, $04, $EB, $39, $83, $E8, $67, $74, $2D, $2D, $89,
$00, $00, $00, $74, $1D, $48, $83, $E8, $01, $74, $0E, $83, $E8, $01, $75, $27,
$80, $4D, $FF, $04, $88, $4A, $01, $EB, $19, $80, $4D, $FF, $02, $88, $4A, $01,
$EB, $10, $80, $4D, $FF, $20, $88, $4A, $02, $EB, $07, $80, $4D, $FF, $10, $88,
$4A, $05, $80, $ED, $01, $75, $84, $8A, $6D, $FF, $0F, $B6, $C5, $C1, $E0, $17,
$89, $42, $18, $84, $ED, $75, $05, $FE, $C5, $88, $6D, $FF, $88, $4A, $06, $80,
$F9, $0F, $75, $12, $8A, $0B, $43, $88, $4D, $FE, $88, $4A, $07, $C7, $45, $EC,
$5A, $40, $00, $10, $EB, $18, $8A, $C1, $04, $60, $3C, $03, $77, $10, $F6, $C5,
$10, $74, $05, $80, $CD, $08, $EB, $03, $80, $E5, $F7, $88, $6D, $FF, $0F, $B6,
$F9, $56, $8B, $F7, $8B, $C7, $C1, $EE, $02, $25, $03, $00, $00, $80, $79, $05,
$48, $83, $C8, $FC, $40, $8B, $55, $EC, $89, $45, $E4, $8B, $45, $EC, $0F, $B6,
$04, $06, $03, $45, $E4, $8A, $04, $10, $8B, $55, $E8, $89, $45, $F4, $3C, $FF,
$75, $1F, $81, $4A, $18, $00, $30, $00, $00, $8B, $C7, $83, $E0, $FD, $C6, $45,
$F4, $00, $83, $F8, $24, $75, $07, $B0, $01, $89, $45, $F4, $EB, $03, $8B, $45,
$F4, $C6, $45, $E0, $00, $84, $C0, $79, $19, $8B, $55, $EC, $0F, $B6, $C0, $83,
$E0, $7F, $0F, $B7, $04, $10, $8B, $55, $E8, $89, $45, $F4, $C1, $E8, $08, $89,
$45, $E0, $8A, $42, $07, $84, $C0, $74, $1A, $0F, $B6, $86, $40, $41, $00, $10,
$8B, $75, $E4, $84, $AC, $30, $40, $41, $00, $10, $74, $07, $81, $4A, $18, $00,
$30, $00, $00, $8B, $45, $F4, $A8, $01, $0F, $84, $C2, $02, $00, $00, $83, $4A,
$18, $01, $8A, $03, $8A, $E0, $88, $42, $08, $C0, $EC, $06, $88, $65, $FB, $88,
$62, $09, $8A, $E0, $C0, $E8, $03, $80, $E4, $07, $24, $07, $88, $65, $FC, $88,
$62, $0B, $88, $45, $FD, $88, $42, $0A, $8B, $45, $E0, $84, $C0, $74, $16, $8A,
$4D, $FD, $0F, $B6, $C0, $D3, $E0, $8A, $4D, $FE, $84, $C0, $79, $07, $81, $4A,
$18, $00, $30, $00, $00, $8A, $62, $07, $84, $E4, $75, $43, $8A, $C1, $04, $27,
$3C, $06, $77, $3B, $80, $C1, $27, $80, $7D, $FB, $03, $75, $13, $0F, $B6, $45,
$FD, $0F, $B6, $C9, $8A, $84, $C8, $08, $41, $00, $10, $8A, $4D, $FC, $EB, $0C,
$0F, $B6, $C1, $8A, $4D, $FD, $8A, $80, $01, $41, $00, $10, $8A, $6D, $FF, $8A,
$62, $07, $D2, $E0, $84, $C0, $79, $07, $81, $4A, $18, $00, $30, $00, $00, $BE,
$DB, $41, $00, $10, $F6, $C5, $20, $74, $5E, $80, $7D, $FB, $03, $75, $09, $81,
$4A, $18, $00, $90, $00, $00, $EB, $4F, $8A, $45, $FE, $8A, $C8, $84, $E4, $74,
$0E, $BE, $C9, $41, $00, $10, $C7, $45, $E0, $DB, $41, $00, $10, $EB, $11, $8A,
$C8, $C7, $45, $E0, $C9, $41, $00, $10, $BE, $B1, $41, $00, $10, $80, $E1, $FE,
$38, $0E, $74, $0A, $83, $C6, $02, $3B, $75, $E0, $75, $F4, $EB, $0D, $0F, $B6,
$46, $01, $8A, $4D, $FD, $D3, $E0, $84, $C0, $79, $07, $81, $4A, $18, $00, $90,
$00, $00, $BE, $DB, $41, $00, $10, $8A, $4A, $07, $8B, $C7, $84, $C9, $74, $43,
$83, $E8, $20, $74, $22, $83, $E8, $01, $74, $0A, $83, $E8, $01, $74, $18, $83,
$E8, $01, $75, $3C, $8A, $45, $FD, $C6, $45, $FB, $03, $3C, $04, $0F, $84, $A6,
$00, $00, $00, $3C, $05, $EB, $11, $8A, $45, $FD, $C6, $45, $FB, $03, $3C, $04,
$0F, $87, $93, $00, $00, $00, $3C, $01, $0F, $85, $92, $00, $00, $00, $E9, $86,
$00, $00, $00, $2D, $8C, $00, $00, $00, $74, $79, $48, $83, $E8, $01, $74, $68,
$80, $7D, $FB, $03, $75, $39, $84, $C9, $74, $0C, $BE, $EA, $41, $00, $10, $BF,
$14, $42, $00, $10, $EB, $05, $BF, $EA, $41, $00, $10, $8A, $4D, $FE, $38, $0E,
$74, $09, $83, $C6, $03, $3B, $F7, $75, $F5, $EB, $58, $84, $6E, $01, $74, $53,
$0F, $B6, $46, $02, $8A, $4D, $FD, $D3, $E0, $84, $C0, $79, $3C, $EB, $41, $84,
$C9, $74, $3D, $83, $EF, $50, $74, $14, $83, $EF, $75, $74, $2C, $83, $EF, $11,
$74, $0F, $83, $EF, $01, $74, $05, $83, $EF, $20, $75, $24, $F6, $C5, $09, $EB,
$03, $F6, $C5, $06, $75, $13, $EB, $18, $8A, $45, $FD, $3C, $01, $74, $0A, $3C,
$05, $EB, $04, $80, $7D, $FD, $05, $76, $07, $81, $4A, $18, $00, $10, $01, $00,
$8A, $4D, $FE, $8A, $43, $01, $83, $C3, $02, $80, $7D, $FD, $01, $88, $45, $FA,
$77, $14, $80, $F9, $F6, $75, $06, $80, $4D, $F4, $02, $EB, $09, $80, $F9, $F7,
$75, $04, $80, $4D, $F4, $10, $8A, $4D, $FB, $0F, $B6, $C1, $83, $E8, $00, $74,
$65, $83, $E8, $01, $74, $57, $83, $E8, $01, $8A, $45, $FC, $75, $0D, $C6, $45,
$F0, $02, $F6, $C5, $10, $75, $04, $C6, $45, $F0, $04, $80, $F9, $03, $74, $5C,
$3C, $04, $75, $58, $F6, $C5, $10, $75, $53, $8A, $4D, $FA, $83, $4A, $18, $02,
$8A, $C1, $C0, $E8, $06, $43, $88, $42, $0D, $8A, $C1, $C0, $E8, $03, $24, $07,
$88, $4A, $0C, $88, $42, $0E, $0F, $B6, $C1, $83, $E0, $07, $88, $42, $0F, $3C,
$05, $75, $29, $F6, $45, $FB, $01, $75, $23, $FE, $C8, $EB, $22, $8A, $45, $FC,
$C6, $45, $F0, $01, $EB, $B5, $8A, $45, $FC, $F6, $C5, $10, $74, $0A, $3C, $06,
$75, $A9, $C6, $45, $F0, $02, $EB, $A3, $3C, $05, $EB, $99, $8B, $45, $F0, $0F,
$B6, $F0, $4B, $8B, $C6, $83, $E8, $01, $74, $26, $83, $E8, $01, $74, $14, $48,
$83, $E8, $01, $75, $24, $81, $4A, $18, $80, $00, $00, $00, $8B, $03, $89, $42,
$14, $EB, $16, $83, $4A, $18, $40, $66, $8B, $03, $66, $89, $42, $14, $EB, $09,
$83, $4A, $18, $20, $8A, $03, $88, $42, $14, $8B, $45, $F4, $03, $DE, $EB, $0C,
$F6, $C5, $20, $74, $07, $81, $4A, $18, $00, $90, $00, $00, $5E, $A8, $10, $74,
$44, $A8, $40, $74, $1F, $F6, $C5, $08, $0F, $84, $84, $00, $00, $00, $81, $4A,
$18, $08, $01, $00, $00, $66, $8B, $03, $83, $C3, $02, $66, $89, $42, $10, $E9,
$91, $00, $00, $00, $F6, $C5, $08, $74, $10, $83, $4A, $18, $08, $66, $8B, $03,
$83, $C3, $02, $66, $89, $42, $10, $EB, $0C, $83, $4A, $18, $10, $8B, $03, $83,
$C3, $04, $89, $42, $10, $8B, $4D, $F4, $F6, $C1, $04, $74, $31, $8B, $42, $18,
$A8, $10, $74, $05, $83, $C8, $08, $EB, $09, $A8, $08, $74, $11, $0D, $00, $08,
$00, $00, $89, $42, $18, $66, $8B, $03, $66, $89, $42, $14, $EB, $0D, $83, $C8,
$08, $89, $42, $18, $66, $8B, $03, $66, $89, $42, $10, $83, $C3, $02, $F6, $C1,
$02, $74, $0A, $83, $4A, $18, $04, $8A, $03, $43, $88, $42, $10, $F6, $C1, $40,
$74, $11, $81, $4A, $18, $10, $01, $00, $00, $8B, $03, $83, $C3, $04, $89, $42,
$10, $EB, $12, $F6, $C1, $20, $74, $0D, $81, $4A, $18, $04, $01, $00, $00, $8A,
$03, $43, $88, $42, $10, $2B, $5D, $DC, $5F, $88, $1A, $80, $FB, $0F, $5B, $76,
$0A, $81, $4A, $18, $00, $50, $00, $00, $C6, $02, $0F, $0F, $B6, $02, $8B, $E5,
$5D, $C3, $3B, $0D, $04, $40, $00, $10, $F2, $75, $02, $F2, $C3, $F2, $E9, $28,
$00, $00, $00, $55, $8B, $EC, $6A, $00, $FF, $15, $38, $30, $00, $10, $FF, $75,
$08, $FF, $15, $3C, $30, $00, $10, $68, $09, $04, $00, $C0, $FF, $15, $4C, $30,
$00, $10, $50, $FF, $15, $34, $30, $00, $10, $5D, $C3, $55, $8B, $EC, $81, $EC,
$24, $03, $00, $00, $6A, $17, $E8, $EB, $00, $00, $00, $85, $C0, $74, $05, $6A,
$02, $59, $CD, $29, $A3, $20, $43, $00, $10, $89, $0D, $1C, $43, $00, $10, $89,
$15, $18, $43, $00, $10, $89, $1D, $14, $43, $00, $10, $89, $35, $10, $43, $00,
$10, $89, $3D, $0C, $43, $00, $10, $66, $8C, $15, $38, $43, $00, $10, $66, $8C,
$0D, $2C, $43, $00, $10, $66, $8C, $1D, $08, $43, $00, $10, $66, $8C, $05, $04,
$43, $00, $10, $66, $8C, $25, $00, $43, $00, $10, $66, $8C, $2D, $FC, $42, $00,
$10, $9C, $8F, $05, $30, $43, $00, $10, $8B, $45, $00, $A3, $24, $43, $00, $10,
$8B, $45, $04, $A3, $28, $43, $00, $10, $8D, $45, $08, $A3, $34, $43, $00, $10,
$8B, $85, $DC, $FC, $FF, $FF, $C7, $05, $70, $42, $00, $10, $01, $00, $01, $00,
$A1, $28, $43, $00, $10, $A3, $2C, $42, $00, $10, $C7, $05, $20, $42, $00, $10,
$09, $04, $00, $C0, $C7, $05, $24, $42, $00, $10, $01, $00, $00, $00, $C7, $05,
$30, $42, $00, $10, $01, $00, $00, $00, $6A, $04, $58, $6B, $C0, $00, $C7, $80,
$34, $42, $00, $10, $02, $00, $00, $00, $6A, $04, $58, $6B, $C0, $00, $8B, $0D,
$04, $40, $00, $10, $89, $4C, $05, $F8, $6A, $04, $58, $C1, $E0, $00, $8B, $0D,
$00, $40, $00, $10, $89, $4C, $05, $F8, $68, $C0, $30, $00, $10, $E8, $E1, $FE,
$FF, $FF, $8B, $E5, $5D, $C3, $FF, $25, $9C, $30, $00, $10, $C3, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$14, $39, $00, $00, $22, $39, $00, $00, $30, $39, $00, $00, $46, $39, $00, $00,
$56, $39, $00, $00, $68, $39, $00, $00, $76, $39, $00, $00, $88, $39, $00, $00,
$94, $39, $00, $00, $A4, $39, $00, $00, $B8, $39, $00, $00, $CA, $39, $00, $00,
$DA, $39, $00, $00, $02, $3C, $00, $00, $E4, $3B, $00, $00, $C8, $3B, $00, $00,
$32, $3A, $00, $00, $48, $3A, $00, $00, $56, $3A, $00, $00, $62, $3A, $00, $00,
$76, $3A, $00, $00, $94, $3A, $00, $00, $A4, $3A, $00, $00, $B4, $3A, $00, $00,
$CA, $3A, $00, $00, $DA, $3A, $00, $00, $EA, $3A, $00, $00, $06, $3B, $00, $00,
$0E, $3B, $00, $00, $1C, $3B, $00, $00, $28, $3B, $00, $00, $36, $3B, $00, $00,
$4A, $3B, $00, $00, $60, $3B, $00, $00, $78, $3B, $00, $00, $8C, $3B, $00, $00,
$9A, $3B, $00, $00, $A8, $3B, $00, $00, $B8, $3B, $00, $00, $16, $3C, $00, $00,
$00, $00, $00, $00, $FE, $39, $00, $00, $12, $3A, $00, $00, $00, $00, $00, $00,
$0C, $2A, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$20, $42, $00, $10, $70, $42, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $96, $30, $07, $77, $2C, $61, $0E, $EE, $BA, $51, $09, $99,
$19, $C4, $6D, $07, $8F, $F4, $6A, $70, $35, $A5, $63, $E9, $A3, $95, $64, $9E,
$32, $88, $DB, $0E, $A4, $B8, $DC, $79, $1E, $E9, $D5, $E0, $88, $D9, $D2, $97,
$2B, $4C, $B6, $09, $BD, $7C, $B1, $7E, $07, $2D, $B8, $E7, $91, $1D, $BF, $90,
$64, $10, $B7, $1D, $F2, $20, $B0, $6A, $48, $71, $B9, $F3, $DE, $41, $BE, $84,
$7D, $D4, $DA, $1A, $EB, $E4, $DD, $6D, $51, $B5, $D4, $F4, $C7, $85, $D3, $83,
$56, $98, $6C, $13, $C0, $A8, $6B, $64, $7A, $F9, $62, $FD, $EC, $C9, $65, $8A,
$4F, $5C, $01, $14, $D9, $6C, $06, $63, $63, $3D, $0F, $FA, $F5, $0D, $08, $8D,
$C8, $20, $6E, $3B, $5E, $10, $69, $4C, $E4, $41, $60, $D5, $72, $71, $67, $A2,
$D1, $E4, $03, $3C, $47, $D4, $04, $4B, $FD, $85, $0D, $D2, $6B, $B5, $0A, $A5,
$FA, $A8, $B5, $35, $6C, $98, $B2, $42, $D6, $C9, $BB, $DB, $40, $F9, $BC, $AC,
$E3, $6C, $D8, $32, $75, $5C, $DF, $45, $CF, $0D, $D6, $DC, $59, $3D, $D1, $AB,
$AC, $30, $D9, $26, $3A, $00, $DE, $51, $80, $51, $D7, $C8, $16, $61, $D0, $BF,
$B5, $F4, $B4, $21, $23, $C4, $B3, $56, $99, $95, $BA, $CF, $0F, $A5, $BD, $B8,
$9E, $B8, $02, $28, $08, $88, $05, $5F, $B2, $D9, $0C, $C6, $24, $E9, $0B, $B1,
$87, $7C, $6F, $2F, $11, $4C, $68, $58, $AB, $1D, $61, $C1, $3D, $2D, $66, $B6,
$90, $41, $DC, $76, $06, $71, $DB, $01, $BC, $20, $D2, $98, $2A, $10, $D5, $EF,
$89, $85, $B1, $71, $1F, $B5, $B6, $06, $A5, $E4, $BF, $9F, $33, $D4, $B8, $E8,
$A2, $C9, $07, $78, $34, $F9, $00, $0F, $8E, $A8, $09, $96, $18, $98, $0E, $E1,
$BB, $0D, $6A, $7F, $2D, $3D, $6D, $08, $97, $6C, $64, $91, $01, $5C, $63, $E6,
$F4, $51, $6B, $6B, $62, $61, $6C, $1C, $D8, $30, $65, $85, $4E, $00, $62, $F2,
$ED, $95, $06, $6C, $7B, $A5, $01, $1B, $C1, $F4, $08, $82, $57, $C4, $0F, $F5,
$C6, $D9, $B0, $65, $50, $E9, $B7, $12, $EA, $B8, $BE, $8B, $7C, $88, $B9, $FC,
$DF, $1D, $DD, $62, $49, $2D, $DA, $15, $F3, $7C, $D3, $8C, $65, $4C, $D4, $FB,
$58, $61, $B2, $4D, $CE, $51, $B5, $3A, $74, $00, $BC, $A3, $E2, $30, $BB, $D4,
$41, $A5, $DF, $4A, $D7, $95, $D8, $3D, $6D, $C4, $D1, $A4, $FB, $F4, $D6, $D3,
$6A, $E9, $69, $43, $FC, $D9, $6E, $34, $46, $88, $67, $AD, $D0, $B8, $60, $DA,
$73, $2D, $04, $44, $E5, $1D, $03, $33, $5F, $4C, $0A, $AA, $C9, $7C, $0D, $DD,
$3C, $71, $05, $50, $AA, $41, $02, $27, $10, $10, $0B, $BE, $86, $20, $0C, $C9,
$25, $B5, $68, $57, $B3, $85, $6F, $20, $09, $D4, $66, $B9, $9F, $E4, $61, $CE,
$0E, $F9, $DE, $5E, $98, $C9, $D9, $29, $22, $98, $D0, $B0, $B4, $A8, $D7, $C7,
$17, $3D, $B3, $59, $81, $0D, $B4, $2E, $3B, $5C, $BD, $B7, $AD, $6C, $BA, $C0,
$20, $83, $B8, $ED, $B6, $B3, $BF, $9A, $0C, $E2, $B6, $03, $9A, $D2, $B1, $74,
$39, $47, $D5, $EA, $AF, $77, $D2, $9D, $15, $26, $DB, $04, $83, $16, $DC, $73,
$12, $0B, $63, $E3, $84, $3B, $64, $94, $3E, $6A, $6D, $0D, $A8, $5A, $6A, $7A,
$0B, $CF, $0E, $E4, $9D, $FF, $09, $93, $27, $AE, $00, $0A, $B1, $9E, $07, $7D,
$44, $93, $0F, $F0, $D2, $A3, $08, $87, $68, $F2, $01, $1E, $FE, $C2, $06, $69,
$5D, $57, $62, $F7, $CB, $67, $65, $80, $71, $36, $6C, $19, $E7, $06, $6B, $6E,
$76, $1B, $D4, $FE, $E0, $2B, $D3, $89, $5A, $7A, $DA, $10, $CC, $4A, $DD, $67,
$6F, $DF, $B9, $F9, $F9, $EF, $BE, $8E, $43, $BE, $B7, $17, $D5, $8E, $B0, $60,
$E8, $A3, $D6, $D6, $7E, $93, $D1, $A1, $C4, $C2, $D8, $38, $52, $F2, $DF, $4F,
$F1, $67, $BB, $D1, $67, $57, $BC, $A6, $DD, $06, $B5, $3F, $4B, $36, $B2, $48,
$DA, $2B, $0D, $D8, $4C, $1B, $0A, $AF, $F6, $4A, $03, $36, $60, $7A, $04, $41,
$C3, $EF, $60, $DF, $55, $DF, $67, $A8, $EF, $8E, $6E, $31, $79, $BE, $69, $46,
$8C, $B3, $61, $CB, $1A, $83, $66, $BC, $A0, $D2, $6F, $25, $36, $E2, $68, $52,
$95, $77, $0C, $CC, $03, $47, $0B, $BB, $B9, $16, $02, $22, $2F, $26, $05, $55,
$BE, $3B, $BA, $C5, $28, $0B, $BD, $B2, $92, $5A, $B4, $2B, $04, $6A, $B3, $5C,
$A7, $FF, $D7, $C2, $31, $CF, $D0, $B5, $8B, $9E, $D9, $2C, $1D, $AE, $DE, $5B,
$B0, $C2, $64, $9B, $26, $F2, $63, $EC, $9C, $A3, $6A, $75, $0A, $93, $6D, $02,
$A9, $06, $09, $9C, $3F, $36, $0E, $EB, $85, $67, $07, $72, $13, $57, $00, $05,
$82, $4A, $BF, $95, $14, $7A, $B8, $E2, $AE, $2B, $B1, $7B, $38, $1B, $B6, $0C,
$9B, $8E, $D2, $92, $0D, $BE, $D5, $E5, $B7, $EF, $DC, $7C, $21, $DF, $DB, $0B,
$D4, $D2, $D3, $86, $42, $E2, $D4, $F1, $F8, $B3, $DD, $68, $6E, $83, $DA, $1F,
$CD, $16, $BE, $81, $5B, $26, $B9, $F6, $E1, $77, $B0, $6F, $77, $47, $B7, $18,
$E6, $5A, $08, $88, $70, $6A, $0F, $FF, $CA, $3B, $06, $66, $5C, $0B, $01, $11,
$FF, $9E, $65, $8F, $69, $AE, $62, $F8, $D3, $FF, $6B, $61, $45, $CF, $6C, $16,
$78, $E2, $0A, $A0, $EE, $D2, $0D, $D7, $54, $83, $04, $4E, $C2, $B3, $03, $39,
$61, $26, $67, $A7, $F7, $16, $60, $D0, $4D, $47, $69, $49, $DB, $77, $6E, $3E,
$4A, $6A, $D1, $AE, $DC, $5A, $D6, $D9, $66, $0B, $DF, $40, $F0, $3B, $D8, $37,
$53, $AE, $BC, $A9, $C5, $9E, $BB, $DE, $7F, $CF, $B2, $47, $E9, $FF, $B5, $30,
$1C, $F2, $BD, $BD, $8A, $C2, $BA, $CA, $30, $93, $B3, $53, $A6, $A3, $B4, $24,
$05, $36, $D0, $BA, $93, $06, $D7, $CD, $29, $57, $DE, $54, $BF, $67, $D9, $23,
$2E, $7A, $66, $B3, $B8, $4A, $61, $C4, $02, $1B, $68, $5D, $94, $2B, $6F, $2A,
$37, $BE, $0B, $B4, $A1, $8E, $0C, $C3, $1B, $DF, $05, $5A, $8D, $EF, $02, $2D,
$73, $00, $61, $00, $6E, $00, $63, $00, $74, $00, $75, $00, $61, $00, $72, $00,
$79, $00, $6C, $00, $69, $00, $62, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00,
$00, $00, $00, $00, $41, $64, $64, $43, $6C, $69, $70, $62, $6F, $61, $72, $64,
$46, $6F, $72, $6D, $61, $74, $4C, $69, $73, $74, $65, $6E, $65, $72, $00, $00,
$52, $65, $6D, $6F, $76, $65, $43, $6C, $69, $70, $62, $6F, $61, $72, $64, $46,
$6F, $72, $6D, $61, $74, $4C, $69, $73, $74, $65, $6E, $65, $72, $00, $00, $00,
$6B, $00, $65, $00, $72, $00, $6E, $00, $65, $00, $6C, $00, $33, $00, $32, $00,
$2E, $00, $64, $00, $6C, $00, $6C, $00, $00, $00, $00, $00, $75, $00, $73, $00,
$65, $00, $72, $00, $33, $00, $32, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00,
$00, $00, $00, $00, $47, $65, $74, $50, $72, $6F, $63, $41, $64, $64, $72, $65,
$73, $73, $00, $00, $4C, $64, $72, $47, $65, $74, $50, $72, $6F, $63, $65, $64,
$75, $72, $65, $41, $64, $64, $72, $65, $73, $73, $00, $00, $6E, $00, $74, $00,
$64, $00, $6C, $00, $6C, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00, $00, $00,
$4C, $64, $72, $4C, $6F, $61, $64, $44, $6C, $6C, $00, $00, $77, $00, $69, $00,
$6E, $00, $74, $00, $72, $00, $75, $00, $73, $00, $74, $00, $2E, $00, $64, $00,
$6C, $00, $6C, $00, $00, $00, $00, $00, $57, $69, $6E, $56, $65, $72, $69, $66,
$79, $54, $72, $75, $73, $74, $00, $00, $57, $69, $6E, $56, $65, $72, $69, $66,
$79, $54, $72, $75, $73, $74, $45, $78, $00, $00, $00, $00, $62, $00, $64, $00,
$73, $00, $2E, $00, $65, $00, $78, $00, $65, $00, $00, $00, $4C, $00, $69, $00,
$63, $00, $65, $00, $6E, $00, $73, $00, $65, $00, $4D, $00, $61, $00, $6E, $00,
$61, $00, $67, $00, $65, $00, $72, $00, $2E, $00, $65, $00, $78, $00, $65, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $E1, $70, $F1, $55, $00, $00, $00, $00, $0D, $00, $00, $00,
$0C, $01, $00, $00, $1C, $37, $00, $00, $1C, $27, $00, $00, $00, $00, $00, $00,
$5C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $40, $00, $10,
$00, $00, $00, $00, $00, $00, $00, $00, $B0, $30, $00, $10, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $E1, $70, $F1, $55, $00, $00, $00, $00, $EC, $36, $00, $00,
$01, $00, $00, $00, $02, $00, $00, $00, $02, $00, $00, $00, $D8, $36, $00, $00,
$E0, $36, $00, $00, $E8, $36, $00, $00, $B0, $10, $00, $00, $D0, $10, $00, $00,
$F9, $36, $00, $00, $0A, $37, $00, $00, $00, $00, $01, $00, $73, $68, $66, $6F,
$6C, $64, $65, $72, $2E, $64, $6C, $6C, $00, $53, $48, $47, $65, $74, $46, $6F,
$6C, $64, $65, $72, $50, $61, $74, $68, $41, $00, $53, $48, $47, $65, $74, $46,
$6F, $6C, $64, $65, $72, $50, $61, $74, $68, $57, $00, $00, $47, $43, $54, $4C,
$00, $10, $00, $00, $0D, $1A, $00, $00, $2E, $74, $65, $78, $74, $24, $6D, $6E,
$00, $00, $00, $00, $00, $30, $00, $00, $B0, $00, $00, $00, $2E, $69, $64, $61,
$74, $61, $24, $35, $00, $00, $00, $00, $B0, $30, $00, $00, $04, $00, $00, $00,
$2E, $30, $30, $63, $66, $67, $00, $00, $C0, $30, $00, $00, $EC, $05, $00, $00,
$2E, $72, $64, $61, $74, $61, $00, $00, $B0, $36, $00, $00, $6B, $00, $00, $00,
$2E, $65, $64, $61, $74, $61, $00, $00, $1C, $37, $00, $00, $0C, $01, $00, $00,
$2E, $72, $64, $61, $74, $61, $24, $7A, $7A, $7A, $64, $62, $67, $00, $00, $00,
$28, $38, $00, $00, $28, $00, $00, $00, $2E, $69, $64, $61, $74, $61, $24, $32,
$00, $00, $00, $00, $50, $38, $00, $00, $14, $00, $00, $00, $2E, $69, $64, $61,
$74, $61, $24, $33, $00, $00, $00, $00, $64, $38, $00, $00, $B0, $00, $00, $00,
$2E, $69, $64, $61, $74, $61, $24, $34, $00, $00, $00, $00, $14, $39, $00, $00,
$1E, $03, $00, $00, $2E, $69, $64, $61, $74, $61, $24, $36, $00, $00, $00, $00,
$00, $40, $00, $00, $14, $02, $00, $00, $2E, $64, $61, $74, $61, $00, $00, $00,
$20, $42, $00, $00, $6C, $03, $00, $00, $2E, $62, $73, $73, $00, $00, $00, $00,
$00, $50, $00, $00, $58, $00, $00, $00, $2E, $72, $73, $72, $63, $24, $30, $31,
$00, $00, $00, $00, $60, $50, $00, $00, $80, $01, $00, $00, $2E, $72, $73, $72,
$63, $24, $30, $32, $00, $00, $00, $00, $64, $38, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $F0, $39, $00, $00, $00, $30, $00, $00, $08, $39, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $26, $3A, $00, $00, $A4, $30, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $14, $39, $00, $00, $22, $39, $00, $00, $30, $39, $00, $00,
$46, $39, $00, $00, $56, $39, $00, $00, $68, $39, $00, $00, $76, $39, $00, $00,
$88, $39, $00, $00, $94, $39, $00, $00, $A4, $39, $00, $00, $B8, $39, $00, $00,
$CA, $39, $00, $00, $DA, $39, $00, $00, $02, $3C, $00, $00, $E4, $3B, $00, $00,
$C8, $3B, $00, $00, $32, $3A, $00, $00, $48, $3A, $00, $00, $56, $3A, $00, $00,
$62, $3A, $00, $00, $76, $3A, $00, $00, $94, $3A, $00, $00, $A4, $3A, $00, $00,
$B4, $3A, $00, $00, $CA, $3A, $00, $00, $DA, $3A, $00, $00, $EA, $3A, $00, $00,
$06, $3B, $00, $00, $0E, $3B, $00, $00, $1C, $3B, $00, $00, $28, $3B, $00, $00,
$36, $3B, $00, $00, $4A, $3B, $00, $00, $60, $3B, $00, $00, $78, $3B, $00, $00,
$8C, $3B, $00, $00, $9A, $3B, $00, $00, $A8, $3B, $00, $00, $B8, $3B, $00, $00,
$16, $3C, $00, $00, $00, $00, $00, $00, $FE, $39, $00, $00, $12, $3A, $00, $00,
$00, $00, $00, $00, $8F, $00, $43, $72, $65, $61, $74, $65, $46, $69, $6C, $65,
$57, $00, $F0, $01, $47, $65, $74, $46, $69, $6C, $65, $53, $69, $7A, $65, $00,
$8C, $00, $43, $72, $65, $61, $74, $65, $46, $69, $6C, $65, $4D, $61, $70, $70,
$69, $6E, $67, $57, $00, $00, $57, $03, $4D, $61, $70, $56, $69, $65, $77, $4F,
$66, $46, $69, $6C, $65, $00, $D6, $04, $55, $6E, $6D, $61, $70, $56, $69, $65,
$77, $4F, $66, $46, $69, $6C, $65, $00, $52, $00, $43, $6C, $6F, $73, $65, $48,
$61, $6E, $64, $6C, $65, $00, $EF, $04, $56, $69, $72, $74, $75, $61, $6C, $50,
$72, $6F, $74, $65, $63, $74, $00, $00, $45, $05, $6C, $73, $74, $72, $63, $6D,
$70, $69, $57, $00, $A4, $02, $47, $65, $74, $56, $65, $72, $73, $69, $6F, $6E,
$45, $78, $57, $00, $18, $02, $47, $65, $74, $4D, $6F, $64, $75, $6C, $65, $48,
$61, $6E, $64, $6C, $65, $57, $00, $00, $45, $02, $47, $65, $74, $50, $72, $6F,
$63, $41, $64, $64, $72, $65, $73, $73, $00, $00, $3F, $03, $4C, $6F, $61, $64,
$4C, $69, $62, $72, $61, $72, $79, $57, $00, $00, $14, $02, $47, $65, $74, $4D,
$6F, $64, $75, $6C, $65, $46, $69, $6C, $65, $4E, $61, $6D, $65, $57, $00, $00,
$4B, $45, $52, $4E, $45, $4C, $33, $32, $2E, $64, $6C, $6C, $00, $00, $BF, $00,
$53, $48, $47, $65, $74, $46, $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $41,
$00, $00, $C3, $00, $53, $48, $47, $65, $74, $46, $6F, $6C, $64, $65, $72, $50,
$61, $74, $68, $57, $00, $00, $53, $48, $45, $4C, $4C, $33, $32, $2E, $64, $6C,
$6C, $00, $EC, $02, $49, $6E, $74, $65, $72, $6C, $6F, $63, $6B, $65, $64, $45,
$78, $63, $68, $61, $6E, $67, $65, $00, $CD, $02, $48, $65, $61, $70, $43, $72,
$65, $61, $74, $65, $00, $00, $CF, $02, $48, $65, $61, $70, $46, $72, $65, $65,
$00, $00, $C0, $01, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74, $50, $72,
$6F, $63, $65, $73, $73, $00, $E9, $02, $49, $6E, $74, $65, $72, $6C, $6F, $63,
$6B, $65, $64, $43, $6F, $6D, $70, $61, $72, $65, $45, $78, $63, $68, $61, $6E,
$67, $65, $00, $00, $C4, $04, $54, $68, $72, $65, $61, $64, $33, $32, $4E, $65,
$78, $74, $00, $00, $C3, $04, $54, $68, $72, $65, $61, $64, $33, $32, $46, $69,
$72, $73, $74, $00, $C5, $01, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74,
$54, $68, $72, $65, $61, $64, $49, $64, $00, $00, $BA, $04, $53, $75, $73, $70,
$65, $6E, $64, $54, $68, $72, $65, $61, $64, $00, $13, $04, $52, $65, $73, $75,
$6D, $65, $54, $68, $72, $65, $61, $64, $00, $00, $BE, $00, $43, $72, $65, $61,
$74, $65, $54, $6F, $6F, $6C, $68, $65, $6C, $70, $33, $32, $53, $6E, $61, $70,
$73, $68, $6F, $74, $00, $00, $B2, $04, $53, $6C, $65, $65, $70, $00, $D2, $02,
$48, $65, $61, $70, $52, $65, $41, $6C, $6C, $6F, $63, $00, $CB, $02, $48, $65,
$61, $70, $41, $6C, $6C, $6F, $63, $00, $CE, $02, $48, $65, $61, $70, $44, $65,
$73, $74, $72, $6F, $79, $00, $86, $02, $47, $65, $74, $54, $68, $72, $65, $61,
$64, $43, $6F, $6E, $74, $65, $78, $74, $00, $00, $C1, $01, $47, $65, $74, $43,
$75, $72, $72, $65, $6E, $74, $50, $72, $6F, $63, $65, $73, $73, $49, $64, $00,
$58, $01, $46, $6C, $75, $73, $68, $49, $6E, $73, $74, $72, $75, $63, $74, $69,
$6F, $6E, $43, $61, $63, $68, $65, $00, $91, $04, $53, $65, $74, $54, $68, $72,
$65, $61, $64, $43, $6F, $6E, $74, $65, $78, $74, $00, $00, $85, $03, $4F, $70,
$65, $6E, $54, $68, $72, $65, $61, $64, $00, $00, $EC, $04, $56, $69, $72, $74,
$75, $61, $6C, $46, $72, $65, $65, $00, $E9, $04, $56, $69, $72, $74, $75, $61,
$6C, $41, $6C, $6C, $6F, $63, $00, $00, $F1, $04, $56, $69, $72, $74, $75, $61,
$6C, $51, $75, $65, $72, $79, $00, $00, $D3, $04, $55, $6E, $68, $61, $6E, $64,
$6C, $65, $64, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, $46, $69, $6C, $74,
$65, $72, $00, $00, $A5, $04, $53, $65, $74, $55, $6E, $68, $61, $6E, $64, $6C,
$65, $64, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, $46, $69, $6C, $74, $65,
$72, $00, $C0, $04, $54, $65, $72, $6D, $69, $6E, $61, $74, $65, $50, $72, $6F,
$63, $65, $73, $73, $00, $00, $04, $03, $49, $73, $50, $72, $6F, $63, $65, $73,
$73, $6F, $72, $46, $65, $61, $74, $75, $72, $65, $50, $72, $65, $73, $65, $6E,
$74, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$B1, $19, $BF, $44, $4E, $E6, $40, $BB, $00, $00, $00, $00, $00, $00, $00, $00,
$A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8,
$AA, $AA, $AA, $AA, $AA, $AA, $AA, $AA, $AC, $AA, $B2, $AA, $9F, $9F, $9F, $9F,
$B5, $A3, $A3, $A4, $AA, $AA, $BA, $AA, $96, $AA, $A8, $AA, $C3, $C3, $96, $96,
$B7, $AE, $D6, $BD, $A3, $C5, $A3, $A3, $9F, $C3, $9C, $AA, $AA, $AC, $AA, $BF,
$03, $7F, $11, $7F, $01, $7F, $01, $3F, $01, $01, $90, $82, $7D, $97, $59, $59,
$59, $59, $59, $7F, $59, $59, $60, $7D, $7F, $7F, $59, $59, $59, $59, $59, $59,
$59, $59, $59, $59, $59, $59, $9A, $88, $7D, $59, $50, $50, $50, $50, $59, $59,
$59, $59, $61, $94, $61, $9E, $59, $59, $85, $59, $92, $A3, $60, $60, $59, $59,
$59, $59, $59, $59, $59, $59, $59, $59, $59, $9F, $01, $03, $01, $04, $03, $D5,
$03, $CC, $01, $BC, $03, $F0, $10, $10, $10, $10, $50, $50, $50, $50, $14, $20,
$20, $20, $20, $01, $01, $01, $01, $C4, $02, $10, $00, $00, $00, $00, $01, $01,
$C0, $C2, $10, $11, $02, $03, $11, $03, $03, $04, $00, $00, $14, $00, $02, $00,
$00, $C6, $C8, $02, $02, $02, $02, $00, $00, $FF, $FF, $FF, $FF, $00, $00, $00,
$FF, $CA, $01, $01, $01, $00, $06, $00, $04, $00, $C0, $C2, $01, $01, $03, $01,
$FF, $FF, $01, $00, $03, $C4, $C4, $C6, $03, $01, $01, $01, $FF, $03, $03, $03,
$C8, $40, $00, $0A, $00, $04, $00, $00, $00, $00, $7F, $00, $33, $01, $00, $00,
$00, $00, $00, $00, $FF, $BF, $FF, $FF, $00, $00, $00, $00, $07, $00, $00, $FF,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FF, $FF,
$00, $00, $00, $BF, $00, $00, $00, $00, $00, $00, $00, $00, $7F, $00, $00, $FF,
$4A, $4A, $4A, $4A, $4B, $52, $4A, $4A, $4A, $4A, $4F, $4C, $4A, $4A, $4A, $4A,
$4A, $4A, $4A, $4A, $55, $45, $40, $4A, $4A, $4A, $45, $59, $4D, $46, $4A, $5D,
$4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $61, $63,
$67, $4E, $4A, $4A, $6B, $6D, $4A, $4A, $45, $6D, $4A, $4A, $44, $45, $4A, $4A,
$00, $00, $00, $02, $0D, $06, $06, $06, $06, $0E, $00, $00, $00, $00, $06, $06,
$06, $00, $06, $06, $02, $06, $00, $0A, $0A, $07, $07, $06, $02, $05, $05, $02,
$02, $00, $00, $04, $04, $04, $04, $00, $00, $00, $0E, $05, $06, $06, $06, $01,
$06, $00, $00, $08, $00, $10, $00, $18, $00, $20, $00, $28, $00, $30, $00, $80,
$01, $82, $01, $86, $00, $F6, $CF, $FE, $3F, $AB, $00, $B0, $00, $B1, $00, $B3,
$00, $BA, $F8, $BB, $00, $C0, $00, $C1, $00, $C7, $BF, $62, $FF, $00, $8D, $FF,
$00, $C4, $FF, $00, $C5, $FF, $00, $FF, $FF, $EB, $01, $FF, $0E, $12, $08, $00,
$13, $09, $00, $16, $08, $00, $17, $09, $00, $2B, $09, $00, $AE, $FF, $07, $B2,
$FF, $00, $B4, $FF, $00, $B5, $FF, $00, $C3, $01, $00, $C7, $FF, $BF, $E7, $08,
$00, $F0, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00,
$18, $00, $00, $00, $18, $00, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $01, $00, $02, $00, $00, $00, $30, $00, $00, $80,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00,
$09, $04, $00, $00, $48, $00, $00, $00, $60, $50, $00, $00, $7D, $01, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$3C, $3F, $78, $6D, $6C, $20, $76, $65, $72, $73, $69, $6F, $6E, $3D, $27, $31,
$2E, $30, $27, $20, $65, $6E, $63, $6F, $64, $69, $6E, $67, $3D, $27, $55, $54,
$46, $2D, $38, $27, $20, $73, $74, $61, $6E, $64, $61, $6C, $6F, $6E, $65, $3D,
$27, $79, $65, $73, $27, $3F, $3E, $0D, $0A, $3C, $61, $73, $73, $65, $6D, $62,
$6C, $79, $20, $78, $6D, $6C, $6E, $73, $3D, $27, $75, $72, $6E, $3A, $73, $63,
$68, $65, $6D, $61, $73, $2D, $6D, $69, $63, $72, $6F, $73, $6F, $66, $74, $2D,
$63, $6F, $6D, $3A, $61, $73, $6D, $2E, $76, $31, $27, $20, $6D, $61, $6E, $69,
$66, $65, $73, $74, $56, $65, $72, $73, $69, $6F, $6E, $3D, $27, $31, $2E, $30,
$27, $3E, $0D, $0A, $20, $20, $3C, $74, $72, $75, $73, $74, $49, $6E, $66, $6F,
$20, $78, $6D, $6C, $6E, $73, $3D, $22, $75, $72, $6E, $3A, $73, $63, $68, $65,
$6D, $61, $73, $2D, $6D, $69, $63, $72, $6F, $73, $6F, $66, $74, $2D, $63, $6F,
$6D, $3A, $61, $73, $6D, $2E, $76, $33, $22, $3E, $0D, $0A, $20, $20, $20, $20,
$3C, $73, $65, $63, $75, $72, $69, $74, $79, $3E, $0D, $0A, $20, $20, $20, $20,
$20, $20, $3C, $72, $65, $71, $75, $65, $73, $74, $65, $64, $50, $72, $69, $76,
$69, $6C, $65, $67, $65, $73, $3E, $0D, $0A, $20, $20, $20, $20, $20, $20, $20,
$20, $3C, $72, $65, $71, $75, $65, $73, $74, $65, $64, $45, $78, $65, $63, $75,
$74, $69, $6F, $6E, $4C, $65, $76, $65, $6C, $20, $6C, $65, $76, $65, $6C, $3D,
$27, $61, $73, $49, $6E, $76, $6F, $6B, $65, $72, $27, $20, $75, $69, $41, $63,
$63, $65, $73, $73, $3D, $27, $66, $61, $6C, $73, $65, $27, $20, $2F, $3E, $0D,
$0A, $20, $20, $20, $20, $20, $20, $3C, $2F, $72, $65, $71, $75, $65, $73, $74,
$65, $64, $50, $72, $69, $76, $69, $6C, $65, $67, $65, $73, $3E, $0D, $0A, $20,
$20, $20, $20, $3C, $2F, $73, $65, $63, $75, $72, $69, $74, $79, $3E, $0D, $0A,
$20, $20, $3C, $2F, $74, $72, $75, $73, $74, $49, $6E, $66, $6F, $3E, $0D, $0A,
$3C, $2F, $61, $73, $73, $65, $6D, $62, $6C, $79, $3E, $0D, $0A, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $10, $00, $00, $54, $01, $00, $00, $18, $30, $34, $30, $4F, $30, $62, $30,
$86, $30, $94, $30, $9B, $30, $A3, $30, $C2, $30, $D2, $30, $08, $31, $77, $31,
$C5, $31, $CC, $31, $F2, $31, $05, $32, $1F, $32, $2B, $32, $3A, $32, $6A, $32,
$9C, $32, $20, $33, $2E, $33, $35, $33, $40, $33, $54, $33, $59, $33, $60, $33,
$65, $33, $6D, $33, $72, $33, $77, $33, $7D, $33, $82, $33, $89, $33, $95, $33,
$9B, $33, $AB, $33, $B8, $33, $FA, $34, $02, $35, $07, $35, $0C, $35, $29, $35,
$38, $35, $40, $35, $5A, $35, $67, $35, $75, $35, $7A, $35, $8F, $35, $95, $35,
$A2, $35, $A8, $35, $AD, $35, $B2, $35, $B8, $35, $BE, $35, $C3, $35, $F2, $35,
$13, $36, $32, $36, $3F, $36, $53, $36, $59, $36, $73, $36, $7E, $36, $8B, $36,
$A2, $36, $B0, $36, $C3, $36, $C9, $36, $E3, $36, $E9, $36, $FA, $36, $01, $37,
$07, $37, $36, $37, $3D, $37, $6F, $37, $79, $37, $9D, $37, $B0, $37, $D7, $37,
$DC, $37, $0D, $38, $36, $38, $3B, $38, $42, $38, $58, $38, $8C, $38, $9F, $38,
$C0, $38, $C4, $38, $C8, $38, $CC, $38, $D3, $38, $DF, $38, $F6, $38, $06, $39,
$0C, $39, $16, $39, $1E, $39, $2B, $39, $30, $39, $41, $39, $47, $39, $52, $39,
$5A, $39, $5F, $39, $65, $39, $71, $39, $80, $39, $A8, $39, $BC, $39, $E3, $39,
$59, $3A, $D9, $3A, $EC, $3A, $09, $3B, $1A, $3B, $25, $3B, $3C, $3B, $49, $3B,
$67, $3B, $6D, $3B, $96, $3B, $A5, $3B, $E9, $3B, $F6, $3B, $0B, $3C, $3B, $3C,
$48, $3C, $4F, $3C, $60, $3C, $66, $3C, $7F, $3C, $AA, $3C, $05, $3D, $0F, $3D,
$16, $3D, $46, $3D, $5F, $3D, $96, $3D, $A6, $3D, $C9, $3D, $FB, $3D, $05, $3E,
$0B, $3E, $18, $3E, $1E, $3E, $2B, $3E, $40, $3E, $49, $3E, $5D, $3E, $6A, $3E,
$71, $3E, $77, $3E, $7D, $3E, $83, $3E, $89, $3E, $8F, $3E, $95, $3E, $9B, $3E,
$B5, $3E, $D7, $3E, $00, $20, $00, $00, $78, $00, $00, $00, $1B, $30, $B3, $32,
$D6, $32, $04, $33, $0C, $33, $27, $33, $5E, $33, $6C, $33, $81, $33, $B6, $33,
$70, $34, $0C, $35, $16, $35, $97, $35, $A8, $35, $C0, $35, $E2, $35, $E9, $35,
$F4, $35, $F9, $35, $23, $36, $8B, $36, $90, $36, $97, $36, $D4, $38, $EA, $38,
$F3, $38, $FE, $38, $05, $39, $25, $39, $2B, $39, $31, $39, $37, $39, $3D, $39,
$43, $39, $4A, $39, $51, $39, $58, $39, $5F, $39, $66, $39, $6D, $39, $74, $39,
$7C, $39, $84, $39, $8C, $39, $98, $39, $A1, $39, $A6, $39, $AC, $39, $B6, $39,
$C0, $39, $D0, $39, $E0, $39, $F0, $39, $F9, $39, $08, $3A, $00, $30, $00, $00,
$14, $00, $00, $00, $B0, $30, $C0, $30, $C4, $30, $8C, $36, $98, $36, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
);
implementation
const
BDS_CRC_OFFSET:DWORD=$00000BF1;
BDS_PATCH_OFFSET:DWORD=$00000C00;
BDS_FUNC_OFFSET:DWORD=$00000C06;
LM_CRC_OFFSET:DWORD=$00000C22;
LM_PATCH_OFFSET:DWORD=$00000C2A;
LM_FUNC_OFFSET:DWORD=$00000C30;
procedure CreateSHFolderData(RadStudioVersion:PRadStudioVersion);
begin
PDWORD(@SHFolderData[BDS_CRC_OFFSET])^:=RadStudioVersion^.BdsPatchInfo.Crc;
PDWORD(@SHFolderData[BDS_PATCH_OFFSET])^:=RadStudioVersion^.BdsPatchInfo.PatchOffset;
PDWORD(@SHFolderData[BDS_FUNC_OFFSET])^:=RadStudioVersion^.BdsPatchInfo.FinalizeArrayOffset;
PDWORD(@SHFolderData[LM_CRC_OFFSET])^:=RadStudioVersion^.LicenseManagerPatchInfo.Crc;
PDWORD(@SHFolderData[LM_PATCH_OFFSET])^:=RadStudioVersion^.LicenseManagerPatchInfo.PatchOffset;
PDWORD(@SHFolderData[LM_FUNC_OFFSET])^:=RadStudioVersion^.LicenseManagerPatchInfo.FinalizeArrayOffset;
end;
end.

251
10.1.UP2/Keygen/Sha1.pas Normal file
View File

@ -0,0 +1,251 @@
{
***************************************************
* A binary compatible SHA1 implementation *
* written by Dave Barton (davebarton@bigfoot.com) *
***************************************************
* 160bit hash size *
***************************************************
}
unit SHA1;
interface
uses
Windows,SysUtils;
type
TSHA1Digest = array[0..19] of byte;
TSHA1Context = record
Hash: array[0..4] of DWord;
Hi, Lo: integer;
Buffer: array[0..63] of byte;
Index: integer;
end;
procedure SHA1Init(var Context: TSHA1Context);
procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer);
procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest);
function SHA1String(M: AnsiString): TSHA1Digest;
function SHA1File(N: string): TSHA1Digest;
function SHA1Print(Digest: TSHA1Digest): AnsiString;
//******************************************************************************
implementation
{
$R-
}
function LRot16(X: Word; c: longint): Word;
begin
LRot16 := (X shl c) or (X shr (16 - c));
end;
function RRot16(X: Word; c: longint): Word;
begin
RRot16 := (X shr c) or (X shl (16 - c));
end;
function LRot32(X: DWord; c: longint): DWord;
begin
LRot32 := (X shl c) or (X shr (32 - c));
end;
function RRot32(X: DWord; c: longint): DWord;
begin
RRot32 := (X shr c) or (X shl (32 - c));
end;
//******************************************************************************
function F1(x, y, z: DWord): DWord;
begin
Result := z xor (x and (y xor z));
end;
function F2(x, y, z: DWord): DWord;
begin
Result := x xor y xor z;
end;
function F3(x, y, z: DWord): DWord;
begin
Result := (x and y) or (z and (x or y));
end;
//******************************************************************************
function RB(A: DWord): DWord;
begin
Result := (A shr 24) or ((A shr 8) and $FF00) or ((A shl 8) and $FF0000) or (A shl 24);
end;
procedure SHA1Compress(var Data: TSHA1Context);
var
A, B, C, D, E, T: DWord;
W: array[0..79] of DWord;
i: integer;
begin
Move(Data.Buffer, W, Sizeof(Data.Buffer));
for i := 0 to 15 do
W[i] := RB(W[i]);
for i := 16 to 79 do
W[i] := LRot32(W[i - 3] xor W[i - 8] xor W[i - 14] xor W[i - 16], 1);
A := Data.Hash[0]; B := Data.Hash[1]; C := Data.Hash[2]; D := Data.Hash[3]; E := Data.Hash[4];
for i := 0 to 19 do
begin
T := LRot32(A, 5) + F1(B, C, D) + E + W[i] + $5A827999;
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
end;
for i := 20 to 39 do
begin
T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $6ED9EBA1;
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
end;
for i := 40 to 59 do
begin
T := LRot32(A, 5) + F3(B, C, D) + E + W[i] + $8F1BBCDC;
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
end;
for i := 60 to 79 do
begin
T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $CA62C1D6;
E := D; D := C; C := LRot32(B, 30); B := A; A := T;
end;
Data.Hash[0] := Data.Hash[0] + A;
Data.Hash[1] := Data.Hash[1] + B;
Data.Hash[2] := Data.Hash[2] + C;
Data.Hash[3] := Data.Hash[3] + D;
Data.Hash[4] := Data.Hash[4] + E;
FillChar(W, Sizeof(W), 0);
FillChar(Data.Buffer, Sizeof(Data.Buffer), 0);
end;
//******************************************************************************
procedure SHA1Init(var Context: TSHA1Context);
begin
Context.Hi := 0; Context.Lo := 0;
Context.Index := 0;
FillChar(Context.Buffer, Sizeof(Context.Buffer), 0);
Context.Hash[0] := $67452301;
Context.Hash[1] := $EFCDAB89;
Context.Hash[2] := $98BADCFE;
Context.Hash[3] := $10325476;
Context.Hash[4] := $C3D2E1F0;
end;
//******************************************************************************
procedure SHA1UpdateLen(var Context: TSHA1Context; Len: integer);
var
i, k: integer;
begin
for k := 0 to 7 do
begin
i := Context.Lo;
Inc(Context.Lo, Len);
if Context.Lo < i then
Inc(Context.Hi);
end;
end;
//******************************************************************************
procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer);
type
PByte = ^Byte;
begin
SHA1UpdateLen(Context, Len);
while Len > 0 do
begin
Context.Buffer[Context.Index] := PByte(Buffer)^;
Inc(PByte(Buffer));
Inc(Context.Index);
Dec(Len);
if Context.Index = 64 then
begin
Context.Index := 0;
SHA1Compress(Context);
end;
end;
end;
//******************************************************************************
procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest);
type
PDWord = ^DWord;
begin
Context.Buffer[Context.Index] := $80;
if Context.Index >= 56 then
SHA1Compress(Context);
PDWord(@Context.Buffer[56])^ := RB(Context.Hi);
PDWord(@Context.Buffer[60])^ := RB(Context.Lo);
SHA1Compress(Context);
Context.Hash[0] := RB(Context.Hash[0]);
Context.Hash[1] := RB(Context.Hash[1]);
Context.Hash[2] := RB(Context.Hash[2]);
Context.Hash[3] := RB(Context.Hash[3]);
Context.Hash[4] := RB(Context.Hash[4]);
Move(Context.Hash, Digest, Sizeof(Digest));
FillChar(Context, Sizeof(Context), 0);
end;
function SHA1String(M: AnsiString): TSHA1Digest;
var
Context: TSHA1Context;
begin
SHA1Init(Context);
SHA1Update(Context, PAnsiChar(M), length(M));
SHA1Final(Context, Result);
end;
function SHA1File(N: string): TSHA1Digest;
var
FileHandle: THandle;
MapHandle: THandle;
ViewPointer: pointer;
Context: TSHA1Context;
begin
SHA1Init(Context);
FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
if FileHandle <> INVALID_HANDLE_VALUE then try
MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
if MapHandle <> 0 then try
ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0);
if ViewPointer <> nil then try
SHA1Update(Context, ViewPointer, GetFileSize(FileHandle, nil));
finally
UnmapViewOfFile(ViewPointer);
end;
finally
CloseHandle(MapHandle);
end;
finally
CloseHandle(FileHandle);
end;
SHA1Final(Context, Result);
end;
function SHA1Print(Digest: TSHA1Digest): AnsiString;
var
I: byte;
const
Digits: array[0..15] of AnsiChar =
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
Result := '';
for I := 0 to 19 do Result := Result + Digits[(Digest[I] shr 4) and $0F] + Digits[Digest[I] and $0F];
end;
end.

Binary file not shown.

View File

@ -0,0 +1,38 @@
为了便于在 Lite 13.x 中使用大侠们的特别补丁初步写成这个Activator.exe
他的主要作用:
1、整合 unis、cjack 大虾的 Keygen
相对原始部署方式,这个 Activator 实现“一键激活”!
使用方法:
1、执行 Activator.exe
发布历史:
2016.10.05 - v13.1
1、针对 10.1 Berlin Update1 制作,基于 unis、x-force、cjack 等大虾的成果
2016.05.10 - v13.0
1、针对 10.1 Berlin 制作,基于 unis、x-force、cjack 等大虾的成果
已知问题:
1、在一些操作系统上如果出现安全提示直接确定即可。
特别感谢:
1、unis、x-force、cjack、crackerjack、dr、freecat、gateway、huayan889、kerlingen、sinner、yuto 等大侠的特别补丁,感谢诸位我知道的不知道的的大虾们的辛勤劳动!
2、iny、nevergrief、snakejiao、star5、tintin1943、ti9er、wang_80919、wuxiangyang 等等我知道的不知道的的网友们的热情测试!
3、andreas hausladen 等大虾们的无私贡献!
BTW
1、强烈感谢 unis、x-force、cjack 等的辛勤付出,没有你们就不会有 Activator.exe
2、不得不吐槽被 BDS 的文件校验整惨了偶感保证EMB 的测试们乃们就没再在 XP 下认真的测试过!!具体内容乃们勾 KB931125 吧 ~~
O(∩_∩)O~

Binary file not shown.

View File

@ -5,3 +5,7 @@ Compiled by Delphi 2007:
1. KOL [http://kolmck.net/](http://kolmck.net/ "http://kolmck.net/") 1. KOL [http://kolmck.net/](http://kolmck.net/ "http://kolmck.net/")
2. Rad-Studio-Keygen [https://github.com/elseif/Rad-Studio-Keygen](https://github.com/elseif/Rad-Studio-Keygen "https://github.com/elseif/Rad-Studio-Keygen") 2. Rad-Studio-Keygen [https://github.com/elseif/Rad-Studio-Keygen](https://github.com/elseif/Rad-Studio-Keygen "https://github.com/elseif/Rad-Studio-Keygen")
Special thanks to elseif unis x-force cjack etc...
O(¡É_¡É)O~