From 1530450313305d8454ec5d81cd683901f0b64287 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 21 Jan 2026 00:23:28 +0300 Subject: [PATCH] first commit --- Doxyfile | 22 + README.md | 3 + build/AuthApp | Bin 0 -> 72400 bytes build/AuthApp.deps.json | 23 + build/AuthApp.dll | Bin 0 -> 8192 bytes build/AuthApp.runtimeconfig.json | 13 + data/users.json | 10 + docs/html/AuthService_8cs.html | 96 + docs/html/ConsoleHelper_8cs.html | 96 + docs/html/PasswordHasher_8cs.html | 96 + docs/html/Program_8cs.html | 88 + docs/html/UserRepository_8cs.html | 96 + docs/html/User_8cs.html | 96 + docs/html/annotated.html | 87 + docs/html/bc_s.png | Bin 0 -> 676 bytes docs/html/bdwn.png | Bin 0 -> 147 bytes ...App_1_1Data_1_1UserRepository-members.html | 84 + ...lassAuthApp_1_1Data_1_1UserRepository.html | 154 ++ ...lassAuthApp_1_1Models_1_1User-members.html | 84 + docs/html/classAuthApp_1_1Models_1_1User.html | 149 ++ ...pp_1_1Services_1_1AuthService-members.html | 84 + ...assAuthApp_1_1Services_1_1AuthService.html | 157 ++ ..._1Services_1_1AuthService__coll__graph.dot | 9 + docs/html/classProgram-members.html | 79 + docs/html/classProgram.html | 118 ++ docs/html/classes.html | 87 + docs/html/closed.png | Bin 0 -> 132 bytes .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 85 + .../dir_6929510bad438d9e4001e850458d5917.html | 92 + ...r_6929510bad438d9e4001e850458d5917_dep.dot | 11 + .../dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html | 90 + ...r_884f6f11a76e7c9f0ed8f2932b6ad5c3_dep.dot | 11 + .../dir_91243f941ab1ddd454d635b0135ff20c.html | 101 + ...r_91243f941ab1ddd454d635b0135ff20c_dep.dot | 16 + docs/html/doc.png | Bin 0 -> 746 bytes docs/html/doxygen.css | 1841 +++++++++++++++++ docs/html/doxygen.svg | 26 + docs/html/dynsections.js | 121 ++ docs/html/files.html | 89 + docs/html/folderclosed.png | Bin 0 -> 616 bytes docs/html/folderopen.png | Bin 0 -> 597 bytes docs/html/functions.html | 81 + docs/html/functions_func.html | 77 + docs/html/functions_prop.html | 76 + docs/html/functions_vars.html | 76 + docs/html/graph_legend.dot | 23 + docs/html/graph_legend.html | 135 ++ docs/html/index.html | 75 + docs/html/jquery.js | 35 + docs/html/menu.js | 135 ++ docs/html/menudata.js | 38 + docs/html/namespaceAuthApp.html | 90 + docs/html/namespaceAuthApp_1_1Data.html | 88 + docs/html/namespaceAuthApp_1_1Models.html | 88 + docs/html/namespaceAuthApp_1_1Services.html | 92 + docs/html/namespaceAuthApp_1_1Utils.html | 91 + docs/html/namespaces.html | 87 + docs/html/nav_f.png | Bin 0 -> 153 bytes docs/html/nav_g.png | Bin 0 -> 95 bytes docs/html/nav_h.png | Bin 0 -> 98 bytes docs/html/open.png | Bin 0 -> 123 bytes docs/html/search/all_0.html | 37 + docs/html/search/all_0.js | 4 + docs/html/search/all_1.html | 37 + docs/html/search/all_1.js | 11 + docs/html/search/all_2.html | 37 + docs/html/search/all_2.js | 4 + docs/html/search/all_3.html | 37 + docs/html/search/all_3.js | 4 + docs/html/search/all_4.html | 37 + docs/html/search/all_4.js | 4 + docs/html/search/all_5.html | 37 + docs/html/search/all_5.js | 4 + docs/html/search/all_6.html | 37 + docs/html/search/all_6.js | 4 + docs/html/search/all_7.html | 37 + docs/html/search/all_7.js | 7 + docs/html/search/all_8.html | 37 + docs/html/search/all_8.js | 7 + docs/html/search/classes_0.html | 37 + docs/html/search/classes_0.js | 4 + docs/html/search/classes_1.html | 37 + docs/html/search/classes_1.js | 4 + docs/html/search/classes_2.html | 37 + docs/html/search/classes_2.js | 5 + docs/html/search/close.svg | 31 + docs/html/search/files_0.html | 37 + docs/html/search/files_0.js | 4 + docs/html/search/files_1.html | 37 + docs/html/search/files_1.js | 4 + docs/html/search/files_2.html | 37 + docs/html/search/files_2.js | 5 + docs/html/search/files_3.html | 37 + docs/html/search/files_3.js | 5 + docs/html/search/functions_0.html | 37 + docs/html/search/functions_0.js | 4 + docs/html/search/functions_1.html | 37 + docs/html/search/functions_1.js | 4 + docs/html/search/functions_2.html | 37 + docs/html/search/functions_2.js | 4 + docs/html/search/mag_sel.svg | 74 + docs/html/search/namespaces_0.html | 37 + docs/html/search/namespaces_0.js | 8 + docs/html/search/nomatches.html | 13 + docs/html/search/properties_0.html | 37 + docs/html/search/properties_0.js | 4 + docs/html/search/properties_1.html | 37 + docs/html/search/properties_1.js | 4 + docs/html/search/search.css | 263 +++ docs/html/search/search.js | 802 +++++++ docs/html/search/search_l.png | Bin 0 -> 567 bytes docs/html/search/search_m.png | Bin 0 -> 158 bytes docs/html/search/search_r.png | Bin 0 -> 553 bytes docs/html/search/searchdata.js | 33 + docs/html/search/variables_0.html | 37 + docs/html/search/variables_0.js | 4 + docs/html/search/variables_1.html | 37 + docs/html/search/variables_1.js | 4 + docs/html/splitbar.png | Bin 0 -> 314 bytes docs/html/sync_off.png | Bin 0 -> 853 bytes docs/html/sync_on.png | Bin 0 -> 845 bytes docs/html/tab_a.png | Bin 0 -> 142 bytes docs/html/tab_b.png | Bin 0 -> 169 bytes docs/html/tab_h.png | Bin 0 -> 177 bytes docs/html/tab_s.png | Bin 0 -> 184 bytes docs/html/tabs.css | 1 + scripts/adduser.sh | 29 + scripts/build.sh | 81 + scripts/config.sh | 3 + scripts/run.sh | 2 + src/AuthApp.csproj | 30 + src/AuthApp/AuthService.cs | 25 + src/AuthApp/Models/User.cs | 18 + src/AuthApp/Program.cs | 56 + src/AuthApp/UserRepository.cs | 56 + src/AuthApp/Utils/ConsoleHelper.cs | 33 + src/AuthApp/Utils/PasswordHasher.cs | 32 + src/obj/App.csproj.nuget.dgspec.json | 66 + src/obj/App.csproj.nuget.g.props | 15 + src/obj/App.csproj.nuget.g.targets | 2 + src/obj/AuthApp.csproj.nuget.dgspec.json | 66 + src/obj/AuthApp.csproj.nuget.g.props | 15 + src/obj/AuthApp.csproj.nuget.g.targets | 2 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + src/obj/Release/net8.0/App.AssemblyInfo.cs | 22 + .../net8.0/App.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + src/obj/Release/net8.0/App.GlobalUsings.g.cs | 8 + src/obj/Release/net8.0/App.assets.cache | Bin 0 -> 147 bytes .../net8.0/App.csproj.CoreCompileInputs.cache | 1 + .../net8.0/App.csproj.FileListAbsolute.txt | 4 + .../Release/net8.0/AuthApp.AssemblyInfo.cs | 22 + .../net8.0/AuthApp.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../Release/net8.0/AuthApp.GlobalUsings.g.cs | 8 + src/obj/Release/net8.0/AuthApp.assets.cache | Bin 0 -> 147 bytes .../AuthApp.csproj.CoreCompileInputs.cache | 1 + .../AuthApp.csproj.FileListAbsolute.txt | 12 + src/obj/Release/net8.0/AuthApp.dll | Bin 0 -> 8192 bytes .../net8.0/AuthApp.genruntimeconfig.cache | 1 + src/obj/Release/net8.0/apphost | Bin 0 -> 72400 bytes src/obj/Release/net8.0/ref/AuthApp.dll | Bin 0 -> 6144 bytes src/obj/Release/net8.0/refint/AuthApp.dll | Bin 0 -> 6144 bytes src/obj/project.assets.json | 71 + src/obj/project.nuget.cache | 8 + 165 files changed, 8443 insertions(+) create mode 100644 Doxyfile create mode 100644 README.md create mode 100755 build/AuthApp create mode 100644 build/AuthApp.deps.json create mode 100644 build/AuthApp.dll create mode 100644 build/AuthApp.runtimeconfig.json create mode 100644 data/users.json create mode 100644 docs/html/AuthService_8cs.html create mode 100644 docs/html/ConsoleHelper_8cs.html create mode 100644 docs/html/PasswordHasher_8cs.html create mode 100644 docs/html/Program_8cs.html create mode 100644 docs/html/UserRepository_8cs.html create mode 100644 docs/html/User_8cs.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/bdwn.png create mode 100644 docs/html/classAuthApp_1_1Data_1_1UserRepository-members.html create mode 100644 docs/html/classAuthApp_1_1Data_1_1UserRepository.html create mode 100644 docs/html/classAuthApp_1_1Models_1_1User-members.html create mode 100644 docs/html/classAuthApp_1_1Models_1_1User.html create mode 100644 docs/html/classAuthApp_1_1Services_1_1AuthService-members.html create mode 100644 docs/html/classAuthApp_1_1Services_1_1AuthService.html create mode 100644 docs/html/classAuthApp_1_1Services_1_1AuthService__coll__graph.dot create mode 100644 docs/html/classProgram-members.html create mode 100644 docs/html/classProgram.html create mode 100644 docs/html/classes.html create mode 100644 docs/html/closed.png create mode 100644 docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 docs/html/dir_6929510bad438d9e4001e850458d5917.html create mode 100644 docs/html/dir_6929510bad438d9e4001e850458d5917_dep.dot create mode 100644 docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html create mode 100644 docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3_dep.dot create mode 100644 docs/html/dir_91243f941ab1ddd454d635b0135ff20c.html create mode 100644 docs/html/dir_91243f941ab1ddd454d635b0135ff20c_dep.dot create mode 100644 docs/html/doc.png create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/files.html create mode 100644 docs/html/folderclosed.png create mode 100644 docs/html/folderopen.png create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_func.html create mode 100644 docs/html/functions_prop.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/graph_legend.dot create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/index.html create mode 100644 docs/html/jquery.js create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/namespaceAuthApp.html create mode 100644 docs/html/namespaceAuthApp_1_1Data.html create mode 100644 docs/html/namespaceAuthApp_1_1Models.html create mode 100644 docs/html/namespaceAuthApp_1_1Services.html create mode 100644 docs/html/namespaceAuthApp_1_1Utils.html create mode 100644 docs/html/namespaces.html create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_g.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/open.png create mode 100644 docs/html/search/all_0.html create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.html create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_2.html create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.html create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.html create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.html create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.html create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.html create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.html create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/classes_0.html create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/classes_1.html create mode 100644 docs/html/search/classes_1.js create mode 100644 docs/html/search/classes_2.html create mode 100644 docs/html/search/classes_2.js create mode 100644 docs/html/search/close.svg create mode 100644 docs/html/search/files_0.html create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.html create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/files_2.html create mode 100644 docs/html/search/files_2.js create mode 100644 docs/html/search/files_3.html create mode 100644 docs/html/search/files_3.js create mode 100644 docs/html/search/functions_0.html create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.html create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/functions_2.html create mode 100644 docs/html/search/functions_2.js create mode 100644 docs/html/search/mag_sel.svg create mode 100644 docs/html/search/namespaces_0.html create mode 100644 docs/html/search/namespaces_0.js create mode 100644 docs/html/search/nomatches.html create mode 100644 docs/html/search/properties_0.html create mode 100644 docs/html/search/properties_0.js create mode 100644 docs/html/search/properties_1.html create mode 100644 docs/html/search/properties_1.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/search_l.png create mode 100644 docs/html/search/search_m.png create mode 100644 docs/html/search/search_r.png create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/variables_0.html create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.html create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/splitbar.png create mode 100644 docs/html/sync_off.png create mode 100644 docs/html/sync_on.png create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tabs.css create mode 100755 scripts/adduser.sh create mode 100755 scripts/build.sh create mode 100755 scripts/config.sh create mode 100755 scripts/run.sh create mode 100644 src/AuthApp.csproj create mode 100644 src/AuthApp/AuthService.cs create mode 100644 src/AuthApp/Models/User.cs create mode 100644 src/AuthApp/Program.cs create mode 100644 src/AuthApp/UserRepository.cs create mode 100644 src/AuthApp/Utils/ConsoleHelper.cs create mode 100644 src/AuthApp/Utils/PasswordHasher.cs create mode 100644 src/obj/App.csproj.nuget.dgspec.json create mode 100644 src/obj/App.csproj.nuget.g.props create mode 100644 src/obj/App.csproj.nuget.g.targets create mode 100644 src/obj/AuthApp.csproj.nuget.dgspec.json create mode 100644 src/obj/AuthApp.csproj.nuget.g.props create mode 100644 src/obj/AuthApp.csproj.nuget.g.targets create mode 100644 src/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 src/obj/Release/net8.0/App.AssemblyInfo.cs create mode 100644 src/obj/Release/net8.0/App.AssemblyInfoInputs.cache create mode 100644 src/obj/Release/net8.0/App.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 src/obj/Release/net8.0/App.GlobalUsings.g.cs create mode 100644 src/obj/Release/net8.0/App.assets.cache create mode 100644 src/obj/Release/net8.0/App.csproj.CoreCompileInputs.cache create mode 100644 src/obj/Release/net8.0/App.csproj.FileListAbsolute.txt create mode 100644 src/obj/Release/net8.0/AuthApp.AssemblyInfo.cs create mode 100644 src/obj/Release/net8.0/AuthApp.AssemblyInfoInputs.cache create mode 100644 src/obj/Release/net8.0/AuthApp.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 src/obj/Release/net8.0/AuthApp.GlobalUsings.g.cs create mode 100644 src/obj/Release/net8.0/AuthApp.assets.cache create mode 100644 src/obj/Release/net8.0/AuthApp.csproj.CoreCompileInputs.cache create mode 100644 src/obj/Release/net8.0/AuthApp.csproj.FileListAbsolute.txt create mode 100644 src/obj/Release/net8.0/AuthApp.dll create mode 100644 src/obj/Release/net8.0/AuthApp.genruntimeconfig.cache create mode 100755 src/obj/Release/net8.0/apphost create mode 100644 src/obj/Release/net8.0/ref/AuthApp.dll create mode 100644 src/obj/Release/net8.0/refint/AuthApp.dll create mode 100644 src/obj/project.assets.json create mode 100644 src/obj/project.nuget.cache diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..17e2e4c --- /dev/null +++ b/Doxyfile @@ -0,0 +1,22 @@ +# Пути к исходникам +INPUT = src/AuthApp + +# Расширения файлов, которые нужно анализировать +FILE_PATTERNS = *.cs + +# Включить/отключить рекурсивный обход папок +RECURSIVE = YES + +# Тип документации +GENERATE_HTML = YES +GENERATE_LATEX = NO # + +# Основные настройки C# +OPTIMIZE_OUTPUT_JAVA = YES # +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES # + +# Название проекта +PROJECT_NAME = "AuthApp" +PROJECT_BRIEF = "Authentication Application Utilities" +OUTPUT_DIRECTORY = docs \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7dd116d --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +Собрать проект: scripts/build.sh +Add user: scripts/adduser.sh +Run proj: scripts/run.sh \ No newline at end of file diff --git a/build/AuthApp b/build/AuthApp new file mode 100755 index 0000000000000000000000000000000000000000..11485ecd77a7e3b84a1f8d416ea586829d62b2c4 GIT binary patch literal 72400 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 literal 0 HcmV?d00001 diff --git a/build/AuthApp.runtimeconfig.json b/build/AuthApp.runtimeconfig.json new file mode 100644 index 0000000..d784515 --- /dev/null +++ b/build/AuthApp.runtimeconfig.json @@ -0,0 +1,13 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/data/users.json b/data/users.json new file mode 100644 index 0000000..c006098 --- /dev/null +++ b/data/users.json @@ -0,0 +1,10 @@ +[ + { + "Login": "meow", + "PasswordHash": "404cdd7bc109c432f8cc2443b45bcfe95980f5107215c645236e577929ac3e52" + }, + { + "Login": "testuser", + "PasswordHash": "d74ff0ee8da3b9806b18c877dbf29bbde50b5bd8e4dad7a3a725000feb82e8f1" + } +] diff --git a/docs/html/AuthService_8cs.html b/docs/html/AuthService_8cs.html new file mode 100644 index 0000000..f08a615 --- /dev/null +++ b/docs/html/AuthService_8cs.html @@ -0,0 +1,96 @@ + + + + + + + +AuthApp: src/AuthApp/AuthService.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
AuthService.cs File Reference
+
+
+ + + + +

+Classes

class  AuthApp.Services.AuthService
 
+ + + + + + +

+Namespaces

namespace  AuthApp
 
namespace  AuthApp.Services
 Сервис аутентификации
 
+
+ + + + diff --git a/docs/html/ConsoleHelper_8cs.html b/docs/html/ConsoleHelper_8cs.html new file mode 100644 index 0000000..a4e4919 --- /dev/null +++ b/docs/html/ConsoleHelper_8cs.html @@ -0,0 +1,96 @@ + + + + + + + +AuthApp: src/AuthApp/Utils/ConsoleHelper.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
ConsoleHelper.cs File Reference
+
+
+ + + + + +

+Classes

class  AuthApp.Utils.ConsoleHelper
 Вспомогательные функции консоли
 
+ + + + + +

+Namespaces

namespace  AuthApp
 
namespace  AuthApp.Utils
 
+
+ + + + diff --git a/docs/html/PasswordHasher_8cs.html b/docs/html/PasswordHasher_8cs.html new file mode 100644 index 0000000..53454f0 --- /dev/null +++ b/docs/html/PasswordHasher_8cs.html @@ -0,0 +1,96 @@ + + + + + + + +AuthApp: src/AuthApp/Utils/PasswordHasher.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
PasswordHasher.cs File Reference
+
+
+ + + + + +

+Classes

class  AuthApp.Utils.PasswordHasher
 Утилита для хэширования паролей.
 
+ + + + + +

+Namespaces

namespace  AuthApp
 
namespace  AuthApp.Utils
 
+
+ + + + diff --git a/docs/html/Program_8cs.html b/docs/html/Program_8cs.html new file mode 100644 index 0000000..cd47ee6 --- /dev/null +++ b/docs/html/Program_8cs.html @@ -0,0 +1,88 @@ + + + + + + + +AuthApp: src/AuthApp/Program.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
Program.cs File Reference
+
+
+ + + + + +

+Classes

class  Program
 Entry point приложения More...
 
+
+ + + + diff --git a/docs/html/UserRepository_8cs.html b/docs/html/UserRepository_8cs.html new file mode 100644 index 0000000..0a0aa16 --- /dev/null +++ b/docs/html/UserRepository_8cs.html @@ -0,0 +1,96 @@ + + + + + + + +AuthApp: src/AuthApp/UserRepository.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
UserRepository.cs File Reference
+
+
+ + + + + +

+Classes

class  AuthApp.Data.UserRepository
 Репозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища. More...
 
+ + + + + +

+Namespaces

namespace  AuthApp
 
namespace  AuthApp.Data
 
+
+ + + + diff --git a/docs/html/User_8cs.html b/docs/html/User_8cs.html new file mode 100644 index 0000000..3136398 --- /dev/null +++ b/docs/html/User_8cs.html @@ -0,0 +1,96 @@ + + + + + + + +AuthApp: src/AuthApp/Models/User.cs File Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
User.cs File Reference
+
+
+ + + + + +

+Classes

class  AuthApp.Models.User
 Модель пользователя системы. More...
 
+ + + + + +

+Namespaces

namespace  AuthApp
 
namespace  AuthApp.Models
 
+
+ + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..941573a --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,87 @@ + + + + + + + +AuthApp: Class List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + +
 NAuthApp
 NData
 CUserRepositoryРепозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища.
 NModels
 CUserМодель пользователя системы.
 NServicesСервис аутентификации
 CAuthService
 CProgramEntry point приложения
+
+
+ + + + diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +AuthApp: Member List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
AuthApp.Data.UserRepository Member List
+
+
+ +

This is the complete list of members for AuthApp.Data.UserRepository, including all inherited members.

+ + + +
DatabasePathAuthApp.Data.UserRepositoryprivatestatic
GetUser(string login)AuthApp.Data.UserRepository
+ + + + diff --git a/docs/html/classAuthApp_1_1Data_1_1UserRepository.html b/docs/html/classAuthApp_1_1Data_1_1UserRepository.html new file mode 100644 index 0000000..dd1282b --- /dev/null +++ b/docs/html/classAuthApp_1_1Data_1_1UserRepository.html @@ -0,0 +1,154 @@ + + + + + + + +AuthApp: AuthApp.Data.UserRepository Class Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
AuthApp.Data.UserRepository Class Reference
+
+
+ +

Репозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища. + More...

+ + + + + +

+Public Member Functions

UserGetUser (string login)
 Получает пользователя по логину. More...
 
+ + + +

+Static Private Attributes

const string DatabasePath = "data/users.json"
 
+

Detailed Description

+

Репозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища.

+

Member Function Documentation

+ +

◆ GetUser()

+ +
+
+ + + + + + + + +
User? AuthApp.Data.UserRepository.GetUser (string login)
+
+ +

Получает пользователя по логину.

+
Parameters
+ + +
loginЛогин пользователя
+
+
+
Returns
Объект User, если пользователь найден, иначе null.
+ +
+
+

Member Data Documentation

+ +

◆ DatabasePath

+ +
+
+ + + + + +
+ + + + +
const string AuthApp.Data.UserRepository.DatabasePath = "data/users.json"
+
+staticprivate
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/classAuthApp_1_1Models_1_1User-members.html b/docs/html/classAuthApp_1_1Models_1_1User-members.html new file mode 100644 index 0000000..e04d0f7 --- /dev/null +++ b/docs/html/classAuthApp_1_1Models_1_1User-members.html @@ -0,0 +1,84 @@ + + + + + + + +AuthApp: Member List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
AuthApp.Models.User Member List
+
+
+ +

This is the complete list of members for AuthApp.Models.User, including all inherited members.

+ + + +
LoginAuthApp.Models.User
PasswordHashAuthApp.Models.User
+ + + + diff --git a/docs/html/classAuthApp_1_1Models_1_1User.html b/docs/html/classAuthApp_1_1Models_1_1User.html new file mode 100644 index 0000000..a19a314 --- /dev/null +++ b/docs/html/classAuthApp_1_1Models_1_1User.html @@ -0,0 +1,149 @@ + + + + + + + +AuthApp: AuthApp.Models.User Class Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
AuthApp.Models.User Class Reference
+
+
+ +

Модель пользователя системы. + More...

+ + + + + + + + +

+Properties

string Login = string.Empty [get, set]
 Логин пользователя. More...
 
string PasswordHash = string.Empty [get, set]
 Хэш пароля пользователя. More...
 
+

Detailed Description

+

Модель пользователя системы.

+

Property Documentation

+ +

◆ Login

+ +
+
+ + + + + +
+ + + + +
string AuthApp.Models.User.Login = string.Empty
+
+getset
+
+ +

Логин пользователя.

+ +
+
+ +

◆ PasswordHash

+ +
+
+ + + + + +
+ + + + +
string AuthApp.Models.User.PasswordHash = string.Empty
+
+getset
+
+ +

Хэш пароля пользователя.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/classAuthApp_1_1Services_1_1AuthService-members.html b/docs/html/classAuthApp_1_1Services_1_1AuthService-members.html new file mode 100644 index 0000000..4a2a5fd --- /dev/null +++ b/docs/html/classAuthApp_1_1Services_1_1AuthService-members.html @@ -0,0 +1,84 @@ + + + + + + + +AuthApp: Member List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
AuthApp.Services.AuthService Member List
+
+
+ +

This is the complete list of members for AuthApp.Services.AuthService, including all inherited members.

+ + + +
_repositoryAuthApp.Services.AuthServiceprivate
Authenticate(string login, string password)AuthApp.Services.AuthService
+ + + + diff --git a/docs/html/classAuthApp_1_1Services_1_1AuthService.html b/docs/html/classAuthApp_1_1Services_1_1AuthService.html new file mode 100644 index 0000000..0922f6b --- /dev/null +++ b/docs/html/classAuthApp_1_1Services_1_1AuthService.html @@ -0,0 +1,157 @@ + + + + + + + +AuthApp: AuthApp.Services.AuthService Class Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
AuthApp.Services.AuthService Class Reference
+
+
+
+Collaboration diagram for AuthApp.Services.AuthService:
+
+
Collaboration graph
+
[legend]
+ + + + + +

+Public Member Functions

bool Authenticate (string login, string password)
 Проверка логина и пароля More...
 
+ + + +

+Private Attributes

readonly UserRepository _repository = new()
 
+

Member Function Documentation

+ +

◆ Authenticate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool AuthApp.Services.AuthService.Authenticate (string login,
string password 
)
+
+ +

Проверка логина и пароля

+ +
+
+

Member Data Documentation

+ +

◆ _repository

+ +
+
+ + + + + +
+ + + + +
readonly UserRepository AuthApp.Services.AuthService._repository = new()
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/classAuthApp_1_1Services_1_1AuthService__coll__graph.dot b/docs/html/classAuthApp_1_1Services_1_1AuthService__coll__graph.dot new file mode 100644 index 0000000..dc2235e --- /dev/null +++ b/docs/html/classAuthApp_1_1Services_1_1AuthService__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "AuthApp.Services.AuthService" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="AuthApp.Services.AuthService",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" _repository" ,fontname="Helvetica"]; + Node2 [label="AuthApp.Data.UserRepository",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classAuthApp_1_1Data_1_1UserRepository.html",tooltip="Репозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища."]; +} diff --git a/docs/html/classProgram-members.html b/docs/html/classProgram-members.html new file mode 100644 index 0000000..f2bb7cb --- /dev/null +++ b/docs/html/classProgram-members.html @@ -0,0 +1,79 @@ + + + + + + + +AuthApp: Member List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Program Member List
+
+
+ +

This is the complete list of members for Program, including all inherited members.

+ + +
Main()Programprivatestatic
+ + + + diff --git a/docs/html/classProgram.html b/docs/html/classProgram.html new file mode 100644 index 0000000..5682d4e --- /dev/null +++ b/docs/html/classProgram.html @@ -0,0 +1,118 @@ + + + + + + + +AuthApp: Program Class Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Program Class Reference
+
+
+ +

Entry point приложения + More...

+ + + + +

+Static Private Member Functions

static void Main ()
 
+

Detailed Description

+

Entry point приложения

+

Member Function Documentation

+ +

◆ Main()

+ +
+
+ + + + + +
+ + + + + + + +
static void Program.Main ()
+
+staticprivate
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..b2bcc29 --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,87 @@ + + + + + + + +AuthApp: Class Index + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class Index
+
+ + + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..c0de8fb --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,85 @@ + + + + + + + +AuthApp: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
src Directory Reference
+
+
+ + + + +

+Directories

directory  AuthApp
 
+
+ + + + diff --git a/docs/html/dir_6929510bad438d9e4001e850458d5917.html b/docs/html/dir_6929510bad438d9e4001e850458d5917.html new file mode 100644 index 0000000..fd6a2ef --- /dev/null +++ b/docs/html/dir_6929510bad438d9e4001e850458d5917.html @@ -0,0 +1,92 @@ + + + + + + + +AuthApp: src/AuthApp/Utils Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Utils Directory Reference
+
+
+
+Directory dependency graph for Utils:
+
+
src/AuthApp/Utils
+
+ + + + + + +

+Files

file  ConsoleHelper.cs
 
file  PasswordHasher.cs
 
+
+ + + + diff --git a/docs/html/dir_6929510bad438d9e4001e850458d5917_dep.dot b/docs/html/dir_6929510bad438d9e4001e850458d5917_dep.dot new file mode 100644 index 0000000..309bb5a --- /dev/null +++ b/docs/html/dir_6929510bad438d9e4001e850458d5917_dep.dot @@ -0,0 +1,11 @@ +digraph "src/AuthApp/Utils" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + compound=true + subgraph clusterdir_91243f941ab1ddd454d635b0135ff20c { + graph [ bgcolor="#edf0f7", pencolor="grey50", style="filled,dashed,", label="AuthApp", fontname="Helvetica", fontsize="10", URL="dir_91243f941ab1ddd454d635b0135ff20c.html"] + dir_6929510bad438d9e4001e850458d5917 [shape=box, label="Utils", style="filled,bold,", fillcolor="#edf0f7", color="grey25", URL="dir_6929510bad438d9e4001e850458d5917.html"]; + } +} diff --git a/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html b/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html new file mode 100644 index 0000000..13b23ff --- /dev/null +++ b/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html @@ -0,0 +1,90 @@ + + + + + + + +AuthApp: src/AuthApp/Models Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Models Directory Reference
+
+
+
+Directory dependency graph for Models:
+
+
src/AuthApp/Models
+
+ + + + +

+Files

file  User.cs
 
+
+ + + + diff --git a/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3_dep.dot b/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3_dep.dot new file mode 100644 index 0000000..a56830a --- /dev/null +++ b/docs/html/dir_884f6f11a76e7c9f0ed8f2932b6ad5c3_dep.dot @@ -0,0 +1,11 @@ +digraph "src/AuthApp/Models" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + compound=true + subgraph clusterdir_91243f941ab1ddd454d635b0135ff20c { + graph [ bgcolor="#edf0f7", pencolor="grey50", style="filled,dashed,", label="AuthApp", fontname="Helvetica", fontsize="10", URL="dir_91243f941ab1ddd454d635b0135ff20c.html"] + dir_884f6f11a76e7c9f0ed8f2932b6ad5c3 [shape=box, label="Models", style="filled,bold,", fillcolor="#edf0f7", color="grey25", URL="dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html"]; + } +} diff --git a/docs/html/dir_91243f941ab1ddd454d635b0135ff20c.html b/docs/html/dir_91243f941ab1ddd454d635b0135ff20c.html new file mode 100644 index 0000000..a2ed815 --- /dev/null +++ b/docs/html/dir_91243f941ab1ddd454d635b0135ff20c.html @@ -0,0 +1,101 @@ + + + + + + + +AuthApp: src/AuthApp Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
AuthApp Directory Reference
+
+
+
+Directory dependency graph for AuthApp:
+
+
src/AuthApp
+
+ + + + + + +

+Directories

directory  Models
 
directory  Utils
 
+ + + + + + + +

+Files

file  AuthService.cs
 
file  Program.cs
 
file  UserRepository.cs
 
+
+ + + + diff --git a/docs/html/dir_91243f941ab1ddd454d635b0135ff20c_dep.dot b/docs/html/dir_91243f941ab1ddd454d635b0135ff20c_dep.dot new file mode 100644 index 0000000..ac63b7e --- /dev/null +++ b/docs/html/dir_91243f941ab1ddd454d635b0135ff20c_dep.dot @@ -0,0 +1,16 @@ +digraph "src/AuthApp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + compound=true + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#edf0f7", pencolor="grey25", style="filled,dashed,", label="src", fontname="Helvetica", fontsize="10", URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"] + subgraph clusterdir_91243f941ab1ddd454d635b0135ff20c { + graph [ bgcolor="#edf0f7", pencolor="grey25", style="filled,bold,", label="", fontname="Helvetica", fontsize="10", URL="dir_91243f941ab1ddd454d635b0135ff20c.html"] + dir_91243f941ab1ddd454d635b0135ff20c [shape=plaintext, label="AuthApp"]; + dir_884f6f11a76e7c9f0ed8f2932b6ad5c3 [shape=box, label="Models", style="filled,", fillcolor="#a2b4d6", color="grey25", URL="dir_884f6f11a76e7c9f0ed8f2932b6ad5c3.html"]; + dir_6929510bad438d9e4001e850458d5917 [shape=box, label="Utils", style="filled,", fillcolor="#a2b4d6", color="grey25", URL="dir_6929510bad438d9e4001e850458d5917.html"]; + } + } +} diff --git a/docs/html/doc.png b/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..2010785 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode { + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +AuthApp: File List + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + +
  src
  AuthApp
  Models
 User.cs
  Utils
 ConsoleHelper.cs
 PasswordHasher.cs
 AuthService.cs
 Program.cs
 UserRepository.cs
+
+
+ + + + diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..29e4908 --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,81 @@ + + + + + + + +AuthApp: Class Members + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+
+ + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..71e9bd8 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,77 @@ + + + + + + + +AuthApp: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/html/functions_prop.html b/docs/html/functions_prop.html new file mode 100644 index 0000000..ea3f2e8 --- /dev/null +++ b/docs/html/functions_prop.html @@ -0,0 +1,76 @@ + + + + + + + +AuthApp: Class Members - Properties + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..de48aa8 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,76 @@ + + + + + + + +AuthApp: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/html/graph_legend.dot b/docs/html/graph_legend.dot new file mode 100644 index 0000000..4d6ac8c --- /dev/null +++ b/docs/html/graph_legend.dot @@ -0,0 +1,23 @@ +digraph "Graph Legend" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",fillcolor="grey75",style="filled" fontcolor="black"]; + Node10 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="red"]; + Node13 -> Node9 [dir="back",color="darkgreen",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node14 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node17 -> Node16 [dir="back",color="orange",fontsize="10",style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; + Node18 -> Node9 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black"]; +} diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..efa95f6 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,135 @@ + + + + + + + +AuthApp: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..9039f45 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,75 @@ + + + + + + + +AuthApp: Main Page + + + + + + + + + +
+
+ + + + + + +
+
AuthApp +
+
Authentication Application Utilities
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
AuthApp Documentation
+
+
+
+ + + + diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..c9ed3d9 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..818b859 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,135 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js new file mode 100644 index 0000000..10e5699 --- /dev/null +++ b/docs/html/menudata.js @@ -0,0 +1,38 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Packages",url:"namespaces.html",children:[ +{text:"Package List",url:"namespaces.html"}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions",url:"functions_func.html"}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Properties",url:"functions_prop.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/namespaceAuthApp.html b/docs/html/namespaceAuthApp.html new file mode 100644 index 0000000..6e0240d --- /dev/null +++ b/docs/html/namespaceAuthApp.html @@ -0,0 +1,90 @@ + + + + + + + +AuthApp: AuthApp Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    AuthApp Namespace Reference
    +
    +
    + + + + + + + + + + + +

    +Namespaces

    namespace  Data
     
    namespace  Models
     
    namespace  Services
     Сервис аутентификации
     
    namespace  Utils
     
    +
    + + + + diff --git a/docs/html/namespaceAuthApp_1_1Data.html b/docs/html/namespaceAuthApp_1_1Data.html new file mode 100644 index 0000000..7b66af8 --- /dev/null +++ b/docs/html/namespaceAuthApp_1_1Data.html @@ -0,0 +1,88 @@ + + + + + + + +AuthApp: AuthApp.Data Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    AuthApp.Data Namespace Reference
    +
    +
    + + + + + +

    +Classes

    class  UserRepository
     Репозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища. More...
     
    +
    + + + + diff --git a/docs/html/namespaceAuthApp_1_1Models.html b/docs/html/namespaceAuthApp_1_1Models.html new file mode 100644 index 0000000..55fdeb2 --- /dev/null +++ b/docs/html/namespaceAuthApp_1_1Models.html @@ -0,0 +1,88 @@ + + + + + + + +AuthApp: AuthApp.Models Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    AuthApp.Models Namespace Reference
    +
    +
    + + + + + +

    +Classes

    class  User
     Модель пользователя системы. More...
     
    +
    + + + + diff --git a/docs/html/namespaceAuthApp_1_1Services.html b/docs/html/namespaceAuthApp_1_1Services.html new file mode 100644 index 0000000..705cdd6 --- /dev/null +++ b/docs/html/namespaceAuthApp_1_1Services.html @@ -0,0 +1,92 @@ + + + + + + + +AuthApp: AuthApp.Services Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    AuthApp.Services Namespace Reference
    +
    +
    + +

    Сервис аутентификации +More...

    + + + + +

    +Classes

    class  AuthService
     
    +

    Detailed Description

    +

    Сервис аутентификации

    +
    + + + + diff --git a/docs/html/namespaceAuthApp_1_1Utils.html b/docs/html/namespaceAuthApp_1_1Utils.html new file mode 100644 index 0000000..36f1562 --- /dev/null +++ b/docs/html/namespaceAuthApp_1_1Utils.html @@ -0,0 +1,91 @@ + + + + + + + +AuthApp: AuthApp.Utils Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    AuthApp.Utils Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    class  ConsoleHelper
     Вспомогательные функции консоли
     
    class  PasswordHasher
     Утилита для хэширования паролей.
     
    +
    + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..52bca99 --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,87 @@ + + + + + + + +AuthApp: Package List + + + + + + + + + +
    +
    + + + + + + +
    +
    AuthApp +
    +
    Authentication Application Utilities
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Package List
    +
    +
    +
    Here are the packages with brief descriptions (if available):
    +
    [detail level 123]
    + + + + + + + + +
     NAuthApp
     NData
     CUserRepositoryРепозиторий пользователей. Отвечает за загрузку данных пользователей из хранилища.
     NModels
     CUserМодель пользователя системы.
     NServicesСервис аутентификации
     CAuthService
     NUtils
    +
    +
    + + + + diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..d1e44c6 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5frepository_0',['_repository',['../classAuthApp_1_1Services_1_1AuthService.html#a1a77a0578fe06409cc9b3109bc2bed8c',1,'AuthApp::Services::AuthService']]] +]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html new file mode 100644 index 0000000..8989416 --- /dev/null +++ b/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..462bbcc --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['authapp_0',['AuthApp',['../namespaceAuthApp.html',1,'']]], + ['authenticate_1',['Authenticate',['../classAuthApp_1_1Services_1_1AuthService.html#ac3e2e59d6e4ca0ed296c93cdd1423ca2',1,'AuthApp::Services::AuthService']]], + ['authservice_2',['AuthService',['../classAuthApp_1_1Services_1_1AuthService.html',1,'AuthApp::Services']]], + ['authservice_2ecs_3',['AuthService.cs',['../AuthService_8cs.html',1,'']]], + ['data_4',['Data',['../namespaceAuthApp_1_1Data.html',1,'AuthApp']]], + ['models_5',['Models',['../namespaceAuthApp_1_1Models.html',1,'AuthApp']]], + ['services_6',['Services',['../namespaceAuthApp_1_1Services.html',1,'AuthApp']]], + ['utils_7',['Utils',['../namespaceAuthApp_1_1Utils.html',1,'AuthApp']]] +]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html new file mode 100644 index 0000000..98e648c --- /dev/null +++ b/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..97aaf8e --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['consolehelper_2ecs_0',['ConsoleHelper.cs',['../ConsoleHelper_8cs.html',1,'']]] +]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html new file mode 100644 index 0000000..f4e8da7 --- /dev/null +++ b/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..d5bf1ec --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['databasepath_0',['DatabasePath',['../classAuthApp_1_1Data_1_1UserRepository.html#a25f44ed2dfe0a9634cc190785e44aff0',1,'AuthApp::Data::UserRepository']]] +]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html new file mode 100644 index 0000000..678d3a2 --- /dev/null +++ b/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..41b05db --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getuser_0',['GetUser',['../classAuthApp_1_1Data_1_1UserRepository.html#a751a4e059c8bf522204cce121c7683b1',1,'AuthApp::Data::UserRepository']]] +]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html new file mode 100644 index 0000000..aa9af78 --- /dev/null +++ b/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..badc180 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['login_0',['Login',['../classAuthApp_1_1Models_1_1User.html#a0b3254430770e082fe1e8c4a977d9ff9',1,'AuthApp::Models::User']]] +]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html new file mode 100644 index 0000000..d3026a7 --- /dev/null +++ b/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..e24bac2 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_0',['Main',['../classProgram.html#ad22b0f776312e09174fc36a1e4bade60',1,'Program']]] +]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html new file mode 100644 index 0000000..b2ee042 --- /dev/null +++ b/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..9d75a43 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['passwordhash_0',['PasswordHash',['../classAuthApp_1_1Models_1_1User.html#a13883407eb077eedd892d46d2a7e1d46',1,'AuthApp::Models::User']]], + ['passwordhasher_2ecs_1',['PasswordHasher.cs',['../PasswordHasher_8cs.html',1,'']]], + ['program_2',['Program',['../classProgram.html',1,'']]], + ['program_2ecs_3',['Program.cs',['../Program_8cs.html',1,'']]] +]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html new file mode 100644 index 0000000..40a0b3f --- /dev/null +++ b/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..78d89ca --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['user_0',['User',['../classAuthApp_1_1Models_1_1User.html',1,'AuthApp::Models']]], + ['user_2ecs_1',['User.cs',['../User_8cs.html',1,'']]], + ['userrepository_2',['UserRepository',['../classAuthApp_1_1Data_1_1UserRepository.html',1,'AuthApp::Data']]], + ['userrepository_2ecs_3',['UserRepository.cs',['../UserRepository_8cs.html',1,'']]] +]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html new file mode 100644 index 0000000..9d4f871 --- /dev/null +++ b/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..358335c --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['authservice_0',['AuthService',['../classAuthApp_1_1Services_1_1AuthService.html',1,'AuthApp::Services']]] +]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html new file mode 100644 index 0000000..0557f9f --- /dev/null +++ b/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 0000000..e0add8c --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_0',['Program',['../classProgram.html',1,'']]] +]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html new file mode 100644 index 0000000..fa20861 --- /dev/null +++ b/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 0000000..f85e9de --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['user_0',['User',['../classAuthApp_1_1Models_1_1User.html',1,'AuthApp::Models']]], + ['userrepository_1',['UserRepository',['../classAuthApp_1_1Data_1_1UserRepository.html',1,'AuthApp::Data']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html new file mode 100644 index 0000000..2dbb4c2 --- /dev/null +++ b/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..d7c16d7 --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['authservice_2ecs_0',['AuthService.cs',['../AuthService_8cs.html',1,'']]] +]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html new file mode 100644 index 0000000..18ccd15 --- /dev/null +++ b/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..97aaf8e --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['consolehelper_2ecs_0',['ConsoleHelper.cs',['../ConsoleHelper_8cs.html',1,'']]] +]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html new file mode 100644 index 0000000..a4c2be4 --- /dev/null +++ b/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..8993755 --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['passwordhasher_2ecs_0',['PasswordHasher.cs',['../PasswordHasher_8cs.html',1,'']]], + ['program_2ecs_1',['Program.cs',['../Program_8cs.html',1,'']]] +]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html new file mode 100644 index 0000000..3ac4cfb --- /dev/null +++ b/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..4864243 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['user_2ecs_0',['User.cs',['../User_8cs.html',1,'']]], + ['userrepository_2ecs_1',['UserRepository.cs',['../UserRepository_8cs.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html new file mode 100644 index 0000000..3b739c7 --- /dev/null +++ b/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..1a00961 --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['authenticate_0',['Authenticate',['../classAuthApp_1_1Services_1_1AuthService.html#ac3e2e59d6e4ca0ed296c93cdd1423ca2',1,'AuthApp::Services::AuthService']]] +]; diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html new file mode 100644 index 0000000..2cef5e3 --- /dev/null +++ b/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..41b05db --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getuser_0',['GetUser',['../classAuthApp_1_1Data_1_1UserRepository.html#a751a4e059c8bf522204cce121c7683b1',1,'AuthApp::Data::UserRepository']]] +]; diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html new file mode 100644 index 0000000..3308c65 --- /dev/null +++ b/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..e24bac2 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_0',['Main',['../classProgram.html#ad22b0f776312e09174fc36a1e4bade60',1,'Program']]] +]; diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..b2d68fe --- /dev/null +++ b/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..c487c3c --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['authapp_0',['AuthApp',['../namespaceAuthApp.html',1,'']]], + ['data_1',['Data',['../namespaceAuthApp_1_1Data.html',1,'AuthApp']]], + ['models_2',['Models',['../namespaceAuthApp_1_1Models.html',1,'AuthApp']]], + ['services_3',['Services',['../namespaceAuthApp_1_1Services.html',1,'AuthApp']]], + ['utils_4',['Utils',['../namespaceAuthApp_1_1Utils.html',1,'AuthApp']]] +]; diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/html/search/properties_0.html b/docs/html/search/properties_0.html new file mode 100644 index 0000000..e1b4f60 --- /dev/null +++ b/docs/html/search/properties_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/properties_0.js b/docs/html/search/properties_0.js new file mode 100644 index 0000000..badc180 --- /dev/null +++ b/docs/html/search/properties_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['login_0',['Login',['../classAuthApp_1_1Models_1_1User.html#a0b3254430770e082fe1e8c4a977d9ff9',1,'AuthApp::Models::User']]] +]; diff --git a/docs/html/search/properties_1.html b/docs/html/search/properties_1.html new file mode 100644 index 0000000..dab619c --- /dev/null +++ b/docs/html/search/properties_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/properties_1.js b/docs/html/search/properties_1.js new file mode 100644 index 0000000..fb8744e --- /dev/null +++ b/docs/html/search/properties_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['passwordhash_0',['PasswordHash',['../classAuthApp_1_1Models_1_1User.html#a13883407eb077eedd892d46d2a7e1d46',1,'AuthApp::Models::User']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..607f4e1 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js new file mode 100644 index 0000000..47fe179 --- /dev/null +++ b/docs/html/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "_acdglmpu", + 1: "apu", + 2: "a", + 3: "acpu", + 4: "agm", + 5: "_d", + 6: "lp" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "properties" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Properties" +}; + diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html new file mode 100644 index 0000000..fd893a6 --- /dev/null +++ b/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js new file mode 100644 index 0000000..d1e44c6 --- /dev/null +++ b/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5frepository_0',['_repository',['../classAuthApp_1_1Services_1_1AuthService.html#a1a77a0578fe06409cc9b3109bc2bed8c',1,'AuthApp::Services::AuthService']]] +]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html new file mode 100644 index 0000000..5f8e440 --- /dev/null +++ b/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js new file mode 100644 index 0000000..d5bf1ec --- /dev/null +++ b/docs/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['databasepath_0',['DatabasePath',['../classAuthApp_1_1Data_1_1UserRepository.html#a25f44ed2dfe0a9634cc190785e44aff0',1,'AuthApp::Data::UserRepository']]] +]; diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..fb0977a --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/scripts/adduser.sh b/scripts/adduser.sh new file mode 100755 index 0000000..14f4c91 --- /dev/null +++ b/scripts/adduser.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +USERS_FILE="../data/users.json" + +# Ввод логина +read -p "Enter username: " username +read -s -p "Enter password: " password +echo + +# SHA-256 хэш +hash=$(echo -n "$password" | sha256sum | awk '{print $1}') + +# Создаём пустой массив, если файл отсутствует или пустой +if [[ ! -s "$USERS_FILE" ]]; then + echo "[]" > "$USERS_FILE" +fi + +# Проверка существующего пользователя +if jq --exit-status ".[] | select(.Login==\"$username\")" "$USERS_FILE" >/dev/null; then + # Обновляем пароль + jq --arg u "$username" --arg h "$hash" 'map(if .Login==$u then .PasswordHash=$h else . end)' "$USERS_FILE" > tmp.json + mv tmp.json "$USERS_FILE" + echo "✅ Updated password for user '$username'" +else + # Добавляем нового пользователя + jq --arg u "$username" --arg h "$hash" '. + [{"Login":$u,"PasswordHash":$h}]' "$USERS_FILE" > tmp.json + mv tmp.json "$USERS_FILE" + echo "✅ Added new user '$username'" +fi diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..d407157 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,81 @@ +#!/bin/bash +set -e + +echo "=== AuthApp build script ===" + +# ------------------------------- +# Проверка ОС +# ------------------------------- +if [ ! -f /etc/os-release ]; then + echo "Cannot detect OS" + exit 1 +fi + +. /etc/os-release + +if [ "$ID" != "debian" ] || [ "$VERSION_ID" != "12" ]; then + echo "This project is supported only on Debian 12" + exit 1 +fi + +echo "OS check: Debian 12 OK" + +# ------------------------------- +# Проверка sudo +# ------------------------------- +if ! command -v sudo >/dev/null 2>&1; then + echo "sudo is required but not installed" + exit 1 +fi + +# ------------------------------- +# Установка curl +# ------------------------------- +if ! command -v curl >/dev/null 2>&1; then + echo "Installing curl..." + sudo apt update + sudo apt install -y curl +else + echo "curl already installed" +fi + +# ------------------------------- +# Проверка dotnet +# ------------------------------- +if ! command -v dotnet >/dev/null 2>&1; then + echo ".NET SDK not found, installing .NET 8 SDK..." + + sudo apt update + sudo apt install -y \ + ca-certificates \ + libc6 \ + libgcc-s1 \ + libicu72 \ + libssl3 \ + libstdc++6 \ + zlib1g + + curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb + sudo dpkg -i packages-microsoft-prod.deb + rm packages-microsoft-prod.deb + + sudo apt update + sudo apt install -y dotnet-sdk-8.0 +else + echo ".NET SDK already installed" +fi + +# ------------------------------- +# Переменные среды +# ------------------------------- +export DOTNET_CLI_TELEMETRY_OPTOUT=1 +export DOTNET_NOLOGO=1 + +# ------------------------------- +# Сборка проекта +# ------------------------------- +echo "Building project..." +dotnet build ../src/AuthApp.csproj -c Release -o ../build + + +echo "Build completed successfully" diff --git a/scripts/config.sh b/scripts/config.sh new file mode 100755 index 0000000..7eeb921 --- /dev/null +++ b/scripts/config.sh @@ -0,0 +1,3 @@ +#!/bin/bash +export DOTNET_CLI_TELEMETRY_OPTOUT=1 +export DOTNET_NOLOGO=1 diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100755 index 0000000..4283526 --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,2 @@ +#!/bin/bash +dotnet ../build/AuthApp.dll diff --git a/src/AuthApp.csproj b/src/AuthApp.csproj new file mode 100644 index 0000000..6c57f8f --- /dev/null +++ b/src/AuthApp.csproj @@ -0,0 +1,30 @@ + + + + + + + Exe + net8.0 + enable + enable + latest + + + + + + + true + none + + + + + + + false + portable + + + diff --git a/src/AuthApp/AuthService.cs b/src/AuthApp/AuthService.cs new file mode 100644 index 0000000..02c9eef --- /dev/null +++ b/src/AuthApp/AuthService.cs @@ -0,0 +1,25 @@ +using AuthApp.Data; +using AuthApp.Utils; + +/// +/// Сервис аутентификации +/// +namespace AuthApp.Services +{ + public class AuthService + { + private readonly UserRepository _repository = new(); + + /// + /// Проверка логина и пароля + /// + public bool Authenticate(string login, string password) + { + var user = _repository.GetUser(login); + if (user == null) return false; + + string hash = PasswordHasher.Hash(password); + return (user.PasswordHash == hash); + } + } +} diff --git a/src/AuthApp/Models/User.cs b/src/AuthApp/Models/User.cs new file mode 100644 index 0000000..c4b79d3 --- /dev/null +++ b/src/AuthApp/Models/User.cs @@ -0,0 +1,18 @@ +namespace AuthApp.Models +{ + /// + /// Модель пользователя системы. + /// + public class User + { + /// + /// Логин пользователя. + /// + public string Login { get; set; } = string.Empty; + + /// + /// Хэш пароля пользователя. + /// + public string PasswordHash { get; set; } = string.Empty; + } +} diff --git a/src/AuthApp/Program.cs b/src/AuthApp/Program.cs new file mode 100644 index 0000000..d53dae4 --- /dev/null +++ b/src/AuthApp/Program.cs @@ -0,0 +1,56 @@ +using AuthApp.Services; +using AuthApp.Utils; +using AuthApp.Data; +using System; +using System.Threading; +/// +/// Entry point приложения +/// +class Program +{ + static void Main() + { + var authService = new AuthService(); + int attempts = 0; + const int maxAttempts = 3; + + var repo = new UserRepository(); + if (!repo.IsDatabaseAvailable()) + { + Console.WriteLine("Невозможно найти users.json. Проверьте путь или рабочую директорию."); + Thread.Sleep(20000); + return; + } + + while (attempts < maxAttempts) + { + Console.Clear(); + Console.WriteLine("=== Authentication System ==="); + + Console.Write("Login: "); + string login = Console.ReadLine() ?? ""; + + Console.Write("Password: "); + string password = ConsoleHelper.ReadPassword(); + + bool success = authService.Authenticate(login, password); + + if (success) + { + Console.WriteLine("\nAccess granted."); + return; + } + + attempts++; + Console.WriteLine("\nAccess denied."); + + if (attempts < maxAttempts) + { + Console.WriteLine("Press any key to retry..."); + Console.ReadKey(); + } + } + + Console.WriteLine("\nToo many failed attempts. Access blocked."); + } +} diff --git a/src/AuthApp/UserRepository.cs b/src/AuthApp/UserRepository.cs new file mode 100644 index 0000000..f075bfe --- /dev/null +++ b/src/AuthApp/UserRepository.cs @@ -0,0 +1,56 @@ +using System.Text.Json; +using AuthApp.Models; +using AuthApp.Utils; + +namespace AuthApp.Data +{ + /// + /// Репозиторий пользователей. + /// Отвечает за загрузку данных пользователей из хранилища. + /// + public class UserRepository + { + private static readonly string DatabasePath = Path.Combine(AppContext.BaseDirectory, "../data/users.json"); + + + public bool IsDatabaseAvailable() + { + string fullPath = Path.GetFullPath(DatabasePath); + bool exists = File.Exists(fullPath); + + if (exists) + { + Console.WriteLine($"✅ Database file found: {fullPath}"); + } + else + { + Console.WriteLine($"❌ Database file NOT found: {fullPath}"); + } + + return exists; + } + + /// + /// Получает пользователя по логину. + /// + /// Логин пользователя + /// + /// Объект , если пользователь найден, + /// иначе null. + /// + public User? GetUser(string login) + { + if (string.IsNullOrWhiteSpace(login)) + return null; + + if (!File.Exists(DatabasePath)) + return null; + + var json = File.ReadAllText(DatabasePath); + var users = JsonSerializer.Deserialize>(json); + + return users?.FirstOrDefault(u => + string.Equals(u.Login, login, StringComparison.OrdinalIgnoreCase)); + } + } +} diff --git a/src/AuthApp/Utils/ConsoleHelper.cs b/src/AuthApp/Utils/ConsoleHelper.cs new file mode 100644 index 0000000..ce1002f --- /dev/null +++ b/src/AuthApp/Utils/ConsoleHelper.cs @@ -0,0 +1,33 @@ +namespace AuthApp.Utils +{ + /// + /// Вспомогательные функции консоли + /// + public static class ConsoleHelper + { + public static string ReadPassword() + { + string password = ""; + ConsoleKeyInfo keyInfo; + + while ((keyInfo = Console.ReadKey(true)).Key != ConsoleKey.Enter) + { + char keyChar = keyInfo.KeyChar; + + if (keyInfo.Key == ConsoleKey.Backspace && password.Length > 0) + { + password = password[..^1]; + Console.Write("\b \b"); + } + else if (!char.IsControl(keyChar)) + { + password += keyChar; + Console.Write("*"); + } + } + + return password; + + } + } +} diff --git a/src/AuthApp/Utils/PasswordHasher.cs b/src/AuthApp/Utils/PasswordHasher.cs new file mode 100644 index 0000000..ba4f0e1 --- /dev/null +++ b/src/AuthApp/Utils/PasswordHasher.cs @@ -0,0 +1,32 @@ +using System.Security.Cryptography; +using System.Text; + +namespace AuthApp.Utils +{ + /// + /// Утилита для хэширования паролей. + /// + public static class PasswordHasher + { + /// + /// Вычисляет SHA-256 хэш для пароля. + /// + /// Пароль в открытом виде + /// Строка с хэшем в hex-формате + public static string Hash(string password) + { + if (password == null) + return string.Empty; + + using var sha256 = SHA256.Create(); + byte[] bytes = Encoding.UTF8.GetBytes(password); + byte[] hash = sha256.ComputeHash(bytes); + + var sb = new StringBuilder(); + foreach (byte b in hash) + sb.Append(b.ToString("x2")); + + return sb.ToString(); + } + } +} diff --git a/src/obj/App.csproj.nuget.dgspec.json b/src/obj/App.csproj.nuget.dgspec.json new file mode 100644 index 0000000..7690158 --- /dev/null +++ b/src/obj/App.csproj.nuget.dgspec.json @@ -0,0 +1,66 @@ +{ + "format": 1, + "restore": { + "/home/ars/is_proj/src/App.csproj": {} + }, + "projects": { + "/home/ars/is_proj/src/App.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/ars/is_proj/src/App.csproj", + "projectName": "App", + "projectPath": "/home/ars/is_proj/src/App.csproj", + "packagesPath": "/home/ars/.nuget/packages/", + "outputPath": "/home/ars/is_proj/src/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/ars/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.417/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/src/obj/App.csproj.nuget.g.props b/src/obj/App.csproj.nuget.g.props new file mode 100644 index 0000000..1648929 --- /dev/null +++ b/src/obj/App.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/ars/.nuget/packages/ + /home/ars/.nuget/packages/ + PackageReference + 6.11.1 + + + + + \ No newline at end of file diff --git a/src/obj/App.csproj.nuget.g.targets b/src/obj/App.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/src/obj/App.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/obj/AuthApp.csproj.nuget.dgspec.json b/src/obj/AuthApp.csproj.nuget.dgspec.json new file mode 100644 index 0000000..f575dd9 --- /dev/null +++ b/src/obj/AuthApp.csproj.nuget.dgspec.json @@ -0,0 +1,66 @@ +{ + "format": 1, + "restore": { + "/home/ars/is_proj/src/AuthApp.csproj": {} + }, + "projects": { + "/home/ars/is_proj/src/AuthApp.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/ars/is_proj/src/AuthApp.csproj", + "projectName": "AuthApp", + "projectPath": "/home/ars/is_proj/src/AuthApp.csproj", + "packagesPath": "/home/ars/.nuget/packages/", + "outputPath": "/home/ars/is_proj/src/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/ars/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.417/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/src/obj/AuthApp.csproj.nuget.g.props b/src/obj/AuthApp.csproj.nuget.g.props new file mode 100644 index 0000000..1648929 --- /dev/null +++ b/src/obj/AuthApp.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/ars/.nuget/packages/ + /home/ars/.nuget/packages/ + PackageReference + 6.11.1 + + + + + \ No newline at end of file diff --git a/src/obj/AuthApp.csproj.nuget.g.targets b/src/obj/AuthApp.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/src/obj/AuthApp.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/src/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..dca70aa --- /dev/null +++ b/src/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/src/obj/Release/net8.0/App.AssemblyInfo.cs b/src/obj/Release/net8.0/App.AssemblyInfo.cs new file mode 100644 index 0000000..26c6ead --- /dev/null +++ b/src/obj/Release/net8.0/App.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("App")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("App")] +[assembly: System.Reflection.AssemblyTitleAttribute("App")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/src/obj/Release/net8.0/App.AssemblyInfoInputs.cache b/src/obj/Release/net8.0/App.AssemblyInfoInputs.cache new file mode 100644 index 0000000..c187124 --- /dev/null +++ b/src/obj/Release/net8.0/App.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +92c167b5d8c056866ba4b0cbf5e77a09dcd3846aedbf7fb6513d30860b4fe153 diff --git a/src/obj/Release/net8.0/App.GeneratedMSBuildEditorConfig.editorconfig b/src/obj/Release/net8.0/App.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..431c3ca --- /dev/null +++ b/src/obj/Release/net8.0/App.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = App +build_property.ProjectDir = /home/ars/is_proj/src/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/src/obj/Release/net8.0/App.GlobalUsings.g.cs b/src/obj/Release/net8.0/App.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/src/obj/Release/net8.0/App.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/src/obj/Release/net8.0/App.assets.cache b/src/obj/Release/net8.0/App.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..88900c967918c057b2c0d2491f9467a4032f437f GIT binary patch literal 147 zcmWIWc6a1qU|^_Hp2D<*Sy?hiu<_*N`IQ&bkF-sjb^o1-^s+*|K1s{OexMp+0V7bM hlzv8jZmND_QL(;WUTJ!2iGD$1a&}^RYOy{cV*o%S86W@v literal 0 HcmV?d00001 diff --git a/src/obj/Release/net8.0/App.csproj.CoreCompileInputs.cache b/src/obj/Release/net8.0/App.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..bcc43dc --- /dev/null +++ b/src/obj/Release/net8.0/App.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +9f909757170634c4a1bcf2b07ca1d394645ac058b5f80d65e2307ce2f736dbf6 diff --git a/src/obj/Release/net8.0/App.csproj.FileListAbsolute.txt b/src/obj/Release/net8.0/App.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..620ae47 --- /dev/null +++ b/src/obj/Release/net8.0/App.csproj.FileListAbsolute.txt @@ -0,0 +1,4 @@ +/home/ars/is_proj/src/obj/Release/net8.0/App.GeneratedMSBuildEditorConfig.editorconfig +/home/ars/is_proj/src/obj/Release/net8.0/App.AssemblyInfoInputs.cache +/home/ars/is_proj/src/obj/Release/net8.0/App.AssemblyInfo.cs +/home/ars/is_proj/src/obj/Release/net8.0/App.csproj.CoreCompileInputs.cache diff --git a/src/obj/Release/net8.0/AuthApp.AssemblyInfo.cs b/src/obj/Release/net8.0/AuthApp.AssemblyInfo.cs new file mode 100644 index 0000000..407f08e --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("AuthApp")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("AuthApp")] +[assembly: System.Reflection.AssemblyTitleAttribute("AuthApp")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/src/obj/Release/net8.0/AuthApp.AssemblyInfoInputs.cache b/src/obj/Release/net8.0/AuthApp.AssemblyInfoInputs.cache new file mode 100644 index 0000000..36a65fd --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +292cf9dcf31ff2612c58ac08730d86c89331d58a7d5ee2648b6e8ae869023ded diff --git a/src/obj/Release/net8.0/AuthApp.GeneratedMSBuildEditorConfig.editorconfig b/src/obj/Release/net8.0/AuthApp.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..3efd8e1 --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = AuthApp +build_property.ProjectDir = /home/ars/is_proj/src/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/src/obj/Release/net8.0/AuthApp.GlobalUsings.g.cs b/src/obj/Release/net8.0/AuthApp.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/src/obj/Release/net8.0/AuthApp.assets.cache b/src/obj/Release/net8.0/AuthApp.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..6e61d517a87979db86206432d22f8ce03d799f70 GIT binary patch literal 147 zcmWIWc6a1qU|`^}(c2$h;&d*JL&9{CidD;jR`)$toQw+==dl#z^;hfk1Jw`<7=a3< h^fU5vQ}q*ziuLvKO4CzI^a~P`vlG)(i}eW^0{}6J7U%!~ literal 0 HcmV?d00001 diff --git a/src/obj/Release/net8.0/AuthApp.csproj.CoreCompileInputs.cache b/src/obj/Release/net8.0/AuthApp.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..d3e64c5 --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1cebe11aa37d819318f2cb5f3b7643f5022fec8a8184deddfd78f1edb954d93d diff --git a/src/obj/Release/net8.0/AuthApp.csproj.FileListAbsolute.txt b/src/obj/Release/net8.0/AuthApp.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..56e16fe --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.GeneratedMSBuildEditorConfig.editorconfig +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.AssemblyInfoInputs.cache +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.AssemblyInfo.cs +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.csproj.CoreCompileInputs.cache +/home/ars/is_proj/build/AuthApp +/home/ars/is_proj/build/AuthApp.deps.json +/home/ars/is_proj/build/AuthApp.runtimeconfig.json +/home/ars/is_proj/build/AuthApp.dll +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.dll +/home/ars/is_proj/src/obj/Release/net8.0/refint/AuthApp.dll +/home/ars/is_proj/src/obj/Release/net8.0/AuthApp.genruntimeconfig.cache +/home/ars/is_proj/src/obj/Release/net8.0/ref/AuthApp.dll diff --git a/src/obj/Release/net8.0/AuthApp.dll b/src/obj/Release/net8.0/AuthApp.dll new file mode 100644 index 0000000000000000000000000000000000000000..308333026ffc0ed89d535e1dded8a5d676e60a99 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/src/obj/Release/net8.0/AuthApp.genruntimeconfig.cache b/src/obj/Release/net8.0/AuthApp.genruntimeconfig.cache new file mode 100644 index 0000000..735ffeb --- /dev/null +++ b/src/obj/Release/net8.0/AuthApp.genruntimeconfig.cache @@ -0,0 +1 @@ +a49dddb432e4a3841a93b9a8185168f5eda44a87cab9f503a863dd05557471c3 diff --git a/src/obj/Release/net8.0/apphost b/src/obj/Release/net8.0/apphost new file mode 100755 index 0000000000000000000000000000000000000000..11485ecd77a7e3b84a1f8d416ea586829d62b2c4 GIT binary patch literal 72400 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 c2~Fc+KPaUX{V(u%`YH9GMD{R_`^dn5004