Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2518f9326e | |||
| a82ed4c39f | |||
| 0aac56e6e1 | |||
| 3b096e4d7e | |||
| f5d88dd60d | |||
| fe2e8cbd57 | |||
| 9f37bad2ff | |||
| bbe881f9e6 | |||
| fc8b62a3e8 | |||
| 81287a8a24 |
+1
-1
@@ -6,7 +6,7 @@
|
||||
*.so
|
||||
*.bpl
|
||||
*.res
|
||||
*.rtf
|
||||
|
||||
|
||||
# файлы IDE и сборки
|
||||
*.dsk
|
||||
|
||||
+2
-2
@@ -306,9 +306,9 @@
|
||||
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
|
||||
<VerInfo_MajorVer>10</VerInfo_MajorVer>
|
||||
<VerInfo_MinorVer>1</VerInfo_MinorVer>
|
||||
<VerInfo_Release>3</VerInfo_Release>
|
||||
<VerInfo_Release>4</VerInfo_Release>
|
||||
<VerInfo_Locale>1049</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=PTyTb;FileDescription=$(MSBuildProjectName);FileVersion=10.1.3.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=ru.ptytb.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
<VerInfo_Keys>CompanyName=PTyTb;FileDescription=$(MSBuildProjectName);FileVersion=10.1.4.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=ru.ptytb.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
<Icon_MainIcon>TTW_Bot_app_Icon2.ico</Icon_MainIcon>
|
||||
<UWP_DelphiLogo44>..\ttw_fmx_v9\fawico_44_2.png</UWP_DelphiLogo44>
|
||||
<UWP_DelphiLogo150>..\ttw_fmx_v9\fawico_150_2.png</UWP_DelphiLogo150>
|
||||
|
||||
+247
-14
@@ -1,6 +1,6 @@
|
||||
; Script generated by the Inno Setup Script Wizard. ïðîâåðêà óñòàíîâùèà 2
|
||||
; Script generated by the Inno Setup Script Wizard.
|
||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||
|
||||
|
||||
#define MyAppName "TTW_Bot"
|
||||
#define MyAppExeName "TTW_Bot_app.exe"
|
||||
#define MyAppDir "C:\Delphi\d12\ttw_fmx_v10"
|
||||
@@ -12,16 +12,12 @@
|
||||
#define MyAppAssocExt ".myp"
|
||||
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
|
||||
|
||||
|
||||
[Setup]
|
||||
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
|
||||
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
||||
LicenseFile={#MyAppDir}\license.rtf
|
||||
DisableWelcomePage=no
|
||||
AppId={{81A4FB77-4AE5-4FAC-A889-CA3CA7B8C687}
|
||||
AppId={{81A4FB77-4AE5-4FAC-A889-CA3CA7B8C687}}
|
||||
AppName={#MyAppName}
|
||||
AppVersion={#MyAppVersion}
|
||||
;AppVerName={#MyAppName} {#MyAppVersion}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
AppPublisherURL={#MyAppURL}
|
||||
AppSupportURL={#MyAppURL}
|
||||
@@ -30,12 +26,10 @@ DefaultDirName={autopf}\{#MyAppName}
|
||||
ChangesAssociations=yes
|
||||
DisableDirPage=auto
|
||||
DisableProgramGroupPage=auto
|
||||
; Uncomment the following line to run in non administrative install mode (install for current user only.)
|
||||
;PrivilegesRequired=lowest
|
||||
OutputDir={#MyAppDir}\Win32\installer
|
||||
OutputBaseFilename=TTW_Bot_setup
|
||||
SetupIconFile={#MyAppDir}\install.ico
|
||||
Compression=lzma
|
||||
Compression=lzma2/ultra
|
||||
SolidCompression=yes
|
||||
WizardStyle=modern
|
||||
|
||||
@@ -43,26 +37,51 @@ WizardStyle=modern
|
||||
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: "{#MyAppDir}\license.rtf"
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
|
||||
|
||||
Name: "install_ytdlp"; Description: "Óñòàíîâèòü yt-dlp"; GroupDescription: "Êîìïîíåíòû äëÿ âîñïðîèçâåäåíèÿ ìóçûêè ïî ññûëêå"
|
||||
Name: "install_ffmpeg"; Description: "Óñòàíîâèòü ffmpeg"; GroupDescription: "Êîìïîíåíòû äëÿ âîñïðîèçâåäåíèÿ ìóçûêè ïî ññûëêå"
|
||||
|
||||
Name: "install_ru_irina"; Description: "Ñêà÷àòü Ðó ãîëîñ Èðèíà"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
|
||||
Name: "install_ru_denis"; Description: "Ñêà÷àòü Ðó ãîëîñ Äåíèñ"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
|
||||
Name: "install_ru_dmitri"; Description: "Ñêà÷àòü Ðó ãîëîñ Äìèòðèé"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
|
||||
Name: "install_ru_ruslan"; Description: "Ñêà÷àòü Ðó ãîëîñ Ðóñëàí"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
|
||||
|
||||
[Files]
|
||||
Source: "{#MyAppDir}\Win32\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\bass.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\botapp.cfg"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\ffmpeg.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\libcrypto-1_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\libeay32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\libssl-1_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\libssl32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\SilentPlayer.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\ssleay32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\yt-dlp.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "{#MyAppDir}\Win32\Release\stl\*"; DestDir: "{userappdata}\TTW_Bot\stl"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#MyAppDir}\Win32\Release\piper\*"; DestDir: "{app}\piper"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#MyAppDir}\Win32\Release\games\*"; DestDir: "{app}\games"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#MyAppDir}\license.rtf"; DestDir: "{app}"; Flags: ignoreversion
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
|
||||
Source: "{#MyAppDir}\unzip.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
|
||||
Source: "{tmp}\yt-dlp.exe"; DestDir: "{app}"; Flags: external deleteafterinstall; Tasks: install_ytdlp
|
||||
Source: "{tmp}\ffmpeg.zip"; DestDir: "{app}"; Flags: external deleteafterinstall; Tasks: install_ffmpeg
|
||||
|
||||
; Ãîëîñ Èðèíû
|
||||
Source: "{tmp}\ru_RU-irina-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_irina
|
||||
Source: "{tmp}\ru_RU-irina-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_irina
|
||||
|
||||
; Ãîëîñ Äåíèñà
|
||||
Source: "{tmp}\ru_RU-denis-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_denis
|
||||
Source: "{tmp}\ru_RU-denis-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_denis
|
||||
|
||||
; Ãîëîñ Äìèòðèÿ
|
||||
Source: "{tmp}\ru_RU-dmitri-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_dmitri
|
||||
Source: "{tmp}\ru_RU-dmitri-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_dmitri
|
||||
|
||||
; Ãîëîñ Ðóñëàíà
|
||||
Source: "{tmp}\ru_RU-ruslan-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_ruslan
|
||||
Source: "{tmp}\ru_RU-ruslan-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_ruslan
|
||||
|
||||
[Registry]
|
||||
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
|
||||
@@ -79,7 +98,24 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de
|
||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||
|
||||
[Code]
|
||||
var
|
||||
DownloadPage: TDownloadWizardPage;
|
||||
|
||||
function OnDownloadProgress(const Url, FileName: String; const Progress, ProgressMax: Int64): Boolean;
|
||||
begin
|
||||
if Progress = ProgressMax then
|
||||
Log(Format('Óñïåøíî çàãðóæåíî: %s', [FileName]));
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure InitializeWizard;
|
||||
begin
|
||||
DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress);
|
||||
end;
|
||||
|
||||
function NextButtonClick(CurPageID: Integer): Boolean;
|
||||
var
|
||||
HasDownloads: Boolean;
|
||||
begin
|
||||
if CurPageID = wpLicense then
|
||||
begin
|
||||
@@ -87,6 +123,203 @@ begin
|
||||
if not Result then
|
||||
MsgBox('Âû äîëæíû ïðèíÿòü óñëîâèÿ ëèöåíçèîííîãî ñîãëàøåíèÿ!', mbError, MB_OK);
|
||||
end
|
||||
else if CurPageID = wpReady then
|
||||
begin
|
||||
HasDownloads := False;
|
||||
DownloadPage.Clear;
|
||||
|
||||
if WizardIsTaskSelected('install_ytdlp') then
|
||||
begin
|
||||
DownloadPage.Add('https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe', 'yt-dlp.exe', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ffmpeg') then
|
||||
begin
|
||||
DownloadPage.Add('https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip', 'ffmpeg.zip', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
// Äîáàâëÿåì çàãðóçêó ãîëîñîâ
|
||||
if WizardIsTaskSelected('install_ru_irina') then
|
||||
begin
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx?download=true', 'ru_RU-irina-medium.onnx', '');
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx.json?download=true', 'ru_RU-irina-medium.onnx.json', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_denis') then
|
||||
begin
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx?download=true', 'ru_RU-denis-medium.onnx', '');
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx.json?download=true', 'ru_RU-denis-medium.onnx.json', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_dmitri') then
|
||||
begin
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx?download=true', 'ru_RU-dmitri-medium.onnx', '');
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx.json?download=true', 'ru_RU-dmitri-medium.onnx.json', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_ruslan') then
|
||||
begin
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx?download=true', 'ru_RU-ruslan-medium.onnx', '');
|
||||
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx.json?download=true', 'ru_RU-ruslan-medium.onnx.json', '');
|
||||
HasDownloads := True;
|
||||
end;
|
||||
|
||||
if HasDownloads then
|
||||
begin
|
||||
DownloadPage.Show;
|
||||
try
|
||||
DownloadPage.Download;
|
||||
DownloadPage.Hide;
|
||||
Result := True;
|
||||
except
|
||||
SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
|
||||
Result := False;
|
||||
end;
|
||||
end
|
||||
else
|
||||
Result := True;
|
||||
end
|
||||
else
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure InstallFiles;
|
||||
var
|
||||
ResultCode: Integer;
|
||||
UnzipTool: string;
|
||||
VoicesPath: string;
|
||||
TempPath: string;
|
||||
FindRec: TFindRec;
|
||||
Found: Boolean;
|
||||
begin
|
||||
VoicesPath := ExpandConstant('{userappdata}\TTW_Bot\Voices');
|
||||
if not DirExists(VoicesPath) then
|
||||
ForceDirectories(VoicesPath);
|
||||
|
||||
|
||||
if WizardIsTaskSelected('install_ytdlp') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\yt-dlp.exe')) then
|
||||
begin
|
||||
FileCopy(ExpandConstant('{tmp}\yt-dlp.exe'), ExpandConstant('{app}\yt-dlp.exe'), False);
|
||||
Log('yt-dlp óñòàíîâëåí');
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: yt-dlp.exe íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ffmpeg') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\ffmpeg.zip')) then
|
||||
begin
|
||||
UnzipTool := ExpandConstant('{tmp}\unzip.exe');
|
||||
if not FileExists(UnzipTool) then
|
||||
begin
|
||||
ExtractTemporaryFile('unzip.exe');
|
||||
end;
|
||||
|
||||
// Ñîçäàåì âðåìåííóþ ïàïêó äëÿ ðàñïàêîâêè
|
||||
TempPath := ExpandConstant('{tmp}\ffmpeg_temp');
|
||||
ForceDirectories(TempPath);
|
||||
|
||||
// Ðàñïàêîâûâàåì àðõèâ âî âðåìåííóþ ïàïêó
|
||||
Exec(UnzipTool, '-o "' + ExpandConstant('{tmp}\ffmpeg.zip') + '" -d "' + TempPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
|
||||
// Èùåì ffmpeg.exe â ïîäïàïêàõ
|
||||
Found := False;
|
||||
if FindFirst(TempPath + '\*', FindRec) then
|
||||
begin
|
||||
try
|
||||
repeat
|
||||
if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and
|
||||
(FindRec.Name <> '.') and (FindRec.Name <> '..') then
|
||||
begin
|
||||
// Ïðîâåðÿåì íàëè÷èå ffmpeg.exe â ïàïêå bin
|
||||
if FileExists(TempPath + '\' + FindRec.Name + '\bin\ffmpeg.exe') then
|
||||
begin
|
||||
FileCopy(TempPath + '\' + FindRec.Name + '\bin\ffmpeg.exe',
|
||||
ExpandConstant('{app}\ffmpeg.exe'), False);
|
||||
Log('ffmpeg.exe íàéäåí è ñêîïèðîâàí èç ïàïêè: ' + FindRec.Name);
|
||||
Found := True;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
until not FindNext(FindRec);
|
||||
finally
|
||||
FindClose(FindRec);
|
||||
end;
|
||||
end;
|
||||
|
||||
if not Found then
|
||||
Log('Îøèáêà: ffmpeg.exe íå íàéäåí â ðàñïàêîâàííûõ ôàéëàõ');
|
||||
|
||||
// Óäàëÿåì âðåìåííóþ ïàïêó
|
||||
DelTree(TempPath, True, True, True);
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: ffmpeg.zip íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_irina') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx')) then
|
||||
begin
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx'), VoicesPath + '\ru_RU-irina-medium.onnx', False);
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx.json'), VoicesPath + '\ru_RU-irina-medium.onnx.json', False);
|
||||
Log('Ãîëîñ Èðèíà óñòàíîâëåí');
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: Ãîëîñ Èðèíà íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_denis') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx')) then
|
||||
begin
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx'), VoicesPath + '\ru_RU-denis-medium.onnx', False);
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx.json'), VoicesPath + '\ru_RU-denis-medium.onnx.json', False);
|
||||
Log('Ãîëîñ Äåíèñ óñòàíîâëåí');
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: Ãîëîñ Äåíèñ íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
|
||||
if WizardIsTaskSelected('install_ru_dmitri') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx')) then
|
||||
begin
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx'), VoicesPath + '\ru_RU-dmitri-medium.onnx', False);
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx.json'), VoicesPath + '\ru_RU-dmitri-medium.onnx.json', False);
|
||||
Log('Ãîëîñ Äìèòðèé óñòàíîâëåí');
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: Ãîëîñ Äìèòðèé íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
|
||||
|
||||
|
||||
if WizardIsTaskSelected('install_ru_ruslan') then
|
||||
begin
|
||||
if FileExists(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx')) then
|
||||
begin
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx'), VoicesPath + '\ru_RU-ruslan-medium.onnx', False);
|
||||
FileCopy(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx.json'), VoicesPath + '\ru_RU-ruslan-medium.onnx.json', False);
|
||||
Log('Ãîëîñ Ðóñëàí óñòàíîâëåí');
|
||||
end
|
||||
else
|
||||
Log('Îøèáêà: Ãîëîñ Ðóñëàí íå íàéäåí âî âðåìåííîé ïàïêå');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
begin
|
||||
if CurStep = ssPostInstall then
|
||||
begin
|
||||
InstallFiles;
|
||||
end;
|
||||
end;
|
||||
+37
-18
@@ -72,6 +72,7 @@ object TTW_Bot: TTTW_Bot
|
||||
inherited btnOpenStream: TButton
|
||||
Images = ImageList1
|
||||
ImageIndex = 17
|
||||
OnClick = frSettings1btnOpenStreamClick
|
||||
end
|
||||
inherited btnGetTokenStreamer: TButton
|
||||
Images = ImageList1
|
||||
@@ -89,25 +90,19 @@ object TTW_Bot: TTTW_Bot
|
||||
inherited btnDAGetCode: TButton
|
||||
Images = ImageList1
|
||||
ImageIndex = 10
|
||||
TabOrder = 34
|
||||
TabOrder = 33
|
||||
end
|
||||
inherited Label63: TLabel
|
||||
TabOrder = 28
|
||||
end
|
||||
inherited edtDAClientSecret: TEdit
|
||||
TabOrder = 29
|
||||
end
|
||||
inherited edtDAClientID: TEdit
|
||||
TabOrder = 31
|
||||
end
|
||||
inherited Label64: TLabel
|
||||
TabOrder = 30
|
||||
end
|
||||
inherited Label65: TLabel
|
||||
TabOrder = 32
|
||||
end
|
||||
inherited edtDARedirectURL: TEdit
|
||||
TabOrder = 37
|
||||
end
|
||||
inherited edtDACode: TEdit
|
||||
TabOrder = 35
|
||||
TabOrder = 34
|
||||
end
|
||||
inherited Label66: TLabel
|
||||
TabOrder = 36
|
||||
@@ -115,18 +110,19 @@ object TTW_Bot: TTTW_Bot
|
||||
inherited btnDAStart: TButton
|
||||
Images = ImageList1
|
||||
ImageIndex = 18
|
||||
TabOrder = 39
|
||||
TabOrder = 40
|
||||
OnClick = frSettings1btnDAStartClick
|
||||
end
|
||||
inherited btnGetDADef: TButton
|
||||
Images = ImageList1
|
||||
TabOrder = 41
|
||||
TabOrder = 38
|
||||
end
|
||||
end
|
||||
inherited btnOpenRomaning: TButton
|
||||
Images = ImageList1
|
||||
ImageIndex = 14
|
||||
Size.Width = 201.000000000000000000
|
||||
OnClick = frSettings1btnOpenRomaningClick
|
||||
end
|
||||
inherited btnImportSettings: TButton
|
||||
Images = ImageList1
|
||||
@@ -176,10 +172,33 @@ object TTW_Bot: TTTW_Bot
|
||||
ImageIndex = 10
|
||||
Size.Width = 145.000000000000000000
|
||||
end
|
||||
inherited GroupBox1: TGroupBox
|
||||
inherited rbGC: TRadioButton
|
||||
TabOrder = 41
|
||||
end
|
||||
inherited RBCustom: TRadioButton
|
||||
TabOrder = 40
|
||||
end
|
||||
inherited rbDS: TRadioButton
|
||||
TabOrder = 39
|
||||
end
|
||||
inherited rbCG: TRadioButton
|
||||
TabOrder = 38
|
||||
end
|
||||
end
|
||||
inherited GroupBox2: TGroupBox
|
||||
Position.X = 462.000000000000000000
|
||||
inherited Label3: TLabel
|
||||
TabOrder = 38
|
||||
end
|
||||
inherited Label4: TLabel
|
||||
TabOrder = 39
|
||||
end
|
||||
inherited edtKandiKey: TEdit
|
||||
TabOrder = 40
|
||||
end
|
||||
inherited edtKandiSecret: TEdit
|
||||
TabOrder = 41
|
||||
TabOrder = 42
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -593,8 +612,8 @@ object TTW_Bot: TTTW_Bot
|
||||
inherited sgWebChats: TStringGrid
|
||||
Size.Width = 968.000000000000000000
|
||||
Size.Height = 282.000000000000000000
|
||||
Viewport.Width = 964.000000000000000000
|
||||
Viewport.Height = 257.000000000000000000
|
||||
Viewport.Width = 968.000000000000000000
|
||||
Viewport.Height = 282.000000000000000000
|
||||
inherited StringColumn2: TStringColumn
|
||||
Size.Width = 200.000000000000000000
|
||||
end
|
||||
@@ -615,7 +634,7 @@ object TTW_Bot: TTTW_Bot
|
||||
OnClick = frOBS1btnDeleteeChatClick
|
||||
end
|
||||
inherited Label1: TLabel
|
||||
TabOrder = 19
|
||||
TabOrder = 20
|
||||
end
|
||||
inherited btnCreateOBSNotify: TButton
|
||||
Images = ImageList1
|
||||
@@ -626,7 +645,7 @@ object TTW_Bot: TTTW_Bot
|
||||
Images = ImageList1
|
||||
ImageIndex = 5
|
||||
Position.X = 264.000000000000000000
|
||||
TabOrder = 18
|
||||
TabOrder = 19
|
||||
end
|
||||
inherited btnCreateOBSGame: TButton
|
||||
Images = ImageList1
|
||||
|
||||
+21
-3
@@ -91,6 +91,8 @@ type
|
||||
procedure frAutoActions1btnCounterAddClick(Sender: TObject);
|
||||
procedure frAutoActions1btnCounterEditClick(Sender: TObject);
|
||||
procedure frAutoActions1btnCounterDeleteClick(Sender: TObject);
|
||||
procedure frSettings1btnOpenRomaningClick(Sender: TObject);
|
||||
procedure frSettings1btnOpenStreamClick(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
procedure toSpeech(aText: string);
|
||||
@@ -167,13 +169,13 @@ end;
|
||||
procedure TTTW_Bot.toSpeech(aText: string);
|
||||
var
|
||||
tts: ttts;
|
||||
s, s1: string;
|
||||
s: string;
|
||||
begin
|
||||
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
|
||||
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
|
||||
|
||||
if frTTS1.cbVoices.ItemIndex = -1 then
|
||||
exit;
|
||||
tts := ttts.Create(s, s1);
|
||||
tts := ttts.Create(s, myConst.VoicesPath);
|
||||
try
|
||||
tts.SetModel(frTTS1.cbVoices.text);
|
||||
tts.TextToSpeech(aText, true);
|
||||
@@ -496,6 +498,10 @@ begin
|
||||
CreateDir(myConst.AppDataPath + 'ytSongs');
|
||||
myConst.ytSongsPath := myConst.AppDataPath + 'ytSongs\';
|
||||
|
||||
if not DirectoryExists(myConst.AppDataPath + 'Voices') then
|
||||
CreateDir(myConst.AppDataPath + 'Voices');
|
||||
myConst.VoicesPath := myConst.AppDataPath + 'Voices\';
|
||||
|
||||
myConst.SilentPlay := myConst.GeneralPath + 'SilentPlayer.exe';
|
||||
myConst.ytPlay := myConst.GeneralPath + 'Player.exe';
|
||||
myConst.cfg1 := myConst.GeneralPath + 'botapp.cfg';
|
||||
@@ -884,6 +890,18 @@ begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TTTW_Bot.frSettings1btnOpenRomaningClick(Sender: TObject);
|
||||
begin
|
||||
frSettings1.btnOpenRomaningClick(Sender);
|
||||
|
||||
end;
|
||||
|
||||
procedure TTTW_Bot.frSettings1btnOpenStreamClick(Sender: TObject);
|
||||
begin
|
||||
frSettings1.btnOpenStreamClick(Sender);
|
||||
|
||||
end;
|
||||
|
||||
procedure TTTW_Bot.frTTS1btnSendClick(Sender: TObject);
|
||||
begin
|
||||
frTTS1.btnSendClick(Sender);
|
||||
|
||||
+14
-14
@@ -138,7 +138,7 @@ object frSettings: TfrSettings
|
||||
Size.Width = 128.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 31
|
||||
TabOrder = 29
|
||||
Text = #1054#1090#1082#1088#1099#1090#1100' '#1089#1090#1088#1080#1084
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnOpenStreamClick
|
||||
@@ -149,7 +149,7 @@ object frSettings: TfrSettings
|
||||
Size.Width = 128.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 32
|
||||
TabOrder = 31
|
||||
Text = #1055#1086#1083#1091#1095#1080#1090#1100' Token'
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnGetTokenStreamerClick
|
||||
@@ -197,7 +197,7 @@ object frSettings: TfrSettings
|
||||
object btnDAGetCode: TButton
|
||||
Position.X = 200.000000000000000000
|
||||
Position.Y = 216.000000000000000000
|
||||
TabOrder = 40
|
||||
TabOrder = 34
|
||||
Text = #1055#1086#1083#1091#1095#1080#1090#1100
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnDAGetCodeClick
|
||||
@@ -207,11 +207,11 @@ object frSettings: TfrSettings
|
||||
Position.Y = 24.000000000000000000
|
||||
TextSettings.Trimming = None
|
||||
Text = 'Client ID'
|
||||
TabOrder = 33
|
||||
TabOrder = 29
|
||||
end
|
||||
object edtDAClientID: TEdit
|
||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||
TabOrder = 35
|
||||
TabOrder = 31
|
||||
Password = True
|
||||
Position.X = 8.000000000000000000
|
||||
Position.Y = 49.000000000000000000
|
||||
@@ -225,11 +225,11 @@ object frSettings: TfrSettings
|
||||
Position.Y = 79.000000000000000000
|
||||
TextSettings.Trimming = None
|
||||
Text = 'Client Secret'
|
||||
TabOrder = 34
|
||||
TabOrder = 30
|
||||
end
|
||||
object edtDAClientSecret: TEdit
|
||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||
TabOrder = 36
|
||||
TabOrder = 32
|
||||
Password = True
|
||||
Position.X = 8.000000000000000000
|
||||
Position.Y = 104.000000000000000000
|
||||
@@ -243,11 +243,11 @@ object frSettings: TfrSettings
|
||||
Position.Y = 134.000000000000000000
|
||||
TextSettings.Trimming = None
|
||||
Text = 'Redirect URL'
|
||||
TabOrder = 38
|
||||
TabOrder = 33
|
||||
end
|
||||
object edtDARedirectURL: TEdit
|
||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||
TabOrder = 39
|
||||
TabOrder = 35
|
||||
Password = True
|
||||
Position.X = 8.000000000000000000
|
||||
Position.Y = 159.000000000000000000
|
||||
@@ -258,7 +258,7 @@ object frSettings: TfrSettings
|
||||
end
|
||||
object edtDACode: TEdit
|
||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||
TabOrder = 41
|
||||
TabOrder = 36
|
||||
Password = True
|
||||
Position.X = 8.000000000000000000
|
||||
Position.Y = 214.000000000000000000
|
||||
@@ -271,7 +271,7 @@ object frSettings: TfrSettings
|
||||
Position.Y = 189.000000000000000000
|
||||
TextSettings.Trimming = None
|
||||
Text = 'Code'
|
||||
TabOrder = 42
|
||||
TabOrder = 38
|
||||
end
|
||||
object btnDAStart: TButton
|
||||
Position.X = 8.000000000000000000
|
||||
@@ -279,7 +279,7 @@ object frSettings: TfrSettings
|
||||
Size.Width = 121.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 43
|
||||
TabOrder = 40
|
||||
Text = #1055#1086#1076#1082#1083#1102#1095#1080#1090#1100#1089#1103
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnDAStartClick
|
||||
@@ -291,7 +291,7 @@ object frSettings: TfrSettings
|
||||
Size.Width = 209.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 46
|
||||
TabOrder = 44
|
||||
Text = #1055#1086#1083#1091#1095#1080#1090#1100' '#1076#1072#1085#1085#1099#1077' Donation Alerts'
|
||||
TextSettings.Trimming = None
|
||||
Visible = False
|
||||
@@ -345,7 +345,7 @@ object frSettings: TfrSettings
|
||||
Size.Width = 193.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 7
|
||||
TabOrder = 6
|
||||
Text = #1047#1072#1087#1091#1089#1090#1080#1090#1100' '#1084#1072#1089#1090#1077#1088' '#1085#1072#1089#1090#1088#1086#1081#1082#1080
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnMasterClick
|
||||
|
||||
+37
-35
@@ -4,11 +4,12 @@ interface
|
||||
|
||||
uses
|
||||
System.SysUtils, System.Types, System.UITypes, System.Classes,
|
||||
System.Variants, uQ,
|
||||
System.Variants, uQ, IdHTTP, IdComponent, System.Zip,
|
||||
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
|
||||
winapi.ShellAPI, System.IOUtils, uDataBase,
|
||||
FMX.Controls.Presentation, FMX.Edit, uTWAuth, uRecords, uAPIDA, uShowText,
|
||||
System.json, uWSDA, fLog;
|
||||
System.json, uWSDA, fLog, IdBaseComponent, IdIOHandler, IdIOHandlerSocket,
|
||||
IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
|
||||
|
||||
type
|
||||
TfrSettings = class(TFrame)
|
||||
@@ -83,18 +84,18 @@ uses uGeneral;
|
||||
procedure TfrSettings.btnDAGetCodeClick(Sender: TObject);
|
||||
var
|
||||
twa: TTTWAuth;
|
||||
Url: string;
|
||||
URL: string;
|
||||
begin
|
||||
if (edtDAClientSecret.text = '') or (edtDAClientID.text = '') or
|
||||
(edtDARedirectURL.text = '') then
|
||||
exit;
|
||||
|
||||
Url := 'https://www.donationalerts.com/oauth/authorize?client_id=' +
|
||||
URL := 'https://www.donationalerts.com/oauth/authorize?client_id=' +
|
||||
edtDAClientID.text +
|
||||
'&redirect_uri=http://localhost/da&response_type=code&scope=oauth-user-show+oauth-donation-subscribe';
|
||||
twa := TTTWAuth.Create;
|
||||
twa.OnToken := OnTokenDA;
|
||||
twa.StartServer(Url);
|
||||
twa.StartServer(URL);
|
||||
// ttw_Auth áóäåò îñâîáîæäåí àâòîìàòè÷åñêè ïîñëå ïîëó÷åíèÿ òîêåíà (ñì. uTWAuth)
|
||||
end;
|
||||
|
||||
@@ -107,7 +108,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrSettings.btnDAStartClick(Sender: TObject);
|
||||
var
|
||||
UserInfo: TJSONObject;
|
||||
@@ -124,17 +124,14 @@ begin
|
||||
if FAPIClient.Token = '' then
|
||||
begin
|
||||
try
|
||||
FAPIClient.Token := FAPIClient.GetAccessToken(
|
||||
edtDAClientID.text,
|
||||
edtDAClientSecret.text,
|
||||
edtDARedirectURL.text,
|
||||
edtDACode.text
|
||||
);
|
||||
FAPIClient.Token := FAPIClient.GetAccessToken(edtDAClientID.text,
|
||||
edtDAClientSecret.text, edtDARedirectURL.text, edtDACode.text);
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Îøèáêà ïîëó÷åíèÿ òîêåíà: ' + E.Message,2);
|
||||
Exit;
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
|
||||
'Îøèáêà ïîëó÷åíèÿ òîêåíà: ' + E.Message, 2);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -143,31 +140,34 @@ begin
|
||||
try
|
||||
UserInfo := FAPIClient.GetUserInfo;
|
||||
Data := UserInfo.GetValue<TJSONObject>('data');
|
||||
FWSClient.Wsstoken := Data.GetValue<string>('socket_connection_token');
|
||||
FWSClient.Wsstoken := Data.GetValue<string>
|
||||
('socket_connection_token');
|
||||
FWSClient.WSID := Data.GetValue<string>('id');
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
TTW_Bot.toLog( 'fSettings','btnDAStartClick', 'Îøèáêà ïîëó÷åíèÿ UserInfo: ' + E.Message,2);
|
||||
Exit;
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
|
||||
'Îøèáêà ïîëó÷åíèÿ UserInfo: ' + E.Message, 2);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
try
|
||||
FWSClient.Connect('wss://centrifugo.donationalerts.com/connection/websocket');
|
||||
FWSClient.Send(Format(
|
||||
'{"params":{"token":"%s"},"id":1}',
|
||||
[FWSClient.Wsstoken]
|
||||
));
|
||||
FWSClient.Connect
|
||||
('wss://centrifugo.donationalerts.com/connection/websocket');
|
||||
FWSClient.Send(Format('{"params":{"token":"%s"},"id":1}',
|
||||
[FWSClient.Wsstoken]));
|
||||
except
|
||||
on E: Exception do
|
||||
TTW_Bot.toLog( 'fSettings','btnDAStartClick', 'Îøèáêà ïîäêëþ÷åíèÿ ê WebSocket: ' + E.Message,2);
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
|
||||
'Îøèáêà ïîäêëþ÷åíèÿ ê WebSocket: ' + E.Message, 2);
|
||||
end;
|
||||
|
||||
except
|
||||
on E: Exception do
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Íåèçâåñòíàÿ îøèáêà: ' + E.Message,2);
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Íåèçâåñòíàÿ îøèáêà: ' +
|
||||
E.Message, 2);
|
||||
end;
|
||||
finally
|
||||
UserInfo.Free;
|
||||
@@ -176,14 +176,15 @@ begin
|
||||
else
|
||||
begin
|
||||
try
|
||||
edtDACode.Text:='';
|
||||
edtDACode.text := '';
|
||||
if Assigned(FWSClient) then
|
||||
begin
|
||||
try
|
||||
FWSClient.Disconnect;
|
||||
except
|
||||
on E: Exception do
|
||||
TTW_Bot.toLog( 'fSettings', 'btnDAStartClick', 'Îøèáêà ïðè îòêëþ÷åíèè WS: ' + E.Message,2);
|
||||
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
|
||||
'Îøèáêà ïðè îòêëþ÷åíèè WS: ' + E.Message, 2);
|
||||
end;
|
||||
FreeAndNil(FWSClient);
|
||||
end;
|
||||
@@ -204,7 +205,7 @@ begin
|
||||
if SaveDialog1.Execute then
|
||||
begin
|
||||
DestinationFile := SaveDialog1.FileName;
|
||||
TFile.Copy(myConst.DBPath, DestinationFile, True);
|
||||
TFile.Copy(myConst.DBPath, DestinationFile, true);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -227,10 +228,10 @@ begin
|
||||
s := 'https://id.twitch.tv/oauth2/authorize?client_id=' + edtBotClientID.text
|
||||
+ '&redirect_uri=http://localhost&response_type=token&' + 'scope=' + sope;
|
||||
ttw_Auth.StartServer('');
|
||||
forbot := True;
|
||||
forbot := true;
|
||||
fShowText.Memo1.Lines.text := s;
|
||||
fShowText.Show;
|
||||
fShowText.Memo1.WordWrap := True;
|
||||
fShowText.Memo1.WordWrap := true;
|
||||
|
||||
end;
|
||||
|
||||
@@ -261,7 +262,7 @@ begin
|
||||
SourceFile := OpenDialog1.FileName;
|
||||
DestinationDir := myConst.DBPath;
|
||||
DestinationFile := myConst.DBPath;
|
||||
TFile.Copy(SourceFile, DestinationFile, True);
|
||||
TFile.Copy(SourceFile, DestinationFile, true);
|
||||
DB := TSettingsDatabase.Create(myConst.DBPath);
|
||||
end;
|
||||
end;
|
||||
@@ -315,11 +316,12 @@ end;
|
||||
|
||||
destructor TfrSettings.Destroy;
|
||||
begin
|
||||
if Assigned(FWSClient) then
|
||||
if Assigned(FWSClient) then
|
||||
begin
|
||||
try
|
||||
FWSClient.Disconnect; // åñëè åñòü ìåòîä îòêëþ÷åíèÿ
|
||||
except end;
|
||||
except
|
||||
end;
|
||||
FreeAndNil(FWSClient);
|
||||
end;
|
||||
FreeAndNil(FAPIClient);
|
||||
@@ -339,7 +341,7 @@ end;
|
||||
|
||||
procedure TfrSettings.init;
|
||||
begin
|
||||
if not Assigned(FAPIClient) then
|
||||
if not Assigned(FAPIClient) then
|
||||
FAPIClient := TAPIClient.Create;
|
||||
if not Assigned(FWSClient) then
|
||||
begin
|
||||
@@ -369,14 +371,14 @@ end;
|
||||
procedure TfrSettings.HandleWSDonate(aNick, aMessage, aSum: string);
|
||||
begin
|
||||
// fDonats.OnDADonate(aNick, aMessage, aSum);
|
||||
TTW_Bot.frOBS1.toEventWebServer(aNick,aSum,aMessage);
|
||||
TTW_Bot.frOBS1.toEventWebServer(aNick, aSum, aMessage);
|
||||
TTW_Bot.frEvents1.OnDonate(aNick, aMessage, aSum);
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrSettings.HandleWSStatus(AStatusText: string; AStatusCode: integer);
|
||||
begin
|
||||
TTW_Bot.tolog('fSettings','HandleWSStatus',AStatusText,3);
|
||||
TTW_Bot.toLog('fSettings', 'HandleWSStatus', AStatusText, 3);
|
||||
TTW_Bot.Label8.text := AStatusText;
|
||||
case AStatusCode of
|
||||
0:
|
||||
|
||||
@@ -70,4 +70,15 @@ object frTTS: TfrTTS
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnSendClick
|
||||
end
|
||||
object btnGetVoices: TButton
|
||||
Position.X = 177.000000000000000000
|
||||
Position.Y = 63.000000000000000000
|
||||
Size.Width = 128.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 8
|
||||
Text = #1055#1086#1083#1091#1095#1080#1090#1100' '#1075#1086#1083#1086#1089#1072
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnGetVoicesClick
|
||||
end
|
||||
end
|
||||
|
||||
+14
-6
@@ -18,10 +18,12 @@ type
|
||||
Label3: TLabel;
|
||||
btnSend: TButton;
|
||||
cbOutput: TComboBox;
|
||||
btnGetVoices: TButton;
|
||||
procedure btnUpdateVoicesClick(Sender: TObject);
|
||||
procedure btnSendClick(Sender: TObject);
|
||||
procedure cbVoicesChange(Sender: TObject);
|
||||
procedure cbOutputChange(Sender: TObject);
|
||||
procedure btnGetVoicesClick(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
tts: TTTS;
|
||||
@@ -34,19 +36,26 @@ implementation
|
||||
{$R *.fmx}
|
||||
uses ugeneral;
|
||||
|
||||
procedure TfrTTS.btnGetVoicesClick(Sender: TObject);
|
||||
begin
|
||||
ShellExecute(0, 'open', pwidechar(ExtractFilePath(myConst.VoicesPath)),
|
||||
nil, nil, 1);
|
||||
ShellExecute(0, 'open', pwidechar('https://huggingface.co/rhasspy/piper-voices/tree/v1.0.0'),
|
||||
nil, nil, 1);
|
||||
end;
|
||||
|
||||
procedure TfrTTS.btnSendClick(Sender: TObject);
|
||||
var
|
||||
s, s1: string;
|
||||
s: string;
|
||||
|
||||
begin
|
||||
case cbOutput.ItemIndex of
|
||||
0:
|
||||
begin // this
|
||||
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
|
||||
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
|
||||
if cbVoices.ItemIndex = -1 then
|
||||
exit;
|
||||
tts := TTTS.Create(s, s1);
|
||||
tts := TTTS.Create(s, myConst.VoicesPath);
|
||||
try
|
||||
tts.SetModel(cbVoices.Text);
|
||||
tts.TextToSpeech(edtText.Text, true);
|
||||
@@ -67,13 +76,12 @@ end;
|
||||
|
||||
procedure TfrTTS.btnUpdateVoicesClick(Sender: TObject);
|
||||
var
|
||||
s, s1: string;
|
||||
s: string;
|
||||
List: TStringList;
|
||||
begin
|
||||
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
|
||||
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
|
||||
|
||||
tts := TTTS.Create(s, s1);
|
||||
tts := TTTS.Create(s, myConst.VoicesPath);
|
||||
List := TStringList.Create;
|
||||
try
|
||||
cbVoices.Items.Clear;
|
||||
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
{\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
|
||||
{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}{\flomajor\f31500\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbmajor\f31501\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset204\fprq2{\*\panose 02040503050406030204}Cambria;}
|
||||
{\fbimajor\f31503\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbminor\f31505\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
||||
{\fbiminor\f31507\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f363\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\f361\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\f364\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f365\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f366\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f367\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f368\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f369\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f373\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f371\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
|
||||
{\f374\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f375\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f376\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f377\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
|
||||
{\f378\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f379\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f373\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f371\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
|
||||
{\f374\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f375\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f376\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f377\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
|
||||
{\f378\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f379\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\flomajor\f31510\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\fdbmajor\f31520\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31530\fbidi \froman\fcharset0\fprq2 Cambria;}
|
||||
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
|
||||
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31540\fbidi \froman\fcharset0\fprq2 Times New Roman;}
|
||||
{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31550\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31570\fbidi \fswiss\fcharset0\fprq2 Calibri;}
|
||||
{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
|
||||
{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
||||
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31580\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
|
||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
|
||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \f31506\fs22\lang1049\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
||||
\f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
|
||||
{\*\rsidtbl \rsid7365210\rsid7484679\rsid9062840\rsid10493932\rsid12407344\rsid13573742}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author PTyTb}{\operator PTyTb}
|
||||
{\creatim\yr2025\mo4\dy23\hr14\min49}{\revtim\yr2025\mo4\dy23\hr14\min56}{\version5}{\edmins6}{\nofpages2}{\nofwords171}{\nofchars976}{\nofcharsws1145}{\vern49247}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
|
||||
\paperw11906\paperh16838\margl1701\margr850\margt1134\margb1134\gutter0\ltrsect
|
||||
\deftab708\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1
|
||||
\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701\dgvorigin1134\dghshow1\dgvshow1
|
||||
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
|
||||
\asianbrkrule\rsidroot10493932\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
|
||||
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
|
||||
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
|
||||
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
|
||||
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7365210 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
||||
\f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 \'cb\'c8\'d6\'c5\'cd\'c7\'c8\'ce\'cd\'cd\'ce\'c5 \'d1\'ce\'c3\'cb\'c0\'d8\'c5\'cd\'c8\'c5}{\rtlch\fcs1 \af1 \ltrch\fcs0
|
||||
\b\f1\insrsid9062840\charrsid7484679
|
||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9062840 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'e4\'eb\'ff }{\rtlch\fcs1 \af1 \ltrch\fcs0
|
||||
\b\f1\insrsid7365210\charrsid7484679 TTW Bot}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid9062840\charrsid7484679
|
||||
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7365210 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid9062840\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 1. \'cf\'f0\'e0\'e2\'e0 \'ed\'e0 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par \'cf\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2\'f1\'ff \'ed\'e5\'e8\'f1\'ea\'eb\'fe\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee\'e5, \'ed\'e5\'ef\'e5\'f0\'e5\'e4\'e0\'e2\'e0\'e5\'ec\'ee\'e5 \'ef\'f0\'e0\'e2\'ee
|
||||
\'ed\'e0 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'ed\'ee\'e3\'ee \'ee\'e1\'e5\'f1\'ef\'e5\'f7\'e5\'ed\'e8\'ff "TTW Bot" \'e8\'f1\'ea\'eb\'fe\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee \'e2 \'f1\'ee\'ee\'f2\'e2\'e5\'f2
|
||||
\'f1\'f2\'e2\'e8\'e8 \'f1:
|
||||
\par - \'cf\'f0\'e0\'e2\'e8\'eb\'e0\'ec\'e8 \'ef\'eb\'e0\'f2\'f4\'ee\'f0\'ec\'fb Twitch
|
||||
\par - \'c4\'e5\'e9\'f1\'f2\'e2\'f3\'fe\'f9\'e8\'ec \'e7\'e0\'ea\'ee\'ed\'ee\'e4\'e0\'f2\'e5\'eb\'fc\'f1\'f2\'e2\'ee\'ec \'d0\'d4
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 2. \'ce\'f2\'ea\'e0\'e7 \'ee\'f2 \'e3\'e0\'f0\'e0\'ed\'f2\'e8\'e9}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par \'cf\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'ed\'ee\'e5 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ee\'e1\'e5\'f1\'ef\'e5\'f7\'e5\'ed\'e8\'e5 \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2\'f1\'ff "\'ca\'c0\'ca \'c5\'d1\'d2\'dc}{
|
||||
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 ". \'c0\'e2\'f2\'ee\'f0 \'ed\'e5 \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2 \'e3\'e0\'f0\'e0\'ed\'f2\'e8\'e9:
|
||||
\par \'d0\'e0\'e1\'ee\'f2\'ee\'f1\'ef\'ee\'f1\'ee\'e1\'ed\'ee\'f1\'f2\'e8 \'e8 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e8\'ff \'ee\'e6\'e8\'e4\'e0\'ed\'e8\'e9
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'ce\'f2\'f1\'f3\'f2\'f1\'f2\'e2\'e8\'ff \'ee\'f8\'e8\'e1\'ee\'ea \'e8 \'e2\'f0\'e5\'e4\'ee\'ed\'ee\'f1\'ed\'ee\'e3\'ee
|
||||
\'ea\'ee\'e4\'e0
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d1\'ee\'e2\'ec\'e5\'f1\'f2\'e8\'ec\'ee\'f1\'f2\'e8 \'f1 \'eb\'fe\'e1\'fb\'ec \'ee\'e1\'ee\'f0\'f3\'e4\'ee\'e2\'e0\'ed
|
||||
\'e8\'e5\'ec/\'cf\'ce
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 3. \'ce\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5 \'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'f1\'f2\'e8}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c0\'e2\'f2}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ee\'f0 \'ed\'e5 \'ed\'e5\'f1\'e5\'f2 \'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'f1\'f2\'e8 \'e7\'e0:}{
|
||||
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cf\'f0\'ff\'ec\'ee\'e9/\'ea\'ee\'f1\'e2\'e5\'ed\'ed\'fb\'e9 \'f3\'f9\'e5\'f0\'e1
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cf\'ee\'f2\'e5\'f0\'fe \'e4\'e0\'ed\'ed\'fb\'f5 \'e8\'eb\'e8 \'e4\'ee\'f5\'ee\'e4\'e0
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *\'cd\'e0\'f0\'f3\'f8\'e5\'ed\'e8\'ff \'ef\'f0\'e0\'e2\'e8\'eb Twitch}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 4. \'ce\'e1\'ff\'e7\'e0\'ed\'ed\'ee\'f1\'f2\'e8 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c7\'e0\'ef\'f0\'e5\'f9\'e0\'e5\'f2\'f1\'ff:
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d0\'e5\'e2\'e5\'f0\'f1\'e8\'e2\'ed\'e0\'ff \'e8\'ed\'e6\'e5\'ed\'e5\'f0\'e8\'ff
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'ca\'ee\'ec\'ec\'e5\'f0\'f7\'e5\'f1\'ea\'ee\'e5 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d0\'e0\'f1\'ef\'f0\'ee\'f1\'f2\'f0\'e0\'ed\'e5\'ed\'e8\'e5 \'ec\'ee\'e4\'e8\'f4\'e8\'f6\'e8\'f0\'ee\'e2\'e0\'ed\'ed\'fb
|
||||
\'f5 \'e2\'e5\'f0\'f1\'e8\'e9
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 5. \'c8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e5 \'f3\'f1\'eb\'ee\'e2\'e8\'e9
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c0\'e2\'f2\'ee\'f0 \'e2\'ef\'f0\'e0\'e2\'e5 \'ec\'e5\'ed\'ff\'f2\'fc \'f1\'ee\'e3\'eb\'e0\'f8\'e5\'ed\'e8\'e5 \'e1\'e5\'e7 \'ef\'f0\'e5\'e4\'f3\'ef\'f0\'e5\'e6\'e4\'e5\'ed\'e8\'ff. \'c0}{
|
||||
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ea\'f2\'f3\'e0\'eb\'fc\'ed\'e0\'ff \'e2\'e5\'f0\'f1\'e8\'ff \'e4\'ee\'f1\'f2\'f3\'ef\'ed\'e0:}{\rtlch\fcs1 \af1 \ltrch\fcs0
|
||||
\f1\lang1033\langfe1033\langnp1033\insrsid7365210\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 6. \'cf\'f0\'e5\'ea\'f0\'e0\'f9\'e5\'ed\'e8\'e5 \'eb\'e8\'f6\'e5\'ed\'e7\'e8\'e8}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c4\'ee\'f1\'f2\'f3\'ef \'ea \'cf\'ce}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ec\'ee\'e6\'e5\'f2 \'e1\'fb\'f2\'fc \'ef\'f0\'e5\'ea\'f0\'e0\'f9\'e5\'ed \'ef\'f0
|
||||
\'e8:}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid7365210\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cd\'e0\'f0\'f3\'f8\'e5\'ed\'e8\'e8 \'f3\'f1\'eb\'ee\'e2\'e8\'e9 \'f1\'ee\'e3\'eb\'e0\'f8\'e5\'ed\'e8\'ff
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *\'d2\'e5\'f5\'ed\'e8\'f7\'e5\'f1\'ea\'e8\'f5 \'f0\'e8\'f1\'ea\'e0\'f5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'c2\'cd\'c8\'cc\'c0\'cd\'c8\'c5: }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d3\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0\'ff \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'f3,
|
||||
\'e2\'fb \'ef\'ee\'e4\'f2\'e2\'e5\'f0\'e6\'e4\'e0\'e5\'f2\'e5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 ,}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par \'f7\'f2\'ee \'ef\'f0\'ee\'f7\'e8\'f2\'e0\'eb\'e8 \'e8 \'ef\'ee\'eb\'ed\'ee\'f1\'f2\'fc\'fe \'f1\'ee\'e3\'eb\'e0\'f1\'ed\'fb \'f1 \'f3\'f1\'eb\'ee\'e2\'e8\'ff\'ec\'e8!
|
||||
\par
|
||||
\par \'c2\'e5\'f0\'f1\'e8\'ff 1.0 \'ee\'f2 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 23}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 .0}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 4}{
|
||||
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 .202}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
|
||||
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid13573742\charrsid7484679
|
||||
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
|
||||
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
|
||||
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
|
||||
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
|
||||
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
|
||||
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
|
||||
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
|
||||
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
|
||||
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100a55e7d2dc7060000d71b0000160000007468656d652f7468656d652f
|
||||
7468656d65312e786d6cec59cf6e1b4518bf23f10ea3bdb7b113278da33a55ecd80db469a3d82dea71bc1eef4e33bbb39a1927f5ad4a8f482044411ca8045c38
|
||||
2020528bb8b4efe03e43a0088ad457e09b99ddf54ebca1491b4105cd21de9dfd7dffffcc37bb172fdd8918da2542521e37bceaf98a8748ecf3018d838677a3d7
|
||||
39b7ec21a9703cc08cc7a4e18d89f42eadbefbce45bca242121104f4b15cc10d2f542a59999b933e2c63799e27248667432e22ace05604730381f7806fc4e6e6
|
||||
2b95a5b908d3d843318e80ede49bc94f93c79303747d38a43ef15633fe6d06426225f582cf4457732719d1d74ff72707932793479383a777e1fa09fc7e6c6807
|
||||
3b554d21c7b2c504dac5ace181e801dfeb913bca430c4b050f1a5ec5fc7973ab17e7f04a4ac4d431b405ba8ef94be95282c1cebc9129827e2eb4daa9d52face7
|
||||
fc0d80a9595cbbdd6eb5ab393f03c0be0f965b5d8a3c6b9de56a33e35900d9cb59deadca62a5e6e20bfc176674ae379bcdc57aaa8b656a40f6b236835fae2cd5
|
||||
d6e61dbc0159fce20cbed65c6bb5961cbc0159fcd20cbe73a1be5473f10614321aefcca075403b9d947b0e1972b6510a5f06f87225854f51900d79b66911431e
|
||||
ab93e65e846f73d101024dc8b0a23152e3840cb10f89dec2515f50ac05e215820b4fec922f6796b46c247d4113d5f0de4f3014cd94df8bc7dfbf78fc101dee3f
|
||||
3adcfff9f0debdc3fd1f2d23876a03c74191eaf9b79ffcf9e02efae3e157cfef7f568e9745fcaf3f7cf8cb934fcb81504e53759e7d7ef0dba383675f7cf4fb77
|
||||
f74be06b02f78bf01e8d8844d7c81edae6111866bce26a4efae27414bd10d322c55a1c481c632da5847f5b850efada18b3343a8e1e4de27af0a680765206bc3c
|
||||
baed28dc0dc548d112c957c2c8016e72ce9a5c947ae18a965570736f1407e5c2c5a888dbc678b74c760bc74e7cdba304fa6a96968ee1ad90386a6e311c2b1c90
|
||||
9828a49ff11d424aacbb45a9e3d74dea0b2ef950a15b1435312d75498ff69d6c9a126dd008e2322eb319e2edf866f3266a725666f53ad975915015989528df23
|
||||
cc71e3653c52382a63d9c3112b3afc2a56619992ddb1f08bb8b65410e980308eda03226519cd7501f616827e0543072b0dfb261b472e5228ba53c6f32ae6bc88
|
||||
5ce73bad10474919b64be3b0887d4fee408a62b4c555197c93bb15a2ef210e383e36dc372971c2fdf26e7083068e4ad304d14f46a22496970977f2b73b66434c
|
||||
4cab8126eff4ea88c67fd7b81985ce6d259c5de38656f9eccb07257abfa92d7b0d76afb29ad938d2a88fc31d6dcf2d2e06f4cdefceeb78146f112888d92dea6d
|
||||
737edb9cbdff7c733eae9ecfbe254fbb3034683d8bd8c1db8ce1d189a7f02165acabc68c5c95661097b0170d3ab0a8f998432ac94f69490897bab241a0830b04
|
||||
36344870f501556137c4090cf1554f330964ca3a9028e1120e9366b994b7c6c34140d9a3e8a23ea4d84e22b1dae403bbbca097b3b348cec66815980370266841
|
||||
3338a9b0850b2953b0ed558455b55227965635aa9926e948cb4dd62e36877870796e1a2ce6de842107c168045e5e82d7045a341c7e302303ed771ba32c2c260a
|
||||
67192219e2014963a4ed9e8d51d50429cb951943b41d3619f4c1f2255e2b48ab6bb6af21ed24412a8aab1d232e8bdeeb4429cbe0699480dbd1726471b138598c
|
||||
f61a5e7d717ed1433e4e1ade10cecd7019251075a9e74acc02783fe52b61d3fea5c56caa7c1acd7a66985b0455783562fd3e63b0d3071221d53a96a14d0df328
|
||||
4d01166b4956fff94570eb591950d28d4ea6c5c23224c3bfa605f8d10d2d190e89af8ac12eac68dfd9dbb495f29122a21b0ef6509f8dc43686f0eb54057b0654
|
||||
c2eb0fd311f40dbcbbd3de368fdce69c165df18d99c1d975cc9210a7ed56976856c9166e1a52ae83b92ba807b695ea6e8c3bbd29a6e4cfc894621affcf4cd1fb
|
||||
09bc8d5818e808f8f0365960a42ba5e171a1420e5d2809a9df11304898de01d902ef7fe1312415bcd336bf82ecea5f5b739687296b3854aa6d1a2041613f52a1
|
||||
20640bda92c9be9730aba67b9765c9524626a30aeacac4aadd27bb84f5740f5cd27bbb87424875d34dd236607047f3cfbd4f2ba81fe821a7586f4e27cbf75e5b
|
||||
03fff4e4638b198c72fbb0196832ffe72ae6e3c17457b5f4863cdb7b8b86e807d331ab965505082b6c05f5b4ec5f5185536eb5b663cd583cbf982907519cb518
|
||||
16f3812881774a48ff83fd8f0a9fd9af237a43edf16de8ad083e6e6866903690d5e7ece0817483b48b7d189ceca24d26cdcaba361d9db4d7b2cdfa8c27dd5cee
|
||||
11676bcd4e12ef533a3b1fce5c714e2d9ea5b3530f3bbeb66bc7ba1a227bb4446169981d6c4c60cc97b5e2972fdebf0d815e876f0823a6a44926f88e2530ccd0
|
||||
5d530750fc56a2215dfd0b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c73
|
||||
2f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761
|
||||
be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f9
|
||||
80ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca
|
||||
5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e7465
|
||||
6e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c73
|
||||
2f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f
|
||||
7468656d654d616e616765722e786d6c504b01022d0014000600080000002100a55e7d2dc7060000d71b00001600000000000000000000000000d60200007468
|
||||
656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d10900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cc0a00000000}
|
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
|
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
|
||||
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
|
||||
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
|
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
|
||||
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
|
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000a04f
|
||||
04c046b4db01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000105000000000000}}
|
||||
@@ -116,6 +116,7 @@ type
|
||||
fontsPath: string;
|
||||
imgsPath: string;
|
||||
soundsPath: string;
|
||||
VoicesPath: string;
|
||||
stlPath: string;
|
||||
ytSongsPath: string;
|
||||
SilentPlay: string;
|
||||
|
||||
Reference in New Issue
Block a user